diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 6b6ac8243e..5bfc0b6982 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@12.3.3 + uses: danger/danger-js@12.3.4 with: args: "--dangerfile ./tools/danger/dangerfile.js" env: diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index b69c693f19..c38635c809 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -138,7 +138,7 @@ jobs: - name: Build Fdroid Debug run: ./gradlew :app:compileFdroidDebugKotlin $CI_GRADLE_ARG_PROPERTIES - name: Run lint - run: ./gradlew :app:lintGplayDebug :app:lintFdroidDebug $CI_GRADLE_ARG_PROPERTIES + run: ./gradlew :app:lintGplayDebug :app:lintFdroidDebug lintDebug $CI_GRADLE_ARG_PROPERTIES --continue - name: Upload reports if: always() uses: actions/upload-artifact@v4 @@ -294,7 +294,7 @@ jobs: yarn add danger-plugin-lint-report --dev - name: Danger lint if: always() - uses: danger/danger-js@12.3.3 + uses: danger/danger-js@12.3.4 with: args: "--dangerfile ./tools/danger/dangerfile-lint.js" env: diff --git a/CHANGES.md b/CHANGES.md index 60fcfe0046..9384a1c7f4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,104 @@ + + +## What's Changed +### ✨ Features +* Media navigation with swipe gesture by @bmarty in https://github.com/element-hq/element-x-android/pull/4161 +* Add ability to swipe between media when opened from the timeline. by @bmarty in https://github.com/element-hq/element-x-android/pull/4205 +### 🙌 Improvements +* change(design) : use ElementTheme.typography.fontBodyLgMedium by @ganfra in https://github.com/element-hq/element-x-android/pull/4145 +* change(design) : New component Announcement by @ganfra in https://github.com/element-hq/element-x-android/pull/4140 +* update rust sdk 0.2.75 by @ganfra in https://github.com/element-hq/element-x-android/pull/4158 +### 🐛 Bugfixes +* Fix dm avatar rtl by @bmarty in https://github.com/element-hq/element-x-android/pull/4103 +* Unified push gateway resolver improvement by @bmarty in https://github.com/element-hq/element-x-android/pull/4101 +* Close the media preview screen ASAP with sending queue enabled by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4089 +* fix(coroutine) : make sure to switch coroutine context by @ganfra in https://github.com/element-hq/element-x-android/pull/4146 +* Fix snack bar not displayed in MediaViewer by @bmarty in https://github.com/element-hq/element-x-android/pull/4195 +* Let the SDK provide the "network is available information" by @bmarty in https://github.com/element-hq/element-x-android/pull/4215 +### 🗣 Translations +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4088 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4100 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4114 +* Fix import of en-US translations. by @bmarty in https://github.com/element-hq/element-x-android/pull/4135 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4139 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4172 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4199 +* Sync Strings - new (partial) language: Norwegian by @ElementBot in https://github.com/element-hq/element-x-android/pull/4227 +### 🧱 Build +* Update Gradle Wrapper from 8.11.1 to 8.12 by @ElementBot in https://github.com/element-hq/element-x-android/pull/4085 +* Test using Maestro CLI + emulator instead of Cloud by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4092 +* Make Maestro run for each PR push by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4121 +* Migrate to CalVer like versioning by @bmarty in https://github.com/element-hq/element-x-android/pull/4187 +* Kover: include back :libraries:matrix:impl module. by @bmarty in https://github.com/element-hq/element-x-android/pull/4193 +* Update Gradle Wrapper from 8.12 to 8.12.1 by @ElementBot in https://github.com/element-hq/element-x-android/pull/4196 +* Use secret Sentry DSN value by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4210 +* Use Sentry breadcrumbs instead of logging new events by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4223 +### 🚧 In development 🚧 +* Media Viewer: show snackbar when reaching end of timeline. by @bmarty in https://github.com/element-hq/element-x-android/pull/4201 +* Feature : room settings - security and privacy by @ganfra in https://github.com/element-hq/element-x-android/pull/4212 +### Dependency upgrades +* Update dependency io.mockk:mockk to v1.13.14 by @renovate in https://github.com/element-hq/element-x-android/pull/4083 +* Update dependency net.java.dev.jna:jna to v5.16.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4087 +* Update kotlin to v1.10.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4073 +* Update dagger to v2.54 by @renovate in https://github.com/element-hq/element-x-android/pull/4084 +* Update dependency io.sentry:sentry-android to v7.19.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4090 +* Update dependency com.android.tools:desugar_jdk_libs to v2.1.4 by @renovate in https://github.com/element-hq/element-x-android/pull/4077 +* Update dependency com.posthog:posthog-android to v3.10.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4120 +* Update appyx to v1.6.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4129 +* Update dagger to v2.55 by @renovate in https://github.com/element-hq/element-x-android/pull/4131 +* Update android.gradle.plugin to v8.8.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4130 +* Update dependency org.maplibre.gl:android-sdk to v11.8.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4132 +* Update dependency io.mockk:mockk to v1.13.16 by @renovate in https://github.com/element-hq/element-x-android/pull/4134 +* Update dependencyAnalysis to v2.7.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4136 +* Update anvil to v0.4.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4144 +* Update kotlin by @renovate in https://github.com/element-hq/element-x-android/pull/4117 +* Update plugin dependencycheck to v12 by @renovate in https://github.com/element-hq/element-x-android/pull/4137 +* Update dependency io.sentry:sentry-android to v7.20.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4107 +* Update wysiwyg to v2.38.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4104 +* Update dependency androidx.recyclerview:recyclerview to v1.4.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4154 +* Update activity to v1.10.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4152 +* Update firebaseAppDistribution to v5.1.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4159 +* Update dependency com.google.firebase:firebase-bom to v33.8.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4160 +* Update dependency androidx.compose:compose-bom to v2025 by @renovate in https://github.com/element-hq/element-x-android/pull/4155 +* Update dependency io.sentry:sentry-android to v7.20.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4178 +* Update dependency io.sentry:sentry-android to v8 by @renovate in https://github.com/element-hq/element-x-android/pull/4180 +* Update wysiwyg to v2.38.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4177 +* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.76 by @renovate in https://github.com/element-hq/element-x-android/pull/4183 +* Update wysiwyg to v2.38.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4186 +* Update dependency com.posthog:posthog-android to v3.11.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4204 +* Update kotlin by @renovate in https://github.com/element-hq/element-x-android/pull/4200 +* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.77 by @renovate in https://github.com/element-hq/element-x-android/pull/4228 +* Update dependency com.posthog:posthog-android to v3.11.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4222 +* Update dependency io.element.android:emojibase-bindings to v1.3.4 by @renovate in https://github.com/element-hq/element-x-android/pull/4213 +* Update dependencyAnalysis to v2.8.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4218 +* Update dependency androidx.compose:compose-bom to v2025.01.01 by @renovate in https://github.com/element-hq/element-x-android/pull/4217 +* Update dependency io.sentry:sentry-android to v8.1.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4221 +* Update rnkdsh/action-upload-diawi action to v1.5.6 by @renovate in https://github.com/element-hq/element-x-android/pull/4173 +* Update plugin dependencycheck to v12.0.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4170 +### Others +* Improve gallery loading state by @bmarty in https://github.com/element-hq/element-x-android/pull/4080 +* Show more detail about the error when pusher registration fails. by @bmarty in https://github.com/element-hq/element-x-android/pull/4081 +* Update pull request template and CI automation by @bmarty in https://github.com/element-hq/element-x-android/pull/4037 +* Add a log function for handling complex values to the WebView client. by @Half-Shot in https://github.com/element-hq/element-x-android/pull/4098 +* design : CounterAtom by @ganfra in https://github.com/element-hq/element-x-android/pull/4108 +* Change sticker mimetype fallback to image by @surakin in https://github.com/element-hq/element-x-android/pull/4111 +* Dual licensing: AGPL + Element Commercial by @bmarty in https://github.com/element-hq/element-x-android/pull/4118 +* Replace the InfoListOrganism default bg color by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4091 +* Ignore dependency that are not third-party licenses to us. by @bmarty in https://github.com/element-hq/element-x-android/pull/4122 +* misc(send queue) : do not disable send queue when Network is Offline by @ganfra in https://github.com/element-hq/element-x-android/pull/4105 +* Remove or replace unnecessary `BackHandler` calls by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4148 +* Replace our firstIfSingle extension with singleOrNull from the Kotlin library by @bmarty in https://github.com/element-hq/element-x-android/pull/4184 +* Remove log. by @bmarty in https://github.com/element-hq/element-x-android/pull/4203 +* Remove unused types / code. by @bmarty in https://github.com/element-hq/element-x-android/pull/4185 +* Consider that the topic of a room has been removed when it's blank. by @bmarty in https://github.com/element-hq/element-x-android/pull/4209 +* CalVer: use 2 digits for the year and 2 digits for the month. by @bmarty in https://github.com/element-hq/element-x-android/pull/4192 +* Always display encryption badge by @bmarty in https://github.com/element-hq/element-x-android/pull/4219 + +## New Contributors +* @Half-Shot made their first contribution in https://github.com/element-hq/element-x-android/pull/4098 + +**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v0.7.6...v25.02.0 + Changes in Element X v0.7.6 (2024-12-20) ======================================== diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d4a8945d5d..89181cf9cf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -10,6 +10,7 @@ import com.android.build.api.variant.FilterConfiguration.FilterType.ABI import com.android.build.gradle.internal.tasks.factory.dependsOn import com.android.build.gradle.tasks.GenerateBuildConfig +import config.BuildTimeConfig import extension.AssetCopyTask import extension.ComponentMergingStrategy import extension.GitBranchNameValueSource @@ -43,11 +44,7 @@ android { namespace = "io.element.android.x" defaultConfig { - applicationId = if (isEnterpriseBuild) { - "io.element.enterprise" - } else { - "io.element.android.x" - } + applicationId = BuildTimeConfig.APPLICATION_ID targetSdk = Versions.TARGET_SDK versionCode = Versions.VERSION_CODE versionName = Versions.VERSION_NAME @@ -97,11 +94,7 @@ android { } } - val baseAppName = if (isEnterpriseBuild) { - "Element Enterprise" - } else { - "Element X" - } + val baseAppName = BuildTimeConfig.APPLICATION_NAME logger.warnInBox("Building $baseAppName") buildTypes { 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 2d2b645f3f..2bdf083683 100644 --- a/app/src/main/kotlin/io/element/android/x/MainActivity.kt +++ b/app/src/main/kotlin/io/element/android/x/MainActivity.kt @@ -14,7 +14,6 @@ import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier @@ -26,6 +25,7 @@ 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.theme.ElementTheme 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,7 +61,10 @@ class MainActivity : NodeActivity() { @Composable private fun MainContent(appBindings: AppBindings) { val migrationState = appBindings.migrationEntryPoint().present() - ElementThemeApp(appBindings.preferencesStore()) { + ElementThemeApp( + appPreferencesStore = appBindings.preferencesStore(), + enterpriseService = appBindings.enterpriseService(), + ) { CompositionLocalProvider( LocalSnackbarDispatcher provides appBindings.snackbarDispatcher(), LocalUriHandler provides SafeUriHandler(this), @@ -69,8 +72,8 @@ class MainActivity : NodeActivity() { ) { Box( modifier = Modifier - .fillMaxSize() - .background(MaterialTheme.colorScheme.background), + .fillMaxSize() + .background(ElementTheme.colors.bgCanvasDefault), ) { if (migrationState.migrationAction.isSuccess()) { MainNodeHost() diff --git a/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt b/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt index e24fdbb9fb..4aa5d2c267 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt @@ -9,6 +9,7 @@ package io.element.android.x.di import com.squareup.anvil.annotations.ContributesTo import io.element.android.features.api.MigrationEntryPoint +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.rageshake.api.reporter.BugReporter @@ -35,4 +36,6 @@ interface AppBindings { fun lockScreenEntryPoint(): LockScreenEntryPoint fun analyticsService(): AnalyticsService + + fun enterpriseService(): EnterpriseService } 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 d682cb7524..53d84f473b 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 @@ -73,23 +73,26 @@ object AppModule { @ApplicationContext context: Context, buildType: BuildType, enterpriseService: EnterpriseService, - ) = BuildMeta( - isDebuggable = BuildConfig.DEBUG, - buildType = buildType, - applicationName = ApplicationConfig.APPLICATION_NAME.takeIf { it.isNotEmpty() } ?: context.getString(R.string.app_name), - productionApplicationName = ApplicationConfig.PRODUCTION_APPLICATION_NAME, - desktopApplicationName = ApplicationConfig.DESKTOP_APPLICATION_NAME, - applicationId = BuildConfig.APPLICATION_ID, - isEnterpriseBuild = enterpriseService.isEnterpriseBuild, - // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE, - lowPrivacyLoggingEnabled = false, - versionName = BuildConfig.VERSION_NAME, - versionCode = context.getVersionCodeFromManifest(), - gitRevision = BuildConfig.GIT_REVISION, - gitBranchName = BuildConfig.GIT_BRANCH_NAME, - flavorDescription = BuildConfig.FLAVOR_DESCRIPTION, - flavorShortDescription = BuildConfig.SHORT_FLAVOR_DESCRIPTION, - ) + ): BuildMeta { + val applicationName = ApplicationConfig.APPLICATION_NAME.takeIf { it.isNotEmpty() } ?: context.getString(R.string.app_name) + return BuildMeta( + isDebuggable = BuildConfig.DEBUG, + buildType = buildType, + applicationName = applicationName, + productionApplicationName = if (enterpriseService.isEnterpriseBuild) applicationName else ApplicationConfig.PRODUCTION_APPLICATION_NAME, + desktopApplicationName = if (enterpriseService.isEnterpriseBuild) applicationName else ApplicationConfig.DESKTOP_APPLICATION_NAME, + applicationId = BuildConfig.APPLICATION_ID, + isEnterpriseBuild = enterpriseService.isEnterpriseBuild, + // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE, + lowPrivacyLoggingEnabled = false, + versionName = BuildConfig.VERSION_NAME, + versionCode = context.getVersionCodeFromManifest(), + gitRevision = BuildConfig.GIT_REVISION, + gitBranchName = BuildConfig.GIT_BRANCH_NAME, + flavorDescription = BuildConfig.FLAVOR_DESCRIPTION, + flavorShortDescription = BuildConfig.SHORT_FLAVOR_DESCRIPTION, + ) + } @Provides @SingleIn(AppScope::class) diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml index a89ce28bfd..8fbfba96a1 100644 --- a/app/src/main/res/xml/locales_config.xml +++ b/app/src/main/res/xml/locales_config.xml @@ -25,6 +25,7 @@ + diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index b9f3d03986..96add8d148 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -1,8 +1,15 @@ - + - + + + + + + @@ -24,12 +31,4 @@ lan localdomain - - - - - - - - diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/AuthenticationConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/AuthenticationConfig.kt index 2e0e46fa0b..5061290948 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/AuthenticationConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/AuthenticationConfig.kt @@ -10,11 +10,6 @@ package io.element.android.appconfig object AuthenticationConfig { const val MATRIX_ORG_URL = "https://matrix.org" - /** - * Default homeserver url to sign in with, unless the user selects a different one. - */ - const val DEFAULT_HOMESERVER_URL = MATRIX_ORG_URL - /** * URL with some docs that explain what's sliding sync and how to add it to your home server. */ 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 ced5d0033a..f78f3aa668 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -14,9 +14,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier -import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle import com.bumble.appyx.core.composable.PermanentChild import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext @@ -52,8 +50,6 @@ import io.element.android.features.ftue.api.FtueEntryPoint import io.element.android.features.ftue.api.state.FtueService import io.element.android.features.ftue.api.state.FtueState import io.element.android.features.logout.api.LogoutEntryPoint -import io.element.android.features.networkmonitor.api.NetworkMonitor -import io.element.android.features.networkmonitor.api.NetworkStatus 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,18 +73,12 @@ 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.SyncState import io.element.android.libraries.matrix.api.verification.SessionVerificationRequestDetails import io.element.android.libraries.matrix.api.verification.SessionVerificationServiceListener -import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.FlowPreview -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize import timber.log.Timber @@ -107,7 +97,6 @@ class LoggedInFlowNode @AssistedInject constructor( private val userProfileEntryPoint: UserProfileEntryPoint, private val ftueEntryPoint: FtueEntryPoint, private val coroutineScope: CoroutineScope, - private val networkMonitor: NetworkMonitor, private val ftueService: FtueService, private val roomDirectoryEntryPoint: RoomDirectoryEntryPoint, private val shareEntryPoint: ShareEntryPoint, @@ -115,7 +104,6 @@ class LoggedInFlowNode @AssistedInject constructor( private val sendingQueue: SendQueues, private val logoutEntryPoint: LogoutEntryPoint, private val incomingVerificationEntryPoint: IncomingVerificationEntryPoint, - private val enableNativeSlidingSyncUseCase: EnableNativeSlidingSyncUseCase, snackbarDispatcher: SnackbarDispatcher, ) : BaseFlowNode( backstack = BackStack( @@ -133,7 +121,6 @@ class LoggedInFlowNode @AssistedInject constructor( fun onOpenBugReport() } - private val syncService = matrixClient.syncService() private val loggedInFlowProcessor = LoggedInEventProcessor( snackbarDispatcher, matrixClient.roomMembershipObserver(), @@ -147,6 +134,7 @@ class LoggedInFlowNode @AssistedInject constructor( override fun onBuilt() { super.onBuilt() + lifecycle.subscribe( onCreate = { appNavigationStateService.onNavigateToSession(id, matrixClient.sessionId) @@ -165,12 +153,6 @@ class LoggedInFlowNode @AssistedInject constructor( } .launchIn(lifecycleScope) }, - onStop = { - coroutineScope.launch { - // Counterpart startSync is done in observeSyncStateAndNetworkStatus method. - syncService.stopSync() - } - }, onDestroy = { appNavigationStateService.onLeavingSpace(id) appNavigationStateService.onLeavingSession(id) @@ -178,7 +160,6 @@ class LoggedInFlowNode @AssistedInject constructor( matrixClient.sessionVerificationService().setListener(null) } ) - observeSyncStateAndNetworkStatus() setupSendingQueue() } @@ -186,31 +167,6 @@ class LoggedInFlowNode @AssistedInject constructor( sendingQueue.launchIn(lifecycleScope) } - @OptIn(FlowPreview::class) - private fun observeSyncStateAndNetworkStatus() { - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.STARTED) { - combine( - // small debounce to avoid spamming startSync when the state is changing quickly in case of error. - syncService.syncState.debounce(100), - networkMonitor.connectivity - ) { syncState, networkStatus -> - Pair(syncState, networkStatus) - } - .onStart { - // Temporary fix to ensure that the sync is started even if the networkStatus is offline. - syncService.startSync() - } - .collect { (syncState, networkStatus) -> - Timber.d("Sync state: $syncState, network status: $networkStatus") - if (syncState != SyncState.Running && networkStatus == NetworkStatus.Online) { - syncService.startSync() - } - } - } - } - } - sealed interface NavTarget : Parcelable { @Parcelize data object Placeholder : NavTarget @@ -401,8 +357,8 @@ class LoggedInFlowNode @AssistedInject constructor( } NavTarget.CreateRoom -> { val callback = object : CreateRoomEntryPoint.Callback { - override fun onSuccess(roomId: RoomId) { - backstack.replace(NavTarget.Room(roomId.toRoomIdOrAlias())) + override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) { + backstack.replace(NavTarget.Room(roomIdOrAlias = roomIdOrAlias, serverNames = serverNames)) } } @@ -462,9 +418,6 @@ class LoggedInFlowNode @AssistedInject constructor( } logoutEntryPoint.nodeBuilder(this, buildContext) - .onSuccessfulLogoutPendingAction { - enableNativeSlidingSyncUseCase() - } .callback(callback) .build() } 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 5f5eb7566e..c52ee9cb5d 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -27,7 +27,7 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedInject import im.vector.app.features.analytics.plan.JoinedRoom import io.element.android.anvilannotations.ContributesNode -import io.element.android.appnav.di.MatrixClientsHolder +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.root.RootNavStateFlowFactory @@ -62,7 +62,7 @@ class RootFlowNode @AssistedInject constructor( @Assisted plugins: List, private val authenticationService: MatrixAuthenticationService, private val navStateFlowFactory: RootNavStateFlowFactory, - private val matrixClientsHolder: MatrixClientsHolder, + private val matrixSessionCache: MatrixSessionCache, private val presenter: RootPresenter, private val bugReportEntryPoint: BugReportEntryPoint, private val viewFolderEntryPoint: ViewFolderEntryPoint, @@ -78,14 +78,14 @@ class RootFlowNode @AssistedInject constructor( plugins = plugins ) { override fun onBuilt() { - matrixClientsHolder.restoreWithSavedState(buildContext.savedStateMap) + matrixSessionCache.restoreWithSavedState(buildContext.savedStateMap) super.onBuilt() observeNavState() } override fun onSaveInstanceState(state: MutableSavedStateMap) { super.onSaveInstanceState(state) - matrixClientsHolder.saveIntoSavedState(state) + matrixSessionCache.saveIntoSavedState(state) navStateFlowFactory.saveIntoSavedState(state) } @@ -118,7 +118,7 @@ class RootFlowNode @AssistedInject constructor( } private fun switchToNotLoggedInFlow() { - matrixClientsHolder.removeAll() + matrixSessionCache.removeAll() backstack.safeRoot(NavTarget.NotLoggedInFlow) } @@ -131,7 +131,7 @@ class RootFlowNode @AssistedInject constructor( onFailure: () -> Unit, onSuccess: (SessionId) -> Unit, ) { - matrixClientsHolder.getOrRestore(sessionId) + matrixSessionCache.getOrRestore(sessionId) .onSuccess { Timber.v("Succeed to restore session $sessionId") onSuccess(sessionId) @@ -200,7 +200,7 @@ class RootFlowNode @AssistedInject constructor( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { is NavTarget.LoggedInFlow -> { - val matrixClient = matrixClientsHolder.getOrNull(navTarget.sessionId) ?: return splashNode(buildContext).also { + val matrixClient = matrixSessionCache.getOrNull(navTarget.sessionId) ?: return splashNode(buildContext).also { Timber.w("Couldn't find any session, go through SplashScreen") } val inputs = LoggedInAppScopeFlowNode.Inputs(matrixClient) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt similarity index 61% rename from appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt rename to appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt index 2871df2899..302a12d99b 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt @@ -7,6 +7,7 @@ package io.element.android.appnav.di +import androidx.annotation.VisibleForTesting import com.bumble.appyx.core.state.MutableSavedStateMap import com.bumble.appyx.core.state.SavedStateMap import com.squareup.anvil.annotations.ContributesBinding @@ -25,45 +26,61 @@ import javax.inject.Inject private const val SAVE_INSTANCE_KEY = "io.element.android.x.di.MatrixClientsHolder.SaveInstanceKey" +/** + * In-memory cache for logged in Matrix sessions. + * + * This component contains both the [MatrixClient] and the [SyncOrchestrator] for each session. + */ @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -class MatrixClientsHolder @Inject constructor( +class MatrixSessionCache @Inject constructor( private val authenticationService: MatrixAuthenticationService, + private val syncOrchestratorFactory: SyncOrchestrator.Factory, ) : MatrixClientProvider { - private val sessionIdsToMatrixClient = ConcurrentHashMap() + private val sessionIdsToMatrixSession = ConcurrentHashMap() private val restoreMutex = Mutex() init { authenticationService.listenToNewMatrixClients { matrixClient -> - sessionIdsToMatrixClient[matrixClient.sessionId] = matrixClient + val syncOrchestrator = syncOrchestratorFactory.create(matrixClient) + sessionIdsToMatrixSession[matrixClient.sessionId] = InMemoryMatrixSession( + matrixClient = matrixClient, + syncOrchestrator = syncOrchestrator, + ) + syncOrchestrator.start() } } fun removeAll() { - sessionIdsToMatrixClient.clear() + sessionIdsToMatrixSession.clear() } fun remove(sessionId: SessionId) { - sessionIdsToMatrixClient.remove(sessionId) + sessionIdsToMatrixSession.remove(sessionId) } override fun getOrNull(sessionId: SessionId): MatrixClient? { - return sessionIdsToMatrixClient[sessionId] + return sessionIdsToMatrixSession[sessionId]?.matrixClient } override suspend fun getOrRestore(sessionId: SessionId): Result { return restoreMutex.withLock { - when (val matrixClient = getOrNull(sessionId)) { + when (val cached = getOrNull(sessionId)) { null -> restore(sessionId) - else -> Result.success(matrixClient) + else -> Result.success(cached) } } } + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + internal fun getSyncOrchestrator(sessionId: SessionId): SyncOrchestrator? { + return sessionIdsToMatrixSession[sessionId]?.syncOrchestrator + } + @Suppress("UNCHECKED_CAST") fun restoreWithSavedState(state: SavedStateMap?) { Timber.d("Restore state") - if (state == null || sessionIdsToMatrixClient.isNotEmpty()) { + if (state == null || sessionIdsToMatrixSession.isNotEmpty()) { Timber.w("Restore with non-empty map") return } @@ -79,7 +96,7 @@ class MatrixClientsHolder @Inject constructor( } fun saveIntoSavedState(state: MutableSavedStateMap) { - val sessionKeys = sessionIdsToMatrixClient.keys.toTypedArray() + val sessionKeys = sessionIdsToMatrixSession.keys.toTypedArray() Timber.d("Save matrix session keys = ${sessionKeys.map { it.value }}") state[SAVE_INSTANCE_KEY] = sessionKeys } @@ -88,10 +105,20 @@ class MatrixClientsHolder @Inject constructor( Timber.d("Restore matrix session: $sessionId") return authenticationService.restoreSession(sessionId) .onSuccess { matrixClient -> - sessionIdsToMatrixClient[matrixClient.sessionId] = matrixClient + val syncOrchestrator = syncOrchestratorFactory.create(matrixClient) + sessionIdsToMatrixSession[matrixClient.sessionId] = InMemoryMatrixSession( + matrixClient = matrixClient, + syncOrchestrator = syncOrchestrator, + ) + syncOrchestrator.start() } .onFailure { Timber.e(it, "Fail to restore session") } } } + +private data class InMemoryMatrixSession( + val matrixClient: MatrixClient, + val syncOrchestrator: SyncOrchestrator, +) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt new file mode 100644 index 0000000000..95ef6e54a5 --- /dev/null +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt @@ -0,0 +1,127 @@ +/* + * 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 androidx.annotation.VisibleForTesting +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import io.element.android.features.networkmonitor.api.NetworkMonitor +import io.element.android.features.networkmonitor.api.NetworkStatus +import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.core.coroutine.childScope +import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.sync.SyncState +import io.element.android.services.appnavstate.api.AppForegroundStateService +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.onCompletion +import kotlinx.coroutines.launch +import timber.log.Timber +import java.util.concurrent.atomic.AtomicBoolean +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.seconds + +class SyncOrchestrator @AssistedInject constructor( + @Assisted matrixClient: MatrixClient, + private val appForegroundStateService: AppForegroundStateService, + private val networkMonitor: NetworkMonitor, + dispatchers: CoroutineDispatchers, +) { + @AssistedFactory + interface Factory { + fun create(matrixClient: MatrixClient): SyncOrchestrator + } + + private val syncService = matrixClient.syncService() + + private val tag = "SyncOrchestrator" + + private val coroutineScope = matrixClient.sessionCoroutineScope.childScope(dispatchers.io, tag) + + private val started = AtomicBoolean(false) + + /** + * Starting observing the app state and network state to start/stop the sync service. + * + * Before observing the state, a first attempt at starting the sync service will happen if it's not already running. + */ + fun start() { + if (!started.compareAndSet(false, true)) { + Timber.tag(tag).d("already started, exiting early") + return + } + + coroutineScope.launch { + // Perform an initial sync if the sync service is not running, to check whether the homeserver is accessible + // Otherwise, if the device is offline the sync service will never start and the SyncState will be Idle, not Offline + Timber.tag(tag).d("performing initial sync attempt") + syncService.startSync() + + // Wait until the sync service is not idle, either it will be running or in error/offline state + syncService.syncState.first { it != SyncState.Idle } + + observeStates() + } + } + + @OptIn(FlowPreview::class) + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + internal fun observeStates() = coroutineScope.launch { + Timber.tag(tag).d("start observing the app and network state") + + combine( + // small debounce to avoid spamming startSync when the state is changing quickly in case of error. + syncService.syncState.debounce(100.milliseconds), + networkMonitor.connectivity, + appForegroundStateService.isInForeground, + appForegroundStateService.isInCall, + appForegroundStateService.isSyncingNotificationEvent, + ) { syncState, networkState, isInForeground, isInCall, isSyncingNotificationEvent -> + val isAppActive = isInForeground || isInCall || isSyncingNotificationEvent + val isNetworkAvailable = networkState == NetworkStatus.Connected + + Timber.tag(tag).d("isAppActive=$isAppActive, isNetworkAvailable=$isNetworkAvailable") + if (syncState == SyncState.Running && !isAppActive) { + SyncStateAction.StopSync + } else if (syncState == SyncState.Idle && isAppActive && isNetworkAvailable) { + SyncStateAction.StartSync + } else { + SyncStateAction.NoOp + } + } + .distinctUntilChanged() + .debounce { action -> + // Don't stop the sync immediately, wait a bit to avoid starting/stopping the sync too often + if (action == SyncStateAction.StopSync) 3.seconds else 0.seconds + } + .onCompletion { + Timber.tag(tag).d("has been stopped") + } + .collect { action -> + when (action) { + SyncStateAction.StartSync -> { + syncService.startSync() + } + SyncStateAction.StopSync -> { + syncService.stopSync() + } + SyncStateAction.NoOp -> Unit + } + } + } +} + +private enum class SyncStateAction { + StartSync, + StopSync, + NoOp, +} 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 abddb2adac..fbecfeb60b 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 @@ -22,19 +22,21 @@ import im.vector.app.features.analytics.plan.UserProperties import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.log.logger.LoggerTag +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState +import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.roomlist.RoomListService 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.sync.isOnline import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus -import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase import io.element.android.libraries.push.api.PushService import io.element.android.libraries.pushproviders.api.RegistrationFailure import io.element.android.services.analytics.api.AnalyticsService +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -51,7 +53,7 @@ class LoggedInPresenter @Inject constructor( private val sessionVerificationService: SessionVerificationService, private val analyticsService: AnalyticsService, private val encryptionService: EncryptionService, - private val enableNativeSlidingSyncUseCase: EnableNativeSlidingSyncUseCase, + private val buildMeta: BuildMeta, ) : Presenter { @Composable override fun present(): LoggedInState { @@ -60,6 +62,7 @@ class LoggedInPresenter @Inject constructor( pushService.ignoreRegistrationError(matrixClient.sessionId) }.collectAsState(initial = false) val pusherRegistrationState = remember>> { mutableStateOf(AsyncData.Uninitialized) } + LaunchedEffect(Unit) { preloadAccountManagementUrl() } LaunchedEffect(Unit) { sessionVerificationService.sessionVerifiedStatus .onEach { sessionVerifiedStatus -> @@ -103,12 +106,10 @@ class LoggedInPresenter @Inject constructor( } } LoggedInEvents.CheckSlidingSyncProxyAvailability -> coroutineScope.launch { - forceNativeSlidingSyncMigration = matrixClient.forceNativeSlidingSyncMigration().getOrDefault(false) + forceNativeSlidingSyncMigration = matrixClient.needsForcedNativeSlidingSyncMigration().getOrDefault(false) } LoggedInEvents.LogoutAndMigrateToNativeSlidingSync -> coroutineScope.launch { - // Enable native sliding sync if it wasn't already the case - enableNativeSlidingSyncUseCase() - // Then force the logout + // Force the logout since Native Sliding Sync is already enforced by the SDK matrixClient.logout(userInitiated = true, ignoreSdkError = true) } } @@ -119,20 +120,15 @@ class LoggedInPresenter @Inject constructor( pusherRegistrationState = pusherRegistrationState.value, ignoreRegistrationError = ignoreRegistrationError, forceNativeSlidingSyncMigration = forceNativeSlidingSyncMigration, + appName = buildMeta.applicationName, eventSink = ::handleEvent ) } - // Force the user to log out if they were using the proxy sliding sync and it's no longer available, but native sliding sync is. - private suspend fun MatrixClient.forceNativeSlidingSyncMigration(): Result = runCatching { + // Force the user to log out if they were using the proxy sliding sync as it's no longer supported by the SDK + private suspend fun MatrixClient.needsForcedNativeSlidingSyncMigration(): Result = runCatching { val currentSlidingSyncVersion = currentSlidingSyncVersion().getOrThrow() - if (currentSlidingSyncVersion == SlidingSyncVersion.Proxy) { - val availableSlidingSyncVersions = availableSlidingSyncVersions().getOrThrow() - availableSlidingSyncVersions.contains(SlidingSyncVersion.Native) && - !availableSlidingSyncVersions.contains(SlidingSyncVersion.Proxy) - } else { - false - } + currentSlidingSyncVersion == SlidingSyncVersion.Proxy } private suspend fun ensurePusherIsRegistered(pusherRegistrationState: MutableState>) { @@ -209,4 +205,9 @@ class LoggedInPresenter @Inject constructor( analyticsService.capture(CryptoSessionStateChange(changeRecoveryState, changeVerificationState)) } } + + private fun CoroutineScope.preloadAccountManagementUrl() = launch { + matrixClient.getAccountManagementUrl(AccountManagementAction.Profile) + matrixClient.getAccountManagementUrl(AccountManagementAction.SessionsList) + } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt index 540d5d0d8f..8f039ffa2b 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt @@ -14,5 +14,6 @@ data class LoggedInState( val pusherRegistrationState: AsyncData, val ignoreRegistrationError: Boolean, val forceNativeSlidingSyncMigration: Boolean, + val appName: String, val eventSink: (LoggedInEvents) -> Unit, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt index 43b7164f2a..2ba0c8de81 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt @@ -24,10 +24,12 @@ fun aLoggedInState( showSyncSpinner: Boolean = false, pusherRegistrationState: AsyncData = AsyncData.Uninitialized, forceNativeSlidingSyncMigration: Boolean = false, + appName: String = "Element X", ) = LoggedInState( showSyncSpinner = showSyncSpinner, pusherRegistrationState = pusherRegistrationState, ignoreRegistrationError = false, forceNativeSlidingSyncMigration = forceNativeSlidingSyncMigration, + appName = appName, eventSink = {}, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt index cd9ecf637a..d6a12ea27b 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt @@ -73,9 +73,12 @@ fun LoggedInView( // Set the force migration dialog here so it's always displayed over every screen if (state.forceNativeSlidingSyncMigration) { - ForceNativeSlidingSyncMigrationDialog(onSubmit = { - state.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) - }) + ForceNativeSlidingSyncMigrationDialog( + appName = state.appName, + onSubmit = { + state.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) + } + ) } } @@ -98,11 +101,12 @@ private fun Throwable.getReason(): String? { @Composable private fun ForceNativeSlidingSyncMigrationDialog( + appName: String, onSubmit: () -> Unit, ) { ErrorDialog( title = null, - content = stringResource(R.string.banner_migrate_to_native_sliding_sync_force_logout_title), + content = stringResource(R.string.banner_migrate_to_native_sliding_sync_app_force_logout_title, appName), submitText = stringResource(R.string.banner_migrate_to_native_sliding_sync_action), onSubmit = onSubmit, canDismiss = false, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SendQueues.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SendQueues.kt index 458e6e5c49..8e66baf836 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SendQueues.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SendQueues.kt @@ -32,7 +32,7 @@ class SendQueues @Inject constructor( ) { /** * Launches the send queues retry mechanism in the given [coroutineScope]. - * Makes sure to re-enable all send queues when the network status is [NetworkStatus.Online]. + * Makes sure to re-enable all send queues when the network status is [NetworkStatus.Connected]. */ @OptIn(FlowPreview::class) fun launchIn(coroutineScope: CoroutineScope) { 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 df2e25d4b3..543c2558e1 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 @@ -9,9 +9,7 @@ package io.element.android.appnav.room.joined import android.os.Parcelable import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.Modifier -import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext @@ -56,7 +54,7 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor( roomComponentFactory: RoomComponentFactory, ) : BaseFlowNode( backstack = BackStack( - initialElement = when (val input = plugins.filterIsInstance(Inputs::class.java).first().initialElement) { + initialElement = when (val input = plugins.filterIsInstance().first().initialElement) { is RoomNavigationTarget.Messages -> NavTarget.Messages(input.focusedEventId) RoomNavigationTarget.Details -> NavTarget.RoomDetails RoomNavigationTarget.NotificationSettings -> NavTarget.RoomNotificationSettings @@ -197,16 +195,6 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { - // Rely on the View Lifecycle in addition to the Node Lifecycle, - // because this node enters 'onDestroy' before his children, so it can leads to - // using the room in a child node where it's already closed. - DisposableEffect(Unit) { - onDispose { - if (lifecycle.currentState == Lifecycle.State.DESTROYED) { - inputs.room.destroy() - } - } - } BackstackView() } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt b/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt index 731072889d..08e999245b 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt @@ -9,7 +9,7 @@ package io.element.android.appnav.root import com.bumble.appyx.core.state.MutableSavedStateMap import com.bumble.appyx.core.state.SavedStateMap -import io.element.android.appnav.di.MatrixClientsHolder +import io.element.android.appnav.di.MatrixSessionCache import io.element.android.features.login.api.LoginUserStory import io.element.android.features.preferences.api.CacheService import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService @@ -31,7 +31,7 @@ private const val SAVE_INSTANCE_KEY = "io.element.android.x.RootNavStateFlowFact class RootNavStateFlowFactory @Inject constructor( private val authenticationService: MatrixAuthenticationService, private val cacheService: CacheService, - private val matrixClientsHolder: MatrixClientsHolder, + private val matrixSessionCache: MatrixSessionCache, private val imageLoaderHolder: ImageLoaderHolder, private val loginUserStory: LoginUserStory, private val sessionPreferencesStoreFactory: SessionPreferencesStoreFactory, @@ -63,7 +63,7 @@ class RootNavStateFlowFactory @Inject constructor( val initialCacheIndex = savedStateMap.getCacheIndexOrDefault() return cacheService.clearedCacheEventFlow .onEach { sessionId -> - matrixClientsHolder.remove(sessionId) + matrixSessionCache.remove(sessionId) // Ensure image loader will be recreated with the new MatrixClient imageLoaderHolder.remove(sessionId) // Also remove cached value for SessionPreferencesStore diff --git a/appnav/src/main/res/values-cs/translations.xml b/appnav/src/main/res/values-cs/translations.xml index e749887bc4..3652bda56f 100644 --- a/appnav/src/main/res/values-cs/translations.xml +++ b/appnav/src/main/res/values-cs/translations.xml @@ -1,5 +1,6 @@ "Odhlásit se a upgradovat" + "%1$s již nepodporuje starý protokol. Odhlaste se a znovu přihlaste, abyste mohli pokračovat v používání aplikace." "Váš domovský server již nepodporuje starý protokol. Chcete-li pokračovat v používání aplikace, odhlaste se a znovu se přihlaste." diff --git a/appnav/src/main/res/values-de/translations.xml b/appnav/src/main/res/values-de/translations.xml index 2b33dacaca..92792a2d09 100644 --- a/appnav/src/main/res/values-de/translations.xml +++ b/appnav/src/main/res/values-de/translations.xml @@ -1,5 +1,6 @@ "Abmelden und aktualisieren" + "%1$sunterstützt das alte Protokoll nicht mehr. Bitte melden Sie sich ab und wieder an, um die App weiter nutzen zu können." "Dein Homeserver unterstützt das alte Protokoll nicht mehr. Bitte logge dich aus und melde dich wieder an, um die App weiter zu nutzen." diff --git a/appnav/src/main/res/values-et/translations.xml b/appnav/src/main/res/values-et/translations.xml index 1631134d60..b71640a4b4 100644 --- a/appnav/src/main/res/values-et/translations.xml +++ b/appnav/src/main/res/values-et/translations.xml @@ -1,5 +1,6 @@ "Logi välja ja uuenda" + "%1$s enam ei toeta vana protokolli. Kui soovid rakendust edasi kasutada, siis logi korraks temast välja ning seejärel tagasi." "Sinu koduserver enam ei toeta vana protokolli. Jätkamaks rakenduse kasutamist palun logi välja ning seejärel tagasi." diff --git a/appnav/src/main/res/values-fr/translations.xml b/appnav/src/main/res/values-fr/translations.xml index 6295bc88df..e3885f84ba 100644 --- a/appnav/src/main/res/values-fr/translations.xml +++ b/appnav/src/main/res/values-fr/translations.xml @@ -1,5 +1,6 @@ "Déconnecter et mettre à niveau" + "%1$s ne prend plus en charge l’ancien protocole. Veuillez vous déconnecter puis vous reconnecter pour continuer à utiliser l’application." "Votre serveur d’accueil ne prend plus en charge l’ancien protocole. Veuillez vous déconnecter puis vous reconnecter pour continuer à utiliser l’application." diff --git a/appnav/src/main/res/values-ru/translations.xml b/appnav/src/main/res/values-ru/translations.xml index ac03f18098..45f00a7cb2 100644 --- a/appnav/src/main/res/values-ru/translations.xml +++ b/appnav/src/main/res/values-ru/translations.xml @@ -1,5 +1,6 @@ "Выйти и обновить" + "%1$s больше не поддерживает старый протокол. Пожалуйста, выйдите из системы и войдите снова, чтобы продолжить использование приложения." "Ваш домашний сервер больше не поддерживает старый протокол. Пожалуйста, выйдите и войдите в свою учётную запись снова, чтобы продолжить использование приложения." diff --git a/appnav/src/main/res/values-sk/translations.xml b/appnav/src/main/res/values-sk/translations.xml index d1ac766f8c..a75c2fd3d0 100644 --- a/appnav/src/main/res/values-sk/translations.xml +++ b/appnav/src/main/res/values-sk/translations.xml @@ -1,5 +1,6 @@ "Odhlásiť sa a aktualizovať" + "%1$s už nepodporuje starý protokol. Odhláste sa a znova prihláste, aby ste mohli pokračovať v používaní aplikácie." "Váš domovský server už nepodporuje starý protokol. Ak chcete pokračovať v používaní aplikácie, odhláste sa a znova sa prihláste." diff --git a/appnav/src/main/res/values-tr/translations.xml b/appnav/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..c0a8ccd136 --- /dev/null +++ b/appnav/src/main/res/values-tr/translations.xml @@ -0,0 +1,5 @@ + + + "Çıkış Yap ve Yükselt" + "Ana sunucunuz artık eski protokolü desteklemiyor. Lütfen oturumu kapatın ve uygulamayı kullanmaya devam etmek için tekrar oturum açın." + diff --git a/appnav/src/main/res/values/localazy.xml b/appnav/src/main/res/values/localazy.xml index bb6df44051..c018fbf7fd 100644 --- a/appnav/src/main/res/values/localazy.xml +++ b/appnav/src/main/res/values/localazy.xml @@ -1,5 +1,6 @@ "Log Out & Upgrade" + "%1$s no longer supports the old protocol. Please log out and log back in to continue using the app." "Your homeserver no longer supports the old protocol. Please log out and log back in to continue using the app." diff --git a/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt new file mode 100644 index 0000000000..b06ea5ca21 --- /dev/null +++ b/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt @@ -0,0 +1,349 @@ +/* + * 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 + +import io.element.android.appnav.di.SyncOrchestrator +import io.element.android.features.networkmonitor.api.NetworkStatus +import io.element.android.features.networkmonitor.test.FakeNetworkMonitor +import io.element.android.libraries.matrix.api.sync.SyncState +import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.sync.FakeSyncService +import io.element.android.services.appnavstate.test.FakeAppForegroundStateService +import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.lambda.lambdaRecorder +import io.element.android.tests.testutils.testCoroutineDispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.advanceTimeBy +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.seconds + +@OptIn(ExperimentalCoroutinesApi::class) +class SyncOrchestratorTest { + @get:Rule + val warmUpRule = WarmUpRule() + + @Test + fun `when the sync wasn't running before, an initial sync will take place, even with no network`() = runTest { + val startSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Idle).apply { + startSyncLambda = startSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Disconnected) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + ) + + // We start observing with an initial sync + syncOrchestrator.start() + + // Advance the time just enough to make sure the initial sync has run + advanceTimeBy(1.milliseconds) + startSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `when the sync wasn't running before, an initial sync will take place`() = runTest { + val startSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Idle).apply { + startSyncLambda = startSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + ) + + // We start observing with an initial sync + syncOrchestrator.start() + + // Advance the time just enough to make sure the initial sync has run + advanceTimeBy(1.milliseconds) + startSyncRecorder.assertions().isCalledOnce() + + // If we wait for a while, the sync will not be started again by the observer since it's already running + advanceTimeBy(10.seconds) + startSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `when the app goes to background and the sync was running, it will be stopped after a delay`() = runTest { + val stopSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Running).apply { + stopSyncLambda = stopSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val appForegroundStateService = FakeAppForegroundStateService(initialForegroundValue = true) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + ) + + // We start observing + syncOrchestrator.observeStates() + + // Advance the time to make sure the orchestrator has had time to start processing the inputs + advanceTimeBy(100.milliseconds) + + // Stop sync was never called + stopSyncRecorder.assertions().isNeverCalled() + + // Now we send the app to background + appForegroundStateService.isInForeground.value = false + + // Stop sync will be called after some delay + stopSyncRecorder.assertions().isNeverCalled() + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `when the app state changes several times in a short while, stop sync is only called once`() = runTest { + val stopSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Running).apply { + stopSyncLambda = stopSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val appForegroundStateService = FakeAppForegroundStateService(initialForegroundValue = true) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + ) + + // We start observing + syncOrchestrator.observeStates() + + // Advance the time to make sure the orchestrator has had time to start processing the inputs + advanceTimeBy(100.milliseconds) + + // Stop sync was never called + stopSyncRecorder.assertions().isNeverCalled() + + // Now we send the app to background + appForegroundStateService.isInForeground.value = false + + // Ensure the stop action wasn't called yet + stopSyncRecorder.assertions().isNeverCalled() + advanceTimeBy(1.seconds) + appForegroundStateService.isInForeground.value = true + advanceTimeBy(1.seconds) + + // Ensure the stop action wasn't called yet either, since we didn't give it enough time to emit after the expected delay + stopSyncRecorder.assertions().isNeverCalled() + + // Now change it again and wait for enough time + appForegroundStateService.isInForeground.value = false + advanceTimeBy(4.seconds) + + // And confirm it's now called + stopSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `when the app was in background and we receive a notification, a sync will be started then stopped`() = runTest { + val startSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val stopSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Idle).apply { + startSyncLambda = startSyncRecorder + stopSyncLambda = stopSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = false, + initialIsSyncingNotificationEventValue = false, + ) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + ) + + // We start observing + syncOrchestrator.observeStates() + + // Advance the time to make sure the orchestrator has had time to start processing the inputs + advanceTimeBy(100.milliseconds) + + // Start sync was never called + startSyncRecorder.assertions().isNeverCalled() + + // Now we receive a notification and need to sync + appForegroundStateService.updateIsSyncingNotificationEvent(true) + + // Start sync will be called shortly after + advanceTimeBy(1.milliseconds) + startSyncRecorder.assertions().isCalledOnce() + + // If the sync is running and we mark the notification sync as no longer necessary, the sync stops after a delay + syncService.emitSyncState(SyncState.Running) + appForegroundStateService.updateIsSyncingNotificationEvent(false) + + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `when the app was in background and we join a call, a sync will be started`() = runTest { + val startSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val stopSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Idle).apply { + startSyncLambda = startSyncRecorder + stopSyncLambda = stopSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = false, + initialIsSyncingNotificationEventValue = false, + ) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + ) + + // We start observing + syncOrchestrator.observeStates() + + // Advance the time to make sure the orchestrator has had time to start processing the inputs + advanceTimeBy(100.milliseconds) + + // Start sync was never called + startSyncRecorder.assertions().isNeverCalled() + + // Now we join a call + appForegroundStateService.updateIsInCallState(true) + + // Start sync will be called shortly after + advanceTimeBy(1.milliseconds) + startSyncRecorder.assertions().isCalledOnce() + + // If the sync is running and we mark the in-call state as false, the sync stops after a delay + syncService.emitSyncState(SyncState.Running) + appForegroundStateService.updateIsInCallState(false) + + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `when the app is in foreground, we sync for a notification and a call is ongoing, the sync will only stop when all conditions are false`() = runTest { + val startSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val stopSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Running).apply { + startSyncLambda = startSyncRecorder + stopSyncLambda = stopSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = true, + initialIsSyncingNotificationEventValue = true, + initialIsInCallValue = true, + ) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + ) + + // We start observing + syncOrchestrator.observeStates() + + // Advance the time to make sure the orchestrator has had time to start processing the inputs + advanceTimeBy(100.milliseconds) + + // Start sync was never called + startSyncRecorder.assertions().isNeverCalled() + + // We send the app to background, it's still syncing + appForegroundStateService.givenIsInForeground(false) + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isNeverCalled() + + // We stop the notification sync, it's still syncing + appForegroundStateService.updateIsSyncingNotificationEvent(false) + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isNeverCalled() + + // We set the in-call state to false, now it stops syncing after a delay + appForegroundStateService.updateIsInCallState(false) + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isCalledOnce() + } + + @Test + fun `if the sync was running, it's set to be stopped but something triggers a sync again, the sync is not stopped`() = runTest { + val stopSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Running).apply { + stopSyncLambda = stopSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Connected) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = true, + initialIsSyncingNotificationEventValue = false, + initialIsInCallValue = false, + ) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + ) + + // We start observing + syncOrchestrator.observeStates() + + // Advance the time to make sure the orchestrator has had time to start processing the inputs + advanceTimeBy(100.milliseconds) + + // This will set the sync to stop + appForegroundStateService.givenIsInForeground(false) + + // But if we reset it quickly before the stop sync takes place, the sync is not stopped + advanceTimeBy(2.seconds) + appForegroundStateService.givenIsInForeground(true) + + advanceTimeBy(10.seconds) + stopSyncRecorder.assertions().isNeverCalled() + } + + @Test + fun `when network is offline, sync service should not start`() = runTest { + val startSyncRecorder = lambdaRecorder> { Result.success(Unit) } + val syncService = FakeSyncService(initialSyncState = SyncState.Idle).apply { + startSyncLambda = startSyncRecorder + } + val networkMonitor = FakeNetworkMonitor(initialStatus = NetworkStatus.Disconnected) + val syncOrchestrator = createSyncOrchestrator( + syncService = syncService, + networkMonitor = networkMonitor, + ) + + // We start observing + syncOrchestrator.observeStates() + + // This should still not trigger a sync, since there is no network + advanceTimeBy(10.seconds) + startSyncRecorder.assertions().isNeverCalled() + } + + private fun TestScope.createSyncOrchestrator( + syncService: FakeSyncService = FakeSyncService(), + networkMonitor: FakeNetworkMonitor = FakeNetworkMonitor(), + appForegroundStateService: FakeAppForegroundStateService = FakeAppForegroundStateService(), + ) = SyncOrchestrator( + matrixClient = FakeMatrixClient(syncService = syncService, sessionCoroutineScope = backgroundScope), + networkMonitor = networkMonitor, + appForegroundStateService = appForegroundStateService, + dispatchers = testCoroutineDispatchers(), + ) +} diff --git a/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixClientsHolderTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixClientsHolderTest.kt deleted file mode 100644 index 23dfc9c522..0000000000 --- a/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixClientsHolderTest.kt +++ /dev/null @@ -1,97 +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.appnav.di - -import com.bumble.appyx.core.state.MutableSavedStateMapImpl -import com.google.common.truth.Truth.assertThat -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.auth.FakeMatrixAuthenticationService -import kotlinx.coroutines.test.runTest -import org.junit.Test - -class MatrixClientsHolderTest { - @Test - fun `test getOrNull`() { - val fakeAuthenticationService = FakeMatrixAuthenticationService() - val matrixClientsHolder = MatrixClientsHolder(fakeAuthenticationService) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNull() - } - - @Test - fun `test getOrRestore`() = runTest { - val fakeAuthenticationService = FakeMatrixAuthenticationService() - val matrixClientsHolder = MatrixClientsHolder(fakeAuthenticationService) - val fakeMatrixClient = FakeMatrixClient() - fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNull() - assertThat(matrixClientsHolder.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) - // Do it again to hit the cache - assertThat(matrixClientsHolder.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) - } - - @Test - fun `test remove`() = runTest { - val fakeAuthenticationService = FakeMatrixAuthenticationService() - val matrixClientsHolder = MatrixClientsHolder(fakeAuthenticationService) - val fakeMatrixClient = FakeMatrixClient() - fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) - assertThat(matrixClientsHolder.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) - // Remove - matrixClientsHolder.remove(A_SESSION_ID) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNull() - } - - @Test - fun `test remove all`() = runTest { - val fakeAuthenticationService = FakeMatrixAuthenticationService() - val matrixClientsHolder = MatrixClientsHolder(fakeAuthenticationService) - val fakeMatrixClient = FakeMatrixClient() - fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) - assertThat(matrixClientsHolder.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) - // Remove all - matrixClientsHolder.removeAll() - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNull() - } - - @Test - fun `test save and restore`() = runTest { - val fakeAuthenticationService = FakeMatrixAuthenticationService() - val matrixClientsHolder = MatrixClientsHolder(fakeAuthenticationService) - val fakeMatrixClient = FakeMatrixClient() - fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) - matrixClientsHolder.getOrRestore(A_SESSION_ID) - val savedStateMap = MutableSavedStateMapImpl { true } - matrixClientsHolder.saveIntoSavedState(savedStateMap) - assertThat(savedStateMap.size).isEqualTo(1) - // Test Restore with non-empty map - matrixClientsHolder.restoreWithSavedState(savedStateMap) - // Empty the map - matrixClientsHolder.removeAll() - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNull() - // Restore again - matrixClientsHolder.restoreWithSavedState(savedStateMap) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) - } - - @Test - fun `test AuthenticationService listenToNewMatrixClients emits a Client value and we save it`() = runTest { - val fakeAuthenticationService = FakeMatrixAuthenticationService() - val matrixClientsHolder = MatrixClientsHolder(fakeAuthenticationService) - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNull() - - fakeAuthenticationService.givenMatrixClient(FakeMatrixClient(sessionId = A_SESSION_ID)) - val loginSucceeded = fakeAuthenticationService.login("user", "pass") - - assertThat(loginSucceeded.isSuccess).isTrue() - assertThat(matrixClientsHolder.getOrNull(A_SESSION_ID)).isNotNull() - } -} diff --git a/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt new file mode 100644 index 0000000000..52443fa4a1 --- /dev/null +++ b/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt @@ -0,0 +1,131 @@ +/* + * 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.appnav.di + +import com.bumble.appyx.core.state.MutableSavedStateMapImpl +import com.google.common.truth.Truth.assertThat +import io.element.android.features.networkmonitor.test.FakeNetworkMonitor +import io.element.android.libraries.matrix.api.MatrixClient +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.auth.FakeMatrixAuthenticationService +import io.element.android.services.appnavstate.test.FakeAppForegroundStateService +import io.element.android.tests.testutils.testCoroutineDispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class MatrixSessionCacheTest { + @Test + fun `test getOrNull`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + } + + @OptIn(ExperimentalCoroutinesApi::class) + @Test + fun `test getSyncOrchestratorOrNull`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + + // With no matrix client there is no sync orchestrator + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + assertThat(matrixSessionCache.getSyncOrchestrator(A_SESSION_ID)).isNull() + + // But as soon as we receive a client, we can get the sync orchestrator + val fakeMatrixClient = FakeMatrixClient(sessionCoroutineScope = backgroundScope) + fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) + assertThat(matrixSessionCache.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) + assertThat(matrixSessionCache.getSyncOrchestrator(A_SESSION_ID)).isNotNull() + } + + @Test + fun `test getOrRestore`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + val fakeMatrixClient = FakeMatrixClient(sessionCoroutineScope = backgroundScope) + fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + assertThat(matrixSessionCache.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) + // Do it again to hit the cache + assertThat(matrixSessionCache.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) + } + + @Test + fun `test remove`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + val fakeMatrixClient = FakeMatrixClient(sessionCoroutineScope = backgroundScope) + fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) + assertThat(matrixSessionCache.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) + // Remove + matrixSessionCache.remove(A_SESSION_ID) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + } + + @Test + fun `test remove all`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + val fakeMatrixClient = FakeMatrixClient(sessionCoroutineScope = backgroundScope) + fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) + assertThat(matrixSessionCache.getOrRestore(A_SESSION_ID).getOrNull()).isEqualTo(fakeMatrixClient) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) + // Remove all + matrixSessionCache.removeAll() + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + } + + @Test + fun `test save and restore`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + val fakeMatrixClient = FakeMatrixClient(sessionCoroutineScope = backgroundScope) + fakeAuthenticationService.givenMatrixClient(fakeMatrixClient) + matrixSessionCache.getOrRestore(A_SESSION_ID) + val savedStateMap = MutableSavedStateMapImpl { true } + matrixSessionCache.saveIntoSavedState(savedStateMap) + assertThat(savedStateMap.size).isEqualTo(1) + // Test Restore with non-empty map + matrixSessionCache.restoreWithSavedState(savedStateMap) + // Empty the map + matrixSessionCache.removeAll() + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + // Restore again + matrixSessionCache.restoreWithSavedState(savedStateMap) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isEqualTo(fakeMatrixClient) + } + + @Test + fun `test AuthenticationService listenToNewMatrixClients emits a Client value and we save it`() = runTest { + val fakeAuthenticationService = FakeMatrixAuthenticationService() + val matrixSessionCache = MatrixSessionCache(fakeAuthenticationService, createSyncOrchestratorFactory()) + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNull() + + fakeAuthenticationService.givenMatrixClient(FakeMatrixClient(sessionId = A_SESSION_ID, sessionCoroutineScope = backgroundScope)) + val loginSucceeded = fakeAuthenticationService.login("user", "pass") + + assertThat(loginSucceeded.isSuccess).isTrue() + assertThat(matrixSessionCache.getOrNull(A_SESSION_ID)).isNotNull() + } + + private fun TestScope.createSyncOrchestratorFactory() = object : SyncOrchestrator.Factory { + override fun create(matrixClient: MatrixClient): SyncOrchestrator { + return SyncOrchestrator( + matrixClient, + appForegroundStateService = FakeAppForegroundStateService(), + networkMonitor = FakeNetworkMonitor(), + dispatchers = testCoroutineDispatchers(), + ) + } + } +} 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 3f0713cd99..d86c46f159 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 @@ -5,19 +5,20 @@ * Please see LICENSE files in the repository root for full details. */ +@file:OptIn(ExperimentalCoroutinesApi::class) + package io.element.android.appnav.loggedin -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow import app.cash.turbine.ReceiveTurbine -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.CryptoSessionStateChange import im.vector.app.features.analytics.plan.UserProperties +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState +import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion import io.element.android.libraries.matrix.api.sync.SyncState @@ -26,12 +27,11 @@ import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatu 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.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService import io.element.android.libraries.matrix.test.sync.FakeSyncService import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService -import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.libraries.push.api.PushService import io.element.android.libraries.push.test.FakePushService import io.element.android.libraries.pushproviders.api.Distributor @@ -45,9 +45,8 @@ import io.element.android.tests.testutils.lambda.any import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value +import io.element.android.tests.testutils.test import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -59,10 +58,7 @@ class LoggedInPresenterTest { @Test fun `present - initial state`() = runTest { - val presenter = createLoggedInPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoggedInPresenter().test { val initialState = awaitItem() assertThat(initialState.showSyncSpinner).isFalse() assertThat(initialState.pusherRegistrationState.isUninitialized()).isTrue() @@ -70,13 +66,32 @@ class LoggedInPresenterTest { } } + @Test + fun `present - ensure that account urls are preloaded`() = runTest { + val accountManagementUrlResult = lambdaRecorder> { Result.success("aUrl") } + val matrixClient = FakeMatrixClient( + accountManagementUrlResult = accountManagementUrlResult, + ) + createLoggedInPresenter( + matrixClient = matrixClient, + ).test { + awaitItem() + advanceUntilIdle() + accountManagementUrlResult.assertions().isCalledExactly(2) + .withSequence( + listOf(value(AccountManagementAction.Profile)), + listOf(value(AccountManagementAction.SessionsList)), + ) + } + } + @Test fun `present - show sync spinner`() = runTest { val roomListService = FakeRoomListService() - val presenter = createLoggedInPresenter(roomListService, SyncState.Running) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoggedInPresenter( + syncState = SyncState.Running, + matrixClient = FakeMatrixClient(roomListService = roomListService), + ).test { val initialState = awaitItem() assertThat(initialState.showSyncSpinner).isFalse() roomListService.postSyncIndicator(RoomListService.SyncIndicator.Show) @@ -92,18 +107,19 @@ class LoggedInPresenterTest { val roomListService = FakeRoomListService() val verificationService = FakeSessionVerificationService() val encryptionService = FakeEncryptionService() - val presenter = LoggedInPresenter( - matrixClient = FakeMatrixClient(roomListService = roomListService, encryptionService = encryptionService), + val buildMeta = aBuildMeta() + LoggedInPresenter( + matrixClient = FakeMatrixClient( + roomListService = roomListService, + encryptionService = encryptionService, + ), syncService = FakeSyncService(initialSyncState = SyncState.Running), pushService = FakePushService(), sessionVerificationService = verificationService, analyticsService = analyticsService, encryptionService = encryptionService, - enableNativeSlidingSyncUseCase = EnableNativeSlidingSyncUseCase(InMemoryAppPreferencesStore(), this), - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + buildMeta = buildMeta, + ).test { encryptionService.emitRecoveryState(RecoveryState.UNKNOWN) encryptionService.emitRecoveryState(RecoveryState.INCOMPLETE) verificationService.emitVerifiedStatus(SessionVerifiedStatus.Verified) @@ -129,13 +145,10 @@ class LoggedInPresenterTest { val verificationService = FakeSessionVerificationService( initialSessionVerifiedStatus = SessionVerifiedStatus.NotVerified ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = verificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.errorOrNull()) .isInstanceOf(PusherRegistrationFailure.AccountNotVerified::class.java) @@ -155,13 +168,13 @@ class LoggedInPresenterTest { val pushService = createFakePushService( registerWithLambda = lambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + matrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ), + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.isSuccess()).isTrue() lambda.assertions() @@ -188,13 +201,13 @@ class LoggedInPresenterTest { val pushService = createFakePushService( registerWithLambda = lambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + matrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ), + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.isFailure()).isTrue() lambda.assertions() @@ -233,13 +246,13 @@ class LoggedInPresenterTest { currentPushProvider = { pushProvider }, registerWithLambda = lambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + matrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ), + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.isSuccess()).isTrue() lambda.assertions() @@ -277,13 +290,13 @@ class LoggedInPresenterTest { currentPushProvider = { pushProvider }, registerWithLambda = lambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + matrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ), + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.isSuccess()).isTrue() lambda.assertions() @@ -317,13 +330,10 @@ class LoggedInPresenterTest { currentPushProvider = { pushProvider }, registerWithLambda = lambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.errorOrNull()) .isInstanceOf(PusherRegistrationFailure.NoDistributorsAvailable::class.java) @@ -345,13 +355,10 @@ class LoggedInPresenterTest { registerWithLambda = lambda, setIgnoreRegistrationErrorLambda = setIgnoreRegistrationErrorLambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.errorOrNull()) .isInstanceOf(PusherRegistrationFailure.NoProvidersAvailable::class.java) @@ -394,13 +401,10 @@ class LoggedInPresenterTest { registerWithLambda = lambda, selectPushProviderLambda = selectPushProviderLambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.errorOrNull()) .isInstanceOf(PusherRegistrationFailure.NoDistributorsAvailable::class.java) @@ -445,13 +449,13 @@ class LoggedInPresenterTest { pushProvider1 = pushProvider1, registerWithLambda = lambda, ) - val presenter = createLoggedInPresenter( + createLoggedInPresenter( pushService = pushService, sessionVerificationService = sessionVerificationService, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + matrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ), + ).test { val finalState = awaitFirstItem() assertThat(finalState.pusherRegistrationState.isSuccess()).isTrue() lambda.assertions().isCalledOnce() @@ -505,10 +509,9 @@ class LoggedInPresenterTest { currentSlidingSyncVersionLambda = { Result.success(SlidingSyncVersion.Proxy) }, availableSlidingSyncVersionsLambda = { Result.success(listOf(SlidingSyncVersion.Native)) }, ) - val presenter = createLoggedInPresenter(matrixClient = matrixClient) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoggedInPresenter( + matrixClient = matrixClient, + ).test { val initialState = awaitItem() assertThat(initialState.forceNativeSlidingSyncMigration).isFalse() @@ -518,51 +521,27 @@ class LoggedInPresenterTest { } } - @Test - fun `present - CheckSlidingSyncProxyAvailability will not force the migration if native sliding sync is not supported too`() = runTest { - val matrixClient = FakeMatrixClient( - currentSlidingSyncVersionLambda = { Result.success(SlidingSyncVersion.Proxy) }, - availableSlidingSyncVersionsLambda = { Result.success(emptyList()) }, - ) - val presenter = createLoggedInPresenter(matrixClient = matrixClient) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - val initialState = awaitItem() - assertThat(initialState.forceNativeSlidingSyncMigration).isFalse() - - initialState.eventSink(LoggedInEvents.CheckSlidingSyncProxyAvailability) - - expectNoEvents() - } - } - @OptIn(ExperimentalCoroutinesApi::class) @Test - fun `present - LogoutAndMigrateToNativeSlidingSync enables native sliding sync and logs out the user`() = runTest { - val logoutLambda = lambdaRecorder { userInitiated, ignoreSdkError -> + fun `present - LogoutAndMigrateToNativeSlidingSync logs out the user`() = runTest { + val logoutLambda = lambdaRecorder { userInitiated, ignoreSdkError -> assertThat(userInitiated).isTrue() assertThat(ignoreSdkError).isTrue() - null } - val matrixClient = FakeMatrixClient().apply { + val matrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ).apply { this.logoutLambda = logoutLambda } - val appPreferencesStore = InMemoryAppPreferencesStore() - val enableNativeSlidingSyncUseCase = EnableNativeSlidingSyncUseCase(appPreferencesStore, this) - val presenter = createLoggedInPresenter(matrixClient = matrixClient, enableNativeSlidingSyncUseCase = enableNativeSlidingSyncUseCase) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoggedInPresenter( + matrixClient = matrixClient, + ).test { val initialState = awaitItem() - assertThat(appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() - initialState.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) advanceUntilIdle() - assertThat(appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() assertThat(logoutLambda.assertions().isCalledOnce()) } } @@ -572,15 +551,16 @@ class LoggedInPresenterTest { return awaitItem() } - private fun TestScope.createLoggedInPresenter( - roomListService: RoomListService = FakeRoomListService(), + private fun createLoggedInPresenter( syncState: SyncState = SyncState.Running, analyticsService: AnalyticsService = FakeAnalyticsService(), sessionVerificationService: SessionVerificationService = FakeSessionVerificationService(), encryptionService: EncryptionService = FakeEncryptionService(), pushService: PushService = FakePushService(), - enableNativeSlidingSyncUseCase: EnableNativeSlidingSyncUseCase = EnableNativeSlidingSyncUseCase(InMemoryAppPreferencesStore(), this), - matrixClient: MatrixClient = FakeMatrixClient(roomListService = roomListService), + matrixClient: MatrixClient = FakeMatrixClient( + accountManagementUrlResult = { Result.success(null) }, + ), + buildMeta: BuildMeta = aBuildMeta(), ): LoggedInPresenter { return LoggedInPresenter( matrixClient = matrixClient, @@ -589,7 +569,7 @@ class LoggedInPresenterTest { sessionVerificationService = sessionVerificationService, analyticsService = analyticsService, encryptionService = encryptionService, - enableNativeSlidingSyncUseCase = enableNativeSlidingSyncUseCase, + buildMeta = buildMeta, ) } } diff --git a/build.gradle.kts b/build.gradle.kts index afdbc03ac5..56fcb0ec7b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -166,14 +166,17 @@ allprojects { // Register quality check tasks. tasks.register("runQualityChecks") { dependsOn(":tests:konsist:testDebugUnitTest") + dependsOn(":app:lintGplayDebug") project.subprojects { - // For some reason `findByName("lint")` doesn't work - tasks.findByPath("$path:lint")?.let { dependsOn(it) } + tasks.findByPath("$path:lintDebug")?.let { dependsOn(it) } tasks.findByName("detekt")?.let { dependsOn(it) } tasks.findByName("ktlintCheck")?.let { dependsOn(it) } // tasks.findByName("buildHealth")?.let { dependsOn(it) } } dependsOn(":app:knitCheck") + + // Make sure all checks run even if some fail + gradle.startParameter.isContinueOnFailure = true } // Make sure to delete old screenshots before recording new ones diff --git a/enterprise b/enterprise index b4f0427e35..6d96bf58ae 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit b4f0427e3595049d39846aabcdc06e818f2e96ea +Subproject commit 6d96bf58aec2ecc77b408858272cd64ec26e10d0 diff --git a/fastlane/metadata/android/en-US/changelogs/202503000.txt b/fastlane/metadata/android/en-US/changelogs/202503000.txt new file mode 100644 index 0000000000..9f4d072052 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/202503000.txt @@ -0,0 +1,2 @@ +Main changes in this version: bug fixes. +Full changelog: https://github.com/element-hq/element-x-android/releases diff --git a/features/analytics/api/src/main/res/values-tr/translations.xml b/features/analytics/api/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..7229872f5a --- /dev/null +++ b/features/analytics/api/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "Sorunları tanımlamamıza yardımcı olmak için anonim kullanım verilerini paylaşın." + "Tüm şartlarımızı okuyabilirsiniz %1$s." + "burada" + "Analitik verileri paylaşın" + diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt index 01ec23da38..ba1073d480 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt @@ -8,9 +8,9 @@ package io.element.android.features.analytics.impl import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -34,7 +34,7 @@ class AnalyticsOptInNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) val isDark = ElementTheme.isLightTheme.not() val state = presenter.present() AnalyticsOptInView( diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInView.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInView.kt index f1781f1b08..3e8b9d98f9 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInView.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInView.kt @@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.BiasAlignment @@ -111,7 +110,7 @@ private fun AnalyticsOptInHeader( .padding(8.dp), style = ElementTheme.typography.fontBodyMdRegular .copy( - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, textAlign = TextAlign.Center, ) ) diff --git a/features/analytics/impl/src/main/res/values-tr/translations.xml b/features/analytics/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..238e53b898 --- /dev/null +++ b/features/analytics/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,10 @@ + + + "Hiçbir kişisel veriyi kaydetmeyeceğiz veya profillemeyeceğiz" + "Sorunları tanımlamamıza yardımcı olmak için anonim kullanım verilerini paylaşın." + "Tüm şartlarımızı okuyabilirsiniz %1$s." + "burada" + "Bu özelliği istediğiniz zaman kapatabilirsiniz" + "Verilerinizi üçüncü taraflarla paylaşmayacağız" + "%1$s geliştirilmesine yardımcı olun" + diff --git a/features/call/api/src/main/kotlin/io/element/android/features/call/api/ElementCallEntryPoint.kt b/features/call/api/src/main/kotlin/io/element/android/features/call/api/ElementCallEntryPoint.kt index 239c960a39..9229681966 100644 --- a/features/call/api/src/main/kotlin/io/element/android/features/call/api/ElementCallEntryPoint.kt +++ b/features/call/api/src/main/kotlin/io/element/android/features/call/api/ElementCallEntryPoint.kt @@ -30,6 +30,7 @@ interface ElementCallEntryPoint { * @param avatarUrl The avatar url of the room or DM. * @param timestamp The timestamp of the event that started the call. * @param notificationChannelId The id of the notification channel to use for the call notification. + * @param textContent The text content of the notification. If null the default content from the system will be used. */ fun handleIncomingCall( callType: CallType.RoomCall, @@ -40,5 +41,6 @@ interface ElementCallEntryPoint { avatarUrl: String?, timestamp: Long, notificationChannelId: String, + textContent: String?, ) } diff --git a/features/call/impl/build.gradle.kts b/features/call/impl/build.gradle.kts index 7852b5f53c..7a291a7423 100644 --- a/features/call/impl/build.gradle.kts +++ b/features/call/impl/build.gradle.kts @@ -29,6 +29,7 @@ setupAnvil() dependencies { implementation(projects.appconfig) + implementation(projects.features.enterprise.api) implementation(projects.libraries.architecture) implementation(projects.libraries.core) implementation(projects.libraries.designsystem) @@ -40,6 +41,7 @@ dependencies { implementation(projects.libraries.push.api) implementation(projects.libraries.uiStrings) implementation(projects.services.analytics.api) + implementation(projects.services.appnavstate.api) implementation(projects.services.toolbox.api) implementation(libs.androidx.webkit) implementation(libs.coil.compose) @@ -59,6 +61,7 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.push.test) testImplementation(projects.services.analytics.test) + testImplementation(projects.services.appnavstate.test) testImplementation(projects.tests.testutils) testImplementation(libs.androidx.compose.ui.test.junit) testReleaseImplementation(libs.androidx.compose.ui.test.manifest) 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 1e42cb972d..290bfe0824 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 @@ -43,6 +43,7 @@ class DefaultElementCallEntryPoint @Inject constructor( avatarUrl: String?, timestamp: Long, notificationChannelId: String, + textContent: String?, ) { val incomingCallNotificationData = CallNotificationData( sessionId = callType.sessionId, @@ -54,6 +55,7 @@ class DefaultElementCallEntryPoint @Inject constructor( avatarUrl = avatarUrl, timestamp = timestamp, notificationChannelId = notificationChannelId, + textContent = textContent, ) activeCallManager.registerIncomingCall(notificationData = incomingCallNotificationData) } diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/CallNotificationData.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/CallNotificationData.kt index cd9e4c2109..7c97cc8529 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/CallNotificationData.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/CallNotificationData.kt @@ -25,4 +25,5 @@ data class CallNotificationData( val avatarUrl: String?, val notificationChannelId: String, val timestamp: Long, + val textContent: String?, ) : Parcelable diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/RingingCallNotificationCreator.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/RingingCallNotificationCreator.kt index 5ccb4aa227..8345ced619 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/RingingCallNotificationCreator.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/notifications/RingingCallNotificationCreator.kt @@ -11,7 +11,7 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.media.AudioManager -import android.media.RingtoneManager +import android.provider.Settings import androidx.core.app.NotificationCompat import androidx.core.app.PendingIntentCompat import androidx.core.app.Person @@ -63,6 +63,7 @@ class RingingCallNotificationCreator @Inject constructor( roomAvatarUrl: String?, notificationChannelId: String, timestamp: Long, + textContent: String?, ): Notification? { val matrixClient = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return null val imageLoader = imageLoaderHolder.get(matrixClient) @@ -84,7 +85,8 @@ class RingingCallNotificationCreator @Inject constructor( senderName = senderDisplayName, avatarUrl = roomAvatarUrl, notificationChannelId = notificationChannelId, - timestamp = timestamp + timestamp = timestamp, + textContent = textContent, ) val declineIntent = PendingIntentCompat.getBroadcast( @@ -107,8 +109,6 @@ class RingingCallNotificationCreator @Inject constructor( false ) - // TODO use a fallback ringtone if the default ringtone is not available - val ringtoneUri = runCatching { RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE) }.getOrNull() return NotificationCompat.Builder(context, notificationChannelId) .setSmallIcon(CommonDrawables.ic_notification_small) .setPriority(NotificationCompat.PRIORITY_MAX) @@ -120,10 +120,12 @@ class RingingCallNotificationCreator @Inject constructor( .setOngoing(true) .setShowWhen(false) .apply { - if (ringtoneUri != null) { - setSound(ringtoneUri, AudioManager.STREAM_RING) + if (textContent != null) { + setContentText(textContent) + // Else the content text is set by the style (will be "Incoming call") } } + .setSound(Settings.System.DEFAULT_RINGTONE_URI, AudioManager.STREAM_RING) .setTimeoutAfter(ElementCallConfig.RINGING_CALL_DURATION_SECONDS.seconds.inWholeMilliseconds) .setContentIntent(answerIntent) .setDeleteIntent(declineIntent) 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 048e361ac1..ac0c89f0fd 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt @@ -39,6 +39,7 @@ import io.element.android.libraries.matrix.api.sync.SyncState import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver import io.element.android.libraries.network.useragent.UserAgentProvider import io.element.android.services.analytics.api.ScreenTracker +import io.element.android.services.appnavstate.api.AppForegroundStateService import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn @@ -58,9 +59,9 @@ class CallScreenPresenter @AssistedInject constructor( private val dispatchers: CoroutineDispatchers, private val matrixClientsProvider: MatrixClientProvider, private val screenTracker: ScreenTracker, - private val appCoroutineScope: CoroutineScope, private val activeCallManager: ActiveCallManager, private val languageTagProvider: LanguageTagProvider, + private val appForegroundStateService: AppForegroundStateService, ) : Presenter { @AssistedFactory interface Factory { @@ -226,19 +227,13 @@ class CallScreenPresenter @AssistedInject constructor( if (state == SyncState.Running) { client.notifyCallStartIfNeeded(callType.roomId) } else { - client.syncService().startSync() + appForegroundStateService.updateIsInCallState(true) } } } onDispose { - // We can't use the local coroutine scope here because it will be disposed before this effect - appCoroutineScope.launch { - client.syncService().run { - if (syncState.value == SyncState.Running) { - stopSync() - } - } - } + // Make sure we mark the call as ended in the app state + appForegroundStateService.updateIsInCallState(false) } } } 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 65859da60e..af7323eea4 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 @@ -44,6 +44,7 @@ import io.element.android.features.call.impl.pip.PictureInPictureState 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.architecture.Presenter import io.element.android.libraries.architecture.bindings import io.element.android.libraries.core.log.logger.LoggerTag @@ -61,6 +62,7 @@ class ElementCallActivity : @Inject lateinit var callIntentDataParser: CallIntentDataParser @Inject lateinit var presenterFactory: CallScreenPresenter.Factory @Inject lateinit var appPreferencesStore: AppPreferencesStore + @Inject lateinit var enterpriseService: EnterpriseService @Inject lateinit var pictureInPicturePresenter: PictureInPicturePresenter private lateinit var presenter: Presenter @@ -109,7 +111,10 @@ class ElementCallActivity : setContent { val pipState = pictureInPicturePresenter.present() ListenToAndroidEvents(pipState) - ElementThemeApp(appPreferencesStore) { + ElementThemeApp( + appPreferencesStore = appPreferencesStore, + enterpriseService = enterpriseService, + ) { val state = presenter.present() eventSink = state.eventSink LaunchedEffect(state.isCallActive, state.isInWidgetMode) { 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 7dd4b56057..445e3c4f9a 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 @@ -19,6 +19,7 @@ import io.element.android.features.call.impl.di.CallBindings 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.libraries.architecture.bindings import io.element.android.libraries.designsystem.theme.ElementThemeApp import io.element.android.libraries.preferences.api.store.AppPreferencesStore @@ -47,6 +48,9 @@ class IncomingCallActivity : AppCompatActivity() { @Inject lateinit var appPreferencesStore: AppPreferencesStore + @Inject + lateinit var enterpriseService: EnterpriseService + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -64,7 +68,10 @@ class IncomingCallActivity : AppCompatActivity() { val notificationData = intent?.let { IntentCompat.getParcelableExtra(it, EXTRA_NOTIFICATION_DATA, CallNotificationData::class.java) } if (notificationData != null) { setContent { - ElementThemeApp(appPreferencesStore) { + ElementThemeApp( + appPreferencesStore = appPreferencesStore, + enterpriseService = enterpriseService, + ) { IncomingCallScreen( notificationData = notificationData, onAnswer = ::onAnswer, diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallScreen.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallScreen.kt index 5c9057a847..3a77fb4d81 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallScreen.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallScreen.kt @@ -100,7 +100,7 @@ internal fun IncomingCallScreen( ActionButton( size = 64.dp, onClick = { onAnswer(notificationData) }, - icon = CompoundIcons.VoiceCall(), + icon = CompoundIcons.VoiceCallSolid(), title = stringResource(CommonStrings.action_accept), backgroundColor = ElementTheme.colors.iconSuccessPrimary, borderColor = ElementTheme.colors.borderSuccessSubtle @@ -173,6 +173,7 @@ internal fun IncomingCallScreenPreview() = ElementPreview { avatarUrl = null, notificationChannelId = "incoming_call", timestamp = 0L, + textContent = null, ), onAnswer = {}, onCancel = {}, 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 421403d34f..2a12117a48 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 @@ -160,7 +160,8 @@ class DefaultActiveCallManager @Inject constructor( senderDisplayName = notificationData.senderName ?: notificationData.senderId.value, roomAvatarUrl = notificationData.avatarUrl, notificationChannelId = notificationData.notificationChannelId, - timestamp = notificationData.timestamp + timestamp = notificationData.timestamp, + textContent = notificationData.textContent, ) ?: return runCatching { notificationManagerCompat.notify( diff --git a/features/call/impl/src/main/res/values-tr/translations.xml b/features/call/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..37607db690 --- /dev/null +++ b/features/call/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "Devam eden çağrı" + "Aramaya geri dönmek için dokunun" + "☎️ Çağrı devam ediyor" + "Gelen Element Call" + diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/DefaultElementCallEntryPointTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/DefaultElementCallEntryPointTest.kt index 56fac5fc3b..97d6dac427 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/DefaultElementCallEntryPointTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/DefaultElementCallEntryPointTest.kt @@ -54,6 +54,7 @@ class DefaultElementCallEntryPointTest { avatarUrl = "avatarUrl", timestamp = 0, notificationChannelId = "notificationChannelId", + textContent = "textContent", ) registerIncomingCallLambda.assertions().isCalledOnce() 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 9160ae92d8..1c703e44fc 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 @@ -73,6 +73,7 @@ class RingingCallNotificationCreatorTest { roomAvatarUrl = "https://example.com/avatar.jpg", notificationChannelId = "channelId", timestamp = 0L, + textContent = "textContent", ) private fun createRingingCallNotificationCreator( 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 2ab7156878..fb894ac9de 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt @@ -32,10 +32,9 @@ import io.element.android.libraries.matrix.test.widget.FakeMatrixWidgetDriver import io.element.android.libraries.network.useragent.UserAgentProvider import io.element.android.services.analytics.api.ScreenTracker import io.element.android.services.analytics.test.FakeScreenTracker +import io.element.android.services.appnavstate.test.FakeAppForegroundStateService import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.tests.testutils.WarmUpRule -import io.element.android.tests.testutils.consumeItemsUntilTimeout -import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.testCoroutineDispatchers @@ -243,7 +242,7 @@ class CallScreenPresenterTest { } @Test - fun `present - automatically starts the Matrix client sync when on RoomCall`() = runTest { + fun `present - automatically sets the isInCall state when starting the call and disposing the screen`() = runTest { val navigator = FakeCallScreenNavigator() val widgetDriver = FakeMatrixWidgetDriver() val startSyncLambda = lambdaRecorder> { Result.success(Unit) } @@ -251,6 +250,7 @@ class CallScreenPresenterTest { this.startSyncLambda = startSyncLambda } val matrixClient = FakeMatrixClient(syncService = syncService) + val appForegroundStateService = FakeAppForegroundStateService() val presenter = createCallScreenPresenter( callType = CallType.RoomCall(A_SESSION_ID, A_ROOM_ID), widgetDriver = widgetDriver, @@ -258,34 +258,7 @@ class CallScreenPresenterTest { dispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true), matrixClientsProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) }), screenTracker = FakeScreenTracker {}, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - consumeItemsUntilTimeout() - - assert(startSyncLambda).isCalledOnce() - - cancelAndIgnoreRemainingEvents() - } - } - - @Test - fun `present - automatically stops the Matrix client sync on dispose`() = runTest { - val navigator = FakeCallScreenNavigator() - val widgetDriver = FakeMatrixWidgetDriver() - val stopSyncLambda = lambdaRecorder> { Result.success(Unit) } - val syncService = FakeSyncService(SyncState.Running).apply { - this.stopSyncLambda = stopSyncLambda - } - val matrixClient = FakeMatrixClient(syncService = syncService) - val presenter = createCallScreenPresenter( - callType = CallType.RoomCall(A_SESSION_ID, A_ROOM_ID), - widgetDriver = widgetDriver, - navigator = navigator, - dispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true), - matrixClientsProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) }), - screenTracker = FakeScreenTracker {}, + appForegroundStateService = appForegroundStateService, ) val hasRun = Mutex(true) val job = launch { @@ -296,11 +269,25 @@ class CallScreenPresenterTest { } } - hasRun.lock() + appForegroundStateService.isInCall.test { + // The initial isInCall state will always be false + assertThat(awaitItem()).isFalse() - job.cancelAndJoin() + // Wait until the call starts + hasRun.lock() - assert(stopSyncLambda).isCalledOnce() + // Then it'll be true once the call is active + assertThat(awaitItem()).isTrue() + + // If we dispose the screen + job.cancelAndJoin() + + // The isInCall state is now false + assertThat(awaitItem()).isFalse() + + // And there are no more events + ensureAllEventsConsumed() + } } @Test @@ -354,6 +341,7 @@ class CallScreenPresenterTest { matrixClientsProvider: FakeMatrixClientProvider = FakeMatrixClientProvider(), activeCallManager: FakeActiveCallManager = FakeActiveCallManager(), screenTracker: ScreenTracker = FakeScreenTracker(), + appForegroundStateService: FakeAppForegroundStateService = FakeAppForegroundStateService(), ): CallScreenPresenter { val userAgentProvider = object : UserAgentProvider { override fun provide(): String { @@ -369,10 +357,10 @@ class CallScreenPresenterTest { clock = clock, dispatchers = dispatchers, matrixClientsProvider = matrixClientsProvider, - appCoroutineScope = this, activeCallManager = activeCallManager, screenTracker = screenTracker, languageTagProvider = FakeLanguageTagProvider("en-US"), + appForegroundStateService = appForegroundStateService, ) } } diff --git a/features/call/test/build.gradle.kts b/features/call/test/build.gradle.kts index d40d5c8c8c..4fe9b95384 100644 --- a/features/call/test/build.gradle.kts +++ b/features/call/test/build.gradle.kts @@ -22,4 +22,5 @@ dependencies { implementation(projects.features.call.impl) implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.test) + implementation(projects.tests.testutils) } diff --git a/features/call/test/src/main/kotlin/io/element/android/features/call/test/CallNotificationData.kt b/features/call/test/src/main/kotlin/io/element/android/features/call/test/CallNotificationData.kt index 3514cf425d..8e6ee00a16 100644 --- a/features/call/test/src/main/kotlin/io/element/android/features/call/test/CallNotificationData.kt +++ b/features/call/test/src/main/kotlin/io/element/android/features/call/test/CallNotificationData.kt @@ -30,6 +30,7 @@ fun aCallNotificationData( avatarUrl: String? = AN_AVATAR_URL, notificationChannelId: String = "channel_id", timestamp: Long = 0L, + textContent: String? = null, ): CallNotificationData = CallNotificationData( sessionId = sessionId, roomId = roomId, @@ -40,4 +41,5 @@ fun aCallNotificationData( avatarUrl = avatarUrl, notificationChannelId = notificationChannelId, timestamp = timestamp, + textContent = textContent, ) diff --git a/features/call/test/src/main/kotlin/io/element/android/features/call/test/FakeElementCallEntryPoint.kt b/features/call/test/src/main/kotlin/io/element/android/features/call/test/FakeElementCallEntryPoint.kt index 9a720bd2e7..bbd990df27 100644 --- a/features/call/test/src/main/kotlin/io/element/android/features/call/test/FakeElementCallEntryPoint.kt +++ b/features/call/test/src/main/kotlin/io/element/android/features/call/test/FakeElementCallEntryPoint.kt @@ -11,10 +11,20 @@ import io.element.android.features.call.api.CallType import io.element.android.features.call.api.ElementCallEntryPoint import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.tests.testutils.lambda.lambdaError class FakeElementCallEntryPoint( - var startCallResult: (CallType) -> Unit = {}, - var handleIncomingCallResult: (CallType.RoomCall, EventId, UserId, String?, String?, String?, String) -> Unit = { _, _, _, _, _, _, _ -> } + var startCallResult: (CallType) -> Unit = { lambdaError() }, + var handleIncomingCallResult: ( + CallType.RoomCall, + EventId, + UserId, + String?, + String?, + String?, + String, + String?, + ) -> Unit = { _, _, _, _, _, _, _, _ -> lambdaError() } ) : ElementCallEntryPoint { override fun startCall(callType: CallType) { startCallResult(callType) @@ -28,8 +38,18 @@ class FakeElementCallEntryPoint( senderName: String?, avatarUrl: String?, timestamp: Long, - notificationChannelId: String + notificationChannelId: String, + textContent: String?, ) { - handleIncomingCallResult(callType, eventId, senderId, roomName, senderName, avatarUrl, notificationChannelId) + handleIncomingCallResult( + callType, + eventId, + senderId, + roomName, + senderName, + avatarUrl, + notificationChannelId, + textContent, + ) } } diff --git a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/ConfirmingStartDmWithMatrixUser.kt b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/ConfirmingStartDmWithMatrixUser.kt new file mode 100644 index 0000000000..af19408324 --- /dev/null +++ b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/ConfirmingStartDmWithMatrixUser.kt @@ -0,0 +1,15 @@ +/* + * 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 io.element.android.libraries.architecture.AsyncAction +import io.element.android.libraries.matrix.api.user.MatrixUser + +data class ConfirmingStartDmWithMatrixUser( + val matrixUser: MatrixUser, +) : AsyncAction.Confirming 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 b37c804701..c15db6dabd 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 @@ -11,7 +11,7 @@ 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.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.RoomIdOrAlias interface CreateRoomEntryPoint : FeatureEntryPoint { fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder @@ -21,6 +21,6 @@ interface CreateRoomEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onSuccess(roomId: RoomId) + fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) } } diff --git a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/StartDMAction.kt b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/StartDMAction.kt index 50c67ba956..e64be9f923 100644 --- a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/StartDMAction.kt +++ b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/StartDMAction.kt @@ -10,13 +10,19 @@ package io.element.android.features.createroom.api import androidx.compose.runtime.MutableState import io.element.android.libraries.architecture.AsyncAction 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.user.MatrixUser interface StartDMAction { /** * Try to find an existing DM with the given user, or create one if none exists. - * @param userId The user to start a DM with. + * @param matrixUser The user to start a DM with. + * @param createIfDmDoesNotExist If true, create a DM if one does not exist. If false and the DM + * does not exist, the action will fail with the value [ConfirmingStartDmWithMatrixUser]. * @param actionState The state to update with the result of the action. */ - suspend fun execute(userId: UserId, actionState: MutableState>) + suspend fun execute( + matrixUser: MatrixUser, + createIfDmDoesNotExist: Boolean, + actionState: MutableState>, + ) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/CreateRoomNavigator.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/CreateRoomNavigator.kt new file mode 100644 index 0000000000..a63c99d06f --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/CreateRoomNavigator.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.createroom + +import com.bumble.appyx.core.plugin.Plugin +import com.bumble.appyx.navmodel.backstack.BackStack +import com.bumble.appyx.navmodel.backstack.operation.push +import io.element.android.features.createroom.impl.CreateRoomFlowNode.NavTarget +import io.element.android.libraries.architecture.overlay.Overlay +import io.element.android.libraries.architecture.overlay.operation.hide +import io.element.android.libraries.architecture.overlay.operation.show +import io.element.android.libraries.matrix.api.core.RoomIdOrAlias + +interface CreateRoomNavigator : Plugin { + fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) + fun onCreateNewRoom() + fun onShowJoinRoomByAddress() + fun onDismissJoinRoomByAddress() +} + +class DefaultCreateRoomNavigator( + private val backstack: BackStack, + private val overlay: Overlay, + private val openRoom: (RoomIdOrAlias, List) -> Unit, +) : CreateRoomNavigator { + override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = openRoom(roomIdOrAlias, serverNames) + + override fun onCreateNewRoom() { + backstack.push(NavTarget.NewRoom) + } + + override fun onShowJoinRoomByAddress() { + overlay.show(NavTarget.JoinByAddress) + } + + override fun onDismissJoinRoomByAddress() { + overlay.hide() + } +} diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt index 1a2916b16a..a7678f130f 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt @@ -19,6 +19,7 @@ import com.bumble.appyx.navmodel.backstack.operation.push import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode +import io.element.android.features.createroom.CreateRoomNavigator import io.element.android.features.createroom.impl.addpeople.AddPeopleNode import io.element.android.features.createroom.impl.configureroom.ConfigureRoomNode import io.element.android.features.createroom.impl.di.CreateRoomComponent @@ -46,6 +47,7 @@ class ConfigureRoomFlowNode @AssistedInject constructor( private val component by lazy { parent!!.bindings().createRoomComponentBuilder().build() } + private val navigator = plugins().first() override val daggerComponent: Any get() = component @@ -69,8 +71,7 @@ class ConfigureRoomFlowNode @AssistedInject constructor( createNode(buildContext = buildContext, plugins = listOf(callback)) } NavTarget.ConfigureRoom -> { - val callbacks = plugins() - createNode(buildContext = buildContext, plugins = callbacks) + createNode(buildContext = buildContext, plugins = listOf(navigator)) } } } 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 9e06bf6080..b58ebc083e 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 @@ -8,25 +8,28 @@ package io.element.android.features.createroom.impl import android.os.Parcelable +import androidx.compose.foundation.layout.Box import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier 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 com.bumble.appyx.navmodel.backstack.operation.push import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode +import io.element.android.features.createroom.DefaultCreateRoomNavigator import io.element.android.features.createroom.api.CreateRoomEntryPoint -import io.element.android.features.createroom.impl.configureroom.ConfigureRoomNode +import io.element.android.features.createroom.impl.joinbyaddress.JoinRoomByAddressNode import io.element.android.features.createroom.impl.root.CreateRoomRootNode 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.createNode import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.core.RoomId import kotlinx.parcelize.Parcelize @ContributesNode(SessionScope::class) @@ -47,35 +50,38 @@ class CreateRoomFlowNode @AssistedInject constructor( @Parcelize data object NewRoom : NavTarget + + @Parcelize + data object JoinByAddress : NavTarget } + private val navigator = DefaultCreateRoomNavigator( + backstack = backstack, + overlay = overlay, + openRoom = { roomIdOrAlias, viaServers -> + plugins().forEach { it.onOpenRoom(roomIdOrAlias, viaServers) } + } + ) + override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Root -> { - val callback = object : CreateRoomRootNode.Callback { - override fun onCreateNewRoom() { - backstack.push(NavTarget.NewRoom) - } - - override fun onStartChatSuccess(roomId: RoomId) { - plugins().forEach { it.onSuccess(roomId) } - } - } - createNode(buildContext = buildContext, plugins = listOf(callback)) + createNode(buildContext = buildContext, plugins = listOf(navigator)) } NavTarget.NewRoom -> { - val callback = object : ConfigureRoomNode.Callback { - override fun onCreateRoomSuccess(roomId: RoomId) { - plugins().forEach { it.onSuccess(roomId) } - } - } - createNode(buildContext = buildContext, plugins = listOf(callback)) + createNode(buildContext = buildContext, plugins = listOf(navigator)) + } + NavTarget.JoinByAddress -> { + createNode(buildContext = buildContext, plugins = listOf(navigator)) } } } @Composable override fun View(modifier: Modifier) { - BackstackView() + Box(modifier = modifier) { + BackstackView() + OverlayView(transitionHandler = remember { JumpToEndTransitionHandler() }) + } } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt index d48712c400..c9b60786bd 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt @@ -10,14 +10,15 @@ package io.element.android.features.createroom.impl import androidx.compose.runtime.MutableState import com.squareup.anvil.annotations.ContributesBinding import im.vector.app.features.analytics.plan.CreatedRoom +import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.createroom.api.StartDMAction import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.StartDMResult import io.element.android.libraries.matrix.api.room.startDM +import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.services.analytics.api.AnalyticsService import javax.inject.Inject @@ -26,9 +27,13 @@ class DefaultStartDMAction @Inject constructor( private val matrixClient: MatrixClient, private val analyticsService: AnalyticsService, ) : StartDMAction { - override suspend fun execute(userId: UserId, actionState: MutableState>) { + override suspend fun execute( + matrixUser: MatrixUser, + createIfDmDoesNotExist: Boolean, + actionState: MutableState>, + ) { actionState.value = AsyncAction.Loading - when (val result = matrixClient.startDM(userId)) { + when (val result = matrixClient.startDM(matrixUser.userId, createIfDmDoesNotExist)) { is StartDMResult.Success -> { if (result.isNew) { analyticsService.capture(CreatedRoom(isDM = true)) @@ -38,6 +43,9 @@ class DefaultStartDMAction @Inject constructor( is StartDMResult.Failure -> { actionState.value = AsyncAction.Failure(result.throwable) } + StartDMResult.DmDoesNotExist -> { + actionState.value = ConfirmingStartDmWithMatrixUser(matrixUser = matrixUser) + } } } } 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 966369e6e3..e718825163 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 @@ -18,8 +18,9 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.anvilannotations.ContributesNode +import io.element.android.features.createroom.CreateRoomNavigator import io.element.android.features.createroom.impl.di.CreateRoomScope -import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.services.analytics.api.AnalyticsService @ContributesNode(CreateRoomScope::class) @@ -29,6 +30,8 @@ class ConfigureRoomNode @AssistedInject constructor( private val presenter: ConfigureRoomPresenter, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { + private val navigator = plugins().first() + init { lifecycle.subscribe( onResume = { @@ -37,14 +40,6 @@ class ConfigureRoomNode @AssistedInject constructor( ) } - interface Callback : Plugin { - fun onCreateRoomSuccess(roomId: RoomId) - } - - private fun onCreateRoomSuccess(roomId: RoomId) { - plugins().forEach { it.onCreateRoomSuccess(roomId) } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() @@ -52,7 +47,9 @@ class ConfigureRoomNode @AssistedInject constructor( state = state, modifier = modifier, onBackClick = this::navigateUp, - onCreateRoomSuccess = this::onCreateRoomSuccess, + onCreateRoomSuccess = { + navigator.onOpenRoom(roomIdOrAlias = it.toRoomIdOrAlias(), serverNames = emptyList()) + }, ) } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressEvents.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressEvents.kt new file mode 100644 index 0000000000..dbbcef56fa --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressEvents.kt @@ -0,0 +1,14 @@ +/* + * 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.impl.joinbyaddress + +sealed interface JoinRoomByAddressEvents { + data object Dismiss : JoinRoomByAddressEvents + data object Continue : JoinRoomByAddressEvents + data class UpdateAddress(val address: String) : JoinRoomByAddressEvents +} diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressNode.kt new file mode 100644 index 0000000000..d6338ab43c --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressNode.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.features.createroom.impl.joinbyaddress + +import androidx.compose.runtime.Composable +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 dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import io.element.android.anvilannotations.ContributesNode +import io.element.android.features.createroom.CreateRoomNavigator +import io.element.android.libraries.di.SessionScope + +@ContributesNode(SessionScope::class) +class JoinRoomByAddressNode @AssistedInject constructor( + @Assisted buildContext: BuildContext, + @Assisted plugins: List, + presenterFactory: JoinRoomByAddressPresenter.Factory, +) : Node(buildContext, plugins = plugins) { + private val navigator = plugins().first() + private val presenter = presenterFactory.create(navigator) + + @Composable + override fun View(modifier: Modifier) { + val state = presenter.present() + JoinRoomByAddressView( + state = state, + modifier = modifier + ) + } +} diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressPresenter.kt new file mode 100644 index 0000000000..cf4788cbbf --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressPresenter.kt @@ -0,0 +1,138 @@ +/* + * 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.impl.joinbyaddress + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import io.element.android.features.createroom.CreateRoomNavigator +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.data.tryOrNull +import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.core.RoomAlias +import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias +import io.element.android.libraries.matrix.api.room.alias.RoomAliasHelper +import kotlinx.coroutines.delay +import kotlinx.coroutines.withTimeoutOrNull +import kotlin.time.Duration.Companion.seconds + +private const val ADDRESS_RESOLVE_TIMEOUT_IN_SECONDS = 10 + +class JoinRoomByAddressPresenter @AssistedInject constructor( + @Assisted private val navigator: CreateRoomNavigator, + private val client: MatrixClient, + private val roomAliasHelper: RoomAliasHelper, +) : Presenter { + @AssistedFactory + interface Factory { + fun create(navigator: CreateRoomNavigator): JoinRoomByAddressPresenter + } + + @Composable + override fun present(): JoinRoomByAddressState { + var address by remember { mutableStateOf("") } + var internalAddressState by remember { mutableStateOf(RoomAddressState.Unknown) } + var validateAddress: Boolean by remember { mutableStateOf(false) } + + fun handleEvents(event: JoinRoomByAddressEvents) { + when (event) { + JoinRoomByAddressEvents.Continue -> { + when (val currentState = internalAddressState) { + is RoomAddressState.RoomFound -> onRoomFound(currentState) + else -> validateAddress = true + } + } + JoinRoomByAddressEvents.Dismiss -> navigator.onDismissJoinRoomByAddress() + is JoinRoomByAddressEvents.UpdateAddress -> { + validateAddress = false + address = event.address.trim() + } + } + } + + RoomAddressStateEffect( + fullAddress = address, + onRoomAddressStateChange = { addressState -> + internalAddressState = addressState + if (addressState is RoomAddressState.RoomFound && validateAddress) { + onRoomFound(addressState) + } + } + ) + + val addressState by remember { + derivedStateOf { + // We only want to show the "RoomFound" state as long as the user didn't validate the address. + if (validateAddress || internalAddressState is RoomAddressState.RoomFound) { + internalAddressState + } else { + RoomAddressState.Unknown + } + } + } + + return JoinRoomByAddressState( + address = address, + addressState = addressState, + eventSink = ::handleEvents + ) + } + + private fun onRoomFound(state: RoomAddressState.RoomFound) { + navigator.onDismissJoinRoomByAddress() + navigator.onOpenRoom( + roomIdOrAlias = state.resolved.roomId.toRoomIdOrAlias(), + serverNames = state.resolved.servers + ) + } + + @Composable + private fun RoomAddressStateEffect( + fullAddress: String, + onRoomAddressStateChange: (RoomAddressState) -> Unit, + ) { + val onChange by rememberUpdatedState(onRoomAddressStateChange) + LaunchedEffect(fullAddress) { + // Whenever the address changes, reset the state to unknown + onChange(RoomAddressState.Unknown) + // debounce the room address resolution + delay(300) + val roomAlias = tryOrNull { RoomAlias(fullAddress) } + if (roomAlias != null && roomAliasHelper.isRoomAliasValid(roomAlias)) { + onChange(RoomAddressState.Resolving) + onChange(client.resolveRoomAddress(roomAlias)) + } else { + onChange(RoomAddressState.Invalid) + } + } + } + + private suspend fun MatrixClient.resolveRoomAddress(roomAlias: RoomAlias): RoomAddressState { + return withTimeoutOrNull(ADDRESS_RESOLVE_TIMEOUT_IN_SECONDS.seconds) { + resolveRoomAlias(roomAlias) + .fold( + onSuccess = { resolved -> + if (resolved.isPresent) { + RoomAddressState.RoomFound(resolved.get()) + } else { + RoomAddressState.RoomNotFound + } + }, + onFailure = { _ -> RoomAddressState.RoomNotFound } + ) + } ?: RoomAddressState.RoomNotFound + } +} diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressState.kt new file mode 100644 index 0000000000..11791181e1 --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressState.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.createroom.impl.joinbyaddress + +import androidx.compose.runtime.Immutable +import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias + +data class JoinRoomByAddressState( + val address: String, + val addressState: RoomAddressState, + val eventSink: (JoinRoomByAddressEvents) -> Unit +) + +@Immutable +sealed interface RoomAddressState { + data object Unknown : RoomAddressState + data object Invalid : RoomAddressState + data object Resolving : RoomAddressState + data object RoomNotFound : RoomAddressState + data class RoomFound(val resolved: ResolvedRoomAlias) : RoomAddressState +} diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressStateProvider.kt new file mode 100644 index 0000000000..6281a8e8e3 --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressStateProvider.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.createroom.impl.joinbyaddress + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias + +open class JoinRoomByAddressStateProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + aJoinRoomByAddressState(), + aJoinRoomByAddressState(address = "#room-"), + aJoinRoomByAddressState(address = "#room-", addressState = RoomAddressState.Invalid), + aJoinRoomByAddressState(address = "#room-name:matrix.org", addressState = RoomAddressState.Resolving), + aJoinRoomByAddressState(address = "#room-name-none:matrix.org", addressState = RoomAddressState.RoomNotFound), + aJoinRoomByAddressState( + address = "#room-name:matrix.org", + addressState = RoomAddressState.RoomFound(ResolvedRoomAlias(RoomId("!aRoom:id"), emptyList())), + ), + ) +} + +fun aJoinRoomByAddressState( + address: String = "", + addressState: RoomAddressState = RoomAddressState.Unknown, + eventSink: (JoinRoomByAddressEvents) -> Unit = {}, +) = JoinRoomByAddressState( + address = address, + addressState = addressState, + eventSink = eventSink +) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressView.kt new file mode 100644 index 0000000000..c256f5140c --- /dev/null +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressView.kt @@ -0,0 +1,134 @@ +/* + * 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.impl.joinbyaddress + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +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.PreviewParameter +import androidx.compose.ui.unit.dp +import io.element.android.features.createroom.impl.R +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.ModalBottomSheet +import io.element.android.libraries.designsystem.theme.components.TextField +import io.element.android.libraries.designsystem.theme.components.TextFieldValidity +import io.element.android.libraries.ui.strings.CommonStrings + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun JoinRoomByAddressView( + state: JoinRoomByAddressState, + modifier: Modifier = Modifier, +) { + val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + ModalBottomSheet( + modifier = modifier, + sheetState = sheetState, + onDismissRequest = { + state.eventSink(JoinRoomByAddressEvents.Dismiss) + }, + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(all = 16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + RoomAddressField( + address = state.address, + addressState = state.addressState, + requestFocus = sheetState.isVisible, + onAddressChange = { + state.eventSink(JoinRoomByAddressEvents.UpdateAddress(it)) + }, + onContinue = { + state.eventSink(JoinRoomByAddressEvents.Continue) + }, + ) + Spacer(modifier = Modifier.height(24.dp)) + Button( + text = stringResource(CommonStrings.action_continue), + modifier = Modifier.fillMaxWidth(), + showProgress = state.addressState is RoomAddressState.Resolving, + onClick = { + state.eventSink(JoinRoomByAddressEvents.Continue) + } + ) + } + } +} + +@Composable +private fun RoomAddressField( + address: String, + addressState: RoomAddressState, + requestFocus: Boolean, + onAddressChange: (String) -> Unit, + onContinue: () -> Unit, + modifier: Modifier = Modifier, +) { + val focusRequester = remember { FocusRequester() } + if (requestFocus) { + LaunchedEffect(Unit) { focusRequester.requestFocus() } + } + TextField( + modifier = modifier.focusRequester(focusRequester), + value = address, + label = stringResource(R.string.screen_start_chat_join_room_by_address_action), + placeholder = stringResource(R.string.screen_start_chat_join_room_by_address_placeholder), + supportingText = when (addressState) { + RoomAddressState.Invalid -> stringResource(R.string.screen_start_chat_join_room_by_address_invalid_address) + is RoomAddressState.RoomFound -> stringResource(R.string.screen_start_chat_join_room_by_address_room_found) + RoomAddressState.RoomNotFound -> stringResource(R.string.screen_start_chat_join_room_by_address_room_not_found) + RoomAddressState.Unknown, RoomAddressState.Resolving -> stringResource(R.string.screen_start_chat_join_room_by_address_supporting_text) + }, + validity = when (addressState) { + RoomAddressState.Unknown, RoomAddressState.Resolving -> TextFieldValidity.None + RoomAddressState.Invalid, RoomAddressState.RoomNotFound -> TextFieldValidity.Invalid + is RoomAddressState.RoomFound -> TextFieldValidity.Valid + }, + onValueChange = onAddressChange, + singleLine = true, + keyboardOptions = KeyboardOptions( + capitalization = KeyboardCapitalization.None, + autoCorrectEnabled = false, + keyboardType = KeyboardType.Uri, + imeAction = ImeAction.Go + ), + keyboardActions = KeyboardActions( + onGo = { onContinue() } + ) + ) +} + +@PreviewsDayNight +@Composable +internal fun JoinRoomByAddressViewPreview( + @PreviewParameter(JoinRoomByAddressStateProvider::class) state: JoinRoomByAddressState +) = ElementPreview { + JoinRoomByAddressView(state = state) +} diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt index aef27b94db..8ee982906c 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt @@ -8,9 +8,9 @@ package io.element.android.features.createroom.impl.root import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node @@ -20,9 +20,10 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.anvilannotations.ContributesNode +import io.element.android.features.createroom.CreateRoomNavigator import io.element.android.libraries.deeplink.usecase.InviteFriendsUseCase import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.services.analytics.api.AnalyticsService @ContributesNode(SessionScope::class) @@ -33,18 +34,7 @@ class CreateRoomRootNode @AssistedInject constructor( private val analyticsService: AnalyticsService, private val inviteFriendsUseCase: InviteFriendsUseCase, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { - fun onCreateNewRoom() - fun onStartChatSuccess(roomId: RoomId) - } - - private fun onCreateNewRoom() { - plugins().forEach { it.onCreateNewRoom() } - } - - private fun onStartChatSuccess(roomId: RoomId) { - plugins().forEach { it.onStartChatSuccess(roomId) } - } + private val navigator = plugins().first() init { lifecycle.subscribe( @@ -55,13 +45,16 @@ class CreateRoomRootNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { val state = presenter.present() - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) CreateRoomRootView( state = state, modifier = modifier, onCloseClick = this::navigateUp, - onNewRoomClick = ::onCreateNewRoom, - onOpenDM = ::onStartChatSuccess, + onNewRoomClick = navigator::onCreateNewRoom, + onOpenDM = { + navigator.onOpenRoom(roomIdOrAlias = it.toRoomIdOrAlias(), serverNames = emptyList()) + }, + onJoinByAddressClick = navigator::onShowJoinRoomByAddress, onInviteFriendsClick = { invitePeople(activity) } ) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt index 2d5ebc87e1..63880209e0 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt @@ -50,7 +50,11 @@ class CreateRoomRootPresenter @Inject constructor( fun handleEvents(event: CreateRoomRootEvents) { when (event) { is CreateRoomRootEvents.StartDM -> localCoroutineScope.launch { - startDMAction.execute(event.matrixUser.userId, startDmActionState) + startDMAction.execute( + matrixUser = event.matrixUser, + createIfDmDoesNotExist = startDmActionState.value is AsyncAction.Confirming, + actionState = startDmActionState, + ) } CreateRoomRootEvents.CancelStartDM -> startDmActionState.value = AsyncAction.Uninitialized } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt index 6c45325576..a3ce8a35a9 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt @@ -8,6 +8,7 @@ package io.element.android.features.createroom.impl.root import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.createroom.impl.userlist.UserListState import io.element.android.features.createroom.impl.userlist.aRecentDirectRoomList import io.element.android.features.createroom.impl.userlist.aUserListState @@ -49,6 +50,9 @@ open class CreateRoomRootStateProvider : PreviewParameterProvider Unit, onOpenDM: (RoomId) -> Unit, onInviteFriendsClick: () -> Unit, + onJoinByAddressClick: () -> Unit, modifier: Modifier = Modifier, ) { Scaffold( @@ -88,6 +90,7 @@ fun CreateRoomRootView( state = state, onNewRoomClick = onNewRoomClick, onInvitePeopleClick = onInviteFriendsClick, + onJoinByAddressClick = onJoinByAddressClick, onDmClick = onOpenDM, ) } @@ -110,6 +113,19 @@ fun CreateRoomRootView( ?: state.eventSink(CreateRoomRootEvents.CancelStartDM) }, onErrorDismiss = { state.eventSink(CreateRoomRootEvents.CancelStartDM) }, + confirmationDialog = { data -> + if (data is ConfirmingStartDmWithMatrixUser) { + CreateDmConfirmationBottomSheet( + matrixUser = data.matrixUser, + onSendInvite = { + state.eventSink(CreateRoomRootEvents.StartDM(data.matrixUser)) + }, + onDismiss = { + state.eventSink(CreateRoomRootEvents.CancelStartDM) + }, + ) + } + }, ) } @@ -139,6 +155,7 @@ private fun CreateRoomActionButtonsList( state: CreateRoomRootState, onNewRoomClick: () -> Unit, onInvitePeopleClick: () -> Unit, + onJoinByAddressClick: () -> Unit, onDmClick: (RoomId) -> Unit, ) { LazyColumn { @@ -156,6 +173,13 @@ private fun CreateRoomActionButtonsList( onClick = onInvitePeopleClick, ) } + item { + CreateRoomActionButton( + iconRes = CompoundDrawables.ic_compound_room, + text = stringResource(R.string.screen_start_chat_join_room_by_address_action), + onClick = onJoinByAddressClick, + ) + } if (state.userListState.recentDirectRooms.isNotEmpty()) { item { ListSectionHeader( @@ -196,7 +220,7 @@ private fun CreateRoomActionButton( ) { Icon( modifier = Modifier.size(24.dp), - tint = MaterialTheme.colorScheme.secondary, + tint = ElementTheme.colors.iconSecondary, resourceId = iconRes, contentDescription = null, ) @@ -216,6 +240,7 @@ internal fun CreateRoomRootViewPreview(@PreviewParameter(CreateRoomRootStateProv onCloseClick = {}, onNewRoomClick = {}, onOpenDM = {}, + onJoinByAddressClick = {}, onInviteFriendsClick = {}, ) } diff --git a/features/createroom/impl/src/main/res/values-be/translations.xml b/features/createroom/impl/src/main/res/values-be/translations.xml index 861fca4d05..01c0fea1bd 100644 --- a/features/createroom/impl/src/main/res/values-be/translations.xml +++ b/features/createroom/impl/src/main/res/values-be/translations.xml @@ -6,7 +6,7 @@ "Паведамленні ў гэтым пакоі зашыфраваны. Гэта шыфраванне нельга адключыць." "Прыватны пакой (толькі па запрашэнні)" "Паведамленні не зашыфраваны, і кожны можа іх прачытаць. Вы можаце ўключыць шыфраванне пазней." - "Публічны пакой (для ўсіх)" + "Публічны пакой" "Хто заўгодна" "Доступ у пакой" "Папрасіце далучыцца" diff --git a/features/createroom/impl/src/main/res/values-bg/translations.xml b/features/createroom/impl/src/main/res/values-bg/translations.xml index 28f42b4156..1de1db624a 100644 --- a/features/createroom/impl/src/main/res/values-bg/translations.xml +++ b/features/createroom/impl/src/main/res/values-bg/translations.xml @@ -6,7 +6,6 @@ "Съобщенията в тази стая са шифровани. Шифроването не може да бъде изключено впоследствие." "Частна стая (само с покана)" "Съобщенията не са шифровани и всеки може да ги прочете. Можете да активирате шифроването на по-късна дата." - "Публична стая (всеки)" "Име на стаята" "Създаване на стая" "Тема за разговор (незадължително)" diff --git a/features/createroom/impl/src/main/res/values-de/translations.xml b/features/createroom/impl/src/main/res/values-de/translations.xml index 10cda04d9e..aec32766a2 100644 --- a/features/createroom/impl/src/main/res/values-de/translations.xml +++ b/features/createroom/impl/src/main/res/values-de/translations.xml @@ -7,14 +7,14 @@ "Privater Chatroom" "Jeder kann diesen Chatroom finden. Sie können dies aber jederzeit in den Chatroomeinstellungen ändern." - "Öffentlicher Chatroom" + "Öffentlicher Raum" "Jeder kann diesem Chatroom beitreten" "Jemand" "Chatroom Zugang" "Jeder kann darum bitten, dem Chatroom beizutreten, aber ein Administrator oder ein Moderator muss die Anfrage akzeptieren." "Beitritt beantragen" "Damit dieser Chatroom im öffentlichen Chatroomverzeichnis sichtbar ist, benötigen Sie eine Chatroomadresse." - "Chatroom Adresse" + "Chatroomadresse" "Raumname" " Sichtbarkeit des Chatrooms" "Raum erstellen" diff --git a/features/createroom/impl/src/main/res/values-el/translations.xml b/features/createroom/impl/src/main/res/values-el/translations.xml index 4dc3acaaa3..4c414a6b5b 100644 --- a/features/createroom/impl/src/main/res/values-el/translations.xml +++ b/features/createroom/impl/src/main/res/values-el/translations.xml @@ -14,7 +14,6 @@ "Οποιοσδήποτε μπορεί να ζητήσει να συμμετάσχει στο δωμάτιο, αλλά ένας διαχειριστής ή συντονιστής θα πρέπει να αποδεχθεί το αίτημα" "Αίτημα συμμετοχής" "Για να είναι ορατό αυτό το δωμάτιο στον κατάλογο των δημόσιων δωματίων, θα χρειαστείς μια διεύθυνση δωματίου." - "Διεύθυνση δωματίου" "Όνομα δωματίου" "Ορατότητα δωματίου" "Δημιούργησε ένα δωμάτιο" diff --git a/features/createroom/impl/src/main/res/values-es/translations.xml b/features/createroom/impl/src/main/res/values-es/translations.xml index 5946dab102..2e36d3022b 100644 --- a/features/createroom/impl/src/main/res/values-es/translations.xml +++ b/features/createroom/impl/src/main/res/values-es/translations.xml @@ -6,7 +6,6 @@ "Los mensajes de esta sala están cifrados. La encriptación no se puede desactivar después." "Sala privada (sólo con invitación)" "Los mensajes no están cifrados y cualquiera puede leerlos. Puedes activar la encriptación más adelante." - "Sala pública (cualquiera)" "Nombre de la sala" "Crear una sala" "Tema (opcional)" diff --git a/features/createroom/impl/src/main/res/values-fa/translations.xml b/features/createroom/impl/src/main/res/values-fa/translations.xml index 467fae5327..d7f05a770c 100644 --- a/features/createroom/impl/src/main/res/values-fa/translations.xml +++ b/features/createroom/impl/src/main/res/values-fa/translations.xml @@ -6,7 +6,7 @@ "پیام‌های این اتاق رمز شده‌اند. رمزنگاری نمی‌تواند از این پس تغییر کند." "اتاق خصوصی (فقط دعوت)" "پیام‌ها رمزنگاری نشده و هرکسی می‌تواند بخواندشان. می‌توانید بعداً رمزنگاری را به کار بیندازید." - "اتاق عمومی (هرکسی)" + "اتاق عمومی" "نام اتاق" "ایجاد اتاق" "موضوع (اختیاری)" diff --git a/features/createroom/impl/src/main/res/values-hu/translations.xml b/features/createroom/impl/src/main/res/values-hu/translations.xml index ee935c8c60..244d936eef 100644 --- a/features/createroom/impl/src/main/res/values-hu/translations.xml +++ b/features/createroom/impl/src/main/res/values-hu/translations.xml @@ -14,7 +14,7 @@ Ezt bármikor módosíthatja a szobabeállításokban." "Bárki kérheti, hogy csatlakozzon a szobához, de egy adminisztrátornak vagy moderátornak el kell fogadnia a kérést" "Csatlakozás kérése" "Ahhoz, hogy ez a szoba látható legyen a nyilvános szobák címtárában, meg kell adnia a szoba címét." - "Szoba címe" + "A szoba címe" "Szoba neve" "Szoba láthatósága" "Szoba létrehozása" diff --git a/features/createroom/impl/src/main/res/values-in/translations.xml b/features/createroom/impl/src/main/res/values-in/translations.xml index b1c7aeef1c..32a5a0b25a 100644 --- a/features/createroom/impl/src/main/res/values-in/translations.xml +++ b/features/createroom/impl/src/main/res/values-in/translations.xml @@ -14,7 +14,6 @@ Anda dapat mengubah ini kapan pun dalam pengaturan ruangan." "Siapa pun dapat meminta untuk bergabung dengan ruangan tetapi administrator atau moderator harus menerima permintaan tersebut" "Minta untuk bergabung" "Supaya ruangan ini terlihat di direktori ruangan publik, Anda memerlukan alamat ruangan." - "Alamat ruangan" "Nama ruangan" "Keterlihatan ruangan" "Buat ruangan" diff --git a/features/createroom/impl/src/main/res/values-ka/translations.xml b/features/createroom/impl/src/main/res/values-ka/translations.xml index 45e87809b2..58b02cbe96 100644 --- a/features/createroom/impl/src/main/res/values-ka/translations.xml +++ b/features/createroom/impl/src/main/res/values-ka/translations.xml @@ -7,7 +7,6 @@ "კერძო ოთახი" "ყველას ამ ოთახის მოძებნა შეუძლია. თქვენ ნებისმიერ დროს შეგიძლიათ ამის შეცვლა ოთახის პარამეტრებში." - "საჯარო ოთახი" "ოთახის სახელი" "ოთახის შექმნა" "თემა (სურვილისამებრ)" diff --git a/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml b/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml index b10b86f5a0..9308007154 100644 --- a/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/createroom/impl/src/main/res/values-pt-rBR/translations.xml @@ -7,7 +7,6 @@ "Sala privativa (somente por convite)" "Qualquer um pode encontrar esta sala. Você pode mudar isso a qualquer momento nas configurações da sala." - "Sala pública (qualquer pessoa)" "Nome da sala" "Criar uma sala" "Tópico (opcional)" diff --git a/features/createroom/impl/src/main/res/values-pt/translations.xml b/features/createroom/impl/src/main/res/values-pt/translations.xml index 60ee753b13..fcff2929e0 100644 --- a/features/createroom/impl/src/main/res/values-pt/translations.xml +++ b/features/createroom/impl/src/main/res/values-pt/translations.xml @@ -3,7 +3,7 @@ "Nova sala" "Convidar pessoas" "Ocorreu um erro ao criar a sala" - "Apenas as pessoas convidadas podem aceder a esta sala. Todas as mensagens são encriptadas ponta a ponta." + "Apenas as pessoas convidadas podem aceder a esta sala. Todas as mensagens são cifradas ponta-a-ponta." "Sala privada" "Qualquer um pode encontrar esta sala. Pode alterar esta opção nas definições da sala." diff --git a/features/createroom/impl/src/main/res/values-ro/translations.xml b/features/createroom/impl/src/main/res/values-ro/translations.xml index 329ca6de1c..7257a07aff 100644 --- a/features/createroom/impl/src/main/res/values-ro/translations.xml +++ b/features/createroom/impl/src/main/res/values-ro/translations.xml @@ -14,7 +14,6 @@ Puteți modifica acest lucru oricând în setări." "Oricine poate cere să se alăture camerei, dar un administrator sau un moderator va trebui să accepte solicitarea" "Cereți să vă alăturați" "Pentru ca această cameră să fie vizibilă în directorul de camere publice, veți avea nevoie de o adresă de cameră." - "Adresa camerei" "Numele camerei" "Creați o cameră" "Subiect (opțional)" diff --git a/features/createroom/impl/src/main/res/values-sv/translations.xml b/features/createroom/impl/src/main/res/values-sv/translations.xml index 980d6ae643..6de56d8f66 100644 --- a/features/createroom/impl/src/main/res/values-sv/translations.xml +++ b/features/createroom/impl/src/main/res/values-sv/translations.xml @@ -13,7 +13,9 @@ Du kan ändra detta när som helst i rumsinställningarna." "Rumsåtkomst" "Vem som helst kan be om att gå med i rummet men en administratör eller en moderator måste acceptera begäran" "Be om att gå med" + "För att detta rum ska vara synligt i den allmänna rumskatalogen behöver du en rumsadress." "Rumsnamn" + "Rumssynlighet" "Skapa ett rum" "Ämne (valfritt)" "Ett fel uppstod när du försökte starta en chatt" diff --git a/features/createroom/impl/src/main/res/values-tr/translations.xml b/features/createroom/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..6b5ce93e92 --- /dev/null +++ b/features/createroom/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,23 @@ + + + "Yeni oda" + "İnsanları davet et" + "Oda oluşturulurken bir hata oluştu" + "Bu odaya yalnızca davet edilen kişiler erişebilir. Tüm mesajlar uçtan uca şifrelenir." + "Özel oda" + "Bu odayı herkes bulabilir. +Bunu istediğiniz zaman oda ayarlarından değiştirebilirsiniz." + "Herkese açık oda" + "Bu odaya herkes katılabilir" + "Herkes" + "Oda Erişimi" + "Herkes odaya katılmayı isteyebilir ancak bir yönetici veya moderatörün isteği kabul etmesi gerekecektir" + "Katılmak için sor" + "Bu odanın genel oda dizininde görünür olması için bir oda adresine ihtiyacınız olacaktır." + "Oda adresi" + "Oda adı" + "Oda görünürlüğü" + "Bir oda oluştur" + "Konu (isteğe bağlı)" + "Sohbet başlatmaya çalışırken bir hata oluştu" + diff --git a/features/createroom/impl/src/main/res/values-uk/translations.xml b/features/createroom/impl/src/main/res/values-uk/translations.xml index a6ad600672..7c73a67640 100644 --- a/features/createroom/impl/src/main/res/values-uk/translations.xml +++ b/features/createroom/impl/src/main/res/values-uk/translations.xml @@ -7,7 +7,7 @@ "Приватна кімната (тільки за запрошенням)" "Будь-хто може знайти цю кімнату. Ви можете змінити це в будь-який час у налаштуваннях кімнати." - "Публічна кімната" + "Загальнодоступна кімната" "Будь-хто може приєднатися до цієї кімнати" "Кожний" "Доступ до кімнати" diff --git a/features/createroom/impl/src/main/res/values-uz/translations.xml b/features/createroom/impl/src/main/res/values-uz/translations.xml index 649bdf8613..e3bc9de528 100644 --- a/features/createroom/impl/src/main/res/values-uz/translations.xml +++ b/features/createroom/impl/src/main/res/values-uz/translations.xml @@ -6,7 +6,6 @@ "Bu xonadagi xabarlar shifrlangan. Keyinchalik shifrlashni o‘chirib bo‘lmaydi." "Shaxsiy xona (faqat taklif)" "Xabarlar shifrlanmagan va har kim ularni o\'qiy oladi. Keyinchalik shifrlashni yoqishingiz mumkin." - "Jamoat xonasi (har kim)" "Xona nomi" "Xonani yaratish" "Mavzu (ixtiyoriy)" diff --git a/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml b/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml index c94c35ad5b..399e5bf1c8 100644 --- a/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml @@ -7,7 +7,7 @@ "私密聊天室" "任何人都可以找到此聊天室。 您隨時都可以在聊天室設定中變更此設定。" - "公開聊天室" + "公開的聊天室" "任何人都可以加入此聊天室" "任何人" "聊天室存取權" diff --git a/features/createroom/impl/src/main/res/values-zh/translations.xml b/features/createroom/impl/src/main/res/values-zh/translations.xml index 0049da0bbb..24741fdc5b 100644 --- a/features/createroom/impl/src/main/res/values-zh/translations.xml +++ b/features/createroom/impl/src/main/res/values-zh/translations.xml @@ -7,7 +7,7 @@ "私有聊天室" "任何人都能找到此聊天室。 你可以随时在聊天室设置中更改。" - "公开聊天室" + "公共聊天室" "任何人都可以加入此房间" "任何人" "房间访问权限" diff --git a/features/createroom/impl/src/main/res/values/localazy.xml b/features/createroom/impl/src/main/res/values/localazy.xml index 6ed5510ce0..71208bf9e9 100644 --- a/features/createroom/impl/src/main/res/values/localazy.xml +++ b/features/createroom/impl/src/main/res/values/localazy.xml @@ -20,4 +20,10 @@ You can change this anytime in room settings." "Create a room" "Topic (optional)" "An error occurred when trying to start a chat" + "Join room by address" + "Not a valid address" + "Enter…" + "Matching room found" + "Room not found" + "e.g. #room-name:matrix.org" diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTest.kt index dabdc288db..ca52969e53 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTest.kt @@ -10,13 +10,14 @@ package io.element.android.features.createroom.impl import androidx.compose.runtime.mutableStateOf import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.CreatedRoom +import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.MatrixClient 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.A_THROWABLE -import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.services.analytics.api.AnalyticsService import io.element.android.services.analytics.test.FakeAnalyticsService import kotlinx.coroutines.test.runTest @@ -28,10 +29,12 @@ class DefaultStartDMActionTest { val matrixClient = FakeMatrixClient().apply { givenFindDmResult(A_ROOM_ID) } - val action = createStartDMAction(matrixClient) + val analyticsService = FakeAnalyticsService() + val action = createStartDMAction(matrixClient, analyticsService) val state = mutableStateOf>(AsyncAction.Uninitialized) - action.execute(A_USER_ID, state) + action.execute(aMatrixUser(), true, state) assertThat(state.value).isEqualTo(AsyncAction.Success(A_ROOM_ID)) + assertThat(analyticsService.capturedEvents).isEmpty() } @Test @@ -43,21 +46,38 @@ class DefaultStartDMActionTest { val analyticsService = FakeAnalyticsService() val action = createStartDMAction(matrixClient, analyticsService) val state = mutableStateOf>(AsyncAction.Uninitialized) - action.execute(A_USER_ID, state) + action.execute(aMatrixUser(), true, state) assertThat(state.value).isEqualTo(AsyncAction.Success(A_ROOM_ID)) assertThat(analyticsService.capturedEvents).containsExactly(CreatedRoom(isDM = true)) } + @Test + fun `when dm is not found, and createIfDmDoesNotExist is false, assert dm is not created and state is updated to confirmation state`() = runTest { + val matrixClient = FakeMatrixClient().apply { + givenFindDmResult(null) + givenCreateDmResult(Result.success(A_ROOM_ID)) + } + val analyticsService = FakeAnalyticsService() + val action = createStartDMAction(matrixClient, analyticsService) + val state = mutableStateOf>(AsyncAction.Uninitialized) + val matrixUser = aMatrixUser() + action.execute(matrixUser, false, state) + assertThat(state.value).isEqualTo(ConfirmingStartDmWithMatrixUser(matrixUser)) + assertThat(analyticsService.capturedEvents).isEmpty() + } + @Test fun `when dm creation fails, assert state is updated with given error`() = runTest { val matrixClient = FakeMatrixClient().apply { givenFindDmResult(null) givenCreateDmResult(Result.failure(A_THROWABLE)) } - val action = createStartDMAction(matrixClient) + val analyticsService = FakeAnalyticsService() + val action = createStartDMAction(matrixClient, analyticsService) val state = mutableStateOf>(AsyncAction.Uninitialized) - action.execute(A_USER_ID, state) + action.execute(aMatrixUser(), true, state) assertThat(state.value).isEqualTo(AsyncAction.Failure(A_THROWABLE)) + assertThat(analyticsService.capturedEvents).isEmpty() } private fun createStartDMAction( diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/FakeCreateRoomNavigator.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/FakeCreateRoomNavigator.kt new file mode 100644 index 0000000000..b173865b61 --- /dev/null +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/FakeCreateRoomNavigator.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.createroom.impl + +import io.element.android.features.createroom.CreateRoomNavigator +import io.element.android.libraries.matrix.api.core.RoomIdOrAlias + +class FakeCreateRoomNavigator( + private val openRoomLambda: (roomIdOrAlias: RoomIdOrAlias, serverNames: List) -> Unit = { _, _ -> }, + private val createNewRoomLambda: () -> Unit = {}, + private val showJoinRoomByAddressLambda: () -> Unit = {}, + private val dismissJoinRoomByAddressLambda: () -> Unit = {}, + ) : CreateRoomNavigator { + override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) { + openRoomLambda(roomIdOrAlias, serverNames) + } + + override fun onCreateNewRoom() { + createNewRoomLambda() + } + + override fun onShowJoinRoomByAddress() { + showJoinRoomByAddressLambda() + } + + override fun onDismissJoinRoomByAddress() { + dismissJoinRoomByAddressLambda() + } +} diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressPresenterTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressPresenterTest.kt new file mode 100644 index 0000000000..d1ee3e801c --- /dev/null +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressPresenterTest.kt @@ -0,0 +1,140 @@ +/* + * 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.impl.joinbyaddress + +import com.google.common.truth.Truth.assertThat +import io.element.android.features.createroom.CreateRoomNavigator +import io.element.android.features.createroom.impl.FakeCreateRoomNavigator +import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.core.RoomIdOrAlias +import io.element.android.libraries.matrix.api.room.alias.RoomAliasHelper +import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.room.alias.FakeRoomAliasHelper +import io.element.android.tests.testutils.lambda.assert +import io.element.android.tests.testutils.lambda.lambdaRecorder +import io.element.android.tests.testutils.test +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class JoinRoomByAddressPresenterTest { + @Test + fun `present - initial state`() = runTest { + val presenter = createJoinRoomByAddressPresenter() + presenter.test { + with(awaitItem()) { + assertThat(address).isEmpty() + assertThat(addressState).isEqualTo(RoomAddressState.Unknown) + } + } + } + + @Test + fun `present - invalid address`() = runTest { + val presenter = createJoinRoomByAddressPresenter( + roomAliasHelper = FakeRoomAliasHelper( + isRoomAliasValidLambda = { false } + ) + ) + presenter.test { + with(awaitItem()) { + eventSink(JoinRoomByAddressEvents.UpdateAddress("invalid_address")) + } + with(awaitItem()) { + assertThat(address).isEqualTo("invalid_address") + assertThat(addressState).isEqualTo(RoomAddressState.Unknown) + eventSink(JoinRoomByAddressEvents.Continue) + } + // The address should be marked as invalid only after the user tries to continue + with(awaitItem()) { + assertThat(address).isEqualTo("invalid_address") + assertThat(addressState).isEqualTo(RoomAddressState.Invalid) + } + } + } + + @Test + fun `present - room found`() = runTest { + val openRoomLambda = lambdaRecorder, Unit> { _, _ -> } + val dismissJoinRoomByAddressLambda = lambdaRecorder { } + val navigator = FakeCreateRoomNavigator( + openRoomLambda = openRoomLambda, + dismissJoinRoomByAddressLambda = dismissJoinRoomByAddressLambda + ) + val presenter = createJoinRoomByAddressPresenter(navigator = navigator) + presenter.test { + with(awaitItem()) { + eventSink(JoinRoomByAddressEvents.UpdateAddress("#room_found:matrix.org")) + } + with(awaitItem()) { + assertThat(address).isEqualTo("#room_found:matrix.org") + assertThat(addressState).isEqualTo(RoomAddressState.Unknown) + } + with(awaitItem()) { + assertThat(address).isEqualTo("#room_found:matrix.org") + assertThat(addressState).isInstanceOf(RoomAddressState.RoomFound::class.java) + eventSink(JoinRoomByAddressEvents.Continue) + } + assert(openRoomLambda).isCalledOnce() + assert(dismissJoinRoomByAddressLambda).isCalledOnce() + } + } + + @Test + fun `present - room not found`() = runTest { + val presenter = createJoinRoomByAddressPresenter( + matrixClient = FakeMatrixClient( + resolveRoomAliasResult = { Result.failure(RuntimeException()) } + ) + ) + presenter.test { + with(awaitItem()) { + eventSink(JoinRoomByAddressEvents.UpdateAddress("#room_not_found:matrix.org")) + } + with(awaitItem()) { + assertThat(address).isEqualTo("#room_not_found:matrix.org") + assertThat(addressState).isEqualTo(RoomAddressState.Unknown) + eventSink(JoinRoomByAddressEvents.Continue) + } + with(awaitItem()) { + assertThat(address).isEqualTo("#room_not_found:matrix.org") + assertThat(addressState).isEqualTo(RoomAddressState.Resolving) + } + with(awaitItem()) { + assertThat(address).isEqualTo("#room_not_found:matrix.org") + assertThat(addressState).isEqualTo(RoomAddressState.RoomNotFound) + } + } + } + + @Test + fun `present - dismiss`() = runTest { + val dismissJoinRoomByAddressLambda = lambdaRecorder { } + val navigator = FakeCreateRoomNavigator( + dismissJoinRoomByAddressLambda = dismissJoinRoomByAddressLambda + ) + val presenter = createJoinRoomByAddressPresenter(navigator = navigator) + presenter.test { + with(awaitItem()) { + eventSink(JoinRoomByAddressEvents.Dismiss) + } + assert(dismissJoinRoomByAddressLambda).isCalledOnce() + } + } + + private fun createJoinRoomByAddressPresenter( + navigator: CreateRoomNavigator = FakeCreateRoomNavigator(), + matrixClient: MatrixClient = FakeMatrixClient(), + roomAliasHelper: RoomAliasHelper = FakeRoomAliasHelper(), + ): JoinRoomByAddressPresenter { + return JoinRoomByAddressPresenter( + navigator = navigator, + client = matrixClient, + roomAliasHelper = roomAliasHelper, + ) + } +} diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressViewTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressViewTest.kt new file mode 100644 index 0000000000..bb3ee3e493 --- /dev/null +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/joinbyaddress/JoinRoomByAddressViewTest.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.createroom.impl.joinbyaddress + +import androidx.activity.ComponentActivity +import androidx.compose.ui.test.junit4.AndroidComposeTestRule +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performTextInput +import androidx.test.ext.junit.runners.AndroidJUnit4 +import io.element.android.features.createroom.impl.R +import io.element.android.libraries.ui.strings.CommonStrings +import io.element.android.tests.testutils.EventsRecorder +import io.element.android.tests.testutils.clickOn +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TestRule +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class JoinRoomByAddressViewTest { + @get:Rule + val rule = createAndroidComposeRule() + + @Test + fun `entering text emits the expected event`() { + val eventsRecorder = EventsRecorder() + rule.setJoinRoomByAddressView( + aJoinRoomByAddressState( + eventSink = eventsRecorder, + ) + ) + val text = rule.activity.getString(R.string.screen_start_chat_join_room_by_address_action) + rule.onNodeWithText(text).performTextInput("#address:matrix.org") + eventsRecorder.assertSingle(JoinRoomByAddressEvents.UpdateAddress("#address:matrix.org")) + } + + @Test + fun `clicking on continue emits the expected event`() { + val eventsRecorder = EventsRecorder() + rule.setJoinRoomByAddressView( + aJoinRoomByAddressState( + eventSink = eventsRecorder, + ) + ) + rule.clickOn(CommonStrings.action_continue) + eventsRecorder.assertSingle(JoinRoomByAddressEvents.Continue) + } +} + +private fun AndroidComposeTestRule.setJoinRoomByAddressView( + state: JoinRoomByAddressState, +) { + setContent { + JoinRoomByAddressView(state = state) + } +} diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTest.kt index 139fae5982..0eaae1a3df 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTest.kt @@ -7,16 +7,19 @@ package io.element.android.features.createroom.impl.root +import androidx.compose.runtime.MutableState 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.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.createroom.api.StartDMAction import io.element.android.features.createroom.impl.userlist.FakeUserListPresenter import io.element.android.features.createroom.impl.userlist.FakeUserListPresenterFactory import io.element.android.features.createroom.impl.userlist.UserListDataStore import io.element.android.features.createroom.test.FakeStartDMAction import io.element.android.libraries.architecture.AsyncAction +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.user.MatrixUser import io.element.android.libraries.matrix.test.A_ROOM_ID @@ -24,6 +27,9 @@ import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.lambda.any +import io.element.android.tests.testutils.lambda.lambdaRecorder +import io.element.android.tests.testutils.lambda.value import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -33,46 +39,130 @@ class CreateRoomRootPresenterTest { val warmUpRule = WarmUpRule() @Test - fun `present - start DM action complete scenario`() = runTest { - val startDMAction = FakeStartDMAction() + fun `present - start DM action failure scenario`() = runTest { + val startDMFailureResult = AsyncAction.Failure(A_THROWABLE) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMFailureResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) val presenter = createCreateRoomRootPresenter(startDMAction) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.startDmAction).isInstanceOf(AsyncAction.Uninitialized::class.java) assertThat(initialState.applicationName).isEqualTo(aBuildMeta().applicationName) assertThat(initialState.userListState.selectedUsers).isEmpty() assertThat(initialState.userListState.isSearchActive).isFalse() assertThat(initialState.userListState.isMultiSelectionEnabled).isFalse() - val matrixUser = MatrixUser(UserId("@name:domain")) - val startDMSuccessResult = AsyncAction.Success(A_ROOM_ID) - val startDMFailureResult = AsyncAction.Failure(A_THROWABLE) - - // Failure - startDMAction.givenExecuteResult(startDMFailureResult) initialState.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) - assertThat(awaitItem().startDmAction).isInstanceOf(AsyncAction.Loading::class.java) awaitItem().also { state -> assertThat(state.startDmAction).isEqualTo(startDMFailureResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) state.eventSink(CreateRoomRootEvents.CancelStartDM) } - - // Success - startDMAction.givenExecuteResult(startDMSuccessResult) awaitItem().also { state -> - assertThat(state.startDmAction).isEqualTo(AsyncAction.Uninitialized) - state.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) + assertThat(state.startDmAction.isUninitialized()).isTrue() } - assertThat(awaitItem().startDmAction).isInstanceOf(AsyncAction.Loading::class.java) + } + } + + @Test + fun `present - start DM action success scenario`() = runTest { + val startDMSuccessResult = AsyncAction.Success(A_ROOM_ID) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMSuccessResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) + val presenter = createCreateRoomRootPresenter(startDMAction) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.startDmAction).isInstanceOf(AsyncAction.Uninitialized::class.java) + assertThat(initialState.applicationName).isEqualTo(aBuildMeta().applicationName) + assertThat(initialState.userListState.selectedUsers).isEmpty() + assertThat(initialState.userListState.isSearchActive).isFalse() + assertThat(initialState.userListState.isMultiSelectionEnabled).isFalse() + val matrixUser = MatrixUser(UserId("@name:domain")) + initialState.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) awaitItem().also { state -> assertThat(state.startDmAction).isEqualTo(startDMSuccessResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) } } } + @Test + fun `present - start DM action confirmation scenario - cancel`() = runTest { + val matrixUser = MatrixUser(UserId("@name:domain")) + val startDMConfirmationResult = ConfirmingStartDmWithMatrixUser(matrixUser) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMConfirmationResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) + val presenter = createCreateRoomRootPresenter(startDMAction) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.startDmAction).isInstanceOf(AsyncAction.Uninitialized::class.java) + initialState.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) + val confirmingState = awaitItem() + assertThat(confirmingState.startDmAction).isEqualTo(startDMConfirmationResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) + // Cancelling should not create the DM + confirmingState.eventSink(CreateRoomRootEvents.CancelStartDM) + val finalState = awaitItem() + assertThat(finalState.startDmAction.isUninitialized()).isTrue() + executeResult.assertions().isCalledExactly(1) + } + } + + @Test + fun `present - start DM action confirmation scenario - confirm`() = runTest { + val matrixUser = MatrixUser(UserId("@name:domain")) + val startDMConfirmationResult = ConfirmingStartDmWithMatrixUser(matrixUser) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMConfirmationResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) + val presenter = createCreateRoomRootPresenter(startDMAction) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.startDmAction).isInstanceOf(AsyncAction.Uninitialized::class.java) + initialState.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) + val confirmingState = awaitItem() + assertThat(confirmingState.startDmAction).isEqualTo(startDMConfirmationResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) + // Start DM again should invoke the action with createIfDmDoesNotExist = true + confirmingState.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) + executeResult.assertions().isCalledExactly(2).withSequence( + listOf(value(matrixUser), value(false), any()), + listOf(value(matrixUser), value(true), any()), + ) + } + } + private fun createCreateRoomRootPresenter( startDMAction: StartDMAction = FakeStartDMAction(), ): CreateRoomRootPresenter { diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootViewTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootViewTest.kt index 88390f3b8c..e446a13417 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootViewTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootViewTest.kt @@ -101,6 +101,21 @@ class CreateRoomRootViewTest { rule.onNodeWithText(firstRoom.matrixUser.getBestName()).performClick() } } + + @Config(qualifiers = "h1024dp") + @Test + fun `clicking on Join room by address invokes the expected callback`() { + val eventsRecorder = EventsRecorder(expectEvents = false) + ensureCalledOnce { + rule.setCreateRoomRootView( + aCreateRoomRootState( + eventSink = eventsRecorder, + ), + onJoinRoomByAddressClick = it + ) + rule.clickOn(R.string.screen_start_chat_join_room_by_address_action) + } + } } private fun AndroidComposeTestRule.setCreateRoomRootView( @@ -109,6 +124,7 @@ private fun AndroidComposeTestRule.setCreat onNewRoomClick: () -> Unit = EnsureNeverCalled(), onOpenDM: (RoomId) -> Unit = EnsureNeverCalledWithParam(), onInviteFriendsClick: () -> Unit = EnsureNeverCalled(), + onJoinRoomByAddressClick: () -> Unit = EnsureNeverCalled(), ) { setContent { CreateRoomRootView( @@ -117,6 +133,7 @@ private fun AndroidComposeTestRule.setCreat onNewRoomClick = onNewRoomClick, onOpenDM = onOpenDM, onInviteFriendsClick = onInviteFriendsClick, + onJoinByAddressClick = onJoinRoomByAddressClick ) } } diff --git a/features/createroom/test/build.gradle.kts b/features/createroom/test/build.gradle.kts index f2f2b8280a..b7df0caab6 100644 --- a/features/createroom/test/build.gradle.kts +++ b/features/createroom/test/build.gradle.kts @@ -18,5 +18,6 @@ dependencies { implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.test) implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) api(projects.features.createroom.api) } diff --git a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt index 27ad5f7d62..90e2ecf1c1 100644 --- a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt +++ b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt @@ -11,20 +11,19 @@ import androidx.compose.runtime.MutableState import io.element.android.features.createroom.api.StartDMAction import io.element.android.libraries.architecture.AsyncAction 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_ROOM_ID -import kotlinx.coroutines.delay +import io.element.android.libraries.matrix.api.user.MatrixUser +import io.element.android.tests.testutils.lambda.lambdaError -class FakeStartDMAction : StartDMAction { - private var executeResult: AsyncAction = AsyncAction.Success(A_ROOM_ID) - - fun givenExecuteResult(result: AsyncAction) { - executeResult = result +class FakeStartDMAction( + private val executeResult: (MatrixUser, Boolean, MutableState>) -> Unit = { _, _, _ -> + lambdaError() } - - override suspend fun execute(userId: UserId, actionState: MutableState>) { - actionState.value = AsyncAction.Loading - delay(1) - actionState.value = executeResult +) : StartDMAction { + override suspend fun execute( + matrixUser: MatrixUser, + createIfDmDoesNotExist: Boolean, + actionState: MutableState>, + ) { + executeResult(matrixUser, createIfDmDoesNotExist, actionState) } } diff --git a/features/deactivation/impl/src/main/res/values-fr/translations.xml b/features/deactivation/impl/src/main/res/values-fr/translations.xml index 875142bc01..675ac1e1e0 100644 --- a/features/deactivation/impl/src/main/res/values-fr/translations.xml +++ b/features/deactivation/impl/src/main/res/values-fr/translations.xml @@ -10,5 +10,5 @@ "Vous retirer de tous les salons et toutes les discussions." "Supprimer les informations de votre compte du serveur d’identité." "Rendre vos messages invisibles aux futurs membres des salons si vous choisissez de les supprimer. Vos messages seront toujours visibles pour les utilisateurs qui les ont déjà récupérés." - "Désactiver votre compte" + "Désactiver le compte" diff --git a/features/deactivation/impl/src/main/res/values-it/translations.xml b/features/deactivation/impl/src/main/res/values-it/translations.xml index 7cd484d0e4..3fbc9d536b 100644 --- a/features/deactivation/impl/src/main/res/values-it/translations.xml +++ b/features/deactivation/impl/src/main/res/values-it/translations.xml @@ -10,5 +10,5 @@ "Ti rimuove da tutte le stanze di chat." "Elimina le informazioni del tuo account dal nostro server di identità." "I tuoi messaggi saranno ancora visibili agli utenti registrati, ma non saranno disponibili per gli utenti nuovi o non registrati se decidi di eliminarli." - "Disattivazione dell\'account" + "Disattiva account" diff --git a/features/deactivation/impl/src/main/res/values-tr/translations.xml b/features/deactivation/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..cc61b80c54 --- /dev/null +++ b/features/deactivation/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,14 @@ + + + "Lütfen hesabınızı devre dışı bırakmak istediğinizi onaylayın. Bu işlem geri alınamaz." + "Tüm mesajlarımı sil" + "Uyarı: Gelecekteki kullanıcılar eksik konuşmalar görebilir." + "Hesabınızı devre dışı bırakmak %1$s, şunları yapacaktır:" + "geri alınamaz" + "%1$s (tekrar giriş yapamazsınız ve kimliğiniz yeniden kullanılamaz)." + "Kalıcı olarak devre dışı bırak" + "Sizi tüm sohbet odalarından çıkarmak." + "Hesap bilgileriniz kimlik sunucumuzdan silinecek." + "Mesajlarınız kayıtlı kullanıcılar tarafından görülmeye devam eder, ancak silmeyi seçerseniz yeni veya kayıtlı olmayan kullanıcılar tarafından görüntülenemeyecek." + "Hesabı devre dışı bırak" + diff --git a/features/deactivation/impl/src/main/res/values-uk/translations.xml b/features/deactivation/impl/src/main/res/values-uk/translations.xml index 62cf66cec1..04b32df8b2 100644 --- a/features/deactivation/impl/src/main/res/values-uk/translations.xml +++ b/features/deactivation/impl/src/main/res/values-uk/translations.xml @@ -10,5 +10,5 @@ "Видалити вас з усіх чатів." "Видаліть інформацію свого облікового запису з нашого сервера ідентифікації." "Ваші повідомлення залишатимуться видимими для зареєстрованих користувачів, але недоступними для нових або незареєстрованих користувачів, якщо ви вирішите їх видалити." - "Відключити обліковий запис" + "Деактивувати обліковий запис" diff --git a/features/enterprise/api/build.gradle.kts b/features/enterprise/api/build.gradle.kts index 91c54bc42c..9f63ab2cf1 100644 --- a/features/enterprise/api/build.gradle.kts +++ b/features/enterprise/api/build.gradle.kts @@ -13,6 +13,7 @@ android { } dependencies { + implementation(libs.compound) implementation(projects.libraries.architecture) implementation(projects.libraries.matrix.api) } 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 2ac334653e..4fddfe283c 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,14 @@ package io.element.android.features.enterprise.api +import io.element.android.compound.tokens.generated.SemanticColors import io.element.android.libraries.matrix.api.core.SessionId interface EnterpriseService { val isEnterpriseBuild: Boolean suspend fun isEnterpriseUser(sessionId: SessionId): Boolean + fun defaultHomeserver(): String? + + fun semanticColorsLight(): SemanticColors + fun semanticColorsDark(): SemanticColors } diff --git a/features/enterprise/impl/build.gradle.kts b/features/enterprise/impl/build.gradle.kts index 6beea5b83a..642b2fef40 100644 --- a/features/enterprise/impl/build.gradle.kts +++ b/features/enterprise/impl/build.gradle.kts @@ -17,6 +17,7 @@ android { setupAnvil() dependencies { + implementation(libs.compound) implementation(projects.anvilannotations) api(projects.features.enterprise.api) implementation(projects.libraries.architecture) diff --git a/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index c77c7377d8..898f59969c 100644 --- a/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -8,6 +8,9 @@ package io.element.android.features.enterprise.impl import com.squareup.anvil.annotations.ContributesBinding +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.EnterpriseService import io.element.android.libraries.di.AppScope import io.element.android.libraries.matrix.api.core.SessionId @@ -18,4 +21,10 @@ class DefaultEnterpriseService @Inject constructor() : EnterpriseService { override val isEnterpriseBuild = false override suspend fun isEnterpriseUser(sessionId: SessionId) = false + + override fun defaultHomeserver() = null + + override fun semanticColorsLight(): SemanticColors = compoundColorsLight + + override fun semanticColorsDark(): SemanticColors = compoundColorsDark } diff --git a/features/enterprise/impl/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt b/features/enterprise/impl/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt index e2a6a11a9a..0d5593dab9 100644 --- a/features/enterprise/impl/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt +++ b/features/enterprise/impl/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt @@ -19,6 +19,12 @@ class DefaultEnterpriseServiceTest { assertThat(defaultEnterpriseService.isEnterpriseBuild).isFalse() } + @Test + fun `defaultHomeserver should return null`() { + val defaultEnterpriseService = DefaultEnterpriseService() + assertThat(defaultEnterpriseService.defaultHomeserver()).isNull() + } + @Test fun `isEnterpriseUser always return false`() = runTest { val defaultEnterpriseService = DefaultEnterpriseService() diff --git a/features/enterprise/test/build.gradle.kts b/features/enterprise/test/build.gradle.kts new file mode 100644 index 0000000000..91b76f4fa7 --- /dev/null +++ b/features/enterprise/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.enterprise.test" +} + +dependencies { + api(projects.features.enterprise.api) + implementation(libs.compound) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) +} 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 new file mode 100644 index 0000000000..fbb826ec73 --- /dev/null +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.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.enterprise.test + +import io.element.android.compound.tokens.generated.SemanticColors +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.tests.testutils.lambda.lambdaError +import io.element.android.tests.testutils.simulateLongTask + +class FakeEnterpriseService( + override val isEnterpriseBuild: Boolean = false, + private val isEnterpriseUserResult: (SessionId) -> Boolean = { lambdaError() }, + private val defaultHomeserverResult: () -> String? = { A_FAKE_HOMESERVER }, + private val semanticColorsLightResult: () -> SemanticColors = { lambdaError() }, + private val semanticColorsDarkResult: () -> SemanticColors = { lambdaError() }, +) : EnterpriseService { + override suspend fun isEnterpriseUser(sessionId: SessionId): Boolean = simulateLongTask { + isEnterpriseUserResult(sessionId) + } + + override fun defaultHomeserver(): String? { + return defaultHomeserverResult() + } + + override fun semanticColorsLight(): SemanticColors { + return semanticColorsLightResult() + } + + override fun semanticColorsDark(): SemanticColors { + return semanticColorsDarkResult() + } + + companion object { + const val A_FAKE_HOMESERVER = "a_fake_homeserver" + } +} diff --git a/features/ftue/impl/src/main/res/values-tr/translations.xml b/features/ftue/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..a653e93624 --- /dev/null +++ b/features/ftue/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,11 @@ + + + "Ayarlarınızı daha sonra değiştirebilirsiniz." + "Bildirimlere izin verin ve hiçbir mesajı kaçırmayın" + "Çağrılar, anketler, arama ve daha fazlası bu yıl içinde eklenecek." + "Şifrelenmiş odalar için mesaj geçmişi henüz mevcut değil." + "Düşüncelerinizi bizimle paylaşmanızı çok isteriz. Ayarlar sayfasından düşüncelerinizi bize iletin." + "Hadi başlayalım!" + "İşte bilmeniz gerekenler:" + "%1$s hoş geldiniz!" + diff --git a/features/invite/impl/src/main/res/values-tr/translations.xml b/features/invite/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..09beb1f56a --- /dev/null +++ b/features/invite/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,9 @@ + + + "%1$s katılma davetini reddetmek istediğinizden emin misiniz?" + "Daveti reddet" + "%1$s ile bu özel sohbeti reddetmek istediğinizden emin misiniz?" + "Sohbeti reddet" + "Davet Yok" + "%1$s (%2$s) sizi davet etti" + diff --git a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt index 4b064e0108..589a7ec97b 100644 --- a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt +++ b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt @@ -22,7 +22,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_NAME import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient -import io.element.android.libraries.matrix.test.room.FakePendingRoom +import io.element.android.libraries.matrix.test.room.FakeRoomPreview import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner @@ -77,9 +77,11 @@ class AcceptDeclineInvitePresenterTest { val declineInviteFailure = lambdaRecorder { -> Result.failure(RuntimeException("Failed to leave room")) } - val client = FakeMatrixClient().apply { - getPendingRoomResults[A_ROOM_ID] = FakePendingRoom(declineInviteResult = declineInviteFailure) - } + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success(FakeRoomPreview(declineInviteResult = declineInviteFailure)) + } + ) val presenter = createAcceptDeclineInvitePresenter(client = client) presenter.test { val inviteData = anInviteData() @@ -120,9 +122,11 @@ class AcceptDeclineInvitePresenterTest { val declineInviteSuccess = lambdaRecorder { -> Result.success(Unit) } - val client = FakeMatrixClient().apply { - getPendingRoomResults[A_ROOM_ID] = FakePendingRoom(declineInviteResult = declineInviteSuccess) - } + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success(FakeRoomPreview(declineInviteResult = declineInviteSuccess)) + } + ) val presenter = createAcceptDeclineInvitePresenter( client = client, notificationCleaner = fakeNotificationCleaner, diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomEvents.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomEvents.kt index 5550d06bac..055ce113cf 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomEvents.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomEvents.kt @@ -9,8 +9,10 @@ package io.element.android.features.joinroom.impl sealed interface JoinRoomEvents { data object RetryFetchingContent : JoinRoomEvents + data object DismissErrorAndHideContent : JoinRoomEvents data object JoinRoom : JoinRoomEvents data object KnockRoom : JoinRoomEvents + data object ForgetRoom : JoinRoomEvents data class CancelKnock(val requiresConfirmation: Boolean) : JoinRoomEvents data class UpdateKnockMessage(val message: String) : JoinRoomEvents data object ClearActionStates : JoinRoomEvents diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomNode.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomNode.kt index ec910ee29d..dbf741f2d8 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomNode.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomNode.kt @@ -43,6 +43,7 @@ class JoinRoomNode @AssistedInject constructor( state = state, onBackClick = ::navigateUp, onJoinSuccess = ::navigateUp, + onForgetSuccess = ::navigateUp, onCancelKnockSuccess = {}, onKnockSuccess = {}, modifier = modifier 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 3cb7b5f82a..f9f4edd8a9 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 @@ -26,22 +26,28 @@ import io.element.android.features.invite.api.response.AcceptDeclineInviteEvents import io.element.android.features.invite.api.response.AcceptDeclineInviteState import io.element.android.features.invite.api.response.InviteData import io.element.android.features.joinroom.impl.di.CancelKnockRoom +import io.element.android.features.joinroom.impl.di.ForgetRoom import io.element.android.features.joinroom.impl.di.KnockRoom import io.element.android.features.roomdirectory.api.RoomDescription import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runUpdatingState +import io.element.android.libraries.core.extensions.mapFailure 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.core.toRoomIdOrAlias +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.getRoomInfoFlow import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.MatrixRoomInfo +import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomType import io.element.android.libraries.matrix.api.room.isDm import io.element.android.libraries.matrix.api.room.join.JoinRoom +import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.libraries.matrix.ui.model.toInviteSender import kotlinx.coroutines.CoroutineScope @@ -58,6 +64,7 @@ class JoinRoomPresenter @AssistedInject constructor( private val joinRoom: JoinRoom, private val knockRoom: KnockRoom, private val cancelKnockRoom: CancelKnockRoom, + private val forgetRoom: ForgetRoom, private val acceptDeclineInvitePresenter: Presenter, private val buildMeta: BuildMeta, ) : Presenter { @@ -79,31 +86,59 @@ class JoinRoomPresenter @AssistedInject constructor( val joinAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } val knockAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } val cancelKnockAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } + val forgetRoomAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } var knockMessage by rememberSaveable { mutableStateOf("") } + var isDismissingContent by remember { mutableStateOf(false) } val contentState by produceState( - initialValue = ContentState.Loading(roomIdOrAlias), + initialValue = ContentState.Loading, key1 = roomInfo, key2 = retryCount, + key3 = isDismissingContent, ) { when { + isDismissingContent -> value = ContentState.Dismissing roomInfo.isPresent -> { - value = roomInfo.get().toContentState() + val (sender, reason) = when (roomInfo.get().currentUserMembership) { + CurrentUserMembership.BANNED -> { + // Workaround to get info about the sender for banned rooms + // TODO re-do this once we have a better API in the SDK + val preview = matrixClient.getRoomPreview(roomIdOrAlias, serverNames) + val membershipDetalis = preview.getOrNull()?.membershipDetails()?.getOrNull() + membershipDetalis?.senderMember to membershipDetalis?.currentUserMember?.membershipChangeReason + } + CurrentUserMembership.INVITED -> { + roomInfo.get().inviter to null + } + else -> null to null + } + value = roomInfo.get().toContentState(sender, reason) } roomDescription.isPresent -> { value = roomDescription.get().toContentState() } else -> { - value = ContentState.Loading(roomIdOrAlias) - val result = matrixClient.getRoomPreviewInfo(roomIdOrAlias, serverNames) + value = ContentState.Loading + val result = matrixClient.getRoomPreview(roomIdOrAlias, serverNames) value = result.fold( - onSuccess = { previewInfo -> - previewInfo.toContentState() + onSuccess = { preview -> + val membershipInfo = when (preview.info.membership) { + CurrentUserMembership.INVITED, + CurrentUserMembership.BANNED, + CurrentUserMembership.KNOCKED -> { + preview.membershipDetails().getOrNull() + } + else -> null + } + preview.info.toContentState( + senderMember = membershipInfo?.senderMember, + reason = membershipInfo?.currentUserMember?.membershipChangeReason, + ) }, onFailure = { throwable -> - if (throwable.message?.contains("403") == true) { - ContentState.UnknownRoom(roomIdOrAlias) + if (throwable is ClientException.MatrixApi && (throwable.kind == ErrorKind.NotFound || throwable.kind == ErrorKind.Forbidden)) { + ContentState.UnknownRoom } else { - ContentState.Failure(roomIdOrAlias, throwable) + ContentState.Failure(throwable) } } ) @@ -136,18 +171,25 @@ class JoinRoomPresenter @AssistedInject constructor( knockAction.value = AsyncAction.Uninitialized joinAction.value = AsyncAction.Uninitialized cancelKnockAction.value = AsyncAction.Uninitialized + forgetRoomAction.value = AsyncAction.Uninitialized } is JoinRoomEvents.UpdateKnockMessage -> { knockMessage = event.message.take(MAX_KNOCK_MESSAGE_LENGTH) } + JoinRoomEvents.DismissErrorAndHideContent -> { + isDismissingContent = true + } + JoinRoomEvents.ForgetRoom -> coroutineScope.forgetRoom(forgetRoomAction) } } return JoinRoomState( + roomIdOrAlias = roomIdOrAlias, contentState = contentState, acceptDeclineInviteState = acceptDeclineInviteState, joinAction = joinAction.value, knockAction = knockAction.value, + forgetAction = forgetRoomAction.value, cancelKnockAction = cancelKnockAction.value, applicationName = buildMeta.applicationName, knockMessage = knockMessage, @@ -161,7 +203,13 @@ class JoinRoomPresenter @AssistedInject constructor( roomIdOrAlias = roomIdOrAlias, serverNames = serverNames, trigger = trigger - ) + ).mapFailure { + if (it is ClientException.MatrixApi && it.kind == ErrorKind.Forbidden) { + JoinRoomFailures.UnauthorizedJoin + } else { + it + } + } } } @@ -180,9 +228,15 @@ class JoinRoomPresenter @AssistedInject constructor( } } } + + private fun CoroutineScope.forgetRoom(forgetAction: MutableState>) = launch { + forgetAction.runUpdatingState { + forgetRoom.invoke(roomId) + } + } } -private fun RoomPreviewInfo.toContentState(): ContentState { +private fun RoomPreviewInfo.toContentState(senderMember: RoomMember?, reason: String?): ContentState { return ContentState.Loaded( roomId = roomId, name = name, @@ -192,12 +246,11 @@ private fun RoomPreviewInfo.toContentState(): ContentState { isDm = false, roomType = roomType, roomAvatarUrl = avatarUrl, - joinAuthorisationStatus = when { - // Note when isInvited, roomInfo will be used, so if this happen, it will be temporary. - isInvited -> JoinAuthorisationStatus.IsInvited(null) - canKnock -> JoinAuthorisationStatus.CanKnock - isPublic -> JoinAuthorisationStatus.CanJoin - else -> JoinAuthorisationStatus.Unknown + joinAuthorisationStatus = when (membership) { + CurrentUserMembership.INVITED -> JoinAuthorisationStatus.IsInvited(senderMember?.toInviteSender()) + CurrentUserMembership.BANNED -> JoinAuthorisationStatus.IsBanned(senderMember?.toInviteSender(), reason) + CurrentUserMembership.KNOCKED -> JoinAuthorisationStatus.IsKnocked + else -> joinRule.toJoinAuthorisationStatus() } ) } @@ -222,27 +275,42 @@ internal fun RoomDescription.toContentState(): ContentState { } @VisibleForTesting -internal fun MatrixRoomInfo.toContentState(): ContentState { +internal fun MatrixRoomInfo.toContentState(membershipSender: RoomMember?, reason: String?): ContentState { return ContentState.Loaded( roomId = id, name = name, topic = topic, alias = canonicalAlias, - numberOfMembers = activeMembersCount, + numberOfMembers = joinedMembersCount, isDm = isDm, roomType = if (isSpace) RoomType.Space else RoomType.Room, roomAvatarUrl = avatarUrl, - joinAuthorisationStatus = when { - currentUserMembership == CurrentUserMembership.INVITED -> JoinAuthorisationStatus.IsInvited( - inviteSender = inviter?.toInviteSender() + joinAuthorisationStatus = when (currentUserMembership) { + CurrentUserMembership.INVITED -> JoinAuthorisationStatus.IsInvited( + inviteSender = membershipSender?.toInviteSender() ) - currentUserMembership == CurrentUserMembership.KNOCKED -> JoinAuthorisationStatus.IsKnocked - isPublic -> JoinAuthorisationStatus.CanJoin - else -> JoinAuthorisationStatus.Unknown + CurrentUserMembership.BANNED -> JoinAuthorisationStatus.IsBanned( + banSender = membershipSender?.toInviteSender(), + reason = reason, + ) + CurrentUserMembership.KNOCKED -> JoinAuthorisationStatus.IsKnocked + else -> joinRule.toJoinAuthorisationStatus() } ) } +private fun JoinRule?.toJoinAuthorisationStatus(): JoinAuthorisationStatus { + return when (this) { + JoinRule.Knock, + is JoinRule.KnockRestricted -> JoinAuthorisationStatus.CanKnock + JoinRule.Invite, + JoinRule.Private -> JoinAuthorisationStatus.NeedInvite + is JoinRule.Restricted -> JoinAuthorisationStatus.Restricted + JoinRule.Public -> JoinAuthorisationStatus.CanJoin + else -> JoinAuthorisationStatus.Unknown + } +} + @VisibleForTesting internal fun ContentState.toInviteData(): InviteData? { return when (this) { 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 85538d6d88..7162aea414 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 @@ -22,30 +22,49 @@ internal const val MAX_KNOCK_MESSAGE_LENGTH = 500 @Immutable data class JoinRoomState( + val roomIdOrAlias: RoomIdOrAlias, val contentState: ContentState, val acceptDeclineInviteState: AcceptDeclineInviteState, val joinAction: AsyncAction, val knockAction: AsyncAction, + val forgetAction: AsyncAction, val cancelKnockAction: AsyncAction, - val applicationName: String, + private val applicationName: String, val knockMessage: String, val eventSink: (JoinRoomEvents) -> Unit ) { + val isJoinActionUnauthorized = joinAction is AsyncAction.Failure && joinAction.error is JoinRoomFailures.UnauthorizedJoin val joinAuthorisationStatus = when (contentState) { - // Use the join authorisation status from the loaded content state - is ContentState.Loaded -> contentState.joinAuthorisationStatus - // Assume that if the room is unknown, the user can join it - is ContentState.UnknownRoom -> JoinAuthorisationStatus.CanJoin - // Otherwise assume that the user can't join the room - else -> JoinAuthorisationStatus.Unknown + is ContentState.Loaded -> { + when { + contentState.roomType == RoomType.Space -> { + JoinAuthorisationStatus.IsSpace(applicationName) + } + isJoinActionUnauthorized -> { + JoinAuthorisationStatus.Unauthorized + } + else -> { + contentState.joinAuthorisationStatus + } + } + } + is ContentState.UnknownRoom -> { + if (isJoinActionUnauthorized) { + JoinAuthorisationStatus.Unauthorized + } else { + JoinAuthorisationStatus.Unknown + } + } + else -> JoinAuthorisationStatus.None } } @Immutable sealed interface ContentState { - data class Loading(val roomIdOrAlias: RoomIdOrAlias) : ContentState - data class Failure(val roomIdOrAlias: RoomIdOrAlias, val error: Throwable) : ContentState - data class UnknownRoom(val roomIdOrAlias: RoomIdOrAlias) : ContentState + data object Dismissing : ContentState + data object Loading : ContentState + data class Failure(val error: Throwable) : ContentState + data object UnknownRoom : ContentState data class Loaded( val roomId: RoomId, val name: String?, @@ -71,9 +90,19 @@ sealed interface ContentState { } sealed interface JoinAuthorisationStatus { + data object None : JoinAuthorisationStatus + data class IsSpace(val applicationName: String) : JoinAuthorisationStatus data class IsInvited(val inviteSender: InviteSender?) : JoinAuthorisationStatus + data class IsBanned(val banSender: InviteSender?, val reason: String?) : JoinAuthorisationStatus data object IsKnocked : JoinAuthorisationStatus data object CanKnock : JoinAuthorisationStatus data object CanJoin : JoinAuthorisationStatus + data object NeedInvite : JoinAuthorisationStatus + data object Restricted : JoinAuthorisationStatus data object Unknown : JoinAuthorisationStatus + data object Unauthorized : JoinAuthorisationStatus +} + +sealed class JoinRoomFailures : Exception() { + data object UnauthorizedJoin : JoinRoomFailures() } diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomStateProvider.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomStateProvider.kt index d34d377394..3ebf021cc1 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomStateProvider.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomStateProvider.kt @@ -18,6 +18,7 @@ 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.UserId import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias +import io.element.android.libraries.matrix.api.exception.ClientException import io.element.android.libraries.matrix.api.room.RoomType import io.element.android.libraries.matrix.ui.model.InviteSender @@ -25,10 +26,10 @@ open class JoinRoomStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aJoinRoomState( - contentState = aLoadingContentState() + contentState = ContentState.Loading ), aJoinRoomState( - contentState = anUnknownContentState() + contentState = ContentState.UnknownRoom ), aJoinRoomState( contentState = aLoadedContentState( @@ -40,6 +41,14 @@ open class JoinRoomStateProvider : PreviewParameterProvider { aJoinRoomState( contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanJoin) ), + aJoinRoomState( + contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanJoin), + joinAction = AsyncAction.Failure(JoinRoomFailures.UnauthorizedJoin) + ), + aJoinRoomState( + contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanJoin), + joinAction = AsyncAction.Failure(ClientException.Generic("Something went wrong")) + ), aJoinRoomState( contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsInvited(null)) ), @@ -52,9 +61,6 @@ open class JoinRoomStateProvider : PreviewParameterProvider { aJoinRoomState( contentState = aFailureContentState() ), - aJoinRoomState( - contentState = aFailureContentState(roomIdOrAlias = A_ROOM_ALIAS.toRoomIdOrAlias()) - ), aJoinRoomState( contentState = aLoadedContentState( roomId = RoomId("!aSpaceId:domain"), @@ -98,23 +104,42 @@ open class JoinRoomStateProvider : PreviewParameterProvider { name = "A knocked Room", joinAuthorisationStatus = JoinAuthorisationStatus.IsKnocked ) - ) + ), + aJoinRoomState( + contentState = aLoadedContentState( + name = "A private room", + joinAuthorisationStatus = JoinAuthorisationStatus.NeedInvite + ) + ), + aJoinRoomState( + contentState = aLoadedContentState( + name = "A banned room", + joinAuthorisationStatus = JoinAuthorisationStatus.IsBanned( + banSender = InviteSender( + userId = UserId("@alice:domain"), + displayName = "Alice", + avatarData = AvatarData("alice", "Alice", size = AvatarSize.InviteSender), + membershipChangeReason = "spamming" + ), + reason = "spamming", + ), + ) + ), + aJoinRoomState( + contentState = aLoadedContentState( + name = "A restricted room", + joinAuthorisationStatus = JoinAuthorisationStatus.Restricted, + ) + ), ) } -fun aFailureContentState( - roomIdOrAlias: RoomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias() -): ContentState { +fun aFailureContentState(): ContentState { return ContentState.Failure( - roomIdOrAlias = roomIdOrAlias, error = Exception("Error"), ) } -fun anUnknownContentState(roomId: RoomId = A_ROOM_ID) = ContentState.UnknownRoom(roomId.toRoomIdOrAlias()) - -fun aLoadingContentState(roomId: RoomId = A_ROOM_ID) = ContentState.Loading(roomId.toRoomIdOrAlias()) - fun aLoadedContentState( roomId: RoomId = A_ROOM_ID, name: String? = "Element X android", @@ -138,19 +163,23 @@ fun aLoadedContentState( ) fun aJoinRoomState( + roomIdOrAlias: RoomIdOrAlias = A_ROOM_ALIAS.toRoomIdOrAlias(), contentState: ContentState = aLoadedContentState(), acceptDeclineInviteState: AcceptDeclineInviteState = anAcceptDeclineInviteState(), joinAction: AsyncAction = AsyncAction.Uninitialized, knockAction: AsyncAction = AsyncAction.Uninitialized, + forgetAction: AsyncAction = AsyncAction.Uninitialized, cancelKnockAction: AsyncAction = AsyncAction.Uninitialized, knockMessage: String = "", eventSink: (JoinRoomEvents) -> Unit = {} ) = JoinRoomState( + roomIdOrAlias = roomIdOrAlias, contentState = contentState, acceptDeclineInviteState = acceptDeclineInviteState, joinAction = joinAction, knockAction = knockAction, cancelKnockAction = cancelKnockAction, + forgetAction = forgetAction, applicationName = "AppName", knockMessage = knockMessage, eventSink = eventSink @@ -160,10 +189,12 @@ internal fun anInviteSender( userId: UserId = UserId("@bob:domain"), displayName: String = "Bob", avatarData: AvatarData = AvatarData(userId.value, displayName, size = AvatarSize.InviteSender), + membershipChangeReason: String? = null, ) = InviteSender( userId = userId, displayName = displayName, avatarData = avatarData, + membershipChangeReason = membershipChangeReason, ) private val A_ROOM_ID = RoomId("!exa:matrix.org") diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt index 49c7b5742b..690f57629c 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt @@ -19,12 +19,12 @@ import androidx.compose.foundation.layout.fillMaxSize 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.layout.sizeIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -32,7 +32,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontStyle -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp @@ -47,7 +46,8 @@ import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubti import io.element.android.libraries.designsystem.atomic.molecules.RoomPreviewMembersCountMolecule import io.element.android.libraries.designsystem.atomic.organisms.RoomPreviewOrganism import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage -import io.element.android.libraries.designsystem.background.LightGradientBackground +import io.element.android.libraries.designsystem.components.Announcement +import io.element.android.libraries.designsystem.components.AnnouncementType import io.element.android.libraries.designsystem.components.BigIcon import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.avatar.Avatar @@ -55,16 +55,17 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.button.SuperButton import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog +import io.element.android.libraries.designsystem.components.dialogs.RetryDialog 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.ButtonSize +import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.OutlinedButton import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextField import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.api.core.RoomIdOrAlias -import io.element.android.libraries.matrix.api.room.RoomType import io.element.android.libraries.matrix.ui.components.InviteSenderView import io.element.android.libraries.ui.strings.CommonStrings @@ -74,30 +75,33 @@ fun JoinRoomView( onBackClick: () -> Unit, onJoinSuccess: () -> Unit, onKnockSuccess: () -> Unit, + onForgetSuccess: () -> Unit, onCancelKnockSuccess: () -> Unit, modifier: Modifier = Modifier, ) { Box( modifier = modifier.fillMaxSize(), ) { - LightGradientBackground() HeaderFooterPage( containerColor = Color.Transparent, - paddingValues = PaddingValues(16.dp), + paddingValues = PaddingValues( + horizontal = 16.dp, + vertical = 32.dp + ), topBar = { JoinRoomTopBar(contentState = state.contentState, onBackClick = onBackClick) }, content = { JoinRoomContent( + roomIdOrAlias = state.roomIdOrAlias, contentState = state.contentState, - applicationName = state.applicationName, knockMessage = state.knockMessage, onKnockMessageUpdate = { state.eventSink(JoinRoomEvents.UpdateKnockMessage(it)) }, ) }, footer = { JoinRoomFooter( - state = state, + joinAuthorisationStatus = state.joinAuthorisationStatus, onAcceptInvite = { state.eventSink(JoinRoomEvents.AcceptInvite) }, @@ -113,31 +117,55 @@ fun JoinRoomView( onCancelKnock = { state.eventSink(JoinRoomEvents.CancelKnock(requiresConfirmation = true)) }, - onRetry = { - state.eventSink(JoinRoomEvents.RetryFetchingContent) + onForgetRoom = { + state.eventSink(JoinRoomEvents.ForgetRoom) }, onGoBack = onBackClick, ) } ) } + if (state.contentState is ContentState.Failure) { + RetryDialog( + title = stringResource(R.string.screen_join_room_loading_alert_title), + content = stringResource(CommonStrings.error_network_or_server_issue), + onRetry = { state.eventSink(JoinRoomEvents.RetryFetchingContent) }, + onDismiss = { + state.eventSink(JoinRoomEvents.DismissErrorAndHideContent) + onBackClick() + } + ) + } + // This particular error is shown directly in the footer + if (!state.isJoinActionUnauthorized) { + AsyncActionView( + async = state.joinAction, + errorTitle = { stringResource(CommonStrings.common_something_went_wrong) }, + errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) }, + onSuccess = { onJoinSuccess() }, + onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) }, + ) + } AsyncActionView( - async = state.joinAction, - onSuccess = { onJoinSuccess() }, + async = state.knockAction, + errorTitle = { stringResource(CommonStrings.common_something_went_wrong) }, + errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) }, + onSuccess = { onKnockSuccess() }, onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) }, ) AsyncActionView( - async = state.knockAction, - onSuccess = { onKnockSuccess() }, + async = state.forgetAction, + errorTitle = { stringResource(CommonStrings.common_something_went_wrong) }, + errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) }, + onSuccess = { onForgetSuccess() }, onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) }, ) AsyncActionView( async = state.cancelKnockAction, onSuccess = { onCancelKnockSuccess() }, onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) }, - errorMessage = { - stringResource(CommonStrings.error_unknown) - }, + errorTitle = { stringResource(CommonStrings.common_something_went_wrong) }, + errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) }, confirmationDialog = { ConfirmationDialog( content = stringResource(R.string.screen_join_room_cancel_knock_alert_description), @@ -153,13 +181,13 @@ fun JoinRoomView( @Composable private fun JoinRoomFooter( - state: JoinRoomState, + joinAuthorisationStatus: JoinAuthorisationStatus, onAcceptInvite: () -> Unit, onDeclineInvite: () -> Unit, onJoinRoom: () -> Unit, onKnockRoom: () -> Unit, onCancelKnock: () -> Unit, - onRetry: () -> Unit, + onForgetRoom: () -> Unit, onGoBack: () -> Unit, modifier: Modifier = Modifier, ) { @@ -168,79 +196,170 @@ private fun JoinRoomFooter( .fillMaxWidth() .padding(top = 8.dp) ) { - if (state.contentState is ContentState.Failure) { - Button( - text = stringResource(CommonStrings.action_retry), - onClick = onRetry, - modifier = Modifier.fillMaxWidth(), - size = ButtonSize.Large, - ) - } else if (state.contentState is ContentState.Loaded && state.contentState.roomType == RoomType.Space) { - Button( - text = stringResource(CommonStrings.action_go_back), - onClick = onGoBack, - modifier = Modifier.fillMaxWidth(), - size = ButtonSize.Large, - ) - } else { - val joinAuthorisationStatus = state.joinAuthorisationStatus - when (joinAuthorisationStatus) { - is JoinAuthorisationStatus.IsInvited -> { - ButtonRowMolecule(horizontalArrangement = Arrangement.spacedBy(20.dp)) { - OutlinedButton( - text = stringResource(CommonStrings.action_decline), - onClick = onDeclineInvite, - modifier = Modifier.weight(1f), - size = ButtonSize.LargeLowPadding, - ) - Button( - text = stringResource(CommonStrings.action_accept), - onClick = onAcceptInvite, - modifier = Modifier.weight(1f), - size = ButtonSize.LargeLowPadding, - ) - } - } - JoinAuthorisationStatus.CanJoin -> { - SuperButton( - onClick = onJoinRoom, - modifier = Modifier.fillMaxWidth(), - buttonSize = ButtonSize.Large, - ) { - Text( - text = stringResource(R.string.screen_join_room_join_action), - ) - } - } - JoinAuthorisationStatus.CanKnock -> { - SuperButton( - onClick = onKnockRoom, - modifier = Modifier.fillMaxWidth(), - buttonSize = ButtonSize.Large, - ) { - Text( - text = stringResource(R.string.screen_join_room_knock_action), - ) - } - } - JoinAuthorisationStatus.IsKnocked -> { + when (joinAuthorisationStatus) { + is JoinAuthorisationStatus.IsInvited -> { + ButtonRowMolecule(horizontalArrangement = Arrangement.spacedBy(20.dp)) { OutlinedButton( - text = stringResource(R.string.screen_join_room_cancel_knock_action), - onClick = onCancelKnock, - modifier = Modifier.fillMaxWidth(), - size = ButtonSize.Large, + text = stringResource(CommonStrings.action_decline), + onClick = onDeclineInvite, + modifier = Modifier.weight(1f), + size = ButtonSize.LargeLowPadding, + ) + Button( + text = stringResource(CommonStrings.action_accept), + onClick = onAcceptInvite, + modifier = Modifier.weight(1f), + size = ButtonSize.LargeLowPadding, ) } - JoinAuthorisationStatus.Unknown -> Unit } + JoinAuthorisationStatus.CanJoin -> { + SuperButton( + onClick = onJoinRoom, + modifier = Modifier.fillMaxWidth(), + buttonSize = ButtonSize.Large, + ) { + Text( + text = stringResource(R.string.screen_join_room_join_action), + ) + } + } + JoinAuthorisationStatus.CanKnock -> { + SuperButton( + onClick = onKnockRoom, + modifier = Modifier.fillMaxWidth(), + buttonSize = ButtonSize.Large, + ) { + Text( + text = stringResource(R.string.screen_join_room_knock_action), + ) + } + } + JoinAuthorisationStatus.IsKnocked -> { + OutlinedButton( + text = stringResource(R.string.screen_join_room_cancel_knock_action), + onClick = onCancelKnock, + modifier = Modifier.fillMaxWidth(), + size = ButtonSize.Large, + ) + } + JoinAuthorisationStatus.NeedInvite -> { + Announcement( + title = stringResource(R.string.screen_join_room_invite_required_message), + description = null, + type = AnnouncementType.Informative(isCritical = false), + ) + } + is JoinAuthorisationStatus.IsBanned -> JoinBannedFooter(joinAuthorisationStatus, onForgetRoom) + JoinAuthorisationStatus.Unknown -> JoinRestrictedFooter(onJoinRoom) + JoinAuthorisationStatus.Restricted -> JoinRestrictedFooter(onJoinRoom) + JoinAuthorisationStatus.Unauthorized -> JoinUnauthorizedFooter(onGoBack) + is JoinAuthorisationStatus.IsSpace -> UnsupportedSpaceFooter(joinAuthorisationStatus.applicationName, onGoBack) + JoinAuthorisationStatus.None -> Unit } } } @Composable -private fun JoinRoomContent( - contentState: ContentState, +private fun JoinUnauthorizedFooter( + onOkClick: () -> Unit, + modifier: Modifier = Modifier, +) { + Column(modifier = modifier) { + Announcement( + title = stringResource(R.string.screen_join_room_fail_message), + description = stringResource(R.string.screen_join_room_fail_reason), + type = AnnouncementType.Informative(isCritical = true), + ) + Spacer(Modifier.height(24.dp)) + Button( + text = stringResource(CommonStrings.action_ok), + onClick = onOkClick, + modifier = Modifier.fillMaxWidth(), + ) + } +} + +@Composable +private fun JoinBannedFooter( + status: JoinAuthorisationStatus.IsBanned, + onForgetRoom: () -> Unit, + modifier: Modifier = Modifier, +) { + Column(modifier = modifier) { + val banReason = status.reason?.let { + stringResource(R.string.screen_join_room_ban_reason, it.removeSuffix(".")) + } + val title = if (status.banSender != null) { + stringResource(R.string.screen_join_room_ban_by_message, status.banSender.displayName) + } else { + stringResource(R.string.screen_join_room_ban_message) + } + Announcement( + title = title, + description = banReason, + type = AnnouncementType.Informative(isCritical = true), + ) + Spacer(Modifier.height(24.dp)) + Button( + text = stringResource(R.string.screen_join_room_forget_action), + onClick = onForgetRoom, + modifier = Modifier.fillMaxWidth(), + size = ButtonSize.Large, + ) + } +} + +@Composable +private fun JoinRestrictedFooter( + onJoinRoom: () -> Unit, + modifier: Modifier = Modifier, +) { + Column(modifier = modifier) { + Announcement( + title = stringResource(R.string.screen_join_room_join_restricted_message), + description = null, + type = AnnouncementType.Informative(), + ) + Spacer(Modifier.height(24.dp)) + SuperButton( + onClick = onJoinRoom, + modifier = Modifier.fillMaxWidth(), + buttonSize = ButtonSize.Large, + ) { + Text( + text = stringResource(R.string.screen_join_room_join_action), + ) + } + } +} + +@Composable +private fun UnsupportedSpaceFooter( applicationName: String, + onGoBack: () -> Unit, + modifier: Modifier = Modifier, +) { + Column(modifier = modifier) { + Announcement( + title = stringResource(R.string.screen_join_room_space_not_supported_title), + description = stringResource(R.string.screen_join_room_space_not_supported_description, applicationName), + type = AnnouncementType.Informative(), + ) + Spacer(Modifier.height(24.dp)) + Button( + text = stringResource(CommonStrings.action_ok), + onClick = onGoBack, + modifier = Modifier.fillMaxWidth(), + size = ButtonSize.Large, + ) + } +} + +@Composable +private fun JoinRoomContent( + roomIdOrAlias: RoomIdOrAlias, + contentState: ContentState, knockMessage: String, onKnockMessageUpdate: (String) -> Unit, modifier: Modifier = Modifier, @@ -256,67 +375,67 @@ private fun JoinRoomContent( DefaultLoadedContent( modifier = Modifier.verticalScroll(rememberScrollState()), contentState = contentState, - applicationName = applicationName, knockMessage = knockMessage, onKnockMessageUpdate = onKnockMessageUpdate ) } } } - is ContentState.UnknownRoom -> { - RoomPreviewOrganism( - avatar = { - PlaceholderAtom(width = AvatarSize.RoomHeader.dp, height = AvatarSize.RoomHeader.dp) - }, - title = { - RoomPreviewTitleAtom(stringResource(R.string.screen_join_room_title_no_preview)) - }, - subtitle = { - RoomPreviewSubtitleAtom(stringResource(R.string.screen_join_room_subtitle_no_preview)) - }, - ) - } - is ContentState.Loading -> { - RoomPreviewOrganism( - avatar = { - PlaceholderAtom(width = AvatarSize.RoomHeader.dp, height = AvatarSize.RoomHeader.dp) - }, - title = { - PlaceholderAtom(width = 200.dp, height = 22.dp) - }, - subtitle = { - PlaceholderAtom(width = 140.dp, height = 20.dp) - }, - ) - } - is ContentState.Failure -> { - RoomPreviewOrganism( - avatar = { - PlaceholderAtom(width = AvatarSize.RoomHeader.dp, height = AvatarSize.RoomHeader.dp) - }, - title = { - when (contentState.roomIdOrAlias) { - is RoomIdOrAlias.Alias -> { - RoomPreviewTitleAtom(contentState.roomIdOrAlias.identifier) - } - is RoomIdOrAlias.Id -> { - PlaceholderAtom(width = 200.dp, height = 22.dp) - } - } - }, - subtitle = { - Text( - text = stringResource(id = CommonStrings.error_unknown), - textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.error, - ) - }, - ) - } + is ContentState.UnknownRoom -> UnknownRoomContent() + is ContentState.Loading -> IncompleteContent(roomIdOrAlias, isLoading = true) + is ContentState.Dismissing -> IncompleteContent(roomIdOrAlias, isLoading = false) + is ContentState.Failure -> IncompleteContent(roomIdOrAlias, isLoading = false) } } } +@Composable +private fun UnknownRoomContent( + modifier: Modifier = Modifier +) { + RoomPreviewOrganism( + modifier = modifier, + avatar = { + Spacer(modifier = Modifier.size(AvatarSize.RoomHeader.dp)) + }, + title = { + RoomPreviewTitleAtom(stringResource(R.string.screen_join_room_title_no_preview)) + }, + subtitle = { + }, + ) +} + +@Composable +private fun IncompleteContent( + roomIdOrAlias: RoomIdOrAlias, + isLoading: Boolean, + modifier: Modifier = Modifier +) { + RoomPreviewOrganism( + modifier = modifier, + avatar = { + PlaceholderAtom(width = AvatarSize.RoomHeader.dp, height = AvatarSize.RoomHeader.dp) + }, + title = { + when (roomIdOrAlias) { + is RoomIdOrAlias.Alias -> { + RoomPreviewSubtitleAtom(roomIdOrAlias.identifier) + } + is RoomIdOrAlias.Id -> { + PlaceholderAtom(width = 200.dp, height = 22.dp) + } + } + }, + subtitle = { + if (isLoading) { + Spacer(Modifier.height(8.dp)) + CircularProgressIndicator() + } + }, + ) +} + @Composable private fun IsKnockedLoadedContent(modifier: Modifier = Modifier) { BoxWithConstraints( @@ -337,7 +456,6 @@ private fun IsKnockedLoadedContent(modifier: Modifier = Modifier) { @Composable private fun DefaultLoadedContent( contentState: ContentState.Loaded, - applicationName: String, knockMessage: String, onKnockMessageUpdate: (String) -> Unit, modifier: Modifier = Modifier, @@ -374,21 +492,7 @@ private fun DefaultLoadedContent( InviteSenderView(inviteSender = inviteSender) } RoomPreviewDescriptionAtom(contentState.topic ?: "") - if (contentState.roomType == RoomType.Space) { - Spacer(modifier = Modifier.height(24.dp)) - Text( - text = stringResource(R.string.screen_join_room_space_not_supported_title), - textAlign = TextAlign.Center, - style = ElementTheme.typography.fontBodyLgMedium, - color = MaterialTheme.colorScheme.primary, - ) - Text( - text = stringResource(R.string.screen_join_room_space_not_supported_description, applicationName), - textAlign = TextAlign.Center, - style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.secondary, - ) - } else if (contentState.joinAuthorisationStatus is JoinAuthorisationStatus.CanKnock) { + if (contentState.joinAuthorisationStatus is JoinAuthorisationStatus.CanKnock) { Spacer(modifier = Modifier.height(24.dp)) val supportingText = if (knockMessage.isNotEmpty()) { "${knockMessage.length}/$MAX_KNOCK_MESSAGE_LENGTH" @@ -462,6 +566,7 @@ internal fun JoinRoomViewPreview(@PreviewParameter(JoinRoomStateProvider::class) onBackClick = { }, onJoinSuccess = { }, onKnockSuccess = { }, + onForgetSuccess = { }, onCancelKnockSuccess = { }, ) } 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 new file mode 100644 index 0000000000..496a911b1b --- /dev/null +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/ForgetRoom.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.joinroom.impl.di + +import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.core.RoomId +import javax.inject.Inject + +interface ForgetRoom { + suspend operator fun invoke(roomId: RoomId): Result +} + +@ContributesBinding(SessionScope::class) +class DefaultForgetRoom @Inject constructor(private val client: MatrixClient) : ForgetRoom { + override suspend fun invoke(roomId: RoomId): Result { + return client + .getPendingRoom(roomId) + ?.forget() + ?: Result.failure(IllegalStateException("No pending room found")) + } +} diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/JoinRoomModule.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/JoinRoomModule.kt index d906edbba9..ff4cbbbc80 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/JoinRoomModule.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/JoinRoomModule.kt @@ -32,6 +32,7 @@ object JoinRoomModule { joinRoom: JoinRoom, knockRoom: KnockRoom, cancelKnockRoom: CancelKnockRoom, + forgetRoom: ForgetRoom, acceptDeclineInvitePresenter: Presenter, buildMeta: BuildMeta, ): JoinRoomPresenter.Factory { @@ -52,6 +53,7 @@ object JoinRoomModule { matrixClient = client, joinRoom = joinRoom, knockRoom = knockRoom, + forgetRoom = forgetRoom, cancelKnockRoom = cancelKnockRoom, acceptDeclineInvitePresenter = acceptDeclineInvitePresenter, buildMeta = buildMeta, 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 37c537bdce..bab8e1f01e 100644 --- a/features/joinroom/impl/src/main/res/values-cs/translations.xml +++ b/features/joinroom/impl/src/main/res/values-cs/translations.xml @@ -7,6 +7,10 @@ "Ano, zrušit" "Opravdu chcete zrušit svou žádost o vstup do této místnosti?" "Zrušit žádost o vstup" + "Ano, odmítnout a zablokovat" + "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" @@ -17,6 +21,8 @@ "Zpráva (nepovinné)" "Pokud bude váš požadavek přijat, obdržíte pozvánku na vstup do místnosti." "Žádost o vstup odeslána" + "Náhled místnosti se nám nepodařilo zobrazit. To může být způsobeno problémy se sítí nebo serverem." + "Náhled této místnosti jsme nemohli zobrazit" "%1$s zatím nepodporuje prostory. Prostory můžete používat na webu." "Prostory zatím nejsou podporovány" "Klikněte na tlačítko níže a správce místnosti bude informován. Po schválení se budete moci připojit ke konverzaci." diff --git a/features/joinroom/impl/src/main/res/values-de/translations.xml b/features/joinroom/impl/src/main/res/values-de/translations.xml index 5a6d901a3d..980125bb64 100644 --- a/features/joinroom/impl/src/main/res/values-de/translations.xml +++ b/features/joinroom/impl/src/main/res/values-de/translations.xml @@ -7,6 +7,10 @@ "Ja, abbrechen" "Möchten Sie Ihre Beitrittsanfrage für diesen Chatroom wirklich stornieren?" "Beitrittsanfrage stornieren" + "Ja, ablehnen und blockieren" + "Sind Sie sicher, dass Sie die Einladung zu diesem Raum ablehnen möchten? Dadurch wird auch verhindert, dass %1$s Sie kontaktiert oder in Räume einlädt." + "Einladung ablehnen und blockieren" + "Ablehnen und blockieren" "Der Beitritt zum Chatroom schlug fehl." "Dieser Chatroom ist entweder nur auf Einladung zugänglich oder es kann zu Zugangsbeschränkungen auf Spaceebene kommen." "Vergessen Sie diesen Raum" @@ -17,6 +21,8 @@ "Nachricht (optional)" "Falls Ihre Anfrage, dem Raum beizutreten, akzeptiert wird, werden Sie eine Einladung erhalten." "Beitrittsanfrage geschickt" + "Wir konnten die Chatroomvorschau nicht anzeigen. Dies kann an Netzwerk- oder Serverproblemen liegen." + "Wir konnten diese Chatroomvorschau nicht anzeigen" "%1$s unterstützt noch keine Spaces. Du kannst auf Spaces im Web zugreifen." "Spaces werden noch nicht unterstützt" "Klopfe an um einen Administrator zu benachrichtigen. Nach der Freigabe kannst du dich an der Unterhaltung beteiligen." 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 5efaa23a1d..00ae5f18bb 100644 --- a/features/joinroom/impl/src/main/res/values-et/translations.xml +++ b/features/joinroom/impl/src/main/res/values-et/translations.xml @@ -7,6 +7,10 @@ "Jah, tühista" "Kas sa oled kindel, et soovid tühistada oma palve jututoaga liitumiseks?" "Tühista liitumispalve" + "Jah, keeldu ja blokeeri" + "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." "Ligipääs siia jututuppa on võimalik vaid kutse alusel või kehtivad siin kogukonnakohased piirangud." "Unusta see jututuba" @@ -17,6 +21,8 @@ "Selgitus (kui soovid lisada)" "Kui sinu liitumispalvega ollakse nõus, siis saad kutse jututoaga liitumiseks." "Liitumispalve on saadetud" + "Me ei saanud jututoa eelvaadet näidata. See võib olla põhjustatud võrguühenduse või serveri vigadest." + "Meil ei õnnestunud selle jututoa eelvaadet kuvada" "%1$s veel ei toeta kogukondadega liitumise ja kasutamise võimalust. Vajadusel saad seda teha veebiliidese vahendusel." "Kogukonnad pole veel toetatud" "Klõpsi allolevat nuppu ja jututoa haldaja saab asjakohase teate. Sa saad liituda, kui haldaja sinu soovi heaks kiidab." diff --git a/features/joinroom/impl/src/main/res/values-fr/translations.xml b/features/joinroom/impl/src/main/res/values-fr/translations.xml index e8ca43e13b..5d63e8f7a1 100644 --- a/features/joinroom/impl/src/main/res/values-fr/translations.xml +++ b/features/joinroom/impl/src/main/res/values-fr/translations.xml @@ -7,6 +7,10 @@ "Oui, annuler" "Êtes-vous sûr de vouloir annuler votre demande d’accès à ce salon ?" "Annuler la demande d’adhésion" + "Oui, refuser et bloquer" + "Êtes-vous sûr de vouloir refuser l’invitation à rejoindre ce salon ? Cela empêchera également %1$s de vous contacter ou de vous inviter dans les salons." + "Refuser l’invitation et bloquer" + "Refuser et bloquer" "Rejoindre le salon a échoué." "Ce salon est accessible uniquement sur invitation ou il peut y avoir des restrictions d’accès au niveau du Space." "Oublier ce salon" @@ -17,6 +21,8 @@ "Message (facultatif)" "Vous recevrez une invitation à rejoindre le salon si votre demande est acceptée." "Demande de rejoindre le salon envoyée" + "Impossible d’afficher l’aperçu du salon. Cela peut être dû à des problèmes de réseau ou de serveur." + "Impossible d’afficher l’aperçu de ce salon" "Les Spaces ne sont pas encore pris en charge par %1$s . Vous pouvez voir les Spaces sur le Web." "Les Spaces ne sont pas encore pris en charge" "Cliquez ci-dessous et un administrateur sera prévenu. Une fois votre demande approuvée, pour pourrez rejoindre la discussion." 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 5073b034fc..e6b461abee 100644 --- a/features/joinroom/impl/src/main/res/values-hu/translations.xml +++ b/features/joinroom/impl/src/main/res/values-hu/translations.xml @@ -7,6 +7,10 @@ "Igen, visszavonás" "Biztos, hogy visszavonja a szobához való csatlakozási kérését?" "Csatlakozási kérés visszavonása" + "Igen, elutasítás és blokkolás" + "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 blokkolá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" @@ -17,6 +21,8 @@ "Üzenet (nem kötelező)" "Ha a kérését elfogadják, meghívót kap a szobához való csatlakozáshoz." "Csatlakozási kérés elküldve" + "Nem tudtuk megjeleníteni a szoba előnézetét. Ennek az oka hálózati vagy kiszolgálóprobléma is lehet." + "Nem tudtuk megjeleníteni a szoba előnézetét" "Az %1$s még nem támogatja a tereket. A tereket a weben érheti el." "A terek még nem támogatottak" "Kattintson az alábbi gombra, és a szoba adminisztrátora értesítést kap. A jóváhagyást követően csatlakozhat a beszélgetéshez." 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 758d8d5615..56f16fc475 100644 --- a/features/joinroom/impl/src/main/res/values-pl/translations.xml +++ b/features/joinroom/impl/src/main/res/values-pl/translations.xml @@ -1,14 +1,28 @@ + "Zostałeś zbanowany z tego pokoju przez %1$s." + "Zostałeś zbanowany z tego pokoju" + "Powód: %1$s." "Anuluj prośbę" "Tak, anuluj" "Czy na pewno chcesz anulować prośbę o dołączenie do tego pokoju?" "Anuluj prośbę o dołączenie" + "Tak, odrzuć i zablokuj" + "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" "Dołącz do pokoju" + "Aby dołączyć, musisz uzyskać zaproszenie lub być członkiem danej przestrzeni." "Wyślij prośbę o dołączenie" "Wiadomość (opcjonalne)" "Otrzymasz zaproszenie dołączenia do pokoju, jeśli prośba zostanie zaakceptowana." "Wysłano prośbę o dołączenie" + "Nie udało się wyświetlić podglądu pokoju. Może to być spowodowane problemami z siecią lub serwerem." + "Nie udało nam się wyświetlić podglądu tego pokoju" "%1$s jeszcze nie obsługuje przestrzeni. Uzyskaj dostęp do przestrzeni w wersji web." "Przestrzenie nie są jeszcze obsługiwane" "Kliknij przycisk poniżej, aby powiadomić administratora pokoju. Po zatwierdzeniu będziesz mógł dołączyć do rozmowy." diff --git a/features/joinroom/impl/src/main/res/values-pt/translations.xml b/features/joinroom/impl/src/main/res/values-pt/translations.xml index 93eeaf3bca..ffca14b009 100644 --- a/features/joinroom/impl/src/main/res/values-pt/translations.xml +++ b/features/joinroom/impl/src/main/res/values-pt/translations.xml @@ -1,14 +1,28 @@ + "Foste banido desta sala por %1$s." + "Foste banido desta sala." + "Razão: %1$s." "Cancelar pedido" "Sim, cancelar" "Tens a certeza de que queres cancelar o teu pedido de entrada nesta sala?" "Cancela o pedido de adesão" + "Sim, recusar & bloquear" + "Tens a certeza de que queres recusar o convite para entrar nesta sala? Isto também evitará que %1$s te contacte ou te convide para salas." + "Recusar convite & bloquear" + "Recusar e bloquear" + "Falha ao entrar na sala." + "A entrada nesta sala ou está limitada a convites ou a alguma configuração de espaço." + "Esquecer esta sala" + "Precisas de um convite para entrares nesta sala" "Entrar na sala" + "Podes ter que ser convidado ou pertenceres a um espaço para poderes entrar." "Bater à porta" "Mensagem (opcional)" "Irá receber um convite para participar na sala se seu pedido for aceite." "Pedido de adesão enviado" + "Não conseguimos exibir a pré-visualização da sala. Isso pode ser devido a problemas de rede ou servidor." + "Não foi possível exibir a pré-visualização desta sala" "A %1$s ainda não funciona com espaços. Podes usá-los na aplicação web." "Os espaços ainda não estão implementados" "Carrega no botão abaixo para notificar um administrador da sala. Poderás entrar quando te aprovarem." diff --git a/features/joinroom/impl/src/main/res/values-ru/translations.xml b/features/joinroom/impl/src/main/res/values-ru/translations.xml index b26afac133..00c44c11f0 100644 --- a/features/joinroom/impl/src/main/res/values-ru/translations.xml +++ b/features/joinroom/impl/src/main/res/values-ru/translations.xml @@ -7,6 +7,10 @@ "Да, отменить" "Вы действительно хотите отменить заявку на вступление в эту комнату?" "Отменить запрос на присоединение" + "Да, отклонить и заблокировать" + "Вы действительно хотите отклонить приглашение в эту комнате? Это также предотвратит %1$s возможность связываться с вами или приглашать вас в комнаты." + "Отклонить приглашение и заблокировать" + "Отклонить и заблокировать" "Не удалось присоединиться к комнате." "Доступ в эту комнату возможен только по приглашениям или может быть ограничен на уровне пространства." "Забыть эту комнату" @@ -17,6 +21,8 @@ "Сообщение (опционально)" "Вы получите приглашение присоединиться к комнате, как только ваш запрос будет принят." "Запрос на присоединение отправлен" + "Не удалось отобразить предварительный просмотр комнаты. Это может быть связано с проблемами сети или сервера." + "Мы не смогли отобразить предварительный просмотр этой комнаты" "%1$s еще не поддерживает пространства. Вы можете получить к ним доступ в веб-версии." "Пространства пока не поддерживаются" "Нажмите кнопку ниже и администратор комнаты получит уведомление. После одобрения вы сможете присоединиться к обсуждению." 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 4eeab053dd..645c523c61 100644 --- a/features/joinroom/impl/src/main/res/values-sk/translations.xml +++ b/features/joinroom/impl/src/main/res/values-sk/translations.xml @@ -7,6 +7,10 @@ "Áno, zrušiť" "Ste si istí, že chcete zrušiť svoju žiadosť o vstup do tejto miestnosti?" "Zrušiť žiadosť o pripojenie" + "Áno, odmietnuť a zablokovať" + "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ť" @@ -17,6 +21,8 @@ "Správa (voliteľné)" "Ak bude vaša žiadosť prijatá, dostanete pozvánku na vstup do miestnosti." "Žiadosť o pripojenie bola odoslaná" + "Nepodarilo sa zobraziť ukážku miestnosti. Môže to byť spôsobené problémami so sieťou alebo serverom." + "Ukážku tejto miestnosti sa nepodarilo zobraziť" "%1$s zatiaľ nepodporuje priestory. K priestorom môžete pristupovať na webe." "Priestory zatiaľ nie sú podporované" "Kliknite na tlačidlo nižšie a správca miestnosti bude informovaný. Po schválení sa budete môcť pripojiť ku konverzácii." diff --git a/features/joinroom/impl/src/main/res/values-sv/translations.xml b/features/joinroom/impl/src/main/res/values-sv/translations.xml index a61bce02a4..b44672871d 100644 --- a/features/joinroom/impl/src/main/res/values-sv/translations.xml +++ b/features/joinroom/impl/src/main/res/values-sv/translations.xml @@ -1,6 +1,9 @@ "Avbryt begäran" + "Ja, avbryt" + "Är du säker på att du vill avbryta din begäran om att gå med i det här rummet?" + "Avbryt begäran om att gå med" "Gå med i rummet" "Knacka för att gå med" "Meddelande (valfritt)" diff --git a/features/joinroom/impl/src/main/res/values-tr/translations.xml b/features/joinroom/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..fb3edc84b2 --- /dev/null +++ b/features/joinroom/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,32 @@ + + + "%1$s tarafından bu odadan yasaklandınız." + "Bu odadan yasaklandın" + "Neden: %1$s." + "İsteği iptal et" + "Evet, iptal et" + "Bu odaya katılma isteğinizi iptal etmek istediğinizden emin misiniz?" + "Katılma isteğini iptal et" + "Evet, reddet ve engelle" + "Bu odaya katılma davetini reddetmek istediğinizden emin misiniz? Bu aynı zamanda %1$s sizinle iletişim kurmasını veya sizi odalara davet etmesini de engeller." + "Daveti reddet ve engelle" + "Reddet ve engelle" + "Odaya katılım başarısız oldu." + "Bu odaya yalnızca davetle girilebilir veya alan düzeyinde erişim kısıtlamaları olabilir." + "Bu odayı unut" + "Bu odaya katılmak için bir davete ihtiyacınız var" + "Odaya katıl" + "Katılmak için davet edilmeniz veya bir alana üye olmanız gerekebilir." + "Katılma isteği gönder" + "Mesaj (isteğe bağlı)" + "Talebiniz kabul edilirse odaya katılmanız için bir davet alacaksınız." + "Katılma isteği gönderildi" + "Oda önizlemesini görüntüleyemedik. Bunun nedeni ağ veya sunucu sorunları olabilir." + "Bu oda önizlemesini görüntüleyemedik" + "%1$s henüz alanları desteklemiyor. Alanlara web üzerinden erişebilirsiniz." + "Alanlar henüz desteklenmiyor" + "Aşağıdaki düğmeyi tıkladığınızda bir oda yöneticisi bilgilendirilecektir. Onaylandıktan sonra görüşmeye katılabilirsiniz." + "Mesaj geçmişini görüntülemek için bu odaya üye olmanız gerekmektedir." + "Bu odaya katılmak ister misiniz?" + "Önizleme mevcut değil" + diff --git a/features/joinroom/impl/src/main/res/values-uk/translations.xml b/features/joinroom/impl/src/main/res/values-uk/translations.xml index 371ed60c94..72a085042f 100644 --- a/features/joinroom/impl/src/main/res/values-uk/translations.xml +++ b/features/joinroom/impl/src/main/res/values-uk/translations.xml @@ -1,14 +1,28 @@ + "%1$s забороняє вам відвідувати цю кімнату." + "Вам заборонили відвідувати цю кімнату" + "Причина: %1$s." "Скасувати запит" "Так, скасувати" "Ви впевнені, що бажаєте скасувати свій запит на приєднання до цієї кімнати?" "Скасувати запит на приєднання" + "Так, відхилити та заблокувати" + "Ви впевнені, що хочете відхилити запрошення приєднатися до цієї кімнати? Це також завадить %1$s зв\'язатися з вами або запрошувати вас в кімнати." + "Відхилити запрошення та заблокувати" + "Відхилити та заблокувати" + "Не вдалося приєднатися до кімнати." + "Ця кімната доступна лише за запрошенням або на рівні простору можуть бути обмеження доступу." + "Забути цю кімнату" + "Вам потрібне запрошення, щоб приєднатися до цієї кімнати" "Приєднатися до кімнати" + "Можливо, вам знадобиться отримати запрошення або стати учасником простору, щоб приєднатися." "Постукати, щоб приєднатися" "Повідомлення (необов\'язково)" "Ви отримаєте запрошення приєднатися до кімнати, якщо ваш запит буде прийнятий." "Запит на приєднання надіслано" + "Ми не змогли показати попередній перегляд кімнати. Це може бути пов\'язано з проблемами мережі або сервера." + "Ми не можемо показати попередній перегляд цієї кімнати" "%1$s ще не підтримує простори. Ви можете отримати доступ до них у вебверсії." "Простори поки що не підтримуються" "Натисніть кнопку нижче, і адміністратор кімнати отримає сповіщення. Ви зможете приєднатися до розмови після схвалення." diff --git a/features/joinroom/impl/src/main/res/values/localazy.xml b/features/joinroom/impl/src/main/res/values/localazy.xml index 391d63eb2f..a3e91c542c 100644 --- a/features/joinroom/impl/src/main/res/values/localazy.xml +++ b/features/joinroom/impl/src/main/res/values/localazy.xml @@ -7,6 +7,10 @@ "Yes, cancel" "Are you sure that you want to cancel your request to join this room?" "Cancel request to join" + "Yes, decline & block" + "Are you sure you want to decline the invite to join this room? This will also prevent %1$s from contacting you or inviting you to rooms." + "Decline invite & block" + "Decline and block" "Joining the room failed." "This room is either invite-only or there might be restrictions to access at space level." "Forget this room" @@ -17,6 +21,8 @@ "Message (optional)" "You will receive an invite to join the room if your request is accepted." "Request to join sent" + "We could not display the room preview. This may be due to network or server issues." + "We couldn’t display this room preview" "%1$s does not support spaces yet. You can access spaces on web." "Spaces are not supported yet" "Click the button below and a room administrator will be notified. You’ll be able to join the conversation once approved." diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeForgetRoom.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeForgetRoom.kt new file mode 100644 index 0000000000..48d3eec077 --- /dev/null +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeForgetRoom.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.joinroom.impl + +import io.element.android.features.joinroom.impl.di.ForgetRoom +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.tests.testutils.simulateLongTask + +class FakeForgetRoom( + var lambda: (RoomId) -> Result = { Result.success(Unit) } +) : ForgetRoom { + override suspend fun invoke(roomId: RoomId) = simulateLongTask { + lambda(roomId) + } +} 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 82c4d4f637..5febed1b70 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 @@ -13,6 +13,7 @@ import io.element.android.features.invite.api.response.AcceptDeclineInviteEvents import io.element.android.features.invite.api.response.AcceptDeclineInviteState import io.element.android.features.invite.api.response.anAcceptDeclineInviteState import io.element.android.features.joinroom.impl.di.CancelKnockRoom +import io.element.android.features.joinroom.impl.di.ForgetRoom import io.element.android.features.joinroom.impl.di.KnockRoom import io.element.android.features.roomdirectory.api.RoomDescription import io.element.android.libraries.architecture.AsyncAction @@ -24,16 +25,23 @@ 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.UserId import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias +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.RoomMembershipDetails import io.element.android.libraries.matrix.api.room.RoomType -import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo +import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_NAME import io.element.android.libraries.matrix.test.A_SERVER_LIST +import io.element.android.libraries.matrix.test.A_USER_ID +import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.room.aRoomMember +import io.element.android.libraries.matrix.test.room.aRoomPreview +import io.element.android.libraries.matrix.test.room.aRoomPreviewInfo import io.element.android.libraries.matrix.test.room.aRoomSummary import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.matrix.ui.model.toInviteSender @@ -43,12 +51,14 @@ import io.element.android.tests.testutils.lambda.assert 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.flow.flowOf import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test import java.util.Optional +@Suppress("LargeClass") class JoinRoomPresenterTest { @get:Rule val warmUpRule = WarmUpRule() @@ -58,12 +68,10 @@ class JoinRoomPresenterTest { val presenter = createJoinRoomPresenter() presenter.test { awaitItem().also { state -> - assertThat(state.contentState).isEqualTo(ContentState.Loading(A_ROOM_ID.toRoomIdOrAlias())) - assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.Unknown) + assertThat(state.contentState).isEqualTo(ContentState.Loading) assertThat(state.acceptDeclineInviteState).isEqualTo(anAcceptDeclineInviteState()) assertThat(state.cancelKnockAction).isEqualTo(AsyncAction.Uninitialized) assertThat(state.knockAction).isEqualTo(AsyncAction.Uninitialized) - assertThat(state.applicationName).isEqualTo("AppName") cancelAndIgnoreRemainingEvents() } } @@ -88,7 +96,7 @@ class JoinRoomPresenterTest { assertThat(contentState.name).isEqualTo(roomSummary.info.name) assertThat(contentState.topic).isEqualTo(roomSummary.info.topic) assertThat(contentState.alias).isEqualTo(roomSummary.info.canonicalAlias) - assertThat(contentState.numberOfMembers).isEqualTo(roomSummary.info.activeMembersCount) + assertThat(contentState.numberOfMembers).isEqualTo(roomSummary.info.joinedMembersCount) assertThat(contentState.isDm).isEqualTo(roomSummary.info.isDirect) assertThat(contentState.roomAvatarUrl).isEqualTo(roomSummary.info.avatarUrl) } @@ -226,9 +234,79 @@ class JoinRoomPresenterTest { } } + @Test + fun `present - when room is joined with unauthorized error, then the authorisation status is unauthorized`() = runTest { + val roomDescription = aRoomDescription() + val presenter = createJoinRoomPresenter( + roomDescription = Optional.of(roomDescription), + joinRoomLambda = { _, _, _ -> + Result.failure(ClientException.MatrixApi(ErrorKind.Forbidden, "403", "Forbidden")) + }, + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + state.eventSink(JoinRoomEvents.JoinRoom) + } + awaitItem().also { state -> + assertThat(state.joinAction).isEqualTo(AsyncAction.Loading) + } + awaitItem().also { state -> + assertThat(state.joinAction).isEqualTo(AsyncAction.Failure(JoinRoomFailures.UnauthorizedJoin)) + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.Unauthorized) + } + } + } + + @OptIn(ExperimentalCoroutinesApi::class) + @Test + fun `present - when room is banned, then join authorization is equal to IsBanned`() = runTest { + val roomSummary = aRoomSummary(currentUserMembership = CurrentUserMembership.BANNED, joinRule = JoinRule.Public) + val matrixClient = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview( + info = aRoomPreviewInfo( + roomId = A_ROOM_ID, + joinRule = JoinRule.Public, + currentUserMembership = CurrentUserMembership.BANNED, + ), + roomMembershipDetails = { + Result.success( + RoomMembershipDetails( + currentUserMember = aRoomMember(userId = A_USER_ID, displayName = "Alice"), + senderMember = aRoomMember(userId = A_USER_ID_2, displayName = "Bob"), + ) + ) + } + ) + ) + } + ).apply { + getRoomSummaryFlowLambda = { _ -> + flowOf(Optional.of(roomSummary)) + } + } + val presenter = createJoinRoomPresenter( + matrixClient = matrixClient + ) + presenter.test { + // Skip initial state + skipItems(1) + + // Advance until the room info is loaded and the presenter recomposes. The room preview info still needs to be loaded async. + skipItems(1) + + // Now we should have the room info + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isInstanceOf(JoinAuthorisationStatus.IsBanned::class.java) + } + } + } + @Test fun `present - when room is left and public then join authorization is equal to canJoin`() = runTest { - val roomSummary = aRoomSummary(currentUserMembership = CurrentUserMembership.LEFT, isPublic = true) + val roomSummary = aRoomSummary(currentUserMembership = CurrentUserMembership.LEFT, joinRule = JoinRule.Public) val matrixClient = FakeMatrixClient().apply { getRoomSummaryFlowLambda = { _ -> flowOf(Optional.of(roomSummary)) @@ -246,8 +324,8 @@ class JoinRoomPresenterTest { } @Test - fun `present - when room is left and not public then join authorization is equal to unknown`() = runTest { - val roomSummary = aRoomSummary(currentUserMembership = CurrentUserMembership.LEFT, isPublic = false) + fun `present - when room is left and join rule null then join authorization is equal to Unknown`() = runTest { + val roomSummary = aRoomSummary(currentUserMembership = CurrentUserMembership.LEFT, joinRule = null) val matrixClient = FakeMatrixClient().apply { getRoomSummaryFlowLambda = { _ -> flowOf(Optional.of(roomSummary)) @@ -327,6 +405,20 @@ class JoinRoomPresenterTest { } } + @Test + fun `present - when room preview join rule is Private then join authorization is equal to NeedInvite`() = runTest { + val roomDescription = aRoomDescription(joinRule = RoomDescription.JoinRule.UNKNOWN) + val presenter = createJoinRoomPresenter( + roomDescription = Optional.of(roomDescription) + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.Unknown) + } + } + } + @Test fun `present - emit knock room event`() = runTest { val knockMessage = "Knock message" @@ -405,24 +497,60 @@ class JoinRoomPresenterTest { .with(value(A_ROOM_ID)) } + @Test + fun `present - emit forget room event`() = runTest { + val forgetRoomSuccess = lambdaRecorder { _: RoomId -> + Result.success(Unit) + } + val forgetRoomFailure = lambdaRecorder { _: RoomId -> + Result.failure(RuntimeException("Failed to forget room")) + } + val fakeForgetRoom = FakeForgetRoom(forgetRoomSuccess) + val presenter = createJoinRoomPresenter(forgetRoom = fakeForgetRoom) + presenter.test { + skipItems(1) + awaitItem().also { state -> + state.eventSink(JoinRoomEvents.ForgetRoom) + } + + assertThat(awaitItem().forgetAction).isEqualTo(AsyncAction.Loading) + awaitItem().also { state -> + assertThat(state.forgetAction).isEqualTo(AsyncAction.Success(Unit)) + fakeForgetRoom.lambda = forgetRoomFailure + state.eventSink(JoinRoomEvents.ForgetRoom) + } + + assertThat(awaitItem().forgetAction).isEqualTo(AsyncAction.Loading) + awaitItem().also { state -> + assertThat(state.forgetAction).isInstanceOf(AsyncAction.Failure::class.java) + } + } + assert(forgetRoomFailure) + .isCalledOnce() + .with(value(A_ROOM_ID)) + assert(forgetRoomSuccess) + .isCalledOnce() + .with(value(A_ROOM_ID)) + } + @Test fun `present - when room is not known RoomPreview is loaded`() = runTest { val client = FakeMatrixClient( - getRoomPreviewInfoResult = { _, _ -> + getRoomPreviewResult = { _, _ -> Result.success( - RoomPreviewInfo( - roomId = A_ROOM_ID, - canonicalAlias = RoomAlias("#alias:matrix.org"), - name = "Room name", - topic = "Room topic", - avatarUrl = "avatarUrl", - numberOfJoinedMembers = 2, - roomType = RoomType.Room, - isHistoryWorldReadable = false, - isJoined = false, - isInvited = false, - isPublic = true, - canKnock = false, + aRoomPreview( + info = aRoomPreviewInfo( + roomId = A_ROOM_ID, + canonicalAlias = RoomAlias("#alias:matrix.org"), + name = "Room name", + topic = "Room topic", + avatarUrl = "avatarUrl", + numberOfJoinedMembers = 2, + isSpace = false, + isHistoryWorldReadable = false, + joinRule = JoinRule.Public, + currentUserMembership = null, + ) ) ) } @@ -450,10 +578,130 @@ class JoinRoomPresenterTest { } } + @Test + fun `present - when room is not known RoomPreview is loaded as Private`() = runTest { + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.Private)) + ) + } + ) + val presenter = createJoinRoomPresenter( + matrixClient = client + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.NeedInvite) + } + } + } + + @Test + fun `present - when room is not known RoomPreview is loaded as Custom`() = runTest { + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.Custom("custom"))) + ) + } + ) + val presenter = createJoinRoomPresenter( + matrixClient = client + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.Unknown) + } + } + } + + @Test + fun `present - when room is not known RoomPreview is loaded as Invite`() = runTest { + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.Invite)) + ) + } + ) + val presenter = createJoinRoomPresenter( + matrixClient = client + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.NeedInvite) + } + } + } + + @Test + fun `present - when room is not known RoomPreview is loaded as KnockRestricted`() = runTest { + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.KnockRestricted(emptyList()))) + ) + } + ) + val presenter = createJoinRoomPresenter( + matrixClient = client + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.CanKnock) + } + } + } + + @Test + fun `present - when room is not known RoomPreview is loaded as Restricted`() = runTest { + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview(info = aRoomPreviewInfo(joinRule = JoinRule.Restricted(emptyList()))) + ) + } + ) + val presenter = createJoinRoomPresenter( + matrixClient = client + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.Restricted) + } + } + } + + @Test + fun `present - when room is not known RoomPreview is loaded as Space`() = runTest { + val client = FakeMatrixClient( + getRoomPreviewResult = { _, _ -> + Result.success( + aRoomPreview(info = aRoomPreviewInfo(isSpace = true)) + ) + } + ) + val presenter = createJoinRoomPresenter( + matrixClient = client + ) + presenter.test { + skipItems(1) + awaitItem().also { state -> + assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.IsSpace("AppName")) + } + } + } + @Test fun `present - when room is not known RoomPreview is loaded with error`() = runTest { val client = FakeMatrixClient( - getRoomPreviewInfoResult = { _, _ -> + getRoomPreviewResult = { _, _ -> Result.failure(AN_EXCEPTION) } ) @@ -464,35 +712,27 @@ class JoinRoomPresenterTest { skipItems(1) awaitItem().also { state -> assertThat(state.contentState).isEqualTo( - ContentState.Failure( - roomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias(), - error = AN_EXCEPTION - ) + ContentState.Failure(error = AN_EXCEPTION) ) state.eventSink(JoinRoomEvents.RetryFetchingContent) } skipItems(1) awaitItem().also { state -> - assertThat(state.contentState).isEqualTo( - ContentState.Loading(A_ROOM_ID.toRoomIdOrAlias()) - ) + assertThat(state.contentState).isEqualTo(ContentState.Loading) } awaitItem().also { state -> assertThat(state.contentState).isEqualTo( - ContentState.Failure( - roomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias(), - error = AN_EXCEPTION - ) + ContentState.Failure(error = AN_EXCEPTION) ) } } } @Test - fun `present - when room is not known RoomPreview is loaded with error 403`() = runTest { + fun `present - when room is not known RoomPreview is loaded with error Forbidden`() = runTest { val client = FakeMatrixClient( - getRoomPreviewInfoResult = { _, _ -> - Result.failure(Exception("403")) + getRoomPreviewResult = { _, _ -> + Result.failure(ClientException.MatrixApi(ErrorKind.Forbidden, "403", "Forbidden")) } ) val presenter = createJoinRoomPresenter( @@ -501,11 +741,7 @@ class JoinRoomPresenterTest { presenter.test { skipItems(1) awaitItem().also { state -> - assertThat(state.contentState).isEqualTo( - ContentState.UnknownRoom( - roomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias(), - ) - ) + assertThat(state.contentState).isEqualTo(ContentState.UnknownRoom) } } } @@ -521,6 +757,7 @@ class JoinRoomPresenterTest { }, knockRoom: KnockRoom = FakeKnockRoom(), cancelKnockRoom: CancelKnockRoom = FakeCancelKnockRoom(), + forgetRoom: ForgetRoom = FakeForgetRoom(), buildMeta: BuildMeta = aBuildMeta(applicationName = "AppName"), acceptDeclineInvitePresenter: Presenter = Presenter { anAcceptDeclineInviteState() } ): JoinRoomPresenter { @@ -534,6 +771,7 @@ class JoinRoomPresenterTest { joinRoom = FakeJoinRoom(joinRoomLambda), knockRoom = knockRoom, cancelKnockRoom = cancelKnockRoom, + forgetRoom = forgetRoom, buildMeta = buildMeta, acceptDeclineInvitePresenter = acceptDeclineInvitePresenter ) diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomViewTest.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomViewTest.kt index d756cdbb8c..b654bc7c4b 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomViewTest.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomViewTest.kt @@ -178,7 +178,7 @@ class JoinRoomViewTest { } @Test - fun `clicking on Go back when a space is displayed invokes the expected callback`() { + fun `clicking on ok when a space is displayed invokes the expected callback`() { val eventsRecorder = EventsRecorder(expectEvents = false) ensureCalledOnce { rule.setJoinRoomView( @@ -188,9 +188,38 @@ class JoinRoomViewTest { ), onBackClick = it ) - rule.clickOn(CommonStrings.action_go_back) + rule.clickOn(CommonStrings.action_ok) } } + + @Test + fun `clicking on ok when user is unauthorized the expected callback`() { + val eventsRecorder = EventsRecorder(expectEvents = false) + ensureCalledOnce { + rule.setJoinRoomView( + aJoinRoomState( + contentState = aLoadedContentState(), + joinAction = AsyncAction.Failure(JoinRoomFailures.UnauthorizedJoin), + eventSink = eventsRecorder, + ), + onBackClick = it + ) + rule.clickOn(CommonStrings.action_ok) + } + } + + @Test + fun `clicking on forget when user is banned invokes the expected callback`() { + val eventsRecorder = EventsRecorder() + rule.setJoinRoomView( + aJoinRoomState( + contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsBanned(null, null)), + eventSink = eventsRecorder, + ), + ) + rule.clickOn(R.string.screen_join_room_forget_action) + eventsRecorder.assertSingle(JoinRoomEvents.ForgetRoom) + } } private fun AndroidComposeTestRule.setJoinRoomView( @@ -199,6 +228,7 @@ private fun AndroidComposeTestRule.setJoinR onJoinSuccess: () -> Unit = EnsureNeverCalled(), onKnockSuccess: () -> Unit = EnsureNeverCalled(), onCancelKnockSuccess: () -> Unit = EnsureNeverCalled(), + onForgetSuccess: () -> Unit = EnsureNeverCalled(), ) { setContent { JoinRoomView( @@ -206,7 +236,8 @@ private fun AndroidComposeTestRule.setJoinR onBackClick = onBackClick, onJoinSuccess = onJoinSuccess, onKnockSuccess = onKnockSuccess, - onCancelKnockSuccess = onCancelKnockSuccess + onForgetSuccess = onForgetSuccess, + onCancelKnockSuccess = onCancelKnockSuccess, ) } } diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerView.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerView.kt index b62b886afa..09ac8bff59 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerView.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerView.kt @@ -128,14 +128,14 @@ private fun KnockRequestsBannerContent( Text( text = state.formattedTitle(), style = ElementTheme.typography.fontBodyMdMedium, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, textAlign = TextAlign.Start, ) if (state.subtitle != null) { Text( text = state.subtitle, style = ElementTheme.typography.fontBodySmRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, textAlign = TextAlign.Start, ) } diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListView.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListView.kt index 800d68c273..3b90fe7e11 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListView.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListView.kt @@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf @@ -331,7 +330,7 @@ private fun KnockRequestItem( text = knockRequest.getBestName(), maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontBodyLgMedium, ) val formattedDate = knockRequest.formattedDate @@ -339,7 +338,7 @@ private fun KnockRequestItem( Spacer(modifier = Modifier.width(8.dp)) Text( text = formattedDate, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodySmRegular, ) } @@ -348,7 +347,7 @@ private fun KnockRequestItem( if (!knockRequest.displayName.isNullOrEmpty()) { Text( text = knockRequest.userId.value, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodyMdRegular, diff --git a/features/knockrequests/impl/src/main/res/values-be/translations.xml b/features/knockrequests/impl/src/main/res/values-be/translations.xml new file mode 100644 index 0000000000..e6f08bc320 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-be/translations.xml @@ -0,0 +1,4 @@ + + + "Прыняць" + diff --git a/features/knockrequests/impl/src/main/res/values-bg/translations.xml b/features/knockrequests/impl/src/main/res/values-bg/translations.xml new file mode 100644 index 0000000000..108ffb122e --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-bg/translations.xml @@ -0,0 +1,4 @@ + + + "Приемане" + diff --git a/features/knockrequests/impl/src/main/res/values-es/translations.xml b/features/knockrequests/impl/src/main/res/values-es/translations.xml new file mode 100644 index 0000000000..66914c9c89 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-es/translations.xml @@ -0,0 +1,4 @@ + + + "Aceptar" + diff --git a/features/knockrequests/impl/src/main/res/values-fa/translations.xml b/features/knockrequests/impl/src/main/res/values-fa/translations.xml new file mode 100644 index 0000000000..33e231cb85 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-fa/translations.xml @@ -0,0 +1,4 @@ + + + "پذیرش" + diff --git a/features/knockrequests/impl/src/main/res/values-hu/translations.xml b/features/knockrequests/impl/src/main/res/values-hu/translations.xml index 2ae4a79857..c01121ae83 100644 --- a/features/knockrequests/impl/src/main/res/values-hu/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-hu/translations.xml @@ -24,7 +24,7 @@ "Ha valaki csatlakozni kíván a szobához, itt láthatja a kérését." "Nincs függőben lévő csatlakozási kérelem" "Csatlakozási kérések betöltése…" - "Csatlakozási kérelmek" + "Csatlakozási kérelem" "%1$s és még %2$d felhasználó szeretne csatlakozni ehhez a szobához" "%1$s és még %2$d felhasználó szeretne csatlakozni ehhez a szobához" diff --git a/features/knockrequests/impl/src/main/res/values-ka/translations.xml b/features/knockrequests/impl/src/main/res/values-ka/translations.xml new file mode 100644 index 0000000000..ce6628b264 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-ka/translations.xml @@ -0,0 +1,4 @@ + + + "მიღება" + diff --git a/features/knockrequests/impl/src/main/res/values-nb/translations.xml b/features/knockrequests/impl/src/main/res/values-nb/translations.xml new file mode 100644 index 0000000000..33afe86da7 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-nb/translations.xml @@ -0,0 +1,4 @@ + + + "Godta" + diff --git a/features/knockrequests/impl/src/main/res/values-nl/translations.xml b/features/knockrequests/impl/src/main/res/values-nl/translations.xml new file mode 100644 index 0000000000..46787d05e0 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-nl/translations.xml @@ -0,0 +1,4 @@ + + + "Accepteren" + diff --git a/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml b/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml new file mode 100644 index 0000000000..ebece87661 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-pt-rBR/translations.xml @@ -0,0 +1,4 @@ + + + "Aceitar" + diff --git a/features/knockrequests/impl/src/main/res/values-pt/translations.xml b/features/knockrequests/impl/src/main/res/values-pt/translations.xml index 1ba0fe34d3..255c9d5202 100644 --- a/features/knockrequests/impl/src/main/res/values-pt/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-pt/translations.xml @@ -4,15 +4,26 @@ "Tens a certeza de que queres aceitar todos os pedidos de entrada?" "Aceitar todos os pedidos" "Aceitar todos" + "Não foi possível aceitar todos os pedidos. Queres tentar novamente?" + "Falha ao aceitar todos os pedidos" + "A aceitar todos os pedidos de entrada" + "Não foi possível aceitar este pedido. Queres tentar novamente?" + "Falha ao aceitar pedido" + "A aceitar pedido de entrada" "Sim, recusar e proibir" "Tens a certeza de que queres recusar e banir %1$s? Este utilizador não poderá voltar a pedir para entrar nesta sala." "Recusar e banir" - "Sim, recusar" + "A rejeitar pedido e a banir o utilizador" + "Sim, rejeitar" "Tens a certeza que queres recusar o pedido de entrada de %1$s?" - "Recusar entrada" + "Rejeitar entrada" "Recusar e banir" + "Não foi possível rejeitar este pedido. Queres tentar novamente?" + "Falha ao rejeitar pedido" + "A rejeitar pedido de entrada" "Quando alguém pedir para entrar na sala, irás poder rever o pedido aqui." "Sem pedidos de entrada" + "A carregar pedidos de entrada…" "Pedidos de entrada" "%1$s +%2$d outro querem entrar nesta sala" diff --git a/features/knockrequests/impl/src/main/res/values-ro/translations.xml b/features/knockrequests/impl/src/main/res/values-ro/translations.xml new file mode 100644 index 0000000000..2a75681c5d --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-ro/translations.xml @@ -0,0 +1,4 @@ + + + "Acceptați" + diff --git a/features/knockrequests/impl/src/main/res/values-ru/translations.xml b/features/knockrequests/impl/src/main/res/values-ru/translations.xml index 3447cd0bc7..f5e91a469a 100644 --- a/features/knockrequests/impl/src/main/res/values-ru/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-ru/translations.xml @@ -24,14 +24,14 @@ "Вы сможете увидеть запрос, когда кто-то попросит присоединиться к комнате." "Нет ожидающих запросов на присоединение" "Загрузка запросов на присоединение…" - "Запросы на присоединение" + "Запросы на вступление" "%1$s +%2$d хочет присоединиться к этой комнате" "%1$s +%2$d хотят присоединиться к этой комнате" "%1$s +%2$d хотят присоединиться к этой комнате" "Показать все" - "Принять" + "Разрешить" "%1$s хочет присоединиться к этой комнате" "Просмотр" diff --git a/features/knockrequests/impl/src/main/res/values-sk/translations.xml b/features/knockrequests/impl/src/main/res/values-sk/translations.xml index e8df24e46b..12cc86d327 100644 --- a/features/knockrequests/impl/src/main/res/values-sk/translations.xml +++ b/features/knockrequests/impl/src/main/res/values-sk/translations.xml @@ -24,7 +24,7 @@ "Keď niekto požiada, aby sa pripojil k miestnosti, jeho žiadosť si môžete pozrieť tu." "Žiadna čakajúca žiadosť o pripojenie" "Načítavajú sa žiadosti o pripojenie…" - "Žiadosti o pripojenie" + "Žiadosti o vstup" "%1$s +%2$d ďalší chcú vstúpiť do tejto miestnosti" "%1$s +%2$d ďalší chcú vstúpiť do tejto miestnosti" diff --git a/features/knockrequests/impl/src/main/res/values-sv/translations.xml b/features/knockrequests/impl/src/main/res/values-sv/translations.xml new file mode 100644 index 0000000000..1b51a8e707 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-sv/translations.xml @@ -0,0 +1,36 @@ + + + "Ja, acceptera alla" + "Är du säker på att du vill acceptera alla förfrågningar om att gå med?" + "Acceptera alla förfrågningar" + "Acceptera alla" + "Vi kunde inte acceptera alla förfrågningar. Vill du försöka igen?" + "Misslyckades att acceptera alla förfrågningar" + "Accepterar alla förfrågningar om att gå med" + "Vi kunde inte acceptera denna begäran. Vill du försöka igen?" + "Misslyckades att acceptera förfrågan" + "Accepterar begäran om att gå med" + "Ja, avslå och förbjud" + "Är du säker på att du vill avvisa och förbjuda%1$s? Den här användaren kommer inte att kunna begära åtkomst för att gå med i det här rummet igen." + "Avvisa och förbjud åtkomst" + "Avvisar och bannar åtkomst" + "Ja, avböj" + "Är du säker på att du vill avslå %1$s begäran om att gå med i det här rummet?" + "Avvisa åtkomst" + "Avvisa och förbjud" + "Vi kunde inte avslå denna begäran. Vill du försöka igen?" + "Misslyckades att avvisa begäran" + "Avvisa begäran om att gå med" + "När någon begär om att gå med i rummet, kan du se deras förfrågan här." + "Ingen väntande begäran om att gå med" + "Laddar förfrågningar om att gå med …" + "Begäran om att gå med" + + "%1$s+ %2$d annan vill gå med i detta rum" + "%1$s+ %2$d andra vill gå med i detta rum" + + "Visa alla" + "Godkänn" + "%1$s vill gå med i det här rummet" + "Visa" + diff --git a/features/knockrequests/impl/src/main/res/values-tr/translations.xml b/features/knockrequests/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..b6a070ee08 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,36 @@ + + + "Evet, tümünü kabul et" + "Tüm katılma isteklerini kabul etmek istediğinizden emin misiniz?" + "Tüm istekleri kabul et" + "Tümünü kabul et" + "Tüm istekleri kabul edemedik. Tekrar denemek ister misiniz?" + "Tüm istekler kabul edilemedi" + "Tüm katılım istekleri kabul ediliyor" + "Bu isteği kabul edemedik. Tekrar denemek ister misiniz?" + "İstek kabul edilemedi" + "Katılma isteği kabul ediliyor" + "Evet, reddet ve yasakla" + "%1$s reddetmek ve yasaklamak istediğinizden emin misiniz? Bu kullanıcı, bu odaya tekrar katılmak için erişim isteğinde bulunamaz." + "Reddet ve erişimi yasakla" + "Reddediliyor ve erişim yasaklanıyor" + "Evet, reddet" + "Bu odaya katılma isteğini reddetmek istediğinizden emin misiniz %1$s?" + "Erişimi reddet" + "Reddet ve yasakla" + "Bu isteği reddedemedik. Tekrar denemek ister misiniz?" + "İsteği reddetme başarısız oldu" + "Katılma isteği reddediliyor" + "Birisi odaya katılmak istediğinde, isteklerini burada görebileceksiniz." + "Bekleyen katılım isteği yok" + "Katılma istekleri yükleniyor…" + "Katılma istekleri" + + "%1$s +%2$d kişi daha bu odaya katılmak istiyor" + "%1$s +%2$d kişi daha bu odaya katılmak istiyor" + + "Tümünü görüntüle" + "Kabul et" + "%1$s bu odaya katılmak istiyor" + "Görüntüle" + diff --git a/features/knockrequests/impl/src/main/res/values-uz/translations.xml b/features/knockrequests/impl/src/main/res/values-uz/translations.xml new file mode 100644 index 0000000000..d7e6705e67 --- /dev/null +++ b/features/knockrequests/impl/src/main/res/values-uz/translations.xml @@ -0,0 +1,4 @@ + + + "Qabul qiling" + diff --git a/features/leaveroom/api/src/main/res/values-tr/translations.xml b/features/leaveroom/api/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..39ba596628 --- /dev/null +++ b/features/leaveroom/api/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "Bu sohbetten ayrılmak istediğinizden emin misiniz? Bu sohbet herkese açık değil ve davet olmadan tekrar katılamayacaksınız." + "Bu odadan ayrılmak istediğinizden emin misiniz? Burada tek kişi sizsiniz. Ayrılırsanız, siz de dahil olmak üzere gelecekte kimse katılamayacak." + "Bu odadan ayrılmak istediğinizden emin misiniz? Bu oda herkese açık değildir ve davet olmadan tekrar katılamazsınız." + "Odadan çıkmak istediğinden emin misin?" + diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt index 0035a043c6..7d62ff8682 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt @@ -12,8 +12,6 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Refresh import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -23,6 +21,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.location.api.R import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -60,7 +59,7 @@ internal fun StaticMapPlaceholder( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Default.Refresh, + imageVector = CompoundIcons.Restart(), contentDescription = null ) Text(text = stringResource(id = CommonStrings.action_static_map_load)) diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationView.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationView.kt index 380d585352..81dd4c98f6 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationView.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationView.kt @@ -12,9 +12,6 @@ import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.LocationSearching -import androidx.compose.material.icons.filled.MyLocation import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -132,8 +129,8 @@ fun ShowLocationView( onClick = { state.eventSink(ShowLocationEvents.TrackMyLocation(true)) }, ) { when (state.isTrackMyLocation) { - false -> Icon(imageVector = Icons.Default.LocationSearching, contentDescription = null) - true -> Icon(imageVector = Icons.Default.MyLocation, contentDescription = null) + false -> Icon(imageVector = CompoundIcons.LocationNavigator(), contentDescription = null) + true -> Icon(imageVector = CompoundIcons.LocationNavigatorCentred(), contentDescription = null) } } }, diff --git a/features/lockscreen/impl/build.gradle.kts b/features/lockscreen/impl/build.gradle.kts index 6e8784b72c..808abf9150 100644 --- a/features/lockscreen/impl/build.gradle.kts +++ b/features/lockscreen/impl/build.gradle.kts @@ -21,6 +21,7 @@ setupAnvil() dependencies { api(projects.features.lockscreen.api) implementation(projects.appconfig) + implementation(projects.features.enterprise.api) implementation(projects.libraries.core) implementation(projects.libraries.architecture) implementation(projects.libraries.matrix.api) 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 fa2a5b493e..681375357b 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 @@ -94,7 +94,7 @@ class DefaultLockScreenService @Inject constructor( */ private fun observeAppForegroundState() { coroutineScope.launch { - appForegroundStateService.start() + appForegroundStateService.startObservingForeground() appForegroundStateService.isInForeground.collect { isInForeground -> if (isInForeground) { lockJob?.cancel() diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinView.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinView.kt index d01c045e44..3e51849a76 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinView.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinView.kt @@ -16,8 +16,6 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Lock import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -29,6 +27,7 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.lockscreen.impl.R import io.element.android.features.lockscreen.impl.components.PinEntryTextField import io.element.android.features.lockscreen.impl.setup.pin.validation.SetupPinFailure @@ -89,7 +88,7 @@ private fun SetupPinHeader( stringResource(id = R.string.screen_app_lock_setup_choose_pin) }, subTitle = stringResource(id = R.string.screen_app_lock_setup_pin_context, appName), - iconStyle = BigIcon.Style.Default(Icons.Filled.Lock), + iconStyle = BigIcon.Style.Default(CompoundIcons.LockSolid()), ) } } 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 9f7baed365..cea53bb844 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 @@ -7,11 +7,9 @@ package io.element.android.features.lockscreen.impl.unlock -import android.app.Activity import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -19,8 +17,6 @@ import com.bumble.appyx.core.plugin.plugins import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode -import io.element.android.compound.theme.ElementTheme -import io.element.android.features.logout.api.util.onSuccessLogout import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -42,8 +38,6 @@ class PinUnlockNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { val state = presenter.present() - val activity = LocalContext.current as Activity - val isDark = ElementTheme.isLightTheme.not() LaunchedEffect(state.isUnlocked) { if (state.isUnlocked) { onUnlock() @@ -54,7 +48,6 @@ class PinUnlockNode @AssistedInject constructor( // UnlockNode is only used for in-app unlock, so we can safely set isInAppUnlock to true. // It's set to false in PinUnlockActivity. isInAppUnlock = true, - onSuccessLogout = { onSuccessLogout(activity, isDark, it) }, modifier = modifier ) } 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 129d76f426..9f3bf082e2 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 @@ -53,7 +53,7 @@ class PinUnlockPresenter @Inject constructor( mutableStateOf(false) } val signOutAction = remember { - mutableStateOf>(AsyncAction.Uninitialized) + mutableStateOf>(AsyncAction.Uninitialized) } var biometricUnlockResult by remember { mutableStateOf(null) @@ -169,7 +169,7 @@ class PinUnlockPresenter @Inject constructor( } } - private fun CoroutineScope.signOut(signOutAction: MutableState>) = launch { + private fun CoroutineScope.signOut(signOutAction: MutableState>) = launch { suspend { logoutUseCase.logout(ignoreSdkError = true) }.runCatchingUpdatingState(signOutAction) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt index 191e3151d9..dd24fbefd7 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt @@ -18,7 +18,7 @@ data class PinUnlockState( val showWrongPinTitle: Boolean, val remainingAttempts: AsyncData, val showSignOutPrompt: Boolean, - val signOutAction: AsyncAction, + val signOutAction: AsyncAction, val showBiometricUnlock: Boolean, val isUnlocked: Boolean, val biometricUnlockResult: BiometricAuthenticator.AuthenticationResult?, diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateProvider.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateProvider.kt index 51c05820dd..54647eaad8 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateProvider.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateProvider.kt @@ -23,27 +23,29 @@ open class PinUnlockStateProvider : PreviewParameterProvider { aPinUnlockState(showWrongPinTitle = true), aPinUnlockState(showSignOutPrompt = true), aPinUnlockState(showBiometricUnlock = false), - aPinUnlockState(showSignOutPrompt = true, remainingAttempts = 0), + aPinUnlockState(showSignOutPrompt = true, remainingAttempts = AsyncData.Success(0)), aPinUnlockState(signOutAction = AsyncAction.Loading), - aPinUnlockState(biometricUnlockResult = BiometricAuthenticator.AuthenticationResult.Failure( - BiometricUnlockError(BiometricPrompt.ERROR_LOCKOUT, "Biometric auth disabled") - )), + aPinUnlockState( + biometricUnlockResult = BiometricAuthenticator.AuthenticationResult.Failure( + BiometricUnlockError(BiometricPrompt.ERROR_LOCKOUT, "Biometric auth disabled") + ) + ), ) } fun aPinUnlockState( pinEntry: PinEntry = PinEntry.createEmpty(4), - remainingAttempts: Int = 3, + remainingAttempts: AsyncData = AsyncData.Success(3), showWrongPinTitle: Boolean = false, showSignOutPrompt: Boolean = false, showBiometricUnlock: Boolean = true, biometricUnlockResult: BiometricAuthenticator.AuthenticationResult? = null, isUnlocked: Boolean = false, - signOutAction: AsyncAction = AsyncAction.Uninitialized, + signOutAction: AsyncAction = AsyncAction.Uninitialized, ) = PinUnlockState( pinEntry = AsyncData.Success(pinEntry), showWrongPinTitle = showWrongPinTitle, - remainingAttempts = AsyncData.Success(remainingAttempts), + remainingAttempts = remainingAttempts, showSignOutPrompt = showSignOutPrompt, showBiometricUnlock = showBiometricUnlock, signOutAction = signOutAction, diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt index 3923ced61d..baa856307c 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt @@ -25,14 +25,9 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester @@ -44,6 +39,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.lifecycle.Lifecycle import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.lockscreen.impl.R import io.element.android.features.lockscreen.impl.components.PinEntryTextField import io.element.android.features.lockscreen.impl.pin.model.PinDigit @@ -68,7 +64,6 @@ import io.element.android.libraries.ui.strings.CommonStrings fun PinUnlockView( state: PinUnlockState, isInAppUnlock: Boolean, - onSuccessLogout: (logoutUrlResult: String?) -> Unit, modifier: Modifier = Modifier, ) { OnLifecycleEvent { _, event -> @@ -90,12 +85,7 @@ fun PinUnlockView( AsyncAction.Loading -> { ProgressDialog(text = stringResource(id = R.string.screen_signout_in_progress_dialog_content)) } - is AsyncAction.Success -> { - val latestOnSuccessLogout by rememberUpdatedState(onSuccessLogout) - LaunchedEffect(state) { - latestOnSuccessLogout(state.signOutAction.data) - } - } + is AsyncAction.Success, is AsyncAction.Confirming, is AsyncAction.Failure, AsyncAction.Uninitialized -> Unit @@ -299,13 +289,13 @@ private fun PinUnlockHeader( horizontalAlignment = Alignment.CenterHorizontally, ) { if (isInAppUnlock) { - BigIcon(style = BigIcon.Style.Default(Icons.Filled.Lock)) + BigIcon(style = BigIcon.Style.Default(CompoundIcons.LockSolid())) } else { Icon( modifier = Modifier .size(32.dp), tint = ElementTheme.colors.iconPrimary, - imageVector = Icons.Filled.Lock, + imageVector = CompoundIcons.LockSolid(), contentDescription = null, ) } @@ -316,7 +306,7 @@ private fun PinUnlockHeader( .fillMaxWidth(), textAlign = TextAlign.Center, style = ElementTheme.typography.fontHeadingMdBold, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) Spacer(Modifier.height(8.dp)) val remainingAttempts = state.remainingAttempts.dataOrNull() @@ -330,9 +320,9 @@ private fun PinUnlockHeader( "" } val subtitleColor = if (state.showWrongPinTitle) { - MaterialTheme.colorScheme.error + ElementTheme.colors.textCriticalPrimary } else { - MaterialTheme.colorScheme.secondary + ElementTheme.colors.textSecondary } Text( text = subtitle, @@ -370,7 +360,6 @@ internal fun PinUnlockViewInAppPreview(@PreviewParameter(PinUnlockStateProvider: PinUnlockView( state = state, isInAppUnlock = true, - onSuccessLogout = {}, ) } } @@ -382,7 +371,6 @@ internal fun PinUnlockViewPreview(@PreviewParameter(PinUnlockStateProvider::clas PinUnlockView( state = state, isInAppUnlock = false, - onSuccessLogout = {}, ) } } 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 e308865315..1be54e7b43 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 @@ -15,13 +15,12 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope -import io.element.android.compound.theme.ElementTheme +import io.element.android.features.enterprise.api.EnterpriseService 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 import io.element.android.features.lockscreen.impl.unlock.PinUnlockView import io.element.android.features.lockscreen.impl.unlock.di.PinUnlockBindings -import io.element.android.features.logout.api.util.onSuccessLogout import io.element.android.libraries.architecture.bindings import io.element.android.libraries.designsystem.theme.ElementThemeApp import io.element.android.libraries.preferences.api.store.AppPreferencesStore @@ -38,19 +37,21 @@ class PinUnlockActivity : AppCompatActivity() { @Inject lateinit var presenter: PinUnlockPresenter @Inject lateinit var lockScreenService: LockScreenService @Inject lateinit var appPreferencesStore: AppPreferencesStore + @Inject lateinit var enterpriseService: EnterpriseService override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) bindings().inject(this) setContent { - ElementThemeApp(appPreferencesStore) { + ElementThemeApp( + appPreferencesStore = appPreferencesStore, + enterpriseService = enterpriseService, + ) { val state = presenter.present() - val isDark = ElementTheme.isLightTheme.not() PinUnlockView( state = state, isInAppUnlock = false, - onSuccessLogout = { onSuccessLogout(this, isDark, it) }, ) } } diff --git a/features/lockscreen/impl/src/main/res/values-sv/translations.xml b/features/lockscreen/impl/src/main/res/values-sv/translations.xml index d022e6b953..a559e4c909 100644 --- a/features/lockscreen/impl/src/main/res/values-sv/translations.xml +++ b/features/lockscreen/impl/src/main/res/values-sv/translations.xml @@ -3,6 +3,7 @@ "biometrisk autentisering" "biometrisk upplåsning" "Lås upp med biometri" + "Bekräfta biometriskt" "Glömt PIN-kod?" "Byt PIN-kod" "Tillåt biometrisk upplåsning" diff --git a/features/lockscreen/impl/src/main/res/values-tr/translations.xml b/features/lockscreen/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..5a9b94af11 --- /dev/null +++ b/features/lockscreen/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,38 @@ + + + "biyometrik kimlik doğrulama" + "biyometrik kilit açma" + "Biyometrik ile kilit aç" + "Biyometrik doğrulama" + "PIN\'i unuttum" + "PIN kodunu değiştir" + "Biyometrik kilit açmaya izin ver" + "PIN kodunu kaldır" + "PIN\'i kaldırmak istediğinizden emin misiniz?" + "PIN\'i kaldır?" + "İzin ver %1$s" + "PIN kullanmayı tercih ederim" + "%1$s kullanarak oturum açarken kendinize zaman kazandırın" + "PIN Seç" + "PIN\'i onayla" + "Sohbetlerinize ekstra güvenlik eklemek için %1$s kilitleyin. + +Hatırlanabilir bir şey seçin. Bu PIN\'i unutursanız, uygulamadan çıkış yaparsınız." + "Güvenlik nedeniyle bunu PIN kodunuz olarak seçemezsiniz" + "Farklı bir PIN seçin" + "Lütfen aynı PIN\'i iki kez girin" + "PIN\'ler eşleşmiyor" + "Devam etmek için yeniden oturum açmanız ve yeni bir PIN oluşturmanız gerekir" + "Oturumunuz kapatılıyor" + + "Kilidi açmak için %1$d deneme hakkınız var" + "Kilidi açmak için %1$d deneme hakkınız var" + + + "Yanlış PIN. %1$d kere daha şansınız var" + "Yanlış PIN. %1$d kere daha şansınız var" + + "Biyometrik kullan" + "PIN kullan" + "Oturum kapatılıyor…" + diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt index f03e61bdb7..cea9fe29f5 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt @@ -98,7 +98,7 @@ class PinUnlockPresenterTest { @Test fun `present - forgot pin flow`() = runTest { - val signOutLambda = lambdaRecorder { "" } + val signOutLambda = lambdaRecorder {} val signOut = FakeLogoutUseCase(signOutLambda) val presenter = createPinUnlockPresenter(this, logoutUseCase = signOut) moleculeFlow(RecompositionMode.Immediate) { diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateTest.kt new file mode 100644 index 0000000000..389ebf83c7 --- /dev/null +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockStateTest.kt @@ -0,0 +1,76 @@ +/* + * 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.unlock + +import androidx.biometric.BiometricPrompt +import com.google.common.truth.Truth.assertThat +import io.element.android.features.lockscreen.impl.biometric.BiometricAuthenticator +import io.element.android.features.lockscreen.impl.biometric.BiometricUnlockError +import io.element.android.libraries.architecture.AsyncData +import org.junit.Test + +class PinUnlockStateTest { + @Test + fun `isSignOutPromptCancellable should have expected values`() { + assertThat(aPinUnlockState(remainingAttempts = AsyncData.Uninitialized).isSignOutPromptCancellable).isTrue() + assertThat(aPinUnlockState(remainingAttempts = AsyncData.Success(1)).isSignOutPromptCancellable).isTrue() + assertThat(aPinUnlockState(remainingAttempts = AsyncData.Success(0)).isSignOutPromptCancellable).isFalse() + } + + @Test + fun `biometricUnlockErrorMessage and showBiometricUnlockError should have expected values`() { + listOf( + null, + BiometricAuthenticator.AuthenticationResult.Failure(), + BiometricAuthenticator.AuthenticationResult.Success, + ).forEach { biometricUnlockResult -> + aPinUnlockState( + biometricUnlockResult = biometricUnlockResult, + ).let { + assertThat(it.biometricUnlockErrorMessage).isNull() + assertThat(it.showBiometricUnlockError).isFalse() + } + } + listOf( + BiometricPrompt.ERROR_HW_UNAVAILABLE, + BiometricPrompt.ERROR_UNABLE_TO_PROCESS, + BiometricPrompt.ERROR_TIMEOUT, + BiometricPrompt.ERROR_NO_SPACE, + BiometricPrompt.ERROR_CANCELED, + BiometricPrompt.ERROR_VENDOR, + BiometricPrompt.ERROR_USER_CANCELED, + BiometricPrompt.ERROR_NO_BIOMETRICS, + BiometricPrompt.ERROR_HW_NOT_PRESENT, + BiometricPrompt.ERROR_NEGATIVE_BUTTON, + BiometricPrompt.ERROR_NO_DEVICE_CREDENTIAL, + BiometricPrompt.ERROR_SECURITY_UPDATE_REQUIRED, + ).forEach { code -> + aPinUnlockState( + biometricUnlockResult = BiometricAuthenticator.AuthenticationResult.Failure( + error = BiometricUnlockError(code, "Error message") + ), + ).let { + assertThat(it.biometricUnlockErrorMessage).isNull() + assertThat(it.showBiometricUnlockError).isFalse() + } + } + listOf( + BiometricPrompt.ERROR_LOCKOUT, + BiometricPrompt.ERROR_LOCKOUT_PERMANENT, + ).forEach { code -> + aPinUnlockState( + biometricUnlockResult = BiometricAuthenticator.AuthenticationResult.Failure( + error = BiometricUnlockError(code, "Error message") + ), + ).let { + assertThat(it.biometricUnlockErrorMessage).isEqualTo("Error message") + assertThat(it.showBiometricUnlockError).isTrue() + } + } + } +} diff --git a/features/login/impl/build.gradle.kts b/features/login/impl/build.gradle.kts index 327eaa5416..02c38e2a57 100644 --- a/features/login/impl/build.gradle.kts +++ b/features/login/impl/build.gradle.kts @@ -28,6 +28,7 @@ setupAnvil(componentMergingStrategy = ComponentMergingStrategy.KSP) dependencies { implementation(projects.appconfig) + implementation(projects.features.enterprise.api) implementation(projects.libraries.core) implementation(projects.libraries.androidutils) implementation(projects.libraries.architecture) @@ -55,6 +56,7 @@ dependencies { testImplementation(libs.test.robolectric) testImplementation(libs.test.truth) testImplementation(libs.test.turbine) + testImplementation(projects.features.enterprise.test) testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.oidc.impl) testImplementation(projects.libraries.permissions.test) 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 c49ba82809..0f2328656e 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 @@ -9,10 +9,10 @@ package io.element.android.features.login.impl import android.app.Activity import android.os.Parcelable +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.lifecycleScope import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext @@ -199,7 +199,7 @@ class LoginFlowNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { - activity = LocalContext.current as? Activity + activity = requireNotNull(LocalActivity.current) darkTheme = !ElementTheme.isLightTheme DisposableEffect(Unit) { onDispose { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt index 913cfb6f0c..3f9c368a1d 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt @@ -7,7 +7,8 @@ package io.element.android.features.login.impl.accountprovider -import io.element.android.features.login.impl.util.defaultAccountProvider +import io.element.android.appconfig.AuthenticationConfig +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.SingleIn import kotlinx.coroutines.flow.MutableStateFlow @@ -16,7 +17,18 @@ import kotlinx.coroutines.flow.asStateFlow import javax.inject.Inject @SingleIn(AppScope::class) -class AccountProviderDataSource @Inject constructor() { +class AccountProviderDataSource @Inject constructor( + enterpriseService: EnterpriseService, +) { + private val defaultAccountProvider = (enterpriseService.defaultHomeserver() ?: AuthenticationConfig.MATRIX_ORG_URL).let { url -> + AccountProvider( + url = url, + subtitle = null, + isPublic = url == AuthenticationConfig.MATRIX_ORG_URL, + isMatrixOrg = url == AuthenticationConfig.MATRIX_ORG_URL, + ) + } + private val accountProvider: MutableStateFlow = MutableStateFlow( defaultAccountProvider ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt index fc2f518873..e8b931ffe9 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -68,7 +67,7 @@ fun AccountProviderView( RoundedIconAtom( size = RoundedIconAtomSize.Medium, imageVector = CompoundIcons.Search(), - tint = MaterialTheme.colorScheme.primary, + tint = ElementTheme.colors.iconPrimary, ) } Text( @@ -77,7 +76,7 @@ fun AccountProviderView( .weight(1f), text = item.title, style = ElementTheme.typography.fontBodyLgMedium, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) if (item.isPublic) { Icon( @@ -96,7 +95,7 @@ fun AccountProviderView( .padding(start = 46.dp, bottom = 12.dp, end = 26.dp), text = item.subtitle, style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt index 7f28060947..ad2befb628 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderView.kt @@ -19,14 +19,13 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Home import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.login.impl.R import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProviderView @@ -74,7 +73,7 @@ fun ChangeAccountProviderView( ) { IconTitleSubtitleMolecule( modifier = Modifier.padding(top = 16.dp, bottom = 32.dp, start = 16.dp, end = 16.dp), - iconStyle = BigIcon.Style.Default(Icons.Filled.Home), + iconStyle = BigIcon.Style.Default(CompoundIcons.HomeSolid()), title = stringResource(id = R.string.screen_change_account_provider_title), subTitle = stringResource(id = R.string.screen_change_account_provider_subtitle), ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderView.kt index 424ec45a95..b4c21bb1a1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderView.kt @@ -9,8 +9,6 @@ package io.element.android.features.login.impl.screens.confirmaccountprovider import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AccountCircle import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue @@ -19,6 +17,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.login.impl.R import io.element.android.features.login.impl.dialogs.SlidingSyncNotSupportedDialog import io.element.android.features.login.impl.error.ChangeServerError @@ -60,7 +59,7 @@ fun ConfirmAccountProviderView( header = { IconTitleSubtitleMolecule( modifier = Modifier.padding(top = 60.dp), - iconStyle = BigIcon.Style.Default(Icons.Filled.AccountCircle), + iconStyle = BigIcon.Style.Default(CompoundIcons.UserProfileSolid()), title = stringResource( id = if (state.isAccountCreation) { R.string.screen_account_provider_signup_title diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountNode.kt index 6cd039a2c7..128a4c03e8 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountNode.kt @@ -8,9 +8,9 @@ package io.element.android.features.login.impl.screens.createaccount import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -41,7 +41,7 @@ class CreateAccountNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) val isDark = ElementTheme.isLightTheme.not() val state = presenter.present() CreateAccountView( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt index c61a3cac72..ca05df5ace 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt @@ -21,8 +21,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AccountCircle import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf @@ -100,17 +98,17 @@ fun LoginPasswordView( Column( modifier = Modifier - .fillMaxSize() - .imePadding() - .padding(padding) - .consumeWindowInsets(padding) - .verticalScroll(state = scrollState) - .padding(start = 20.dp, end = 20.dp, bottom = 20.dp), + .fillMaxSize() + .imePadding() + .padding(padding) + .consumeWindowInsets(padding) + .verticalScroll(state = scrollState) + .padding(start = 20.dp, end = 20.dp, bottom = 20.dp), ) { // Title IconTitleSubtitleMolecule( modifier = Modifier.padding(top = 20.dp, start = 16.dp, end = 16.dp), - iconStyle = BigIcon.Style.Default(Icons.Filled.AccountCircle), + iconStyle = BigIcon.Style.Default(CompoundIcons.UserProfileSolid()), title = stringResource( id = R.string.screen_account_provider_signin_title, state.accountProvider.title @@ -139,8 +137,8 @@ fun LoginPasswordView( onClick = ::submit, enabled = state.submitEnabled || isLoading, modifier = Modifier - .fillMaxWidth() - .testTag(TestTags.loginContinue) + .fillMaxWidth() + .testTag(TestTags.loginContinue) ) Spacer(modifier = Modifier.height(48.dp)) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanView.kt index 7f7df3e3b2..2727653ca5 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanView.kt @@ -22,7 +22,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.progressSemantics -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -137,8 +136,8 @@ private fun ColumnScope.Buttons( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = CompoundIcons.Error(), - tint = MaterialTheme.colorScheme.error, + imageVector = CompoundIcons.ErrorSolid(), + tint = ElementTheme.colors.iconCriticalPrimary, contentDescription = null, modifier = Modifier.size(24.dp) ) @@ -151,7 +150,7 @@ private fun ColumnScope.Buttons( else -> stringResource(R.string.screen_qr_code_login_invalid_scan_state_subtitle) }, textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.error, + color = ElementTheme.colors.textCriticalPrimary, style = ElementTheme.typography.fontBodySmMedium, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/util/LoginConstants.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/util/LoginConstants.kt deleted file mode 100644 index 6d06ad8c3e..0000000000 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/util/LoginConstants.kt +++ /dev/null @@ -1,18 +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.login.impl.util - -import io.element.android.appconfig.AuthenticationConfig -import io.element.android.features.login.impl.accountprovider.AccountProvider - -val defaultAccountProvider = AccountProvider( - url = AuthenticationConfig.DEFAULT_HOMESERVER_URL, - subtitle = null, - isPublic = AuthenticationConfig.DEFAULT_HOMESERVER_URL == AuthenticationConfig.MATRIX_ORG_URL, - isMatrixOrg = AuthenticationConfig.DEFAULT_HOMESERVER_URL == AuthenticationConfig.MATRIX_ORG_URL, -) diff --git a/features/login/impl/src/main/res/values-bg/translations.xml b/features/login/impl/src/main/res/values-bg/translations.xml index eced3ef828..fc512422e9 100644 --- a/features/login/impl/src/main/res/values-bg/translations.xml +++ b/features/login/impl/src/main/res/values-bg/translations.xml @@ -12,6 +12,7 @@ "Използвайте друг доставчик на акаунт, като например собствен частен сървър или работен акаунт." "Промяна на доставчика на акаунт" "Какъв е адресът на вашия сървър?" + "Създаване на акаунт" "Този акаунт бе деактивиран." "Неправилно потребителско име и/или парола" "Въведете своите данни" diff --git a/features/login/impl/src/main/res/values-es/translations.xml b/features/login/impl/src/main/res/values-es/translations.xml index 60324ae89d..68851e411c 100644 --- a/features/login/impl/src/main/res/values-es/translations.xml +++ b/features/login/impl/src/main/res/values-es/translations.xml @@ -21,6 +21,7 @@ "Solo puedes conectarte a un servidor que soporte sliding sync. El administrador de tu servidor tendrá que configurarlo. %1$s" "¿Cuál es la dirección de tu servidor?" "Selecciona tu servidor" + "Crear cuenta" "Esta cuenta ha sido desactivada." "Usuario y/o contraseña incorrectos" "Este no es un id de usuario válido. Formato esperado: \'@user:homeserver.org\'" diff --git a/features/login/impl/src/main/res/values-ka/translations.xml b/features/login/impl/src/main/res/values-ka/translations.xml index 6c0ce2adab..0b5c5ec6b5 100644 --- a/features/login/impl/src/main/res/values-ka/translations.xml +++ b/features/login/impl/src/main/res/values-ka/translations.xml @@ -19,6 +19,7 @@ "თქვენ შეგიძლიათ დაუკავშირდეთ მხოლოდ იმ სერვერს, რომელიც მხარს უჭერს \"sliding sync\"-ს. თქვენი სახლის სერვერის ადმინისტრატორს დასჭირდება მისი კონფიგურაცია.%1$s" "რა არის თქვენი სერვერის მისამართი?" "აირჩიეთ თქვენი სერვერი" + "ანგარიშის შექმნა" "ეს ანგარიში დეაქტივირებულია." "არასწორი მომხმარებლის სახელი და/ან პაროლი" "მოცემული მომხმარებლის იდენტიფიკატორი არასწორია. დასაშვები ფორმატი: ‘@user:homeserver.org’" diff --git a/features/login/impl/src/main/res/values-nb/translations.xml b/features/login/impl/src/main/res/values-nb/translations.xml index c901908fa5..1637040c4c 100644 --- a/features/login/impl/src/main/res/values-nb/translations.xml +++ b/features/login/impl/src/main/res/values-nb/translations.xml @@ -1,5 +1,6 @@ + "Bytt kontotilbyder" "Hjemmeserveradresse" "Søk etter et selskap, fellesskap eller privat server." "Finn en kontoleverandør" @@ -7,10 +8,15 @@ "Du er i ferd med å logge inn på %s" "Det er her samtalene dine vil ligge - akkurat som du ville brukt en e-postleverandør til å oppbevare e-postene dine." "Du er i ferd med å opprette en konto på %s" + "Annet" + "Bruk en annen kontotilbyder, for eksempel din egen private server eller en arbeidskonto." + "Bytt kontotilbyder" "Vi kunne ikke nå denne hjemmeserveren. Kontroller at du har skrevet inn hjemmeserverens URL riktig. Hvis URL-en er riktig, kontakt administratoren for hjemmeserveren din for å få mer hjelp." "Denne serveren støtter for øyeblikket ikke sliding sync." "URL til hjemmeserver" + "Du kan bare koble til en eksisterende server som støtter sliding sync. Administrator for din hjemmeserver må konfigurere det. %1$s" "Hva er adressen til serveren din?" + "Opprett konto" "Denne kontoen er deaktivert." "Feil brukernavn og/eller passord" "Dette er ikke en gyldig brukeridentifikator. Forventet format: \'@bruker:homeserver.org\'" @@ -18,6 +24,8 @@ "Skriv inn opplysningene dine" "Matrix er et åpent nettverk for sikker, desentralisert kommunikasjon." "Velkommen tilbake!" + "Logg inn på %1$s" + "Bytt kontotilbyder" "En privat server for Element-ansatte." "Matrix er et åpent nettverk for sikker, desentralisert kommunikasjon." "Det er her samtalene dine vil ligge - akkurat som du ville brukt en e-postleverandør til å oppbevare e-postene dine." diff --git a/features/login/impl/src/main/res/values-pt-rBR/translations.xml b/features/login/impl/src/main/res/values-pt-rBR/translations.xml index 5ceebd308e..ec80fa9cdb 100644 --- a/features/login/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/login/impl/src/main/res/values-pt-rBR/translations.xml @@ -19,6 +19,7 @@ "Você só pode se conectar a um servidor existente que ofereça suporte à tecnologia sliding sync. O administrador do seu servidor precisará configurá-lo. %1$s" "Qual é o endereço do seu servidor?" "Selecione seu servidor" + "Criar conta" "Essa conta foi desativada." "Nome de usuário e/ou senha incorretos" "Esse não é um identificador de usuário válido. Formato esperado: \'@usuário:servidor.org\'" diff --git a/features/login/impl/src/main/res/values-pt/translations.xml b/features/login/impl/src/main/res/values-pt/translations.xml index d5489c90f7..de06747232 100644 --- a/features/login/impl/src/main/res/values-pt/translations.xml +++ b/features/login/impl/src/main/res/values-pt/translations.xml @@ -44,8 +44,8 @@ "O outro dispositivo não tem a sessão iniciada" "O início de sessão foi cancelado no outro dispositivo." "Pedido de início de sessão cancelado" - "O início de sessão foi recusado no outro dispositivo." - "Início de sessão cancelado" + "O início de sessão foi rejeitado no outro dispositivo." + "Início de sessão rejeitado" "O início de sessão expirou. Por favor, tenta novamente." "O início de sessão não foi concluído a tempo" "O teu outro dispositivo não suporta o início de sessão na %s com um código QR. diff --git a/features/login/impl/src/main/res/values-tr/translations.xml b/features/login/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..746163a0e7 --- /dev/null +++ b/features/login/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,83 @@ + + + "Hesap sağlayıcısını değiştir" + "Ana sunucu adresi" + "Bir arama terimi veya alan adı adresi girin." + "Bir şirket, topluluk veya özel sunucu arayın." + "Bir hesap sağlayıcısı bulun" + "Konuşmalarınızın saklanacağı yer burasıdır - tıpkı e-postalarınızı saklamak için bir e-posta sağlayıcısı kullandığınız gibi." + "Oturum açmak üzeresiniz %s" + "Konuşmalarınızın saklanacağı yer burasıdır - tıpkı e-postalarınızı saklamak için bir e-posta sağlayıcısı kullandığınız gibi." + "%s üzerinde bir hesap oluşturmak üzeresiniz" + "Matrix.org, Matrix.org Vakfı tarafından yönetilen, güvenli, merkezi olmayan iletişim için halka açık Matrix ağında büyük, ücretsiz bir sunucudur." + "Diğer" + "Kendi özel sunucunuz veya iş hesabınız gibi farklı bir hesap sağlayıcı kullanın." + "Hesap sağlayıcısını değiştir" + "Bu ana sunucuya ulaşamadık. Lütfen ana sunucu URL\'sini doğru girip girmediğinizi kontrol edin. URL doğruysa, daha fazla yardım için ana sunucu yöneticinize başvurun." + "Sliding sync, iyi bilinen dosyadaki bir sorun nedeniyle kullanılamıyor: +%1$s" + "Bu sunucu şu anda sliding sync desteklemiyor." + "Ana sunucu URL\'si" + "Yalnızca sliding sync destekleyen mevcut bir sunucuya bağlanabilirsiniz. Ana sunucu yöneticinizin bunu yapılandırması gerekecektir. %1$s" + "Sunucunuzun adresi nedir?" + "Sunucunuzu seçin" + "Hesap oluştur" + "Hesap devre dışı bırakıldı." + "Yanlış kullanıcı adı ve/veya şifre" + "Bu geçerli bir kullanıcı tanımlayıcısı değil. Kullanılması gereken biçim: \'@user:homeserver.org\'" + "Bu sunucu, yenileme belirteçlerini kullanacak şekilde yapılandırılmıştır. Parola tabanlı oturum açma kullanılırken bunlar desteklenmez." + "Seçilen ana sunucu parola veya OIDC oturum açmayı desteklemiyor. Lütfen yöneticinizle iletişime geçin veya başka bir ana sunucu seçin." + "Bilgilerinizi girin" + "Matrix, güvenli, merkezi olmayan iletişim için açık bir ağdır." + "Tekrar hoş geldiniz!" + "%1$s adresinde oturum aç" + "Güvenli bir bağlantı kuruluyor" + "Yeni cihaza güvenli bir bağlantı kurulamadı. Mevcut cihazlarınız hala güvende ve onlar için endişelenmenize gerek yok." + "Şimdi ne olacak?" + "Bunun bir ağ sorunu olması ihtimaline karşı bir QR koduyla tekrar oturum açmayı deneyin" + "Aynı sorunla karşılaşırsanız, farklı bir wifi ağı deneyin veya wifi yerine mobil verinizi kullanın" + "Bu işe yaramazsa, manuel olarak oturum açın" + "Bağlantı güvenli değil" + "Bu cihazda gösterilen iki haneyi girmeniz istenecektir." + "Aşağıdaki numarayı diğer cihazınıza girin" + "Diğer cihazınızda oturum açın ve ardından tekrar deneyin veya zaten oturum açmış başka bir cihaz kullanın." + "Diğer cihaz oturum açmamış" + "Oturum açma işlemi diğer cihazda iptal edildi." + "Oturum açma isteği iptal edildi" + "Diğer cihazda oturum açma işlemi reddedildi." + "Oturum açma reddedildi" + "Oturum açma süresi doldu. Lütfen tekrar deneyin." + "Oturum açma işlemi zamanında tamamlanmadı" + "Diğer cihazınız %s QR koduyla oturum açmayı desteklemiyor. + +Manuel olarak oturum açmayı deneyin veya QR kodunu başka bir cihazla tarayın." + "QR kodu desteklenmiyor" + "Hesap sağlayıcınız %1$s desteklemiyor." + "%1$s desteklenmiyor" + "Taramaya hazır" + "Bir masaüstü cihazda %1$s açın" + "Avatarınıza tıklayın" + "Seç %1$s" + "\"Yeni cihaz bağla\"" + "QR kodunu bu cihazla tarayın" + "Yalnızca hesap sağlayıcınız destekliyorsa kullanılabilir." + "QR kodunu almak için %1$s uygulamasını başka bir cihazda açın" + "Diğer cihazda gösterilen QR kodunu kullan." + "Tekrar deneyin" + "Yanlış QR kodu" + "Kamera ayarlarına git" + "Devam etmek için %1$s cihazınızın kamerasını kullanmasına izin vermeniz gerekir." + "QR kodunu taramak için kamera erişimine izin verin" + "QR kodunu tara" + "Yeniden Başla" + "Beklenmeyen bir hata oluştu. Lütfen tekrar deneyin." + "Diğer cihazınız bekleniyor" + "Hesap sağlayıcınız, oturum açmayı doğrulamak için aşağıdaki kodu isteyebilir." + "Doğrulama kodunuz" + "Hesap sağlayıcısını değiştir" + "Element çalışanları için özel bir sunucu." + "Matrix, güvenli, merkezi olmayan iletişim için açık bir ağdır." + "Konuşmalarınızın saklanacağı yer burasıdır - tıpkı e-postalarınızı saklamak için bir e-posta sağlayıcısı kullandığınız gibi." + "%1$s sunucusunda oturum açmak üzeresiniz" + "%1$s sunucusunda bir hesap oluşturmak üzeresiniz" + diff --git a/features/login/impl/src/main/res/values-uz/translations.xml b/features/login/impl/src/main/res/values-uz/translations.xml index db16e17b09..d3f1af3ea7 100644 --- a/features/login/impl/src/main/res/values-uz/translations.xml +++ b/features/login/impl/src/main/res/values-uz/translations.xml @@ -19,6 +19,7 @@ "Siz faqat siljish sinxronlashni qo\'llab-quvvatlaydigan mavjud serverga ulanishingiz mumkin. Uy serveringiz administratori uni sozlashi kerak.%1$s" "Serveringizning manzili nima?" "Serveringizni tanlang" + "Hisob yaratish" "Bu hisob o‘chirilgan." "Notog\'ri foydalanuvchi nomi va/yoki parol" "Bu haqiqiy foydalanuvchi identifikatori emas. Kutilayotgan format: \'@user:homeserver.org\'" 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 new file mode 100644 index 0000000000..b0570cee93 --- /dev/null +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt @@ -0,0 +1,84 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.login.impl.accountprovider + +import 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.tests.testutils.WarmUpRule +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test + +class AccountProviderDataSourceTest { + @get:Rule + val warmUpRule = WarmUpRule() + + @Test + fun `present - initial state`() = runTest { + val sut = AccountProviderDataSource(FakeEnterpriseService()) + sut.flow().test { + val initialState = awaitItem() + assertThat(initialState).isEqualTo( + AccountProvider( + url = FakeEnterpriseService.A_FAKE_HOMESERVER, + title = FakeEnterpriseService.A_FAKE_HOMESERVER, + subtitle = null, + isPublic = false, + isMatrixOrg = false, + isValid = false, + ) + ) + } + } + + @Test + fun `present - initial state - matrix org`() = runTest { + val sut = AccountProviderDataSource(FakeEnterpriseService( + defaultHomeserverResult = { AuthenticationConfig.MATRIX_ORG_URL } + )) + sut.flow().test { + val initialState = awaitItem() + assertThat(initialState).isEqualTo( + AccountProvider( + url = AuthenticationConfig.MATRIX_ORG_URL, + title = "matrix.org", + subtitle = null, + isPublic = true, + isMatrixOrg = true, + isValid = false, + ) + ) + } + } + + @Test + fun `present - user change and reset`() = runTest { + val sut = AccountProviderDataSource(FakeEnterpriseService()) + sut.flow().test { + val initialState = awaitItem() + assertThat(initialState.url).isEqualTo(FakeEnterpriseService.A_FAKE_HOMESERVER) + sut.userSelection(AccountProvider(url = "https://example.com")) + val changedState = awaitItem() + assertThat(changedState).isEqualTo( + AccountProvider( + url = "https://example.com", + title = "example.com", + subtitle = null, + isPublic = false, + isMatrixOrg = false, + isValid = false, + ) + ) + sut.reset() + val resetState = awaitItem() + assertThat(resetState.url).isEqualTo(FakeEnterpriseService.A_FAKE_HOMESERVER) + } + } +} 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 2dbde8633e..15b8856969 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 @@ -7,10 +7,8 @@ package io.element.android.features.login.impl.changeserver -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.test.FakeEnterpriseService import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.architecture.AsyncData @@ -18,6 +16,7 @@ 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.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -28,13 +27,7 @@ class ChangeServerPresenterTest { @Test fun `present - initial state`() = runTest { - val presenter = ChangeServerPresenter( - FakeMatrixAuthenticationService(), - AccountProviderDataSource() - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createPresenter().test { val initialState = awaitItem() assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized) } @@ -43,13 +36,9 @@ class ChangeServerPresenterTest { @Test fun `present - change server ok`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val presenter = ChangeServerPresenter( - authenticationService, - AccountProviderDataSource() - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createPresenter( + authenticationService = authenticationService, + ).test { val initialState = awaitItem() assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized) authenticationService.givenHomeserver(A_HOMESERVER) @@ -63,14 +52,7 @@ class ChangeServerPresenterTest { @Test fun `present - change server error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - val presenter = ChangeServerPresenter( - authenticationService, - AccountProviderDataSource() - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createPresenter().test { val initialState = awaitItem() assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized) initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL))) @@ -84,4 +66,12 @@ class ChangeServerPresenterTest { assertThat(finalState.changeServerAction).isEqualTo(AsyncData.Uninitialized) } } + + private fun createPresenter( + authenticationService: FakeMatrixAuthenticationService = FakeMatrixAuthenticationService(), + accountProviderDataSource: AccountProviderDataSource = AccountProviderDataSource(FakeEnterpriseService()), + ) = ChangeServerPresenter( + authenticationService = authenticationService, + accountProviderDataSource = accountProviderDataSource + ) } 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 3ff604a1c5..89065f95ea 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 @@ -11,10 +11,10 @@ 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.test.FakeEnterpriseService import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.features.login.impl.screens.createaccount.AccountCreationNotSupported -import io.element.android.features.login.impl.util.defaultAccountProvider import io.element.android.features.login.impl.web.FakeWebClientUrlForAuthenticationRetriever import io.element.android.features.login.impl.web.WebClientUrlForAuthenticationRetriever import io.element.android.libraries.architecture.AsyncData @@ -44,7 +44,7 @@ class ConfirmAccountProviderPresenterTest { val initialState = awaitItem() assertThat(initialState.isAccountCreation).isFalse() assertThat(initialState.submitEnabled).isTrue() - assertThat(initialState.accountProvider).isEqualTo(defaultAccountProvider) + assertThat(initialState.accountProvider.url).isEqualTo(FakeEnterpriseService.A_FAKE_HOMESERVER) assertThat(initialState.loginFlow).isEqualTo(AsyncData.Uninitialized) } } @@ -350,7 +350,7 @@ class ConfirmAccountProviderPresenterTest { private fun createConfirmAccountProviderPresenter( params: ConfirmAccountProviderPresenter.Params = ConfirmAccountProviderPresenter.Params(isAccountCreation = false), - accountProviderDataSource: AccountProviderDataSource = AccountProviderDataSource(), + accountProviderDataSource: AccountProviderDataSource = AccountProviderDataSource(FakeEnterpriseService()), matrixAuthenticationService: MatrixAuthenticationService = FakeMatrixAuthenticationService(), defaultOidcActionFlow: DefaultOidcActionFlow = DefaultOidcActionFlow(), defaultLoginUserStory: DefaultLoginUserStory = DefaultLoginUserStory(), 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 e118570f4e..8c39685316 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 @@ -8,8 +8,8 @@ package io.element.android.features.login.impl.screens.createaccount import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource -import io.element.android.features.login.impl.util.defaultAccountProvider import io.element.android.libraries.matrix.api.auth.external.ExternalSession import kotlinx.serialization.SerializationException import org.junit.Assert.assertThrows @@ -27,9 +27,7 @@ class DefaultMessageParserTest { @Test fun `DefaultMessageParser is able to parse correct message`() { - val sut = DefaultMessageParser( - AccountProviderDataSource() - ) + val sut = createDefaultMessageParser() assertThat(sut.parse(validMessage)).isEqualTo( anExternalSession( homeserverUrl = "home_server", @@ -39,9 +37,7 @@ class DefaultMessageParserTest { @Test fun `DefaultMessageParser should throw Exception in case of error`() { - val sut = DefaultMessageParser( - AccountProviderDataSource() - ) + val sut = createDefaultMessageParser() // kotlinx.serialization.json.internal.JsonDecodingException assertThrows(SerializationException::class.java) { sut.parse("invalid json") } // missing userId @@ -60,16 +56,20 @@ class DefaultMessageParserTest { @Test fun `DefaultMessageParser should be successful even is homeserver url is missing`() { - val sut = DefaultMessageParser( - AccountProviderDataSource() - ) + val sut = createDefaultMessageParser() // missing homeServer assertThat(sut.parse(validMessage.replace(""""home_server": "home_server",""", ""))).isEqualTo( anExternalSession( - homeserverUrl = defaultAccountProvider.url, + homeserverUrl = FakeEnterpriseService.A_FAKE_HOMESERVER, ) ) } + + private fun createDefaultMessageParser(): DefaultMessageParser { + return DefaultMessageParser( + AccountProviderDataSource(FakeEnterpriseService()) + ) + } } internal fun anExternalSession( 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 cced3fece5..bb5b226536 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 @@ -7,13 +7,10 @@ package io.element.android.features.login.impl.screens.loginpassword -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.test.FakeEnterpriseService import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource -import io.element.android.features.login.impl.util.defaultAccountProvider import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.test.A_HOMESERVER @@ -23,6 +20,7 @@ import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_USER_NAME import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -33,19 +31,9 @@ class LoginPasswordPresenterTest { @Test fun `present - initial state`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - val accountProviderDataSource = AccountProviderDataSource() - val loginUserStory = DefaultLoginUserStory() - val presenter = LoginPasswordPresenter( - authenticationService, - accountProviderDataSource, - loginUserStory, - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoginPasswordPresenter().test { val initialState = awaitItem() - assertThat(initialState.accountProvider).isEqualTo(defaultAccountProvider) + assertThat(initialState.accountProvider.url).isEqualTo(FakeEnterpriseService.A_FAKE_HOMESERVER) assertThat(initialState.formState).isEqualTo(LoginFormState.Default) assertThat(initialState.loginAction).isEqualTo(AsyncData.Uninitialized) assertThat(initialState.submitEnabled).isFalse() @@ -55,17 +43,10 @@ class LoginPasswordPresenterTest { @Test fun `present - enter login and password`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val accountProviderDataSource = AccountProviderDataSource() - val loginUserStory = DefaultLoginUserStory() - val presenter = LoginPasswordPresenter( - authenticationService, - accountProviderDataSource, - loginUserStory, - ) authenticationService.givenHomeserver(A_HOMESERVER) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoginPasswordPresenter( + authenticationService = authenticationService, + ).test { val initialState = awaitItem() initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) val loginState = awaitItem() @@ -81,17 +62,12 @@ class LoginPasswordPresenterTest { @Test fun `present - submit`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val accountProviderDataSource = AccountProviderDataSource() - val loginUserStory = DefaultLoginUserStory().apply { setLoginFlowIsDone(false) } - val presenter = LoginPasswordPresenter( - authenticationService, - accountProviderDataSource, - loginUserStory, - ) authenticationService.givenHomeserver(A_HOMESERVER) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + val loginUserStory = DefaultLoginUserStory().apply { setLoginFlowIsDone(false) } + createLoginPasswordPresenter( + authenticationService = authenticationService, + defaultLoginUserStory = loginUserStory, + ).test { assertThat(loginUserStory.loginFlowIsDone.value).isFalse() val initialState = awaitItem() initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) @@ -110,17 +86,10 @@ class LoginPasswordPresenterTest { @Test fun `present - submit with error`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val accountProviderDataSource = AccountProviderDataSource() - val loginUserStory = DefaultLoginUserStory() - val presenter = LoginPasswordPresenter( - authenticationService, - accountProviderDataSource, - loginUserStory, - ) authenticationService.givenHomeserver(A_HOMESERVER) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoginPasswordPresenter( + authenticationService = authenticationService, + ).test { val initialState = awaitItem() initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) @@ -138,17 +107,10 @@ class LoginPasswordPresenterTest { @Test fun `present - clear error`() = runTest { val authenticationService = FakeMatrixAuthenticationService() - val accountProviderDataSource = AccountProviderDataSource() - val loginUserStory = DefaultLoginUserStory() - val presenter = LoginPasswordPresenter( - authenticationService, - accountProviderDataSource, - loginUserStory, - ) authenticationService.givenHomeserver(A_HOMESERVER) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + createLoginPasswordPresenter( + authenticationService = authenticationService, + ).test { val initialState = awaitItem() initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) @@ -167,4 +129,14 @@ class LoginPasswordPresenterTest { assertThat(clearedState.loginAction).isEqualTo(AsyncData.Uninitialized) } } + + private fun createLoginPasswordPresenter( + authenticationService: FakeMatrixAuthenticationService = FakeMatrixAuthenticationService(), + accountProviderDataSource: AccountProviderDataSource = AccountProviderDataSource(FakeEnterpriseService()), + defaultLoginUserStory: DefaultLoginUserStory = DefaultLoginUserStory() + ): LoginPasswordPresenter = LoginPasswordPresenter( + authenticationService = authenticationService, + accountProviderDataSource = accountProviderDataSource, + defaultLoginUserStory = defaultLoginUserStory, + ) } 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 5d60d642fd..17f67813ca 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 @@ -16,7 +16,6 @@ interface LogoutEntryPoint : FeatureEntryPoint { fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { - fun onSuccessfulLogoutPendingAction(action: () -> Unit): NodeBuilder fun callback(callback: Callback): NodeBuilder fun build(): Node } diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutUseCase.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutUseCase.kt index 32058bd154..6f265ec88c 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutUseCase.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutUseCase.kt @@ -14,10 +14,8 @@ interface LogoutUseCase { /** * Log out the current user and then perform any needed cleanup tasks. * @param ignoreSdkError if true, the SDK error will be ignored and the user will be logged out anyway. - * @return an optional URL. When the URL is there, it should be presented to the user after logout for - * Relying Party (RP) initiated logout on their account page. */ - suspend fun logout(ignoreSdkError: Boolean): String? + suspend fun logout(ignoreSdkError: Boolean) interface Factory { fun create(sessionId: String): LogoutUseCase diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutState.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutState.kt index 1e28d2d7fc..4e040b30bd 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutState.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutState.kt @@ -11,6 +11,6 @@ import io.element.android.libraries.architecture.AsyncAction data class DirectLogoutState( val canDoDirectSignOut: Boolean, - val logoutAction: AsyncAction, + val logoutAction: AsyncAction, val eventSink: (DirectLogoutEvents) -> Unit, ) diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt index a02b1fc619..993ad3cf0c 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt @@ -17,13 +17,13 @@ open class DirectLogoutStateProvider : PreviewParameterProvider = AsyncAction.Uninitialized, + logoutAction: AsyncAction = AsyncAction.Uninitialized, eventSink: (DirectLogoutEvents) -> Unit = {}, ) = DirectLogoutState( canDoDirectSignOut = canDoDirectSignOut, diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutView.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutView.kt index be5c2d4d52..4d6b6df3d2 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutView.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutView.kt @@ -11,8 +11,5 @@ import androidx.compose.runtime.Composable interface DirectLogoutView { @Composable - fun Render( - state: DirectLogoutState, - onSuccessLogout: (logoutUrlResult: String?) -> Unit - ) + fun Render(state: DirectLogoutState) } diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/util/Util.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/util/Util.kt deleted file mode 100644 index 87dff8e4f0..0000000000 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/util/Util.kt +++ /dev/null @@ -1,23 +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.features.logout.api.util - -import android.app.Activity -import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab -import timber.log.Timber - -fun onSuccessLogout( - activity: Activity, - darkTheme: Boolean, - url: String?, -) { - Timber.d("Success logout with result url: $url") - url?.let { - activity.openUrlInChromeCustomTab(null, darkTheme, it) - } -} 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 9abcd1304a..0c651eb077 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 @@ -27,15 +27,6 @@ class DefaultLogoutEntryPoint @Inject constructor() : LogoutEntryPoint { return this } - override fun onSuccessfulLogoutPendingAction(action: () -> Unit): LogoutEntryPoint.NodeBuilder { - plugins += object : LogoutNode.SuccessfulLogoutPendingAction, Plugin { - override fun onSuccessfulLogoutPendingAction() { - action() - } - } - return this - } - override fun build(): Node { return parentNode.createNode(buildContext, plugins) } 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 8ede6ddcfa..59906b1d74 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 @@ -19,9 +19,9 @@ class DefaultLogoutUseCase @Inject constructor( private val authenticationService: MatrixAuthenticationService, private val matrixClientProvider: MatrixClientProvider, ) : LogoutUseCase { - override suspend fun logout(ignoreSdkError: Boolean): String? { + override suspend fun logout(ignoreSdkError: Boolean) { val currentSession = authenticationService.getLatestSessionId() - return if (currentSession != null) { + if (currentSession != null) { matrixClientProvider.getOrRestore(currentSession) .getOrThrow() .logout(userInitiated = true, ignoreSdkError = true) 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 140982f0e8..382ef75b62 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 @@ -7,10 +7,8 @@ package io.element.android.features.logout.impl -import android.app.Activity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -18,9 +16,7 @@ import com.bumble.appyx.core.plugin.plugins import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode -import io.element.android.compound.theme.ElementTheme import io.element.android.features.logout.api.LogoutEntryPoint -import io.element.android.features.logout.api.util.onSuccessLogout import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -33,24 +29,12 @@ class LogoutNode @AssistedInject constructor( plugins().forEach { it.onChangeRecoveryKeyClick() } } - interface SuccessfulLogoutPendingAction : Plugin { - fun onSuccessfulLogoutPendingAction() - } - - private val customOnSuccessfulLogoutPendingAction = plugins().firstOrNull() - @Composable override fun View(modifier: Modifier) { val state = presenter.present() - val activity = LocalContext.current as Activity - val isDark = ElementTheme.isLightTheme.not() LogoutView( state = state, onChangeRecoveryKeyClick = ::onChangeRecoveryKeyClick, - onSuccessLogout = { - customOnSuccessfulLogoutPendingAction?.onSuccessfulLogoutPendingAction() - onSuccessLogout(activity, isDark, it) - }, onBackClick = ::navigateUp, modifier = modifier, ) 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 99efefcedf..c26f3a7407 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 @@ -35,7 +35,7 @@ class LogoutPresenter @Inject constructor( @Composable override fun present(): LogoutState { val localCoroutineScope = rememberCoroutineScope() - val logoutAction: MutableState> = remember { + val logoutAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } @@ -91,7 +91,7 @@ class LogoutPresenter @Inject constructor( } private fun CoroutineScope.logout( - logoutAction: MutableState>, + logoutAction: MutableState>, ignoreSdkError: Boolean, ) = launch { suspend { diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutState.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutState.kt index 3e889c0962..2f84c837c6 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutState.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutState.kt @@ -18,6 +18,6 @@ data class LogoutState( val doesBackupExistOnServer: Boolean, val recoveryState: RecoveryState, val backupUploadState: BackupUploadState, - val logoutAction: AsyncAction, + val logoutAction: AsyncAction, val eventSink: (LogoutEvents) -> Unit, ) diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutStateProvider.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutStateProvider.kt index 456ec6ce16..12e83fc713 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutStateProvider.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutStateProvider.kt @@ -38,7 +38,7 @@ fun aLogoutState( doesBackupExistOnServer: Boolean = true, recoveryState: RecoveryState = RecoveryState.ENABLED, backupUploadState: BackupUploadState = BackupUploadState.Unknown, - logoutAction: AsyncAction = AsyncAction.Uninitialized, + logoutAction: AsyncAction = AsyncAction.Uninitialized, eventSink: (LogoutEvents) -> Unit = {}, ) = LogoutState( isLastDevice = isLastDevice, diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt index 2f54294ea8..f8e5a428c2 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt @@ -45,7 +45,6 @@ fun LogoutView( state: LogoutState, onChangeRecoveryKeyClick: () -> Unit, onBackClick: () -> Unit, - onSuccessLogout: (logoutUrlResult: String?) -> Unit, modifier: Modifier = Modifier, ) { val eventSink = state.eventSink @@ -80,9 +79,6 @@ fun LogoutView( onDismissDialog = { eventSink(LogoutEvents.CloseDialogs) }, - onSuccessLogout = { - onSuccessLogout(it) - }, ) } @@ -177,7 +173,6 @@ internal fun LogoutViewPreview( LogoutView( state, onChangeRecoveryKeyClick = {}, - onSuccessLogout = {}, onBackClick = {}, ) } 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 3ec8ed3c39..e1cf8aa656 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 @@ -23,10 +23,7 @@ import javax.inject.Inject @ContributesBinding(SessionScope::class) class DefaultDirectLogoutView @Inject constructor() : DirectLogoutView { @Composable - override fun Render( - state: DirectLogoutState, - onSuccessLogout: (logoutUrlResult: String?) -> Unit, - ) { + override fun Render(state: DirectLogoutState) { val eventSink = state.eventSink LogoutActionDialog( state.logoutAction, @@ -39,9 +36,6 @@ class DefaultDirectLogoutView @Inject constructor() : DirectLogoutView { onDismissDialog = { eventSink(DirectLogoutEvents.CloseDialogs) }, - onSuccessLogout = { - onSuccessLogout(it) - }, ) } } @@ -51,8 +45,5 @@ class DefaultDirectLogoutView @Inject constructor() : DirectLogoutView { internal fun DefaultDirectLogoutViewPreview( @PreviewParameter(DirectLogoutStateProvider::class) state: DirectLogoutState, ) = ElementPreview { - DefaultDirectLogoutView().Render( - state = state, - onSuccessLogout = {}, - ) + DefaultDirectLogoutView().Render(state = state) } 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 63d1484655..4694b6dc2f 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 @@ -35,7 +35,7 @@ class DirectLogoutPresenter @Inject constructor( override fun present(): DirectLogoutState { val localCoroutineScope = rememberCoroutineScope() - val logoutAction: MutableState> = remember { + val logoutAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } @@ -70,7 +70,7 @@ class DirectLogoutPresenter @Inject constructor( } private fun CoroutineScope.logout( - logoutAction: MutableState>, + logoutAction: MutableState>, ignoreSdkError: Boolean, ) = launch { suspend { diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt index 9998a1c930..7249871772 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt @@ -8,9 +8,7 @@ package io.element.android.features.logout.impl.ui import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.res.stringResource import io.element.android.features.logout.impl.R import io.element.android.libraries.architecture.AsyncAction @@ -20,11 +18,10 @@ import io.element.android.libraries.ui.strings.CommonStrings @Composable fun LogoutActionDialog( - state: AsyncAction, + state: AsyncAction, onConfirmClick: () -> Unit, onForceLogoutClick: () -> Unit, onDismissDialog: () -> Unit, - onSuccessLogout: (String?) -> Unit, ) { when (state) { AsyncAction.Uninitialized -> @@ -44,11 +41,6 @@ fun LogoutActionDialog( onRetry = onForceLogoutClick, onDismiss = onDismissDialog, ) - is AsyncAction.Success -> { - val latestOnSuccessLogout by rememberUpdatedState(onSuccessLogout) - LaunchedEffect(state) { - latestOnSuccessLogout(state.data) - } - } + is AsyncAction.Success -> Unit } } diff --git a/features/logout/impl/src/main/res/values-tr/translations.xml b/features/logout/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..6e1ac9cb60 --- /dev/null +++ b/features/logout/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,18 @@ + + + "Çıkış yapmak istediğinize emin misiniz?" + "Oturumu kapat" + "Oturumu kapat" + "Oturum kapatılıyor…" + "Son oturumunuzdan çıkmak üzeresiniz. Şimdi çıkış yaparsanız, şifrelenmiş mesajlarınıza erişiminizi kaybedersiniz." + "Yedeklemeyi kapattınız" + "Çevrimdışı olduğunuzda anahtarlarınız hala yedekleniyordu. Oturumu kapatmadan önce anahtarlarınızın yedeklenebilmesi için yeniden bağlanın." + "Anahtarlarınız hala yedekleniyor" + "Lütfen oturumu kapatmadan önce bunun tamamlanmasını bekleyin." + "Anahtarlarınız hala yedekleniyor" + "Oturumu kapat" + "Son oturumunuzdan çıkmak üzeresiniz. Şimdi çıkış yaparsanız şifrelenmiş mesajlarınıza erişiminizi kaybedersiniz." + "Kurtarma ayarlanmadı" + "Son oturumunuzdan çıkmak üzeresiniz. Şimdi oturumu kapatırsanız şifrelenmiş mesajlarınıza erişiminizi kaybedebilirsiniz." + "Kurtarma anahtarınızı kaydettiniz mi?" + diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt index 4d078f0b96..00e294f7d1 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt @@ -15,11 +15,9 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.tests.testutils.EnsureNeverCalled -import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.clickOn import io.element.android.tests.testutils.ensureCalledOnce -import io.element.android.tests.testutils.ensureCalledOnceWithParam import io.element.android.tests.testutils.pressBack import io.element.android.tests.testutils.pressTag import org.junit.Rule @@ -96,21 +94,6 @@ class LogoutViewTest { eventsRecorder.assertSingle(LogoutEvents.CloseDialogs) } - @Test - fun `success logout invoke onSuccessLogout`() { - val data = "data" - val eventsRecorder = EventsRecorder(expectEvents = false) - ensureCalledOnceWithParam(data) { callback -> - rule.setLogoutView( - aLogoutState( - logoutAction = AsyncAction.Success(data), - eventSink = eventsRecorder - ), - onSuccessLogout = callback, - ) - } - } - @Test fun `last session setting button invoke onChangeRecoveryKeyClicked`() { val eventsRecorder = EventsRecorder(expectEvents = false) @@ -131,14 +114,12 @@ private fun AndroidComposeTestRule.setLogou state: LogoutState, onChangeRecoveryKeyClick: () -> Unit = EnsureNeverCalled(), onBackClick: () -> Unit = EnsureNeverCalled(), - onSuccessLogout: (logoutUrlResult: String?) -> Unit = EnsureNeverCalledWithParam() ) { setContent { LogoutView( state = state, onChangeRecoveryKeyClick = onChangeRecoveryKeyClick, onBackClick = onBackClick, - onSuccessLogout = onSuccessLogout, ) } } diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutViewTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutViewTest.kt index 24e00e2998..3581f682fa 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutViewTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutViewTest.kt @@ -16,10 +16,8 @@ import io.element.android.features.logout.api.direct.DirectLogoutState import io.element.android.features.logout.api.direct.aDirectLogoutState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.ui.strings.CommonStrings -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.ensureCalledOnceWithParam import io.element.android.tests.testutils.pressBackKey import org.junit.Ignore import org.junit.Rule @@ -96,45 +94,12 @@ class DefaultDirectLogoutViewTest { rule.clickOn(CommonStrings.action_cancel) eventsRecorder.assertSingle(DirectLogoutEvents.CloseDialogs) } - - @Test - fun `success logout invoke expected callback and sends expected Event`() { - val eventsRecorder = EventsRecorder(expectEvents = false) - ensureCalledOnceWithParam(null) { callback -> - rule.setDefaultDirectLogoutView( - state = aDirectLogoutState( - logoutAction = AsyncAction.Success(null), - eventSink = eventsRecorder, - ), - onSuccessLogout = callback - ) - } - } - - @Test - fun `success logout invoke expected callback and sends expected Event with data`() { - val eventsRecorder = EventsRecorder(expectEvents = false) - val data = "data" - ensureCalledOnceWithParam(data) { callback -> - rule.setDefaultDirectLogoutView( - state = aDirectLogoutState( - logoutAction = AsyncAction.Success(data), - eventSink = eventsRecorder, - ), - onSuccessLogout = callback - ) - } - } } private fun AndroidComposeTestRule.setDefaultDirectLogoutView( state: DirectLogoutState, - onSuccessLogout: (String?) -> Unit = EnsureNeverCalledWithParam(), ) { setContent { - DefaultDirectLogoutView().Render( - state, - onSuccessLogout = onSuccessLogout, - ) + DefaultDirectLogoutView().Render(state) } } diff --git a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt index dadccf1b26..e71266b596 100644 --- a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt +++ b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt @@ -12,9 +12,9 @@ import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.simulateLongTask class FakeLogoutUseCase( - var logoutLambda: (Boolean) -> String? = { lambdaError() } + var logoutLambda: (Boolean) -> Unit = { lambdaError() } ) : LogoutUseCase { - override suspend fun logout(ignoreSdkError: Boolean): String? = simulateLongTask { + override suspend fun logout(ignoreSdkError: Boolean) = simulateLongTask { logoutLambda(ignoreSdkError) } } 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 6b84423d44..2a84150540 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 @@ -71,6 +71,7 @@ import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.alias.matches import io.element.android.libraries.matrix.api.room.joinedRoomMembers +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.ui.messages.LocalRoomMemberProfilesCache import io.element.android.libraries.matrix.ui.messages.RoomMemberProfilesCache @@ -187,8 +188,11 @@ class MessagesFlowNode @AssistedInject constructor( callbacks.forEach { it.onRoomDetailsClick() } } - override fun onEventClick(event: TimelineItem.Event): Boolean { - return processEventClick(event) + override fun onEventClick(isLive: Boolean, event: TimelineItem.Event): Boolean { + return processEventClick( + timelineMode = if (isLive) Timeline.Mode.LIVE else Timeline.Mode.FOCUSED_ON_EVENT, + event = event, + ) } override fun onPreviewAttachments(attachments: ImmutableList) { @@ -316,7 +320,10 @@ class MessagesFlowNode @AssistedInject constructor( NavTarget.PinnedMessagesList -> { val callback = object : PinnedMessagesListNode.Callback { override fun onEventClick(event: TimelineItem.Event) { - processEventClick(event) + processEventClick( + timelineMode = Timeline.Mode.PINNED_EVENTS, + event = event, + ) } override fun onUserDataClick(userId: UserId) { @@ -358,11 +365,14 @@ class MessagesFlowNode @AssistedInject constructor( callbacks.forEach { it.onPermalinkClick(permalinkData, pushToBackstack = false) } } - private fun processEventClick(event: TimelineItem.Event): Boolean { + private fun processEventClick( + timelineMode: Timeline.Mode, + event: TimelineItem.Event, + ): Boolean { val navTarget = when (event.content) { is TimelineItemImageContent -> { buildMediaViewerNavTarget( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos(timelineMode), event = event, content = event.content, mediaSource = event.content.mediaSource, @@ -374,7 +384,7 @@ class MessagesFlowNode @AssistedInject constructor( if encrypted on certain bridges */ event.content.preferredMediaSource?.let { preferredMediaSource -> buildMediaViewerNavTarget( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos(timelineMode), event = event, content = event.content, mediaSource = preferredMediaSource, @@ -384,7 +394,7 @@ class MessagesFlowNode @AssistedInject constructor( } is TimelineItemVideoContent -> { buildMediaViewerNavTarget( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos(timelineMode), event = event, content = event.content, mediaSource = event.content.mediaSource, @@ -393,7 +403,7 @@ class MessagesFlowNode @AssistedInject constructor( } is TimelineItemFileContent -> { buildMediaViewerNavTarget( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios(timelineMode), event = event, content = event.content, mediaSource = event.content.mediaSource, @@ -402,7 +412,7 @@ class MessagesFlowNode @AssistedInject constructor( } is TimelineItemAudioContent -> { buildMediaViewerNavTarget( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios(timelineMode), event = event, content = event.content, mediaSource = event.content.mediaSource, 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 2ab3bbbc86..a8076d023c 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.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -17,7 +18,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.Lifecycle import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext @@ -40,6 +40,7 @@ import io.element.android.features.messages.impl.timeline.di.LocalTimelineItemPr import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories 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.androidutils.system.toast import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.inputs @@ -88,7 +89,7 @@ class MessagesNode @AssistedInject constructor( interface Callback : Plugin { fun onRoomDetailsClick() - fun onEventClick(event: TimelineItem.Event): Boolean + fun onEventClick(isLive: Boolean, event: TimelineItem.Event): Boolean fun onPreviewAttachments(attachments: ImmutableList) fun onUserDataClick(userId: UserId) fun onPermalinkClick(data: PermalinkData) @@ -119,12 +120,12 @@ class MessagesNode @AssistedInject constructor( callbacks.forEach { it.onRoomDetailsClick() } } - private fun onEventClick(event: TimelineItem.Event): Boolean { + private fun onEventClick(isLive: Boolean, 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.onEventClick(event) } + ?.map { it.onEventClick(isLive, event) } ?.all { it } .orFalse() } @@ -138,6 +139,7 @@ class MessagesNode @AssistedInject constructor( darkTheme: Boolean, url: String, eventSink: (TimelineEvents) -> Unit, + customTab: Boolean ) { when (val permalink = permalinkParser.parse(url)) { is PermalinkData.UserLink -> { @@ -148,7 +150,13 @@ class MessagesNode @AssistedInject constructor( is PermalinkData.RoomLink -> { handleRoomLinkClick(activity, permalink, eventSink) } - is PermalinkData.FallbackLink, + is PermalinkData.FallbackLink -> { + if (customTab) { + activity.openUrlInChromeCustomTab(null, darkTheme, url) + } else { + activity.openUrlInExternalApp(url) + } + } is PermalinkData.RoomEmailInviteLink -> { activity.openUrlInChromeCustomTab(null, darkTheme, url) } @@ -215,7 +223,7 @@ class MessagesNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) val isDark = ElementTheme.isLightTheme.not() CompositionLocalProvider( LocalTimelineItemPresenterFactories provides timelineItemPresenterFactories, @@ -233,7 +241,7 @@ class MessagesNode @AssistedInject constructor( onRoomDetailsClick = this::onRoomDetailsClick, onEventContentClick = this::onEventClick, onUserDataClick = this::onUserDataClick, - onLinkClick = { url -> onLinkClick(activity, isDark, url, state.timelineState.eventSink) }, + onLinkClick = { url, customTab -> onLinkClick(activity, isDark, url, state.timelineState.eventSink, customTab) }, onSendLocationClick = this::onSendLocationClick, onCreatePollClick = this::onCreatePollClick, onJoinCallClick = this::onJoinCallClick, 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 547f5f6161..6b1f50c41d 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 @@ -33,6 +33,7 @@ import io.element.android.features.messages.impl.actionlist.model.TimelineItemAc import io.element.android.features.messages.impl.crypto.identity.IdentityChangeState 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.messagecomposer.observeRoomMemberIdentityStateChange import io.element.android.features.messages.impl.pinned.banner.PinnedMessagesBannerState import io.element.android.features.messages.impl.timeline.TimelineController import io.element.android.features.messages.impl.timeline.TimelineEvents @@ -78,6 +79,7 @@ import io.element.android.libraries.matrix.ui.model.getAvatarData import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.analytics.api.AnalyticsService +import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -154,7 +156,9 @@ class MessagesPresenter @AssistedInject constructor( var hasDismissedInviteDialog by rememberSaveable { mutableStateOf(false) } - + val roomMemberIdentityStateChanges by produceState(persistentListOf()) { + observeRoomMemberIdentityStateChange(room) + } LaunchedEffect(Unit) { // Remove the unread flag on entering but don't send read receipts // as those will be handled by the timeline. @@ -211,6 +215,7 @@ class MessagesPresenter @AssistedInject constructor( roomAvatar = roomAvatar, heroes = heroes, composerState = composerState, + roomMemberIdentityStateChanges = roomMemberIdentityStateChanges, userEventPermissions = userEventPermissions, voiceMessageComposerState = voiceMessageComposerState, timelineState = timelineState, 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 5db91b3045..61f092eaf9 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 @@ -10,6 +10,7 @@ package io.element.android.features.messages.impl import androidx.compose.runtime.Immutable import io.element.android.features.messages.impl.actionlist.ActionListState import io.element.android.features.messages.impl.crypto.identity.IdentityChangeState +import io.element.android.features.messages.impl.crypto.identity.RoomMemberIdentityStateChange 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.TimelineState @@ -33,6 +34,7 @@ data class MessagesState( val heroes: ImmutableList, val userEventPermissions: UserEventPermissions, val composerState: MessageComposerState, + val roomMemberIdentityStateChanges: ImmutableList, val voiceMessageComposerState: VoiceMessageComposerState, val timelineState: TimelineState, val timelineProtectionState: TimelineProtectionState, 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 308efd8eac..a73a4c1565 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 @@ -11,6 +11,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.messages.impl.actionlist.ActionListState import io.element.android.features.messages.impl.actionlist.anActionListState import io.element.android.features.messages.impl.crypto.identity.IdentityChangeState +import io.element.android.features.messages.impl.crypto.identity.RoomMemberIdentityStateChange import io.element.android.features.messages.impl.crypto.identity.anIdentityChangeState import io.element.android.features.messages.impl.messagecomposer.MessageComposerState import io.element.android.features.messages.impl.messagecomposer.aMessageComposerState @@ -41,6 +42,7 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.libraries.textcomposer.model.aTextEditorStateRich +import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentSetOf @@ -92,6 +94,7 @@ fun aMessagesState( isFullScreen = false, mode = MessageComposerMode.Normal, ), + roomMemberIdentityStateChanges: ImmutableList = persistentListOf(), voiceMessageComposerState: VoiceMessageComposerState = aVoiceMessageComposerState(), timelineState: TimelineState = aTimelineState( timelineItems = aTimelineItemList(aTimelineItemTextContent()), @@ -117,6 +120,7 @@ fun aMessagesState( heroes = persistentListOf(), userEventPermissions = userEventPermissions, composerState = composerState, + roomMemberIdentityStateChanges = roomMemberIdentityStateChanges, voiceMessageComposerState = voiceMessageComposerState, timelineProtectionState = timelineProtectionState, identityChangeState = identityChangeState, 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 02ad1cf87f..a7d312b816 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 @@ -55,6 +55,7 @@ import io.element.android.features.messages.impl.actionlist.ActionListView import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction import io.element.android.features.messages.impl.crypto.identity.IdentityChangeStateView import io.element.android.features.messages.impl.messagecomposer.AttachmentsBottomSheet +import io.element.android.features.messages.impl.messagecomposer.DisabledComposerView import io.element.android.features.messages.impl.messagecomposer.MessageComposerEvents import io.element.android.features.messages.impl.messagecomposer.MessageComposerView import io.element.android.features.messages.impl.messagecomposer.suggestions.SuggestionsPickerView @@ -97,6 +98,7 @@ 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.EventId import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.libraries.matrix.api.encryption.identity.IdentityState import io.element.android.libraries.textcomposer.model.TextEditorState import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList @@ -109,9 +111,9 @@ fun MessagesView( state: MessagesState, onBackClick: () -> Unit, onRoomDetailsClick: () -> Unit, - onEventContentClick: (event: TimelineItem.Event) -> Boolean, + onEventContentClick: (isLive: Boolean, event: TimelineItem.Event) -> Boolean, onUserDataClick: (UserId) -> Unit, - onLinkClick: (String) -> Unit, + onLinkClick: (String, Boolean) -> Unit, onSendLocationClick: () -> Unit, onCreatePollClick: () -> Unit, onJoinCallClick: () -> Unit, @@ -140,7 +142,7 @@ fun MessagesView( fun onContentClick(event: TimelineItem.Event) { Timber.v("onMessageClick= ${event.id}") - val hideKeyboard = onEventContentClick(event) + val hideKeyboard = onEventContentClick(state.timelineState.isLive, event) if (hideKeyboard) { localView.hideKeyboard() } @@ -196,8 +198,8 @@ fun MessagesView( MessagesViewContent( state = state, modifier = Modifier - .padding(padding) - .consumeWindowInsets(padding), + .padding(padding) + .consumeWindowInsets(padding), onContentClick = ::onContentClick, onMessageLongClick = ::onMessageLongClick, onUserDataClick = { hidingKeyboard { onUserDataClick(it) } }, @@ -273,7 +275,7 @@ private fun MessagesViewContent( state: MessagesState, onContentClick: (TimelineItem.Event) -> Unit, onUserDataClick: (UserId) -> Unit, - onLinkClick: (String) -> Unit, + onLinkClick: (String, Boolean) -> Unit, onReactionClick: (key: String, TimelineItem.Event) -> Unit, onReactionLongClick: (key: String, TimelineItem.Event) -> Unit, onMoreReactionsClick: (TimelineItem.Event) -> Unit, @@ -290,9 +292,9 @@ private fun MessagesViewContent( ) { Box( modifier = modifier - .fillMaxSize() - .navigationBarsPadding() - .imePadding(), + .fillMaxSize() + .navigationBarsPadding() + .imePadding(), ) { AttachmentsBottomSheet( state = state.composerState, @@ -347,7 +349,7 @@ private fun MessagesViewContent( state = state.timelineState, timelineProtectionState = state.timelineProtectionState, onUserDataClick = onUserDataClick, - onLinkClick = onLinkClick, + onLinkClick = { url -> onLinkClick(url, false) }, onContentClick = onContentClick, onMessageLongClick = onMessageLongClick, onSwipeToReply = onSwipeToReply, @@ -396,19 +398,19 @@ private fun MessagesViewContent( private fun MessagesViewComposerBottomSheetContents( subcomposing: Boolean, state: MessagesState, - onLinkClick: (String) -> Unit, + onLinkClick: (String, Boolean) -> Unit, ) { if (state.userEventPermissions.canSendMessage) { Column(modifier = Modifier.fillMaxWidth()) { SuggestionsPickerView( modifier = Modifier - .heightIn(max = 230.dp) - // Consume all scrolling, preventing the bottom sheet from being dragged when interacting with the list of suggestions - .nestedScroll(object : NestedScrollConnection { - override fun onPostScroll(consumed: Offset, available: Offset, source: NestedScrollSource): Offset { - return available - } - }), + .heightIn(max = 230.dp) + // Consume all scrolling, preventing the bottom sheet from being dragged when interacting with the list of suggestions + .nestedScroll(object : NestedScrollConnection { + override fun onPostScroll(consumed: Offset, available: Offset, source: NestedScrollSource): Offset { + return available + } + }), roomId = state.roomId, roomName = state.roomName.dataOrNull(), roomAvatarData = state.roomAvatar.dataOrNull(), @@ -425,13 +427,20 @@ private fun MessagesViewComposerBottomSheetContents( onLinkClick = onLinkClick, ) } - MessageComposerView( - state = state.composerState, - voiceMessageState = state.voiceMessageComposerState, - subcomposing = subcomposing, - enableVoiceMessages = state.enableVoiceMessages, - modifier = Modifier.fillMaxWidth(), - ) + val verificationViolation = state.roomMemberIdentityStateChanges.firstOrNull { + it.identityState == IdentityState.VerificationViolation + } + if (verificationViolation != null) { + DisabledComposerView(modifier = Modifier.fillMaxWidth()) + } else { + MessageComposerView( + state = state.composerState, + voiceMessageState = state.voiceMessageComposerState, + subcomposing = subcomposing, + enableVoiceMessages = state.enableVoiceMessages, + modifier = Modifier.fillMaxWidth(), + ) + } } } else { CantSendMessageBanner() @@ -456,8 +465,8 @@ private fun MessagesViewTopBar( title = { val roundedCornerShape = RoundedCornerShape(8.dp) val titleModifier = Modifier - .clip(roundedCornerShape) - .clickable { onRoomDetailsClick() } + .clip(roundedCornerShape) + .clickable { onRoomDetailsClick() } if (roomName != null && roomAvatar != null) { RoomAvatarAndNameRow( roomName = roomName, @@ -512,15 +521,15 @@ private fun RoomAvatarAndNameRow( private fun CantSendMessageBanner() { Row( modifier = Modifier - .fillMaxWidth() - .background(MaterialTheme.colorScheme.secondary) - .padding(16.dp), + .fillMaxWidth() + .background(ElementTheme.colors.bgSubtleSecondary) + .padding(16.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center ) { Text( text = stringResource(id = R.string.screen_room_timeline_no_permission_to_post), - color = MaterialTheme.colorScheme.onSecondary, + color = ElementTheme.colors.textSecondary, style = MaterialTheme.typography.bodyMedium, textAlign = TextAlign.Center, fontStyle = FontStyle.Italic, @@ -535,9 +544,9 @@ internal fun MessagesViewPreview(@PreviewParameter(MessagesStateProvider::class) state = state, onBackClick = {}, onRoomDetailsClick = {}, - onEventContentClick = { false }, + onEventContentClick = { _, _ -> false }, onUserDataClick = {}, - onLinkClick = {}, + onLinkClick = { _, _ -> }, onSendLocationClick = {}, onCreatePollClick = {}, onJoinCallClick = {}, 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 7a19468e93..ba58d326e2 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 @@ -27,7 +27,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ListItemDefaults -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.ripple import androidx.compose.runtime.Composable @@ -253,7 +252,7 @@ private fun MessageSummary( ) { val content: @Composable () -> Unit val icon: @Composable () -> Unit = { Avatar(avatarData = event.senderAvatar.copy(size = AvatarSize.MessageActionSender)) } - val contentStyle = ElementTheme.typography.fontBodyMdRegular.copy(color = MaterialTheme.colorScheme.secondary) + val contentStyle = ElementTheme.typography.fontBodyMdRegular.copy(color = ElementTheme.colors.textSecondary) @Composable fun ContentForBody(body: String) { @@ -316,7 +315,7 @@ private fun MessageSummary( Text( text = sentTimeFull, style = ElementTheme.typography.fontBodyXsRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, textAlign = TextAlign.End, ) } @@ -358,7 +357,7 @@ private fun EmojiReactionsRow( Icon( imageVector = CompoundIcons.ReactionAdd(), contentDescription = stringResource(id = CommonStrings.a11y_react_with_other_emojis), - tint = MaterialTheme.colorScheme.secondary, + tint = ElementTheme.colors.iconSecondary, modifier = Modifier .size(24.dp) .clickable( @@ -392,7 +391,7 @@ private fun VerifiedUserSendFailureView( modifier = modifier .clickable(onClick = onClick) .padding(horizontal = 16.dp, vertical = 8.dp), - leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Error())), + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.ErrorSolid())), trailingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.ChevronRight())), headlineContent = { Text( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeEvent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeEvent.kt index e74004c1d0..149789d97d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeEvent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeEvent.kt @@ -10,5 +10,6 @@ package io.element.android.features.messages.impl.crypto.identity import io.element.android.libraries.matrix.api.core.UserId sealed interface IdentityChangeEvent { - data class Submit(val userId: UserId) : IdentityChangeEvent + data class PinIdentity(val userId: UserId) : IdentityChangeEvent + data class WithdrawVerification(val userId: UserId) : IdentityChangeEvent } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenter.kt index adc39fbc74..4aba5dc440 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenter.kt @@ -8,30 +8,16 @@ package io.element.android.features.messages.impl.crypto.identity import androidx.compose.runtime.Composable -import androidx.compose.runtime.ProduceStateScope import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState import androidx.compose.runtime.rememberCoroutineScope +import io.element.android.features.messages.impl.messagecomposer.observeRoomMemberIdentityStateChange import io.element.android.libraries.architecture.Presenter -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.UserId import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.room.MatrixRoom -import io.element.android.libraries.matrix.api.room.RoomMember -import io.element.android.libraries.matrix.api.room.roomMembers -import io.element.android.libraries.matrix.ui.model.getAvatarData -import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.flow.filter -import kotlinx.coroutines.flow.flatMapLatest -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject @@ -44,12 +30,17 @@ class IdentityChangeStatePresenter @Inject constructor( override fun present(): IdentityChangeState { val coroutineScope = rememberCoroutineScope() val roomMemberIdentityStateChange by produceState(persistentListOf()) { - observeRoomMemberIdentityStateChange() + observeRoomMemberIdentityStateChange(room) } fun handleEvent(event: IdentityChangeEvent) { when (event) { - is IdentityChangeEvent.Submit -> coroutineScope.pinUserIdentity(event.userId) + is IdentityChangeEvent.WithdrawVerification -> { + coroutineScope.withdrawVerification(event.userId) + } + is IdentityChangeEvent.PinIdentity -> { + coroutineScope.pinUserIdentity(event.userId) + } } } @@ -59,56 +50,17 @@ class IdentityChangeStatePresenter @Inject constructor( ) } - @OptIn(ExperimentalCoroutinesApi::class) - private fun ProduceStateScope>.observeRoomMemberIdentityStateChange() { - room.syncUpdateFlow - .filter { - // Room cannot become unencrypted, so we can just apply a filter here. - room.isEncrypted - } - .distinctUntilChanged() - .flatMapLatest { - combine(room.identityStateChangesFlow, room.membersStateFlow) { identityStateChanges, membersState -> - identityStateChanges.map { identityStateChange -> - val member = membersState.roomMembers() - ?.firstOrNull { roomMember -> roomMember.userId == identityStateChange.userId } - ?.toIdentityRoomMember() - ?: createDefaultRoomMemberForIdentityChange(identityStateChange.userId) - RoomMemberIdentityStateChange( - identityRoomMember = member, - identityState = identityStateChange.identityState, - ) - } - } - .distinctUntilChanged() - .onEach { roomMemberIdentityStateChanges -> - value = roomMemberIdentityStateChanges.toPersistentList() - } - } - .launchIn(this) - } - private fun CoroutineScope.pinUserIdentity(userId: UserId) = launch { encryptionService.pinUserIdentity(userId) .onFailure { Timber.e(it, "Failed to pin identity for user $userId") } } + + private fun CoroutineScope.withdrawVerification(userId: UserId) = launch { + encryptionService.withdrawVerification(userId) + .onFailure { + Timber.e(it, "Failed to withdraw verification for user $userId") + } + } } - -private fun RoomMember.toIdentityRoomMember() = IdentityRoomMember( - userId = userId, - displayNameOrDefault = displayNameOrDefault, - avatarData = getAvatarData(AvatarSize.ComposerAlert), -) - -private fun createDefaultRoomMemberForIdentityChange(userId: UserId) = IdentityRoomMember( - userId = userId, - displayNameOrDefault = userId.extractedDisplayName, - avatarData = AvatarData( - id = userId.value, - name = null, - url = null, - size = AvatarSize.ComposerAlert, - ), -) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateProvider.kt index 5ec3858809..f64f505f0f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateProvider.kt @@ -30,7 +30,7 @@ class IdentityChangeStateProvider : PreviewParameterProvider = emptyList(), + eventSink: (IdentityChangeEvent) -> Unit = {}, ) = IdentityChangeState( roomMemberIdentityStateChanges = roomMemberIdentityStateChanges.toImmutableList(), - eventSink = {}, + eventSink = eventSink, ) internal fun anIdentityRoomMember( 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 5dbdeeb405..8362515b6a 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 @@ -7,6 +7,7 @@ package io.element.android.features.messages.impl.crypto.identity +import androidx.annotation.StringRes import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -17,75 +18,104 @@ import androidx.compose.ui.text.font.FontWeight 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.ComposerAlertMolecule import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.encryption.identity.IdentityState +import io.element.android.libraries.matrix.api.encryption.identity.isAViolation import io.element.android.libraries.ui.strings.CommonStrings @Composable fun IdentityChangeStateView( state: IdentityChangeState, - onLinkClick: (String) -> Unit, + onLinkClick: (String, Boolean) -> Unit, modifier: Modifier = Modifier, ) { - // Pick the first identity change to PinViolation - val pinViolationIdentityChange = state.roomMemberIdentityStateChanges.firstOrNull { - // For now only render PinViolation - it.identityState == IdentityState.PinViolation + // Pick the first identity change that is a violation + val identityChangeViolation = state.roomMemberIdentityStateChanges.firstOrNull { + it.identityState.isAViolation() } - if (pinViolationIdentityChange != null) { - ComposerAlertMolecule( + when (identityChangeViolation?.identityState) { + IdentityState.PinViolation -> ViolationAlert( + identityChangeViolation = identityChangeViolation, + onLinkClick = onLinkClick, + textId = CommonStrings.crypto_identity_change_pin_violation_new, + isCritical = false, + submitTextId = CommonStrings.action_ok, + onSubmitClick = { state.eventSink(IdentityChangeEvent.PinIdentity(identityChangeViolation.identityRoomMember.userId)) }, modifier = modifier, - avatar = pinViolationIdentityChange.identityRoomMember.avatarData, - content = buildAnnotatedString { - val learnMoreStr = stringResource(CommonStrings.action_learn_more) - val displayName = pinViolationIdentityChange.identityRoomMember.displayNameOrDefault - val userIdStr = stringResource( - CommonStrings.crypto_identity_change_pin_violation_new_user_id, - pinViolationIdentityChange.identityRoomMember.userId, - ) - val fullText = stringResource( - id = CommonStrings.crypto_identity_change_pin_violation_new, - displayName, - userIdStr, - learnMoreStr, - ) - append(fullText) - val userIdStartIndex = fullText.indexOf(userIdStr) - addStyle( - style = SpanStyle( - fontWeight = FontWeight.Bold, - ), - start = userIdStartIndex, - end = userIdStartIndex + userIdStr.length, - ) - val learnMoreStartIndex = fullText.lastIndexOf(learnMoreStr) - addStyle( - style = SpanStyle( - textDecoration = TextDecoration.Underline, - fontWeight = FontWeight.Bold, - ), - start = learnMoreStartIndex, - end = learnMoreStartIndex + learnMoreStr.length, - ) - addLink( - url = LinkAnnotation.Url( - url = LearnMoreConfig.IDENTITY_CHANGE_URL, - linkInteractionListener = { - onLinkClick(LearnMoreConfig.IDENTITY_CHANGE_URL) - } - ), - start = learnMoreStartIndex, - end = learnMoreStartIndex + learnMoreStr.length, - ) - }, - onSubmitClick = { state.eventSink(IdentityChangeEvent.Submit(pinViolationIdentityChange.identityRoomMember.userId)) }, - isCritical = pinViolationIdentityChange.identityState == IdentityState.VerificationViolation, ) + IdentityState.VerificationViolation -> ViolationAlert( + identityChangeViolation = identityChangeViolation, + onLinkClick = onLinkClick, + textId = CommonStrings.crypto_identity_change_verification_violation_new, + isCritical = true, + submitTextId = CommonStrings.crypto_identity_change_withdraw_verification_action, + onSubmitClick = { state.eventSink(IdentityChangeEvent.WithdrawVerification(identityChangeViolation.identityRoomMember.userId)) }, + modifier = modifier, + ) + else -> Unit } } +@Composable +private fun ViolationAlert( + identityChangeViolation: RoomMemberIdentityStateChange, + onLinkClick: (String, Boolean) -> Unit, + @StringRes textId: Int, + isCritical: Boolean, + @StringRes submitTextId: Int, + onSubmitClick: () -> Unit, + modifier: Modifier = Modifier, +) { + ComposerAlertMolecule( + modifier = modifier, + avatar = identityChangeViolation.identityRoomMember.avatarData, + content = buildAnnotatedString { + val learnMoreStr = stringResource(CommonStrings.action_learn_more) + val displayName = identityChangeViolation.identityRoomMember.displayNameOrDefault + val userIdStr = stringResource( + CommonStrings.crypto_identity_change_pin_violation_new_user_id, + identityChangeViolation.identityRoomMember.userId, + ) + val fullText = stringResource(textId, displayName, userIdStr, learnMoreStr) + append(fullText) + val userIdStartIndex = fullText.indexOf(userIdStr) + addStyle( + style = SpanStyle( + fontWeight = FontWeight.Bold, + ), + start = userIdStartIndex, + end = userIdStartIndex + userIdStr.length, + ) + val learnMoreStartIndex = fullText.lastIndexOf(learnMoreStr) + addStyle( + style = SpanStyle( + textDecoration = TextDecoration.Underline, + fontWeight = FontWeight.Bold, + color = ElementTheme.colors.textPrimary + ), + start = learnMoreStartIndex, + end = learnMoreStartIndex + learnMoreStr.length, + ) + addLink( + url = LinkAnnotation.Url( + url = LearnMoreConfig.IDENTITY_CHANGE_URL, + linkInteractionListener = { + onLinkClick(LearnMoreConfig.IDENTITY_CHANGE_URL, true) + } + ), + start = learnMoreStartIndex, + end = learnMoreStartIndex + learnMoreStr.length, + ) + }, + submitText = stringResource(submitTextId), + onSubmitClick = onSubmitClick, + isCritical = isCritical, + ) +} + @PreviewsDayNight @Composable internal fun IdentityChangeStateViewPreview( @@ -93,6 +123,6 @@ internal fun IdentityChangeStateViewPreview( ) = ElementPreview { IdentityChangeStateView( state = state, - onLinkClick = {}, + onLinkClick = { _, _ -> }, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/MessagesViewWithIdentityChangePreview.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/MessagesViewWithIdentityChangePreview.kt index a72baa9e00..cdd91e86e4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/MessagesViewWithIdentityChangePreview.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/MessagesViewWithIdentityChangePreview.kt @@ -33,9 +33,9 @@ internal fun MessagesViewWithIdentityChangePreview( ), onBackClick = {}, onRoomDetailsClick = {}, - onEventContentClick = { false }, + onEventContentClick = { _, _ -> false }, onUserDataClick = {}, - onLinkClick = {}, + onLinkClick = { _, _ -> }, onSendLocationClick = {}, onCreatePollClick = {}, onJoinCallClick = {}, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/MatrixComposerDraftStore.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/MatrixComposerDraftStore.kt index b850e7b559..cd9d55b281 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/MatrixComposerDraftStore.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/MatrixComposerDraftStore.kt @@ -21,7 +21,7 @@ class MatrixComposerDraftStore @Inject constructor( private val client: MatrixClient, ) : ComposerDraftStore { override suspend fun loadDraft(roomId: RoomId): ComposerDraft? { - return client.getRoom(roomId)?.use { room -> + return client.getRoom(roomId)?.let { room -> room.loadComposerDraft() .onFailure { Timber.e(it, "Failed to load composer draft for room $roomId") @@ -35,7 +35,7 @@ class MatrixComposerDraftStore @Inject constructor( } override suspend fun updateDraft(roomId: RoomId, draft: ComposerDraft?) { - client.getRoom(roomId)?.use { room -> + client.getRoom(roomId)?.let { room -> val updateDraftResult = if (draft == null) { room.clearComposerDraft() } else { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DisabledComposerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DisabledComposerView.kt new file mode 100644 index 0000000000..19e1758be8 --- /dev/null +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DisabledComposerView.kt @@ -0,0 +1,101 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.messages.impl.messagecomposer + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeightIn +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +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.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 +import io.element.android.libraries.designsystem.theme.components.IconButton +import io.element.android.libraries.designsystem.utils.CommonDrawables +import io.element.android.libraries.textcomposer.R + +@Composable +internal fun DisabledComposerView( + modifier: Modifier = Modifier, +) { + Row( + modifier = modifier.padding(3.dp) + .fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + IconButton( + modifier = Modifier + .size(48.dp), + enabled = false, + onClick = {}, + ) { + Icon( + modifier = Modifier.size(30.dp), + resourceId = CommonDrawables.ic_plus_composer, + contentDescription = stringResource(R.string.rich_text_editor_a11y_add_attachment), + tint = ElementTheme.colors.iconDisabled, + ) + } + + val bgColor = ElementTheme.colors.bgCanvasDisabled + val borderColor = ElementTheme.colors.borderDisabled + + Box( + modifier = Modifier + .clip(RoundedCornerShape(21.dp)) + .border(0.5.dp, borderColor, RoundedCornerShape(21.dp)) + .background(color = bgColor) + .size(42.dp) + .requiredHeightIn(min = 42.dp) + .weight(1f), + ) + + Spacer(modifier = Modifier.width(8.dp)) + IconButton( + modifier = Modifier + .padding(start = 2.dp) + .size(48.dp), + enabled = false, + onClick = {}, + ) { + Icon( + modifier = Modifier.size(30.dp), + imageVector = CompoundIcons.SendSolid(), + contentDescription = "", + tint = ElementTheme.colors.iconQuaternary + ) + } + } +} + +@PreviewsDayNight +@Composable +internal fun DisabledComposerViewPreview() = ElementPreview { + Column { + DisabledComposerView( + modifier = Modifier.height(IntrinsicSize.Min), + ) + } +} 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 94aecec778..f3a44559bc 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 @@ -389,6 +389,7 @@ class MessageComposerPresenter @AssistedInject constructor( } } } + return MessageComposerState( textEditorState = textEditorState, isFullScreen = isFullScreen.value, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerUtils.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerUtils.kt new file mode 100644 index 0000000000..48230840b1 --- /dev/null +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerUtils.kt @@ -0,0 +1,74 @@ +/* + * 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.messagecomposer + +import androidx.compose.runtime.ProduceStateScope +import io.element.android.features.messages.impl.crypto.identity.IdentityRoomMember +import io.element.android.features.messages.impl.crypto.identity.RoomMemberIdentityStateChange +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.UserId +import io.element.android.libraries.matrix.api.room.MatrixRoom +import io.element.android.libraries.matrix.api.room.RoomMember +import io.element.android.libraries.matrix.api.room.roomMembers +import io.element.android.libraries.matrix.ui.model.getAvatarData +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach + +@OptIn(ExperimentalCoroutinesApi::class) +fun ProduceStateScope>.observeRoomMemberIdentityStateChange(room: MatrixRoom) { + room.syncUpdateFlow + .filter { + // Room cannot become unencrypted, so we can just apply a filter here. + room.isEncrypted + } + .distinctUntilChanged() + .flatMapLatest { + combine(room.identityStateChangesFlow, room.membersStateFlow) { identityStateChanges, membersState -> + identityStateChanges.map { identityStateChange -> + val member = membersState.roomMembers() + ?.firstOrNull { roomMember -> roomMember.userId == identityStateChange.userId } + ?.toIdentityRoomMember() + ?: createDefaultRoomMemberForIdentityChange(identityStateChange.userId) + RoomMemberIdentityStateChange( + identityRoomMember = member, + identityState = identityStateChange.identityState, + ) + } + } + .distinctUntilChanged() + .onEach { roomMemberIdentityStateChanges -> + value = roomMemberIdentityStateChanges.toPersistentList() + } + } + .launchIn(this) +} + +private fun RoomMember.toIdentityRoomMember() = IdentityRoomMember( + userId = userId, + displayNameOrDefault = displayNameOrDefault, + avatarData = getAvatarData(AvatarSize.ComposerAlert), +) + +private fun createDefaultRoomMemberForIdentityChange(userId: UserId) = IdentityRoomMember( + userId = userId, + displayNameOrDefault = userId.extractedDisplayName, + avatarData = AvatarData( + id = userId.value, + name = null, + url = null, + size = AvatarSize.ComposerAlert, + ), +) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerView.kt index 86e30a22c0..bfb51f4a87 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerView.kt @@ -139,6 +139,7 @@ internal fun MessageComposerViewPreview( enableVoiceMessages = true, subcomposing = false, ) + DisabledComposerView() } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt index 12379163a6..9d774d5841 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt @@ -149,6 +149,7 @@ internal fun SuggestionsPickerViewPreview() { normalizedPowerLevel = 0L, isIgnored = false, role = RoomMember.Role.USER, + membershipChangeReason = null, ) val anAlias = remember { RoomAlias("#room:domain.org") } SuggestionsPickerView( 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/PinnedEventsTimelineProvider.kt index 8840411a24..1135dcb2d6 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/PinnedEventsTimelineProvider.kt @@ -8,11 +8,13 @@ package io.element.android.features.messages.impl.pinned import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.mapState import io.element.android.libraries.di.RoomScope import io.element.android.libraries.di.SingleIn import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.timeline.Timeline @@ -26,6 +28,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.withContext import javax.inject.Inject @SingleIn(RoomScope::class) @@ -33,6 +36,7 @@ class PinnedEventsTimelineProvider @Inject constructor( private val room: MatrixRoom, private val syncService: SyncService, private val featureFlagService: FeatureFlagService, + private val dispatchers: CoroutineDispatchers, ) : TimelineProvider { private val _timelineStateFlow: MutableStateFlow> = MutableStateFlow(AsyncData.Uninitialized) @@ -100,7 +104,9 @@ class PinnedEventsTimelineProvider @Inject constructor( when (timelineStateFlow.value) { is AsyncData.Uninitialized, is AsyncData.Failure -> { timelineStateFlow.emit(AsyncData.Loading()) - room.pinnedEventsTimeline() + withContext(dispatchers.io) { + room.createTimeline(CreateTimelineParams.PinnedOnly) + } .fold( { timelineStateFlow.emit(AsyncData.Success(it)) }, { timelineStateFlow.emit(AsyncData.Failure(it)) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerView.kt index 2e4bd92289..dcbc0695b2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerView.kt @@ -108,7 +108,7 @@ private fun PinnedMessagesBannerRow( Icon( imageVector = CompoundIcons.PinSolid(), contentDescription = null, - tint = ElementTheme.materialColors.secondary, + tint = ElementTheme.colors.iconSecondary, modifier = Modifier .padding(horizontal = 10.dp) .size(20.dp) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageView.kt index 49334574cd..d2c5d05e1a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageView.kt @@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Switch import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -113,7 +112,7 @@ fun ReportMessageView( Text( text = stringResource(R.string.screen_report_content_block_user_hint), style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, ) } Switch( 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 bfac291432..985d4f6076 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 @@ -11,6 +11,7 @@ import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.RoomScope import io.element.android.libraries.di.SingleIn import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.api.timeline.Timeline @@ -64,7 +65,7 @@ class TimelineController @Inject constructor( } suspend fun focusOnEvent(eventId: EventId): Result { - return room.timelineFocusedOnEvent(eventId) + return room.createTimeline(CreateTimelineParams.Focused(eventId)) .onFailure { if (it is CancellationException) { throw it diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt index f2db4e6efb..98fc9d201b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt @@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.Alignment @@ -76,7 +75,7 @@ fun MessagesReactionButton( .background(Color.Transparent) // Outer border, same colour as background .border( - BorderStroke(2.dp, MaterialTheme.colorScheme.background), + BorderStroke(2.dp, ElementTheme.colors.bgCanvasDefault), shape = RoundedCornerShape(corner = CornerSize(14.dp)) ) .padding(vertical = 2.dp, horizontal = 2.dp) @@ -122,7 +121,7 @@ private fun TextContent( .height(REACTION_EMOJI_LINE_HEIGHT.toDp()), text = text, style = ElementTheme.typography.fontBodyMdRegular, - color = ElementTheme.materialColors.primary + color = ElementTheme.colors.textPrimary ) @Composable @@ -131,7 +130,7 @@ private fun IconContent( ) = Icon( resourceId = resourceId, contentDescription = stringResource(id = R.string.screen_room_timeline_add_reaction), - tint = ElementTheme.materialColors.secondary, + tint = ElementTheme.colors.iconSecondary, modifier = Modifier .size(ADD_EMOJI_SIZE) ) @@ -164,7 +163,7 @@ private fun ReactionContent( Spacer(modifier = Modifier.width(4.dp)) Text( text = reaction.count.toString(), - color = if (reaction.isHighlighted) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.secondary, + color = if (reaction.isHighlighted) ElementTheme.colors.textPrimary else ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodyMdRegular, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt index 85b6181050..8dccfb586d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -45,7 +44,7 @@ fun TimelineEventTimestampView( val hasError = event.localSendState is LocalEventSendState.Failed val hasEncryptionCritical = event.messageShield?.isCritical.orFalse() val isMessageEdited = event.content.isEdited() - val tint = if (hasError || hasEncryptionCritical) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.secondary + val tint = if (hasError || hasEncryptionCritical) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textSecondary Row( modifier = Modifier .padding(PaddingValues(start = TimelineEventTimestampViewDefaults.spacing)) @@ -69,7 +68,7 @@ fun TimelineEventTimestampView( val isVerifiedUserSendFailure = event.localSendState is LocalEventSendState.Failed.VerifiedUser Spacer(modifier = Modifier.width(2.dp)) Icon( - imageVector = CompoundIcons.Error(), + imageVector = CompoundIcons.ErrorSolid(), contentDescription = stringResource(id = CommonStrings.common_sending_failed), tint = tint, modifier = Modifier 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 106d4eb532..33cf3cdfcf 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 @@ -169,7 +169,7 @@ private fun Modifier.focusedEvent( val highlightedLineColor = ElementTheme.colors.textActionAccent val gradientColors = listOf( ElementTheme.colors.highlightedMessageBackgroundColor, - ElementTheme.materialColors.background + ElementTheme.colors.bgCanvasDefault, ) val verticalOffset = focusedEventOffset.toPx() val verticalRatio = 0.7f diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAttachmentView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAttachmentView.kt index a2b55f00e5..dc40fd77fa 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAttachmentView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAttachmentView.kt @@ -77,7 +77,7 @@ private fun TimelineItemAttachmentHeaderView( modifier = Modifier .size(iconSize) .clip(CircleShape) - .background(ElementTheme.materialColors.background), + .background(ElementTheme.colors.bgCanvasDefault), contentAlignment = Alignment.Center, ) { icon() @@ -86,14 +86,14 @@ private fun TimelineItemAttachmentHeaderView( Column { Text( text = filename, - color = ElementTheme.materialColors.primary, + color = ElementTheme.colors.textPrimary, maxLines = 2, style = ElementTheme.typography.fontBodyLgRegular, overflow = TextOverflow.Ellipsis ) Text( text = fileExtensionAndSize, - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodySmRegular, maxLines = 1, overflow = TextOverflow.Ellipsis, @@ -119,7 +119,7 @@ private fun TimelineItemAttachmentCaptionView( Text( modifier = modifier, text = caption, - color = ElementTheme.materialColors.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontBodyLgRegular, onTextLayout = ContentAvoidingLayout.measureLastTextLine( onContentLayoutChange = onContentLayoutChange, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAudioView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAudioView.kt index 6b28d5922b..d25d6aa457 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAudioView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAudioView.kt @@ -8,13 +8,12 @@ package io.element.android.features.messages.impl.timeline.components.event import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.GraphicEq import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier 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.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContentProvider @@ -36,9 +35,9 @@ fun TimelineItemAudioView( modifier = modifier, icon = { Icon( - imageVector = Icons.Outlined.GraphicEq, + imageVector = CompoundIcons.Audio(), contentDescription = null, - tint = ElementTheme.materialColors.primary, + tint = ElementTheme.colors.iconPrimary, modifier = Modifier .size(16.dp), ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemFileView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemFileView.kt index 91260ec8aa..06e0ea6616 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemFileView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemFileView.kt @@ -38,7 +38,7 @@ fun TimelineItemFileView( Icon( resourceId = CompoundDrawables.ic_compound_attachment, contentDescription = null, - tint = ElementTheme.materialColors.primary, + tint = ElementTheme.colors.iconPrimary, modifier = Modifier .size(16.dp) .rotate(-45f), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt index 7343846dfe..74594210b0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -53,7 +52,7 @@ fun TimelineItemInformativeView( ) { Icon( resourceId = iconResourceId, - tint = MaterialTheme.colorScheme.secondary, + tint = ElementTheme.colors.iconSecondary, contentDescription = iconDescription, modifier = Modifier.size(16.dp) ) @@ -61,7 +60,7 @@ fun TimelineItemInformativeView( Spacer(modifier = Modifier.width(4.dp)) Text( fontStyle = FontStyle.Italic, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodyMdRegular, text = text ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLegacyCallInviteView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLegacyCallInviteView.kt index 09d28b49fd..c2fa1edfa0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLegacyCallInviteView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLegacyCallInviteView.kt @@ -31,7 +31,7 @@ fun TimelineItemLegacyCallInviteView( modifier = modifier, ) { Icon( - imageVector = CompoundIcons.VoiceCall(), + imageVector = CompoundIcons.VoiceCallSolid(), contentDescription = null, tint = ElementTheme.colors.iconSecondary, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt index 536c5374b5..334a7463f7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt @@ -7,7 +7,6 @@ package io.element.android.features.messages.impl.timeline.components.event -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign @@ -25,7 +24,7 @@ fun TimelineItemStateView( ) { Text( modifier = modifier, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodyMdRegular, text = content.body, textAlign = TextAlign.Center, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt index debc03e0eb..6b2d088cb5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt @@ -20,13 +20,16 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayout import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContentProvider +import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent import io.element.android.features.messages.impl.utils.containsOnlyEmojis +import io.element.android.libraries.androidutils.text.LinkifyHelper import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.core.UserId @@ -114,3 +117,27 @@ internal fun TimelineItemTextViewPreview( onLinkClick = {}, ) } + +@Preview +@Composable +internal fun TimelineItemTextViewWithLinkifiedUrlPreview() = ElementPreview { + val content = aTimelineItemTextContent( + pillifiedBody = LinkifyHelper.linkify("The link should end after the first '?' (url: github.com/element-hq/element-x-android/README?)?.") + ) + TimelineItemTextView( + content = content, + onLinkClick = {}, + ) +} + +@Preview +@Composable +internal fun TimelineItemTextViewWithLinkifiedUrlAndNestedParenthesisPreview() = ElementPreview { + val content = aTimelineItemTextContent( + pillifiedBody = LinkifyHelper.linkify("The link should end after the '(ME)' ((url: github.com/element-hq/element-x-android/READ(ME)))!") + ) + TimelineItemTextView( + content = content, + onLinkClick = {}, + ) +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt index d917079ef3..34ff9036ff 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt @@ -20,8 +20,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalTextStyle import androidx.compose.runtime.Composable @@ -45,6 +43,7 @@ import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.compose.AsyncImagePainter import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.messages.impl.timeline.aTimelineItemEvent import io.element.android.features.messages.impl.timeline.components.ATimelineItemEventRow import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayout @@ -122,7 +121,7 @@ fun TimelineItemVideoView( contentAlignment = Alignment.Center, ) { Image( - Icons.Default.PlayArrow, + imageVector = CompoundIcons.PlaySolid(), contentDescription = stringResource(id = CommonStrings.a11y_play), colorFilter = ColorFilter.tint(Color.White), ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt index 17785cd97c..1d357bdd2f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt @@ -91,7 +91,7 @@ fun TimelineItemVoiceView( Spacer(Modifier.width(8.dp)) Text( text = state.time, - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodySmMedium, maxLines = 1, overflow = TextOverflow.Ellipsis, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/group/GroupHeaderView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/group/GroupHeaderView.kt index a11b36f58f..0a8662eab4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/group/GroupHeaderView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/group/GroupHeaderView.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment @@ -67,7 +66,7 @@ fun GroupHeaderView( ) { Text( text = text, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodyMdRegular, ) val rotation: Float by animateFloatAsState( @@ -82,7 +81,7 @@ fun GroupHeaderView( modifier = Modifier.rotate(rotation), imageVector = CompoundIcons.ChevronRight(), contentDescription = null, - tint = MaterialTheme.colorScheme.secondary + tint = ElementTheme.colors.iconSecondary ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt index b4b02ca45d..ae9ea9fd5d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt @@ -172,7 +172,7 @@ private fun AggregatedReactionButton( val textColor = if (isHighlighted) { MaterialTheme.colorScheme.inversePrimary } else { - MaterialTheme.colorScheme.primary + ElementTheme.colors.textPrimary } val roundedCornerShape = RoundedCornerShape(corner = CornerSize(percent = 50)) @@ -250,12 +250,12 @@ private fun SenderRow( text = name, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontBodyMdRegular, ) Text( text = sentTime, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodySmRegular, @@ -263,7 +263,7 @@ private fun SenderRow( } Text( text = userId, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodySmRegular, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt index 3e11e1e0ae..701dd93fc7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt @@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -131,7 +130,7 @@ private fun ReadReceiptsAvatars( ) { val avatarSize = AvatarSize.TimelineReadReceipt.dp val avatarStrokeSize = 1.dp - val avatarStrokeColor = MaterialTheme.colorScheme.background + val avatarStrokeColor = ElementTheme.colors.bgCanvasDefault val receiptDescription = computeReceiptDescription(receipts) Row( modifier = modifier diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt index 86dce5349f..2e0c874535 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -39,7 +38,7 @@ internal fun TimelineItemDaySeparatorView( Text( text = model.formattedDate, style = ElementTheme.typography.fontBodyMdMedium, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) } } 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 f6a8c3821e..645f36602c 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 @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -41,7 +40,7 @@ fun TimelineItemRoomBeginningView( stringResource(id = R.string.screen_room_timeline_beginning_of_room, roomName) } Text( - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodyMdRegular, text = text, textAlign = TextAlign.Center, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt index 8ec1dcdb8a..d7d267ce48 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt @@ -7,13 +7,10 @@ package io.element.android.features.messages.impl.timeline.factories.event -import android.text.Spannable import android.text.style.URLSpan -import android.text.util.Linkify import androidx.core.text.buildSpannedString import androidx.core.text.getSpans import androidx.core.text.toSpannable -import androidx.core.text.util.LinkifyCompat import io.element.android.features.location.api.Location import io.element.android.features.messages.api.timeline.HtmlConverterProvider import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent @@ -29,6 +26,7 @@ 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.utils.TextPillificationHelper import io.element.android.libraries.androidutils.filesize.FileSizeFormatter +import io.element.android.libraries.androidutils.text.safeLinkify import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags @@ -232,7 +230,7 @@ class TimelineItemContentMessageFactory @Inject constructor( val body = messageType.body.trimEnd() TimelineItemTextContent( body = body, - pillifiedBody = textPillificationHelper.pillify(body), + pillifiedBody = textPillificationHelper.pillify(body).safeLinkify(), htmlDocument = messageType.formatted?.toHtmlDocument(permalinkParser = permalinkParser), formattedBody = parseHtml(messageType.formatted) ?: body.withLinks(), isEdited = content.isEdited, @@ -265,7 +263,7 @@ class TimelineItemContentMessageFactory @Inject constructor( if (formattedBody == null || formattedBody.format != MessageFormat.HTML) return null val result = htmlConverterProvider.provide() .fromHtmlToSpans(formattedBody.body.trimEnd()) - .withFixedURLSpans() + .safeLinkify() return if (prefix != null) { buildSpannedString { append(prefix) @@ -276,36 +274,11 @@ class TimelineItemContentMessageFactory @Inject constructor( result } } - - private fun CharSequence.withFixedURLSpans(): CharSequence { - val spannable = this.toSpannable() - // Get all URL spans, as they will be removed by LinkifyCompat.addLinks - val oldURLSpans = spannable.getSpans(0, length).associateWith { - val start = spannable.getSpanStart(it) - val end = spannable.getSpanEnd(it) - Pair(start, end) - } - // Find and set as URLSpans any links present in the text - LinkifyCompat.addLinks(spannable, Linkify.WEB_URLS or Linkify.PHONE_NUMBERS or Linkify.EMAIL_ADDRESSES) - // Restore old spans, remove new ones if there is a conflict - for ((urlSpan, location) in oldURLSpans) { - val (start, end) = location - val addedSpans = spannable.getSpans(start, end).orEmpty() - if (addedSpans.isNotEmpty()) { - for (span in addedSpans) { - spannable.removeSpan(span) - } - } - spannable.setSpan(urlSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - } - return spannable - } } @Suppress("USELESS_ELVIS") private fun String.withLinks(): CharSequence? { // Note: toSpannable() can return null when running unit tests - val spannable = toSpannable() ?: return null - val addedLinks = LinkifyCompat.addLinks(spannable, Linkify.WEB_URLS or Linkify.PHONE_NUMBERS or Linkify.EMAIL_ADDRESSES) - return spannable.takeIf { addedLinks } + val spannable = safeLinkify().toSpannable() ?: return null + return spannable.takeIf { spannable.getSpans(0, length).isNotEmpty() } } diff --git a/features/messages/impl/src/main/res/values-nb/translations.xml b/features/messages/impl/src/main/res/values-nb/translations.xml index b4a2914dda..7061efc54c 100644 --- a/features/messages/impl/src/main/res/values-nb/translations.xml +++ b/features/messages/impl/src/main/res/values-nb/translations.xml @@ -12,7 +12,11 @@ "Kryss av for om du vil skjule alle nåværende og fremtidige meldinger fra denne brukeren" "Denne meldingen vil bli rapportert til hjemmeserverens administratorer. De vil ikke kunne lese noen krypterte meldinger." "Begrunnelse for å rapportere dette innholdet" + "Kamera" "Ta bilde" + "Ta opp video" + "Vedlegg" + "Foto- og videobibliotek" "Meldingshistorikken er for øyeblikket ikke tilgjengelig." "Meldingshistorikk er ikke tilgjengelig i dette rommet. Bekreft denne enheten for å se meldingshistorikken din." "Vil du invitere dem tilbake?" diff --git a/features/messages/impl/src/main/res/values-sv/translations.xml b/features/messages/impl/src/main/res/values-sv/translations.xml index c2ca9678e3..6846c7e333 100644 --- a/features/messages/impl/src/main/res/values-sv/translations.xml +++ b/features/messages/impl/src/main/res/values-sv/translations.xml @@ -31,6 +31,7 @@ "Lägg till emoji" "Det här är början på %1$s." "Detta är början på det här samtalet." + "Samtalet stöds inte. Fråga om den som ringer kan använda den nya Element X-appen." "Visa mindre" "Meddelande kopierat" "Du är inte behörig att göra inlägg i det här rummet" diff --git a/features/messages/impl/src/main/res/values-tr/translations.xml b/features/messages/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..de962f72ee --- /dev/null +++ b/features/messages/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,54 @@ + + + "Aktiviteler" + "Bayraklar" + "Yiyecek ve İçecek" + "Hayvanlar ve Doğa" + "Nesneler" + "İfadeler ve İnsanlar" + "Seyahat ve Yerler" + "Simgeler" + "Kullanıcıyı engelle" + "Bu kullanıcıdan gelen mevcut ve gelecekteki tüm mesajları gizlemek isteyip istemediğinizi işaretleyin" + "Bu mesaj ana sunucunuzun yöneticisine bildirilecektir. Şifrelenmiş mesajları okuyamayacaklardır." + "Bu içeriğin bildirilme nedeni" + "Kamera" + "Fotoğraf çek" + "Video kaydet" + "Ek" + "Fotoğraf ve Video Kütüphanesi" + "Konum" + "Anket" + "Metin Biçimlendirme" + "Mesaj geçmişi şu anda kullanılamıyor." + "Mesaj geçmişi bu odada kullanılamıyor. Mesaj geçmişinizi görmek için bu cihazı doğrulayın." + "Onları geri davet etmek ister misin?" + "Bu sohbette yalnızsın" + "Tüm odaya bildir" + "Herkes" + "Tekrar gönder" + "Mesajınız gönderilemedi" + "Emoji ekle" + "Bu, %1$s odasının başlangıcıdır." + "Bu konuşmanın başlangıcıdır." + "Desteklenmeyen çağrı. Arayanın yeni Element X uygulamasını kullanıp kullanamayacağını sorun." + "Daha az göster" + "Mesaj kopyalandı" + "Bu odada gönderi yapma izniniz yok" + "Daha az göster" + "Daha fazla göster" + "Yeni" + + "%1$d oda değişikliği" + "%1$d oda değişikliği" + + + "%1$s, %2$s ve %3$d diğer" + "%1$s, %2$s ve %3$d diğer" + + + "%1$s yazıyor" + "%1$s yazıyor" + + "%1$s ve %2$s" + diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt index 63491b0103..a7c76d73e2 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt @@ -54,10 +54,11 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.ui.strings.CommonStrings -import io.element.android.tests.testutils.EnsureCalledOnceWithParam +import io.element.android.tests.testutils.EnsureCalledOnceWithTwoParamsAndResult import io.element.android.tests.testutils.EnsureNeverCalled import io.element.android.tests.testutils.EnsureNeverCalledWithParam -import io.element.android.tests.testutils.EnsureNeverCalledWithParamAndResult +import io.element.android.tests.testutils.EnsureNeverCalledWithTwoParams +import io.element.android.tests.testutils.EnsureNeverCalledWithTwoParamsAndResult import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.clickOn import io.element.android.tests.testutils.ensureCalledOnce @@ -128,8 +129,9 @@ class MessagesViewTest { eventSink = eventsRecorder ) val timelineItem = state.timelineState.timelineItems.first() - val callback = EnsureCalledOnceWithParam( - expectedParam = timelineItem, + val callback = EnsureCalledOnceWithTwoParamsAndResult( + expectedParam1 = true, + expectedParam2 = timelineItem, result = true, ) rule.setMessagesView( @@ -512,9 +514,9 @@ private fun AndroidComposeTestRule.setMessa state: MessagesState, onBackClick: () -> Unit = EnsureNeverCalled(), onRoomDetailsClick: () -> Unit = EnsureNeverCalled(), - onEventClick: (event: TimelineItem.Event) -> Boolean = EnsureNeverCalledWithParamAndResult(), + onEventClick: (isLive: Boolean, event: TimelineItem.Event) -> Boolean = EnsureNeverCalledWithTwoParamsAndResult(), onUserDataClick: (UserId) -> Unit = EnsureNeverCalledWithParam(), - onLinkClick: (String) -> Unit = EnsureNeverCalledWithParam(), + onLinkClick: (String, Boolean) -> Unit = EnsureNeverCalledWithTwoParams(), onSendLocationClick: () -> Unit = EnsureNeverCalled(), onCreatePollClick: () -> Unit = EnsureNeverCalled(), onJoinCallClick: () -> Unit = EnsureNeverCalled(), diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenterTest.kt index 115e14c82c..29f64b831f 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStatePresenterTest.kt @@ -143,7 +143,22 @@ class IdentityChangeStatePresenterTest { val presenter = createIdentityChangeStatePresenter(encryptionService = encryptionService) presenter.test { val initialState = awaitItem() - initialState.eventSink(IdentityChangeEvent.Submit(A_USER_ID)) + initialState.eventSink(IdentityChangeEvent.PinIdentity(A_USER_ID)) + lambda.assertions().isCalledOnce().with(value(A_USER_ID)) + } + } + + @Test + fun `present - when the user withdraws the identity, the presenter invokes the encryption service api`() = + runTest { + val lambda = lambdaRecorder> { Result.success(Unit) } + val encryptionService = FakeEncryptionService( + withdrawVerificationResult = lambda, + ) + val presenter = createIdentityChangeStatePresenter(encryptionService = encryptionService) + presenter.test { + val initialState = awaitItem() + initialState.eventSink(IdentityChangeEvent.WithdrawVerification(A_USER_ID)) lambda.assertions().isCalledOnce().with(value(A_USER_ID)) } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateViewTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateViewTest.kt new file mode 100644 index 0000000000..ca07cc93cd --- /dev/null +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateViewTest.kt @@ -0,0 +1,107 @@ +/* + * 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.crypto.identity + +import androidx.activity.ComponentActivity +import androidx.compose.ui.test.junit4.AndroidComposeTestRule +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import io.element.android.libraries.designsystem.components.avatar.anAvatarData +import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.libraries.matrix.api.encryption.identity.IdentityState +import io.element.android.libraries.ui.strings.CommonStrings +import io.element.android.tests.testutils.EventsRecorder +import io.element.android.tests.testutils.clickOn +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TestRule +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class IdentityChangeStateViewTest { + @get:Rule val rule = createAndroidComposeRule() + + @Test + fun `show and resolve pin violation`() { + val eventsRecorder = EventsRecorder() + rule.setIdentityChangeStateView( + state = anIdentityChangeState( + listOf( + RoomMemberIdentityStateChange( + identityRoomMember = IdentityRoomMember(UserId("@alice:localhost"), "Alice", anAvatarData()), + identityState = IdentityState.PinViolation + ) + ), + eventsRecorder + ), + ) + + rule.onNodeWithText("identity appears to have changed", substring = true).assertExists("should display pin violation warning") + rule.onNodeWithText("@alice:localhost", substring = true).assertExists("should display user mxid") + rule.onNodeWithText("Alice", substring = true).assertExists("should display user displayname") + + rule.clickOn(res = CommonStrings.action_ok) + eventsRecorder.assertSingle(IdentityChangeEvent.PinIdentity(UserId("@alice:localhost"))) + } + + @Test + fun `show and resolve verification violation`() { + val eventsRecorder = EventsRecorder() + rule.setIdentityChangeStateView( + state = anIdentityChangeState( + listOf( + RoomMemberIdentityStateChange( + identityRoomMember = IdentityRoomMember(UserId("@alice:localhost"), "Alice", anAvatarData()), + identityState = IdentityState.VerificationViolation + ) + ), + eventsRecorder + ), + ) + + rule.onNodeWithText("verified identity has changed", substring = true).assertExists("should display verification violation warning") + rule.onNodeWithText("@alice:localhost", substring = true).assertExists("should display user mxid") + rule.onNodeWithText("Alice", substring = true).assertExists("should display user displayname") + + rule.clickOn(res = CommonStrings.crypto_identity_change_withdraw_verification_action) + eventsRecorder.assertSingle(IdentityChangeEvent.WithdrawVerification(UserId("@alice:localhost"))) + } + + @Test + fun `Should not show any banner if no violations`() { + rule.setIdentityChangeStateView( + state = anIdentityChangeState( + listOf( + RoomMemberIdentityStateChange( + identityRoomMember = IdentityRoomMember(UserId("@alice:localhost"), "Alice", anAvatarData()), + identityState = IdentityState.Verified + ), + RoomMemberIdentityStateChange( + identityRoomMember = IdentityRoomMember(UserId("@bob:localhost"), "Bob", anAvatarData()), + identityState = IdentityState.Pinned + ) + ), + ), + ) + + rule.onNodeWithText("identity appears to have changed", substring = true).assertDoesNotExist() + rule.onNodeWithText("verified identity has changed", substring = true).assertDoesNotExist() + } + + private fun AndroidComposeTestRule.setIdentityChangeStateView( + state: IdentityChangeState, + ) { + setContent { + IdentityChangeStateView( + state = state, + onLinkClick = { _, _ -> }, + ) + } + } +} 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 fdd01f5ad1..5f6fa1b164 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 @@ -55,7 +55,7 @@ class PinnedMessagesBannerPresenterTest { @Test fun `present - loading state`() = runTest { val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(FakeTimeline()) } + createTimelineResult = { Result.success(FakeTimeline()) } ).apply { givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID))) } @@ -86,7 +86,7 @@ class PinnedMessagesBannerPresenterTest { ) ) val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) } + createTimelineResult = { Result.success(pinnedEventsTimeline) } ).apply { givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID, AN_EVENT_ID_2))) } @@ -125,7 +125,7 @@ class PinnedMessagesBannerPresenterTest { ) ) val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) } + createTimelineResult = { Result.success(pinnedEventsTimeline) } ).apply { givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID, AN_EVENT_ID_2))) } @@ -160,7 +160,7 @@ class PinnedMessagesBannerPresenterTest { @Test fun `present - timeline failed`() = runTest { val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.failure(Exception()) } + createTimelineResult = { Result.failure(Exception()) } ).apply { givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID))) } @@ -194,7 +194,8 @@ class PinnedMessagesBannerPresenterTest { syncService = syncService, featureFlagService = FakeFeatureFlagService( initialState = mapOf(FeatureFlags.PinnedEvents.key to isFeatureEnabled) - ) + ), + dispatchers = testCoroutineDispatchers(), ) timelineProvider.launchIn(backgroundScope) 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 3799eb2c74..7fcbfb62eb 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 @@ -38,6 +38,7 @@ import io.element.android.tests.testutils.lambda.assert 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.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.TestScope @@ -82,7 +83,7 @@ class PinnedMessagesListPresenterTest { @Test fun `present - timeline failure state`() = runTest { val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.failure(RuntimeException()) }, + createTimelineResult = { Result.failure(RuntimeException()) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -101,7 +102,7 @@ class PinnedMessagesListPresenterTest { @Test fun `present - empty state`() = runTest { val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -121,7 +122,7 @@ class PinnedMessagesListPresenterTest { fun `present - filled state`() = runTest { val pinnedEventsTimeline = createPinnedMessagesTimeline() val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) }, + createTimelineResult = { Result.success(pinnedEventsTimeline) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -148,7 +149,7 @@ class PinnedMessagesListPresenterTest { val pinnedEventsTimeline = createPinnedMessagesTimeline() val analyticsService = FakeAnalyticsService() val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) }, + createTimelineResult = { Result.success(pinnedEventsTimeline) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -194,7 +195,7 @@ class PinnedMessagesListPresenterTest { } val pinnedEventsTimeline = createPinnedMessagesTimeline() val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) }, + createTimelineResult = { Result.success(pinnedEventsTimeline) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -223,7 +224,7 @@ class PinnedMessagesListPresenterTest { } val pinnedEventsTimeline = createPinnedMessagesTimeline() val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) }, + createTimelineResult = { Result.success(pinnedEventsTimeline) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -252,7 +253,7 @@ class PinnedMessagesListPresenterTest { } val pinnedEventsTimeline = createPinnedMessagesTimeline() val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) }, + createTimelineResult = { Result.success(pinnedEventsTimeline) }, canRedactOwnResult = { Result.success(true) }, canRedactOtherResult = { Result.success(true) }, canUserPinUnpinResult = { Result.success(true) }, @@ -302,7 +303,8 @@ class PinnedMessagesListPresenterTest { syncService = syncService, featureFlagService = FakeFeatureFlagService( initialState = mapOf(FeatureFlags.PinnedEvents.key to isFeatureEnabled) - ) + ), + dispatchers = testCoroutineDispatchers(), ) timelineProvider.launchIn(backgroundScope) return PinnedMessagesListPresenter( diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelineControllerTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelineControllerTest.kt index a9c8f085d8..83cc05eb52 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelineControllerTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelineControllerTest.kt @@ -31,7 +31,7 @@ class TimelineControllerTest { val detachedTimeline = FakeTimeline(name = "detached") val matrixRoom = FakeMatrixRoom( liveTimeline = liveTimeline, - timelineFocusedOnEventResult = { Result.success(detachedTimeline) } + createTimelineResult = { Result.success(detachedTimeline) } ) val sut = TimelineController(matrixRoom) @@ -63,7 +63,7 @@ class TimelineControllerTest { var callNumber = 0 val matrixRoom = FakeMatrixRoom( liveTimeline = liveTimeline, - timelineFocusedOnEventResult = { + createTimelineResult = { callNumber++ when (callNumber) { 1 -> Result.success(detachedTimeline1) @@ -117,7 +117,7 @@ class TimelineControllerTest { val detachedTimeline = FakeTimeline(name = "detached") val matrixRoom = FakeMatrixRoom( liveTimeline = liveTimeline, - timelineFocusedOnEventResult = { Result.success(detachedTimeline) } + createTimelineResult = { Result.success(detachedTimeline) } ) val sut = TimelineController(matrixRoom) sut.activeTimelineFlow().test { @@ -167,7 +167,7 @@ class TimelineControllerTest { } val matrixRoom = FakeMatrixRoom( liveTimeline = liveTimeline, - timelineFocusedOnEventResult = { Result.success(detachedTimeline) } + createTimelineResult = { Result.success(detachedTimeline) } ) val sut = TimelineController(matrixRoom) sut.activeTimelineFlow().test { @@ -192,7 +192,7 @@ class TimelineControllerTest { val detachedTimeline = FakeTimeline(name = "detached") val matrixRoom = FakeMatrixRoom( liveTimeline = liveTimeline, - timelineFocusedOnEventResult = { Result.success(detachedTimeline) } + createTimelineResult = { Result.success(detachedTimeline) } ) val sut = TimelineController(matrixRoom) 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 60a5274142..6c81745ce4 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 @@ -483,7 +483,7 @@ import kotlin.time.Duration.Companion.seconds ) val room = FakeMatrixRoom( liveTimeline = liveTimeline, - timelineFocusedOnEventResult = { Result.success(detachedTimeline) }, + createTimelineResult = { Result.success(detachedTimeline) }, canUserSendMessageResult = { _, _ -> Result.success(true) }, ) val presenter = createTimelinePresenter( @@ -561,7 +561,7 @@ import kotlin.time.Duration.Companion.seconds liveTimeline = FakeTimeline( timelineItems = flowOf(emptyList()), ), - timelineFocusedOnEventResult = { Result.failure(Throwable("An error")) }, + createTimelineResult = { Result.failure(Throwable("An error")) }, canUserSendMessageResult = { _, _ -> Result.success(true) }, ) ) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt index 86937f0fea..51f3f09268 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt @@ -144,6 +144,7 @@ class TimelineItemContentMessageFactoryTest { plainText = "body", isEdited = false, formattedBody = null, + pillifiedBody = SpannableString("body"), ) assertThat(result).isEqualTo(expected) } diff --git a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkMonitor.kt b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkMonitor.kt index d9a26dd5bb..196eb89310 100644 --- a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkMonitor.kt +++ b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkMonitor.kt @@ -9,6 +9,14 @@ package io.element.android.features.networkmonitor.api import kotlinx.coroutines.flow.StateFlow +/** + * Monitors the network status of the device, providing the current network connectivity status as a flow. + * + * **Note:** network connectivity does not imply internet connectivity. The device can be connected to a network that can't reach the homeserver. + */ interface NetworkMonitor { + /** + * A flow containing the current network connectivity status. + */ val connectivity: StateFlow } diff --git a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkStatus.kt b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkStatus.kt index 59deb7a8d0..aebcb5a1d1 100644 --- a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkStatus.kt +++ b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/NetworkStatus.kt @@ -7,7 +7,19 @@ package io.element.android.features.networkmonitor.api +/** + * Network connectivity status of the device. + * + * **Note:** this is *network* connectivity status, not *internet* connectivity status. + */ enum class NetworkStatus { - Online, - Offline + /** + * The device is connected to a network. + */ + Connected, + + /** + * The device is not connected to any networks. + */ + Disconnected } 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/Indicator.kt index 992e9bf53c..95c46d3fd0 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/Indicator.kt @@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -25,6 +24,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp 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.text.toDp import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text @@ -37,24 +38,29 @@ internal fun Indicator( Row( modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.secondaryContainer) + .background(ElementTheme.colors.bgSubtlePrimary) .statusBarsPadding() .padding(vertical = 6.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically, ) { - val tint = MaterialTheme.colorScheme.primary Icon( imageVector = CompoundIcons.Offline(), contentDescription = null, - tint = tint, + tint = ElementTheme.colors.iconPrimary, modifier = Modifier.size(16.sp.toDp()), ) Spacer(modifier = Modifier.width(8.dp)) Text( text = stringResource(CommonStrings.common_offline), style = ElementTheme.typography.fontBodyMdMedium, - color = tint, + color = ElementTheme.colors.textPrimary, ) } } + +@PreviewsDayNight +@Composable +internal fun IndicatorPreview() = ElementPreview { + Indicator() +} 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 eb0d4a7429..6d6952ab14 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 @@ -12,7 +12,6 @@ package io.element.android.features.networkmonitor.impl import android.content.Context import android.net.ConnectivityManager import android.net.Network -import android.net.NetworkCapabilities import android.net.NetworkRequest import com.squareup.anvil.annotations.ContributesBinding import io.element.android.features.networkmonitor.api.NetworkMonitor @@ -55,20 +54,18 @@ class DefaultNetworkMonitor @Inject constructor( override fun onLost(network: Network) { if (activeNetworksCount.decrementAndGet() == 0) { - trySendBlocking(NetworkStatus.Offline) + trySendBlocking(NetworkStatus.Disconnected) } } override fun onAvailable(network: Network) { if (activeNetworksCount.incrementAndGet() > 0) { - trySendBlocking(NetworkStatus.Online) + trySendBlocking(NetworkStatus.Connected) } } } trySendBlocking(connectivityManager.activeNetworkStatus()) - val request = NetworkRequest.Builder() - .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) - .build() + val request = NetworkRequest.Builder().build() connectivityManager.registerNetworkCallback(request, callback) Timber.d("Subscribe") @@ -85,17 +82,6 @@ class DefaultNetworkMonitor @Inject constructor( .stateIn(appCoroutineScope, SharingStarted.WhileSubscribed(), connectivityManager.activeNetworkStatus()) private fun ConnectivityManager.activeNetworkStatus(): NetworkStatus { - return activeNetwork?.let { - getNetworkCapabilities(it)?.getNetworkStatus() - } ?: NetworkStatus.Offline - } - - private fun NetworkCapabilities.getNetworkStatus(): NetworkStatus { - val hasInternet = hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) - return if (hasInternet) { - NetworkStatus.Online - } else { - NetworkStatus.Offline - } + return if (activeNetwork != null) NetworkStatus.Connected else NetworkStatus.Disconnected } } diff --git a/features/networkmonitor/test/src/main/kotlin/io/element/android/features/networkmonitor/test/FakeNetworkMonitor.kt b/features/networkmonitor/test/src/main/kotlin/io/element/android/features/networkmonitor/test/FakeNetworkMonitor.kt index 0566512df7..298e06aa5b 100644 --- a/features/networkmonitor/test/src/main/kotlin/io/element/android/features/networkmonitor/test/FakeNetworkMonitor.kt +++ b/features/networkmonitor/test/src/main/kotlin/io/element/android/features/networkmonitor/test/FakeNetworkMonitor.kt @@ -11,6 +11,6 @@ import io.element.android.features.networkmonitor.api.NetworkMonitor import io.element.android.features.networkmonitor.api.NetworkStatus import kotlinx.coroutines.flow.MutableStateFlow -class FakeNetworkMonitor(initialStatus: NetworkStatus = NetworkStatus.Online) : NetworkMonitor { +class FakeNetworkMonitor(initialStatus: NetworkStatus = NetworkStatus.Connected) : NetworkMonitor { override val connectivity = MutableStateFlow(initialStatus) } diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt index 2d84a618fc..95a8e2618d 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt @@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.QrCode import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.BiasAlignment @@ -27,6 +25,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.atomic.atoms.ElementLogoAtom import io.element.android.libraries.designsystem.atomic.atoms.ElementLogoAtomSize import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule @@ -103,14 +102,14 @@ private fun OnBoardingContent(state: OnBoardingState) { ) { Text( text = stringResource(id = R.string.screen_onboarding_welcome_title), - color = ElementTheme.materialColors.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontHeadingLgBold, textAlign = TextAlign.Center ) Spacer(modifier = Modifier.height(8.dp)) Text( text = stringResource(id = R.string.screen_onboarding_welcome_message, state.productionApplicationName), - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodyLgRegular.copy(fontSize = 17.sp), textAlign = TextAlign.Center ) @@ -136,7 +135,7 @@ private fun OnBoardingButtons( if (state.canLoginWithQrCode) { Button( text = stringResource(id = R.string.screen_onboarding_sign_in_with_qr_code), - leadingIcon = IconSource.Vector(Icons.Default.QrCode), + leadingIcon = IconSource.Vector(CompoundIcons.QrCode()), onClick = onSignInWithQrCode, modifier = Modifier.fillMaxWidth() ) diff --git a/features/onboarding/impl/src/main/res/values-cs/translations.xml b/features/onboarding/impl/src/main/res/values-cs/translations.xml index 057fdff4ee..264478f26e 100644 --- a/features/onboarding/impl/src/main/res/values-cs/translations.xml +++ b/features/onboarding/impl/src/main/res/values-cs/translations.xml @@ -3,7 +3,7 @@ "Ruční přihlášení" "Přihlásit se pomocí QR kódu" "Vytvořit účet" - "Vítejte u dosud nejrychlejšího %1$su. Vylepšený pro rychlost a jednoduchost." - "Vítejte v %1$s. Vylepšený, pro rychlost a jednoduchost." + "Vítejte v dosud nejrychlejším %1$su. Vylepšený pro rychlost a jednoduchost." + "Vítejte v %1$su. Vylepšený, pro rychlost a jednoduchost." "Buďte ve svém živlu" diff --git a/features/onboarding/impl/src/main/res/values-nb/translations.xml b/features/onboarding/impl/src/main/res/values-nb/translations.xml index d53a5a10e1..f04d28ce4e 100644 --- a/features/onboarding/impl/src/main/res/values-nb/translations.xml +++ b/features/onboarding/impl/src/main/res/values-nb/translations.xml @@ -1,5 +1,8 @@ + "Logg på manuelt" + "Logg inn med QR-kode" + "Opprett konto" "Velkommen til %1$s. Supercharged, for hastighet og enkelhet." "Vær i ditt rette element" diff --git a/features/onboarding/impl/src/main/res/values-tr/translations.xml b/features/onboarding/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..72dcb42a90 --- /dev/null +++ b/features/onboarding/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,9 @@ + + + "Manuel olarak oturum aç" + "QR kodu ile giriş yap" + "Hesap oluştur" + "Şimdiye kadarki en hızlı %1$s hoş geldiniz. Hız ve basitlik için güçlendirildi." + "%1$s\'e hoş geldiniz. Hız ve basitlik için süper şarjlı." + "Kendi elementinizde olun" + diff --git a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt index 4a2ba6360e..6243bd38d9 100644 --- a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt +++ b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt @@ -15,9 +15,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.RadioButtonUnchecked import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -25,6 +22,7 @@ import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.res.pluralStringResource 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 @@ -45,9 +43,9 @@ internal fun PollAnswerView( ) { Icon( imageVector = if (answerItem.isSelected) { - Icons.Default.CheckCircle + CompoundIcons.CheckCircleSolid() } else { - Icons.Default.RadioButtonUnchecked + CompoundIcons.Circle() }, contentDescription = null, modifier = Modifier 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 7df06d9640..77853e378e 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 @@ -19,8 +19,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -159,7 +157,7 @@ fun CreatePollView( ListItem( headlineContent = { Text(text = stringResource(id = R.string.screen_create_poll_add_option_btn)) }, leadingContent = ListItemContent.Icon( - iconSource = IconSource.Vector(Icons.Default.Add), + iconSource = IconSource.Vector(CompoundIcons.Plus()), ), style = ListItemStyle.Primary, onClick = { diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt index be517fa80d..0ad8f8fe84 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt @@ -24,7 +24,6 @@ import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -236,7 +235,7 @@ private fun PollHistoryItemRow( Column(modifier = Modifier.padding(16.dp)) { Text( text = pollHistoryItem.formattedDate, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodySmRegular, ) Spacer(modifier = Modifier.height(4.dp)) diff --git a/features/poll/impl/src/main/res/values-tr/translations.xml b/features/poll/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..eecf3ad053 --- /dev/null +++ b/features/poll/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,19 @@ + + + "Seçenek ekle" + "Sonuçları yalnızca anket bittikten sonra göster" + "Oyları gizle" + "Seçenek %1$d" + "Değişiklikleriniz kaydedilmedi. Geri dönmek istediğinden emin misin?" + "Soru veya konu" + "Anket ne hakkında?" + "Anket Oluştur" + "Bu anketi silmek istediğinize emin misiniz?" + "Anketi Sil" + "Anketi düzenle" + "Devam eden bir anket bulamadım." + "Geçmiş herhangi bir anket bulamıyorum." + "Devam ediyor" + "Geçmiş" + "Anketler" + 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 ea3a411d0a..08be506990 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 @@ -8,9 +8,9 @@ package io.element.android.features.preferences.impl.about import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -41,7 +41,7 @@ class AboutNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) val isDark = ElementTheme.isLightTheme.not() val state = presenter.present() AboutView( 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 11a11ada72..4a9437a188 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 @@ -13,7 +13,6 @@ import io.element.android.libraries.featureflag.ui.model.FeatureUiModel sealed interface DeveloperSettingsEvents { data class UpdateEnabledFeature(val feature: FeatureUiModel, val isEnabled: Boolean) : DeveloperSettingsEvents data class SetCustomElementCallBaseUrl(val baseUrl: String?) : DeveloperSettingsEvents - data class SetSimplifiedSlidingSyncEnabled(val isEnabled: Boolean) : DeveloperSettingsEvents data class SetHideImagesAndVideos(val value: Boolean) : DeveloperSettingsEvents data class SetTracingLogLevel(val logLevel: LogLevelItem) : DeveloperSettingsEvents data object ClearCache : DeveloperSettingsEvents 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 91f8afcb8e..fafe5fc920 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 @@ -7,10 +7,9 @@ package io.element.android.features.preferences.impl.developer -import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.airbnb.android.showkase.models.Showkase import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node @@ -29,7 +28,7 @@ class DeveloperSettingsNode @AssistedInject constructor( ) : Node(buildContext, plugins = plugins) { @Composable override fun View(modifier: Modifier) { - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) fun openShowkase() { val intent = Showkase.getBrowserIntent(activity) activity.startActivity(intent) 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 66c8d8d7b3..ced2c87a9d 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 @@ -19,7 +19,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.snapshots.SnapshotStateMap import io.element.android.appconfig.ElementCallConfig -import io.element.android.features.logout.api.LogoutUseCase 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 @@ -51,7 +50,6 @@ class DeveloperSettingsPresenter @Inject constructor( private val rageshakePresenter: Presenter, private val appPreferencesStore: AppPreferencesStore, private val buildMeta: BuildMeta, - private val logoutUseCase: LogoutUseCase, ) : Presenter { @Composable override fun present(): DeveloperSettingsState { @@ -72,17 +70,14 @@ class DeveloperSettingsPresenter @Inject constructor( val customElementCallBaseUrl by appPreferencesStore .getCustomElementCallBaseUrlFlow() .collectAsState(initial = null) - val isSimplifiedSlidingSyncEnabled by appPreferencesStore - .isSimplifiedSlidingSyncEnabledFlow() - .collectAsState(initial = false) val hideImagesAndVideos by appPreferencesStore .doesHideImagesAndVideosFlow() .collectAsState(initial = false) - val tracingLogLevel by appPreferencesStore - .getTracingLogLevelFlow() - .map { AsyncData.Success(it.toLogLevelItem()) } - .collectAsState(initial = AsyncData.Uninitialized) + val tracingLogLevelFlow = remember { + appPreferencesStore.getTracingLogLevelFlow().map { AsyncData.Success(it.toLogLevelItem()) } + } + val tracingLogLevel by tracingLogLevelFlow.collectAsState(initial = AsyncData.Uninitialized) LaunchedEffect(Unit) { FeatureFlags.entries @@ -122,12 +117,6 @@ class DeveloperSettingsPresenter @Inject constructor( appPreferencesStore.setCustomElementCallBaseUrl(urlToSave) } DeveloperSettingsEvents.ClearCache -> coroutineScope.clearCache(clearCacheAction) - is DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled -> coroutineScope.launch { - appPreferencesStore.setSimplifiedSlidingSyncEnabled(event.isEnabled) - runCatching { - logoutUseCase.logout(ignoreSdkError = true) - } - } is DeveloperSettingsEvents.SetHideImagesAndVideos -> coroutineScope.launch { appPreferencesStore.setHideImagesAndVideos(event.value) } @@ -147,7 +136,6 @@ class DeveloperSettingsPresenter @Inject constructor( defaultUrl = ElementCallConfig.DEFAULT_BASE_URL, validator = ::customElementCallUrlValidator, ), - isSimpleSlidingSyncEnabled = isSimplifiedSlidingSyncEnabled, hideImagesAndVideos = hideImagesAndVideos, tracingLogLevel = tracingLogLevel, 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 c9641ab686..34574cd5c5 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 @@ -20,7 +20,6 @@ data class DeveloperSettingsState( val rageshakeState: RageshakePreferencesState, val clearCacheAction: AsyncAction, val customElementCallBaseUrlState: CustomElementCallBaseUrlState, - val isSimpleSlidingSyncEnabled: Boolean, val hideImagesAndVideos: Boolean, val tracingLogLevel: AsyncData, 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 869c010529..83a029f10f 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 @@ -32,7 +32,6 @@ open class DeveloperSettingsStateProvider : PreviewParameterProvider = AsyncAction.Uninitialized, customElementCallBaseUrlState: CustomElementCallBaseUrlState = aCustomElementCallBaseUrlState(), - isSimplifiedSlidingSyncEnabled: Boolean = false, hideImagesAndVideos: Boolean = false, eventSink: (DeveloperSettingsEvents) -> Unit = {}, ) = DeveloperSettingsState( @@ -41,7 +40,6 @@ fun aDeveloperSettingsState( cacheSize = AsyncData.Success("1.2 MB"), clearCacheAction = clearCacheAction, customElementCallBaseUrlState = customElementCallBaseUrlState, - isSimpleSlidingSyncEnabled = isSimplifiedSlidingSyncEnabled, hideImagesAndVideos = hideImagesAndVideos, tracingLogLevel = AsyncData.Success(LogLevelItem.INFO), 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 7b0b39db90..86666175a4 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 @@ -60,14 +60,6 @@ fun DeveloperSettingsView( state.eventSink(DeveloperSettingsEvents.SetTracingLogLevel(logLevel)) } ) - PreferenceSwitch( - title = "Enable Simplified Sliding Sync", - subtitle = "When toggled you'll be logged out of the app and will need to log in again.", - isChecked = state.isSimpleSlidingSyncEnabled, - onCheckedChange = { - state.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(it)) - } - ) } PreferenceCategory(title = "Showkase") { PreferenceText( 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 a78b94c866..317c6e796e 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 @@ -83,19 +83,19 @@ class NotificationSettingsPresenter @Inject constructor( } } } - // List of Distributor names - val distributorNames = remember { - distributors.map { it.second.name }.toImmutableList() + // List of Distributors + val availableDistributors = remember { + distributors.map { it.second }.toImmutableList() } - var currentDistributorName by remember { mutableStateOf>(AsyncData.Uninitialized) } + var currentDistributor by remember { mutableStateOf>(AsyncData.Uninitialized) } var refreshPushProvider by remember { mutableIntStateOf(0) } LaunchedEffect(refreshPushProvider) { val p = pushService.getCurrentPushProvider() - val name = p?.getCurrentDistributor(matrixClient.sessionId)?.name - currentDistributorName = if (name != null) { - AsyncData.Success(name) + val distributor = p?.getCurrentDistributor(matrixClient.sessionId) + currentDistributor = if (distributor != null) { + AsyncData.Success(distributor) } else { AsyncData.Failure(Exception("Failed to get current push provider")) } @@ -108,24 +108,23 @@ class NotificationSettingsPresenter @Inject constructor( ) = launch { showChangePushProviderDialog = false data ?: return@launch - // No op if the value is the same. - if (data.second.name == currentDistributorName.dataOrNull()) return@launch - currentDistributorName = AsyncData.Loading(currentDistributorName.dataOrNull()) - data.let { (pushProvider, distributor) -> - pushService.registerWith( - matrixClient = matrixClient, - pushProvider = pushProvider, - distributor = distributor + val (pushProvider, distributor) = data + // No op if the distributor is the same. + if (distributor == currentDistributor.dataOrNull()) return@launch + currentDistributor = AsyncData.Loading(currentDistributor.dataOrNull()) + pushService.registerWith( + matrixClient = matrixClient, + pushProvider = pushProvider, + distributor = distributor + ) + .fold( + { + refreshPushProvider++ + }, + { + currentDistributor = AsyncData.Failure(it) + } ) - .fold( - { - refreshPushProvider++ - }, - { - currentDistributorName = AsyncData.Failure(it) - } - ) - } } fun handleEvents(event: NotificationSettingsEvents) { @@ -162,8 +161,8 @@ class NotificationSettingsPresenter @Inject constructor( appNotificationsEnabled = appNotificationsEnabled.value ), changeNotificationSettingAction = changeNotificationSettingAction.value, - currentPushDistributor = currentDistributorName, - availablePushDistributors = distributorNames, + currentPushDistributor = currentDistributor, + availablePushDistributors = availableDistributors, showChangePushProviderDialog = showChangePushProviderDialog, fullScreenIntentPermissionsState = key(refreshFullScreenIntentSettings) { fullScreenIntentPermissionsPresenter.present() }, eventSink = ::handleEvents 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 5f3b00a174..a7a1bf9192 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 @@ -12,6 +12,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState import io.element.android.libraries.matrix.api.room.RoomNotificationMode +import io.element.android.libraries.pushproviders.api.Distributor import kotlinx.collections.immutable.ImmutableList @Immutable @@ -19,8 +20,8 @@ data class NotificationSettingsState( val matrixSettings: MatrixSettings, val appSettings: AppSettings, val changeNotificationSettingAction: AsyncAction, - val currentPushDistributor: AsyncData, - val availablePushDistributors: ImmutableList, + val currentPushDistributor: AsyncData, + val availablePushDistributors: ImmutableList, val showChangePushProviderDialog: Boolean, val fullScreenIntentPermissionsState: FullScreenIntentPermissionsState, val eventSink: (NotificationSettingsEvents) -> Unit, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsStateProvider.kt index 01765d2399..c0193bd6a2 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsStateProvider.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState import io.element.android.libraries.matrix.api.room.RoomNotificationMode +import io.element.android.libraries.pushproviders.api.Distributor import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList @@ -24,11 +25,19 @@ open class NotificationSettingsStateProvider : PreviewParameterProvider = AsyncData.Success("Firebase"), - availablePushDistributors: List = listOf("Firebase", "ntfy"), + currentPushDistributor: AsyncData = AsyncData.Success(aDistributor("Firebase")), + availablePushDistributors: List = listOf( + aDistributor("Firebase"), + aDistributor("ntfy"), + ), showChangePushProviderDialog: Boolean = false, fullScreenIntentPermissionsState: FullScreenIntentPermissionsState = aFullScreenIntentPermissionsState(), eventSink: (NotificationSettingsEvents) -> Unit = {}, @@ -88,3 +100,11 @@ fun aInvalidNotificationSettingsState( fullScreenIntentPermissionsState = aFullScreenIntentPermissionsState(), eventSink = eventSink, ) + +fun aDistributor( + name: String = "Name", + value: String = "$name Value", +) = Distributor( + value = value, + name = name, +) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt index d74ed8581c..a48b9651ef 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt @@ -132,7 +132,7 @@ private fun NotificationSettingsContentView( if (!state.fullScreenIntentPermissionsState.permissionGranted) { PreferenceCategory { PreferenceText( - icon = CompoundIcons.VoiceCall(), + icon = CompoundIcons.VoiceCallSolid(), title = stringResource(id = R.string.full_screen_intent_banner_title), subtitle = stringResource(R.string.full_screen_intent_banner_message), onClick = { @@ -206,7 +206,7 @@ private fun NotificationSettingsContentView( stringResource(id = CommonStrings.common_error) ) is AsyncData.Success -> ListItemContent.Text( - state.currentPushDistributor.dataOrNull() ?: "" + state.currentPushDistributor.dataOrNull()?.name ?: "" ) }, onClick = { @@ -219,8 +219,14 @@ private fun NotificationSettingsContentView( if (state.showChangePushProviderDialog) { SingleSelectionDialog( title = stringResource(id = R.string.screen_advanced_settings_choose_distributor_dialog_title_android), - options = state.availablePushDistributors.map { - ListOption(title = it) + options = state.availablePushDistributors.map { distributor -> + // If there are several distributors with the same name, use the full name + val title = if (state.availablePushDistributors.count { it.name == distributor.name } > 1) { + distributor.fullName + } else { + distributor.name + } + ListOption(title = title) }.toImmutableList(), initialSelection = state.availablePushDistributors.indexOf(state.currentPushDistributor.dataOrNull()), onSelectOption = { index -> 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 57196621b9..c1c98be353 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 @@ -8,9 +8,9 @@ package io.element.android.features.preferences.impl.root import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -21,7 +21,6 @@ import io.element.android.anvilannotations.ContributesNode 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.features.logout.api.util.onSuccessLogout import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.user.MatrixUser @@ -113,7 +112,7 @@ class PreferencesRootNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { val state = presenter.present() - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) val isDark = ElementTheme.isLightTheme.not() PreferencesRootView( state = state, @@ -140,11 +139,6 @@ class PreferencesRootNode @AssistedInject constructor( onDeactivateClick = this::onOpenAccountDeactivation ) - directLogoutView.Render( - state = state.directLogoutState, - onSuccessLogout = { - onSuccessLogout(activity, isDark, it) - } - ) + directLogoutView.Render(state = state.directLogoutState) } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt index 75d260d6a3..236d659f33 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt @@ -262,7 +262,7 @@ private fun ColumnScope.Footer( textAlign = TextAlign.Center, text = text, style = ElementTheme.typography.fontBodySmRegular, - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, ) } 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 5bb4147625..b5a6d99fa7 100644 --- a/features/preferences/impl/src/main/res/values-pl/translations.xml +++ b/features/preferences/impl/src/main/res/values-pl/translations.xml @@ -8,7 +8,7 @@ "Własny bazowy URL dla połączeń Element" "Ustaw własny bazowy URL dla połączeń Element" "Nieprawidłowy adres URL, upewnij się, że zawiera protokół (http/https) i poprawny adres." - "Przesyłaj zdjęcia i filmy szybciej i zmniejsz zużycie danych" + "Przesyłaj zdjęcia i filmy szybciej, zmniejszając zużycie danych" "Optymalizuj jakość multimediów" "Dostawca powiadomień push" "Wyłącz edytor tekstu bogatego, aby pisać tekst Markdown ręcznie." diff --git a/features/preferences/impl/src/main/res/values-sv/translations.xml b/features/preferences/impl/src/main/res/values-sv/translations.xml index aa765bc080..34887548ad 100644 --- a/features/preferences/impl/src/main/res/values-sv/translations.xml +++ b/features/preferences/impl/src/main/res/values-sv/translations.xml @@ -8,6 +8,8 @@ "Anpassad bas-URL för Element Call" "Ange en anpassad bas-URL för Element Call." "Ogiltig URL, se till att du inkluderar protokollet (http/https) och rätt adress." + "Ladda upp foton och videor snabbare och minska dataanvändningen" + "Optimera mediekvaliteten" "Pushnotisleverantör" "Inaktivera rik-text-redigeraren för att skriva Markdown manuellt." "Läskvitton" diff --git a/features/preferences/impl/src/main/res/values-tr/translations.xml b/features/preferences/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..a13a006e22 --- /dev/null +++ b/features/preferences/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,60 @@ + + + "Önemli bir aramayı asla kaçırmamak için, telefonunuz kilitliyken tam ekran bildirimlere izin vermek üzere ayarlarınızı değiştirin." + "Arama deneyiminizi geliştirin" + "Bildirimleri nasıl alacağınızı seçin" + "Geliştirici modu" + "Geliştiriciler için özelliklere ve işlevlere erişim sağlayın." + "Özel Element Call temel URL\'si" + "Element Call için özel bir temel URL ayarlayın." + "Geçersiz URL, lütfen protokolü (http/https) ve doğru adresi eklediğinizden emin olun." + "Fotoğraf ve videoları daha hızlı yükleyin ve veri kullanımını azaltın" + "Medya kalitesini optimize edin" + "Anlık bildirim sağlayıcısı" + "Markdown\'ı manuel olarak yazmak için zengin metin düzenleyicisini devre dışı bırakın." + "Okundu bilgisi" + "Kapatılırsa, okundu bilgileriniz kimseye gönderilmez. Diğer kullanıcılardan okundu bilgisi almaya devam edersiniz." + "Varlığı paylaşın" + "Kapatılırsa, okundu bilgisi veya yazma bildirimleri gönderemez veya alamazsınız." + "Zaman çizelgesinde mesaj kaynağını görüntüleme seçeneğini etkinleştirin." + "Engellenen kullanıcı yok." + "Engellemeyi kaldır" + "Onlardan gelen tüm mesajları tekrar görebileceksiniz." + "Kullanıcının engelini kaldır" + "Engel kaldırılıyor…" + "Görünen ad" + "Görünen adınız" + "Bilinmeyen bir hatayla karşılaşıldı ve bilgiler değiştirilemedi." + "Profil güncellenemiyor" + "Profili düzenle" + "Profil güncelleniyor…" + "Ek ayarlar" + "Sesli ve Görüntülü aramalar" + "Yapılandırma uyuşmazlığı" + "Seçeneklerin bulunmasını kolaylaştırmak için Bildirim Ayarlarını basitleştirdik. Geçmişte seçtiğiniz bazı özel ayarlar burada gösterilmez, ancak hala aktiftir. + +Devam ederseniz, bazı ayarlarınız değişebilir." + "Doğrudan sohbetler" + "Sohbet başına özel ayar" + "Bildirim ayarı güncellenirken bir hata oluştu." + "Tüm mesajlar" + "Yalnızca Bahsetmeler ve Anahtar Kelimeler" + "Doğrudan sohbetlerde, beni bilgilendir" + "Grup sohbetlerinde, beni bilgilendir" + "Bu cihazda bildirimleri etkinleştir" + "Yapılandırma düzeltilmedi, lütfen tekrar deneyin." + "Grup sohbetleri" + "Davetler" + "Ana sunucunuz şifreli odalarda bu seçeneği desteklemiyor, bazı odalarda bildirim almayabilirsiniz." + "Bahsetmeler" + "Tümü" + "Bahsetmeler" + "Bana bildir" + "Bana @room\'da bildir" + "Bildirimleri almak için lütfen %1$s değiştirin." + "si̇stem ayarları" + "Sistem bildirimleri kapalı" + "Bildirimler" + "Sorun gider" + "Sorun Giderme Bildirimleri" + 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 a73114ea2c..f030e5b282 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 @@ -11,7 +11,6 @@ package io.element.android.features.preferences.impl.developer import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.ElementCallConfig -import io.element.android.features.logout.test.FakeLogoutUseCase 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 @@ -25,11 +24,9 @@ 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.test import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.first -import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -48,7 +45,6 @@ class DeveloperSettingsPresenterTest { assertThat(state.cacheSize).isEqualTo(AsyncData.Uninitialized) assertThat(state.customElementCallBaseUrlState).isNotNull() assertThat(state.customElementCallBaseUrlState.baseUrl).isNull() - assertThat(state.isSimpleSlidingSyncEnabled).isFalse() assertThat(state.hideImagesAndVideos).isFalse() assertThat(state.rageshakeState.isEnabled).isFalse() assertThat(state.rageshakeState.isSupported).isTrue() @@ -153,34 +149,6 @@ class DeveloperSettingsPresenterTest { } } - @Test - fun `present - toggling simplified sliding sync changes the preferences and logs out the user`() = runTest { - val logoutCallRecorder = lambdaRecorder { "" } - val logoutUseCase = FakeLogoutUseCase(logoutLambda = logoutCallRecorder) - val preferences = InMemoryAppPreferencesStore() - val presenter = createDeveloperSettingsPresenter(preferencesStore = preferences, logoutUseCase = logoutUseCase) - presenter.test { - skipItems(2) - awaitItem().also { state -> - assertThat(state.isSimpleSlidingSyncEnabled).isFalse() - state.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true)) - } - awaitItem().also { state -> - assertThat(state.isSimpleSlidingSyncEnabled).isTrue() - assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() - advanceUntilIdle() - logoutCallRecorder.assertions().isCalledOnce() - state.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(false)) - } - awaitItem().also { state -> - assertThat(state.isSimpleSlidingSyncEnabled).isFalse() - assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() - advanceUntilIdle() - logoutCallRecorder.assertions().isCalledExactly(2) - } - } - } - @Test fun `present - toggling hide image and video`() = runTest { val preferences = InMemoryAppPreferencesStore() @@ -225,7 +193,6 @@ class DeveloperSettingsPresenterTest { clearCacheUseCase: FakeClearCacheUseCase = FakeClearCacheUseCase(), preferencesStore: InMemoryAppPreferencesStore = InMemoryAppPreferencesStore(), buildMeta: BuildMeta = aBuildMeta(), - logoutUseCase: FakeLogoutUseCase = FakeLogoutUseCase(logoutLambda = { "" }) ): DeveloperSettingsPresenter { return DeveloperSettingsPresenter( featureFlagService = featureFlagService, @@ -234,7 +201,6 @@ class DeveloperSettingsPresenterTest { rageshakePresenter = { aRageshakePreferencesState() }, appPreferencesStore = preferencesStore, buildMeta = buildMeta, - logoutUseCase = logoutUseCase, ) } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt index 7d31517bf5..4c8631862d 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt @@ -102,19 +102,6 @@ class DeveloperSettingsViewTest { eventsRecorder.assertSingle(DeveloperSettingsEvents.ClearCache) } - @Config(qualifiers = "h1500dp") - @Test - fun `clicking on the simplified sliding sync switch emits the expected event`() { - val eventsRecorder = EventsRecorder() - rule.setDeveloperSettingsView( - state = aDeveloperSettingsState( - eventSink = eventsRecorder - ), - ) - rule.onNodeWithText("Enable Simplified Sliding Sync").performClick() - eventsRecorder.assertSingle(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true)) - } - @Test fun `clicking on the hide images and videos switch emits the expected event`() { val eventsRecorder = EventsRecorder() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTest.kt index 57179955a8..fcefd5c43d 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTest.kt @@ -240,8 +240,11 @@ class NotificationSettingsPresenterTest { presenter.present() }.test { val initialState = awaitLastSequentialItem() - assertThat(initialState.currentPushDistributor).isEqualTo(AsyncData.Success("aDistributorName0")) - assertThat(initialState.availablePushDistributors).containsExactly("aDistributorName0", "aDistributorName1") + assertThat(initialState.currentPushDistributor).isEqualTo(AsyncData.Success(Distributor(value = "aDistributorValue0", name = "aDistributorName0"))) + assertThat(initialState.availablePushDistributors).containsExactly( + Distributor(value = "aDistributorValue0", name = "aDistributorName0"), + Distributor(value = "aDistributorValue1", name = "aDistributorName1"), + ) initialState.eventSink.invoke(NotificationSettingsEvents.ChangePushProvider) val withDialog = awaitItem() assertThat(withDialog.showChangePushProviderDialog).isTrue() @@ -257,11 +260,35 @@ class NotificationSettingsPresenterTest { assertThat(withNewProvider.currentPushDistributor).isInstanceOf(AsyncData.Loading::class.java) skipItems(1) val lastItem = awaitItem() - assertThat(lastItem.currentPushDistributor).isEqualTo(AsyncData.Success("aDistributorName1")) + assertThat(lastItem.currentPushDistributor).isEqualTo(AsyncData.Success(Distributor(value = "aDistributorValue1", name = "aDistributorName1"))) cancelAndIgnoreRemainingEvents() } } + @Test + fun `present - change push provider to the same value is no op`() = runTest { + val presenter = createNotificationSettingsPresenter( + pushService = createFakePushService(), + ) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitLastSequentialItem() + assertThat(initialState.currentPushDistributor).isEqualTo(AsyncData.Success(Distributor(value = "aDistributorValue0", name = "aDistributorName0"))) + assertThat(initialState.availablePushDistributors).containsExactly( + Distributor(value = "aDistributorValue0", name = "aDistributorName0"), + Distributor(value = "aDistributorValue1", name = "aDistributorName1"), + ) + initialState.eventSink.invoke(NotificationSettingsEvents.ChangePushProvider) + assertThat(awaitItem().showChangePushProviderDialog).isTrue() + // Choose the same value (index 0) + initialState.eventSink(NotificationSettingsEvents.SetPushProvider(0)) + val withNewProvider = awaitItem() + assertThat(withNewProvider.showChangePushProviderDialog).isFalse() + expectNoEvents() + } + } + @Test fun `present - RefreshSystemNotificationsEnabled also refreshes fullScreenIntentState`() = runTest { var lambdaResult = aFullScreenIntentPermissionsState(permissionGranted = false) diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsViewTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsViewTest.kt index 01cc817941..2aa485a192 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsViewTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsViewTest.kt @@ -267,7 +267,7 @@ class NotificationSettingsViewTest { state = aValidNotificationSettingsState( eventSink = eventsRecorder, showChangePushProviderDialog = true, - availablePushDistributors = listOf("P1", "P2") + availablePushDistributors = listOf(aDistributor("P1"), aDistributor("P2")) ), ) rule.onNodeWithText("P2").performClick() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index 6f85c43621..72ae8bdb10 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -5,12 +5,11 @@ * Please see LICENSE files in the repository root for full details. */ +@file:OptIn(ExperimentalCoroutinesApi::class) + package io.element.android.features.preferences.impl.root -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow import app.cash.turbine.ReceiveTurbine -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.logout.api.direct.aDirectLogoutState import io.element.android.features.preferences.impl.utils.ShowDeveloperSettingsProvider @@ -18,6 +17,7 @@ import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.indicator.impl.DefaultIndicatorService +import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.A_USER_NAME @@ -27,6 +27,10 @@ import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.tests.testutils.WarmUpRule +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 import org.junit.Rule import org.junit.Test @@ -37,11 +41,16 @@ class PreferencesRootPresenterTest { @Test fun `present - initial state`() = runTest { - val matrixClient = FakeMatrixClient(canDeactivateAccountResult = { true }) - val presenter = createPresenter(matrixClient = matrixClient) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + val accountManagementUrlResult = lambdaRecorder> { action -> + Result.success("$action url") + } + val matrixClient = FakeMatrixClient( + canDeactivateAccountResult = { true }, + accountManagementUrlResult = accountManagementUrlResult, + ) + createPresenter( + matrixClient = matrixClient, + ).test { val initialState = awaitItem() assertThat(initialState.myUser).isEqualTo( MatrixUser( @@ -71,19 +80,26 @@ class PreferencesRootPresenterTest { assertThat(loadedState.canDeactivateAccount).isTrue() assertThat(loadedState.directLogoutState).isEqualTo(aDirectLogoutState()) assertThat(loadedState.snackbarMessage).isNull() + skipItems(1) + val finalState = awaitItem() + accountManagementUrlResult.assertions().isCalledExactly(2) + .withSequence( + listOf(value(AccountManagementAction.Profile)), + listOf(value(AccountManagementAction.SessionsList)), + ) + assertThat(finalState.accountManagementUrl).isEqualTo("Profile url") + assertThat(finalState.devicesManagementUrl).isEqualTo("SessionsList url") } } @Test fun `present - can deactivate account is false if the Matrix client say so`() = runTest { - val presenter = createPresenter( + createPresenter( matrixClient = FakeMatrixClient( - canDeactivateAccountResult = { false } - ) - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + canDeactivateAccountResult = { false }, + accountManagementUrlResult = { Result.success(null) }, + ), + ).test { val loadedState = awaitFirstItem() assertThat(loadedState.canDeactivateAccount).isFalse() } @@ -91,12 +107,13 @@ class PreferencesRootPresenterTest { @Test fun `present - developer settings is hidden by default in release builds`() = runTest { - val presenter = createPresenter( + createPresenter( + matrixClient = FakeMatrixClient( + canDeactivateAccountResult = { true }, + accountManagementUrlResult = { Result.success(null) }, + ), showDeveloperSettingsProvider = ShowDeveloperSettingsProvider(aBuildMeta(BuildType.RELEASE)) - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + ).test { val loadedState = awaitFirstItem() assertThat(loadedState.showDeveloperSettings).isFalse() } @@ -104,12 +121,13 @@ class PreferencesRootPresenterTest { @Test fun `present - developer settings can be enabled in release builds`() = runTest { - val presenter = createPresenter( + createPresenter( + matrixClient = FakeMatrixClient( + canDeactivateAccountResult = { true }, + accountManagementUrlResult = { Result.success(null) }, + ), showDeveloperSettingsProvider = ShowDeveloperSettingsProvider(aBuildMeta(BuildType.RELEASE)) - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + ).test { val loadedState = awaitFirstItem() repeat(times = ShowDeveloperSettingsProvider.DEVELOPER_SETTINGS_COUNTER) { assertThat(loadedState.showDeveloperSettings).isFalse() @@ -125,7 +143,7 @@ class PreferencesRootPresenterTest { } private fun createPresenter( - matrixClient: FakeMatrixClient = FakeMatrixClient(canDeactivateAccountResult = { true }), + matrixClient: FakeMatrixClient = FakeMatrixClient(), sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), showDeveloperSettingsProvider: ShowDeveloperSettingsProvider = ShowDeveloperSettingsProvider(aBuildMeta(BuildType.DEBUG)), ) = PreferencesRootPresenter( diff --git a/features/rageshake/api/src/main/res/values-tr/translations.xml b/features/rageshake/api/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..c2d0449fbd --- /dev/null +++ b/features/rageshake/api/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "%1$s son kullanıldığında çöktü. Bizimle bir çökme raporu paylaşmak ister misiniz?" + "Sinirden telefonu sallıyor gibi görünüyorsunuz. Hata raporu ekranını açmak ister misiniz?" + "Rageshake" + "Algılama eşiği" + 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 e1e394c46f..c124971efb 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 @@ -7,10 +7,9 @@ package io.element.android.features.rageshake.impl.bugreport -import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -38,7 +37,7 @@ class BugReportNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { val state = presenter.present() - val activity = LocalContext.current as? Activity + val activity = LocalActivity.current BugReportView( state = state, modifier = modifier, 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 fbf91fa46d..2272e8fe94 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 @@ -45,6 +45,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.debugPlaceholderBackground import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.TextField +import io.element.android.libraries.designsystem.theme.components.TextFieldValidity import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -90,7 +91,7 @@ fun BugReportView( keyboardController?.hide() }), minLines = 3, - isError = state.isDescriptionInError, + validity = if (state.isDescriptionInError) TextFieldValidity.Invalid else TextFieldValidity.None, ) } Spacer(modifier = Modifier.height(16.dp)) diff --git a/features/rageshake/impl/src/main/res/values-tr/translations.xml b/features/rageshake/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..d558126f21 --- /dev/null +++ b/features/rageshake/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,17 @@ + + + "Ekran görüntüsü ekle" + "Herhangi bir sorunuz olursa benimle iletişime geçebilirsiniz." + "Bana ulaş" + "Ekran görüntüsünü düzenle" + "Lütfen sorunu açıklayın. Ne yaptınız? Ne olmasını bekliyordunuz? Gerçekten ne oldu. Lütfen olabildiğince ayrıntılı bilgi verin." + "Sorunu açıklayın…" + "Mümkünse, lütfen açıklamayı İngilizce olarak yazın." + "Açıklama çok kısa, lütfen ne olduğu hakkında daha fazla ayrıntı verin. Teşekkürler!" + "Hata günlüklerini gönder" + "Günlüklere izin ver" + "Ekran görüntüsü gönder" + "Her şeyin düzgün çalıştığından emin olmak için günlükler mesajınıza dahil edilecektir. Mesajınızı kayıt tutmadan göndermek için bu ayarı kapatın." + "%1$s son kullanıldığında çöktü. Bizimle bir çökme raporu paylaşmak ister misiniz?" + "Günlükleri görüntüle" + diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverEvents.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverEvents.kt index b1faa6ef6d..34a96eaeb8 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverEvents.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverEvents.kt @@ -9,4 +9,5 @@ package io.element.android.features.roomaliasresolver.impl sealed interface RoomAliasResolverEvents { data object Retry : RoomAliasResolverEvents + data object DismissError : RoomAliasResolverEvents } 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 7391a35f41..34c655bd68 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 @@ -46,6 +46,7 @@ class RoomAliasResolverPresenter @AssistedInject constructor( fun handleEvents(event: RoomAliasResolverEvents) { when (event) { RoomAliasResolverEvents.Retry -> coroutineScope.resolveAlias(resolveState) + RoomAliasResolverEvents.DismissError -> resolveState.value = AsyncData.Uninitialized } } @@ -60,7 +61,7 @@ class RoomAliasResolverPresenter @AssistedInject constructor( suspend { matrixClient.resolveRoomAlias(roomAlias) .getOrThrow() - .getOrElse { error("Failed to resolve room alias $roomAlias") } + .getOrElse { throw RoomAliasResolverFailures.UnknownAlias } }.runCatchingUpdatingState(resolveState) } } 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 d03b004027..dc858621f7 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 @@ -18,3 +18,7 @@ data class RoomAliasResolverState( val resolveState: AsyncData, val eventSink: (RoomAliasResolverEvents) -> Unit ) + +sealed class RoomAliasResolverFailures : Exception() { + data object UnknownAlias : RoomAliasResolverFailures() +} diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverStateProvider.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverStateProvider.kt index 933d4acdf1..d629089cf8 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverStateProvider.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverStateProvider.kt @@ -10,6 +10,7 @@ package io.element.android.features.roomaliasresolver.impl import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.RoomAlias +import io.element.android.libraries.matrix.api.exception.ClientException import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias open class RoomAliasResolverStateProvider : PreviewParameterProvider { @@ -17,10 +18,10 @@ open class RoomAliasResolverStateProvider : PreviewParameterProvider Unit, modifier: Modifier = Modifier, ) { - val latestOnSuccess by rememberUpdatedState(onSuccess) - LaunchedEffect(state.resolveState) { - if (state.resolveState is AsyncData.Success) { - latestOnSuccess(state.resolveState.data) - } - } Box( modifier = modifier.fillMaxSize(), ) { - LightGradientBackground() HeaderFooterPage( containerColor = Color.Transparent, - paddingValues = PaddingValues(16.dp), + paddingValues = PaddingValues( + horizontal = 16.dp, + vertical = 32.dp + ), topBar = { RoomAliasResolverTopBar(onBackClick = onBackClick) }, content = { - RoomAliasResolverContent(state = state) + RoomAliasResolverContent(roomAlias = state.roomAlias, isLoading = state.resolveState.isLoading()) }, - footer = { - RoomAliasResolverFooter( - state = state, - ) + ) + ResolvedRoomAliasView( + resolvedRoomAlias = state.resolveState, + onSuccess = onSuccess, + onRetry = { state.eventSink(RoomAliasResolverEvents.Retry) }, + onDismissError = { + state.eventSink(RoomAliasResolverEvents.DismissError) + onBackClick() } ) } } @Composable -private fun RoomAliasResolverFooter( - state: RoomAliasResolverState, - modifier: Modifier = Modifier, +private fun ResolvedRoomAliasView( + resolvedRoomAlias: AsyncData, + onSuccess: (ResolvedRoomAlias) -> Unit, + onRetry: () -> Unit, + onDismissError: () -> Unit, ) { - when (state.resolveState) { - is AsyncData.Failure -> { - Button( - text = stringResource(CommonStrings.action_retry), - onClick = { - state.eventSink(RoomAliasResolverEvents.Retry) - }, - modifier = modifier.fillMaxWidth(), - size = ButtonSize.Large, - ) - } - is AsyncData.Loading -> { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.Center, - ) { - CircularProgressIndicator() + when (resolvedRoomAlias) { + is AsyncData.Success -> { + val latestOnSuccess by rememberUpdatedState(onSuccess) + LaunchedEffect(Unit) { + latestOnSuccess(resolvedRoomAlias.data) } } - AsyncData.Uninitialized, - is AsyncData.Success -> Unit + is AsyncData.Failure -> { + if (resolvedRoomAlias.error is RoomAliasResolverFailures.UnknownAlias) { + ErrorDialog( + title = stringResource(id = R.string.screen_join_room_loading_alert_title), + content = stringResource(id = R.string.screen_room_alias_resolver_resolve_alias_failure), + onSubmit = onDismissError + ) + } else { + RetryDialog( + title = stringResource(id = R.string.screen_join_room_loading_alert_title), + content = stringResource(id = CommonStrings.error_network_or_server_issue), + onRetry = onRetry, + onDismiss = onDismissError + ) + } + } + else -> Unit } } @Composable private fun RoomAliasResolverContent( - state: RoomAliasResolverState, + roomAlias: RoomAlias, + isLoading: Boolean, modifier: Modifier = Modifier, ) { RoomPreviewOrganism( @@ -118,20 +120,13 @@ private fun RoomAliasResolverContent( PlaceholderAtom(width = AvatarSize.RoomHeader.dp, height = AvatarSize.RoomHeader.dp) }, title = { - RoomPreviewTitleAtom(state.roomAlias.value) + RoomPreviewSubtitleAtom(roomAlias.value) }, subtitle = { - }, - description = { - if (state.resolveState.isFailure()) { - Text( - text = stringResource(id = R.string.screen_room_alias_resolver_resolve_alias_failure), - textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.error, - ) + if (isLoading) { + Spacer(Modifier.height(8.dp)) + CircularProgressIndicator() } - }, - memberCount = { } ) } diff --git a/features/roomaliasresolver/impl/src/main/res/values-cs/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-cs/translations.xml index 234a9f7198..58bb797c8f 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-cs/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-cs/translations.xml @@ -1,4 +1,5 @@ + "Náhled této místnosti jsme nemohli zobrazit" "Nepodařilo se přeložit alias místnosti." diff --git a/features/roomaliasresolver/impl/src/main/res/values-de/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-de/translations.xml index 0ed5be402b..6faabb5b11 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-de/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-de/translations.xml @@ -1,4 +1,5 @@ + "Wir konnten diese Chatroomvorschau nicht anzeigen" "Der Raum-Alias konnte nicht ermittelt werden." diff --git a/features/roomaliasresolver/impl/src/main/res/values-et/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-et/translations.xml index 6b712e00ee..b2eb5c0eb5 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-et/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-et/translations.xml @@ -1,4 +1,5 @@ + "Meil ei õnnestunud selle jututoa eelvaadet kuvada" "Jututoa aliasele vastava aadressi tuvastamine ei õnnestunud." diff --git a/features/roomaliasresolver/impl/src/main/res/values-fr/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-fr/translations.xml index 72395bbb06..6271998f19 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-fr/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-fr/translations.xml @@ -1,4 +1,5 @@ + "Impossible d’afficher l’aperçu de ce salon" "Impossible de trouver un salon avec cet alias." diff --git a/features/roomaliasresolver/impl/src/main/res/values-hu/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-hu/translations.xml index d1d6d05c98..585a3be62e 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-hu/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-hu/translations.xml @@ -1,4 +1,5 @@ + "Nem tudtuk megjeleníteni a szoba előnézetét" "Nem sikerült a szoba álnevének feloldása." diff --git a/features/roomaliasresolver/impl/src/main/res/values-pl/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-pl/translations.xml index 7f830ab944..dabe170e2e 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-pl/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-pl/translations.xml @@ -1,4 +1,5 @@ + "Nie udało nam się wyświetlić podglądu tego pokoju" "Nie udało się uzyskać aliasu pokoju." diff --git a/features/roomaliasresolver/impl/src/main/res/values-pt/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-pt/translations.xml index aa469c7158..3ae285d6ab 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-pt/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-pt/translations.xml @@ -1,4 +1,5 @@ + "Não foi possível exibir a pré-visualização desta sala" "Não foi possível encontrar esse endereço de sala" diff --git a/features/roomaliasresolver/impl/src/main/res/values-ru/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-ru/translations.xml index 53e8da81ca..f7db24f441 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-ru/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-ru/translations.xml @@ -1,4 +1,5 @@ + "Мы не смогли отобразить предварительный просмотр этой комнаты" "Не удалось определить псевдоним комнаты." diff --git a/features/roomaliasresolver/impl/src/main/res/values-sk/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-sk/translations.xml index 059788804f..71315874e6 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-sk/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-sk/translations.xml @@ -1,4 +1,5 @@ + "Ukážku tejto miestnosti sa nepodarilo zobraziť" "Nepodarilo sa nájsť alias miestnosti." diff --git a/features/roomaliasresolver/impl/src/main/res/values-tr/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..395799e380 --- /dev/null +++ b/features/roomaliasresolver/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,5 @@ + + + "Bu oda önizlemesini görüntüleyemedik" + "Oda takma adı çözümlenemedi." + diff --git a/features/roomaliasresolver/impl/src/main/res/values-uk/translations.xml b/features/roomaliasresolver/impl/src/main/res/values-uk/translations.xml index 0f5d40f6d8..91412c2cd1 100644 --- a/features/roomaliasresolver/impl/src/main/res/values-uk/translations.xml +++ b/features/roomaliasresolver/impl/src/main/res/values-uk/translations.xml @@ -1,4 +1,5 @@ + "Ми не можемо показати попередній перегляд цієї кімнати" "Не вдалося розв\'язати псевдонім кімнати." diff --git a/features/roomaliasresolver/impl/src/main/res/values/localazy.xml b/features/roomaliasresolver/impl/src/main/res/values/localazy.xml index 21d5c17135..6ace0d7fb1 100644 --- a/features/roomaliasresolver/impl/src/main/res/values/localazy.xml +++ b/features/roomaliasresolver/impl/src/main/res/values/localazy.xml @@ -1,4 +1,5 @@ + "We couldn’t display this room preview" "Failed to resolve room alias." diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt index 59601f065d..597f9517b9 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt @@ -64,6 +64,7 @@ fun aDmRoomMember( normalizedPowerLevel: Long = powerLevel, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.USER, + membershipChangeReason: String? = null, ) = RoomMember( userId = userId, displayName = displayName, @@ -74,6 +75,7 @@ fun aDmRoomMember( normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, + membershipChangeReason = membershipChangeReason ) fun aRoomDetailsState( diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index e35de9f5ec..94ef65f207 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -21,9 +21,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -272,7 +269,7 @@ private fun RoomDetailsTopBar( actions = { if (showEdit) { IconButton(onClick = { showMenu = !showMenu }) { - Icon(Icons.Default.MoreVert, stringResource(id = CommonStrings.a11y_user_menu)) + Icon(CompoundIcons.OverflowVertical(), stringResource(id = CommonStrings.a11y_user_menu)) } DropdownMenu( expanded = showMenu, @@ -424,7 +421,7 @@ private fun TitleAndSubtitle( Text( text = subtitle, style = ElementTheme.typography.fontBodyLgRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, textAlign = TextAlign.Center, ) } @@ -486,7 +483,7 @@ private fun TopicSection( if (roomTopic is RoomTopicState.CanAddTopic) { PreferenceText( title = stringResource(R.string.screen_room_details_add_topic_title), - icon = Icons.Outlined.Add, + icon = CompoundIcons.Plus(), onClick = { onActionClick(RoomDetailsAction.AddTopic) }, ) } else if (roomTopic is RoomTopicState.ExistingTopic) { 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 499c8290b8..f917000154 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 @@ -126,6 +126,7 @@ fun aRoomMember( normalizedPowerLevel: Long = 0L, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.USER, + membershipChangeReason: String? = null, ) = RoomMember( userId = userId, displayName = displayName, @@ -136,6 +137,7 @@ fun aRoomMember( normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, + membershipChangeReason = membershipChangeReason, ) fun aRoomMemberList() = persistentListOf( diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt index 5c17b93b8c..69061c2000 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt @@ -26,7 +26,6 @@ import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect @@ -278,7 +277,7 @@ private fun LazyListScope.roomMemberListSection( modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), text = it(), style = ElementTheme.typography.fontBodyLgRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, ) } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt index 1eda6dc582..a94f605059 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt @@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -111,7 +110,7 @@ private fun RoomSpecificNotificationSettingsView( .padding(start = 16.dp, bottom = 16.dp, end = 16.dp), style = ElementTheme.typography.fontBodyMdRegular .copy( - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, ) ) if (state.defaultRoomNotificationMode != null) { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt index 4c5a5e9b6b..acd4c28483 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt @@ -29,7 +29,6 @@ import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -356,7 +355,7 @@ private fun MemberRow( text = name, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontBodyLgRegular, ) // Invitation pending marker @@ -365,7 +364,7 @@ private fun MemberRow( modifier = Modifier.padding(start = 8.dp), text = stringResource(id = R.string.screen_room_member_list_pending_header_title), style = ElementTheme.typography.fontBodySmRegular.copy(fontStyle = FontStyle.Italic), - color = MaterialTheme.colorScheme.secondary + color = ElementTheme.colors.textSecondary ) } } @@ -373,7 +372,7 @@ private fun MemberRow( userId?.let { Text( text = userId, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodySmRegular, 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 153b751d08..c494443f1b 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 @@ -99,7 +99,7 @@ class EditRoomAddressPresenter @AssistedInject constructor( suspend { val savedCanonicalAlias = room.canonicalAlias val savedAliasFromHomeserver = room.firstAliasMatching(serverName) - val newRoomAlias = client.roomAliasFromName(newRoomAddress).getOrThrow() + val newRoomAlias = client.roomAliasFromName(newRoomAddress) ?: throw IllegalArgumentException("Invalid room address") // First publish the new alias in the room directory room.publishRoomAliasInRoomDirectory(newRoomAlias).getOrThrow() diff --git a/features/roomdetails/impl/src/main/res/values-be/translations.xml b/features/roomdetails/impl/src/main/res/values-be/translations.xml index 6ba7e59a2e..a686d58c90 100644 --- a/features/roomdetails/impl/src/main/res/values-be/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-be/translations.xml @@ -115,4 +115,7 @@ "Ролі" "Дэталі пакоя" "Ролі і дазволы" + "Папрасіце далучыцца" + "Хто заўгодна" + "Хто заўгодна" diff --git a/features/roomdetails/impl/src/main/res/values-cs/translations.xml b/features/roomdetails/impl/src/main/res/values-cs/translations.xml index fc5c82860c..1e29ffa3df 100644 --- a/features/roomdetails/impl/src/main/res/values-cs/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-cs/translations.xml @@ -123,7 +123,7 @@ "Role a oprávnění" "Přidat adresu místnosti" "Kdokoli může požádat o vstup do místnosti, ale správce nebo moderátor bude muset žádost přijmout." - "Požádat o vstup" + "Požádat o připojení" "Ano, povolit šifrování" "Po aktivaci nelze šifrování místnosti deaktivovat. Historie zpráv bude viditelná pouze pro členy místnosti od doby, kdy byli pozváni nebo od té doby, co do místnosti vstoupili. Nikdo kromě členů místnosti nebude moci číst zprávy. To může bránit správnému fungování robotů a propojení. 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 310d955a60..c2833195a4 100644 --- a/features/roomdetails/impl/src/main/res/values-de/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-de/translations.xml @@ -122,7 +122,7 @@ "Rollen und Berechtigungen" "Chatroomadresse hinzufügen" "Jeder kann den Beitritt zum Chatroom beantragen, aber ein Administrator oder Moderator muss die Anfrage annehmen." - "Bitte um Beitritt" + "Beitritt beantragen" "Ja, Verschlüsselung aktivieren" "Nach der Aktivierung kann die Verschlüsselung für einen Raum nicht mehr deaktiviert werden. Der Nachrichtenverlauf ist nur für Raummitglieder sichtbar, weil sie eingeladen wurden oder dem Chatroom beigetreten sind. Niemand außer den Raummitgliedern kann Nachrichten lesen. Dies kann verhindern, dass Bots und Bridges richtig funktionieren. @@ -132,7 +132,7 @@ Wir empfehlen nicht, die Verschlüsselung für Räume zu aktivieren, die jeder f "Verschlüsselung" "Ende-zu-Ende-Verschlüsselung aktivieren" "Jeder kann es finden und beitreten" - "Alle" + "Jemand" "Personen können nur beitreten, wenn sie eingeladen werden." "Nur auf Einladung" "Chatroomzugang" @@ -142,7 +142,7 @@ Wir empfehlen nicht, die Verschlüsselung für Räume zu aktivieren, die jeder f "Chatroomadresse" "Erlauben Sie, dass dieser Chatroom gefunden werden kann, indem Sie das %1$s öffentliche Chatroomverzeichnis durchsuchen" "Sichtbar im öffentlichen Chatroomverzeichnis" - "Jeder" + "Jemand" "Wer kann die Verlaufsgeschichte lesen" "Nur Mitglieder, da sie eingeladen wurden" "Nur Mitglieder seit Auswahl dieser Option" @@ -150,6 +150,6 @@ Wir empfehlen nicht, die Verschlüsselung für Räume zu aktivieren, die jeder f Lassen Sie die Möglichkeit zu, Ihren Chatroom in Ihrem öffentlichen Chatroomverzeichnis auf Ihrem Homeserver zu veröffentlichen." "Veröffentlichung von Räumen" "Chatroomadressen sind Möglichkeiten, Chatrooms zu finden und auf sie zuzugreifen. So können Sie Ihren Chatroom auch problemlos mit anderen teilen. Die Adresse ist auch erforderlich, um den Chatroom in einem %1$s öffentlichen Chatroomverzeichnis sichtbar zu machen." - "Chatroomsichtbarkeit." + " Sichtbarkeit des Chatrooms" "Sicherheit & Datenschutz" diff --git a/features/roomdetails/impl/src/main/res/values-el/translations.xml b/features/roomdetails/impl/src/main/res/values-el/translations.xml index 3f21e7cf52..3cd064109e 100644 --- a/features/roomdetails/impl/src/main/res/values-el/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-el/translations.xml @@ -132,5 +132,7 @@ "Τα άτομα μπορούν να συμμετάσχουν μόνο εάν έχουν προσκληθεί" "Μόνο πρόσκληση" "Πρόσβαση δωματίου" + "Οποιοσδήποτε" + "Ορατότητα δωματίου" "Ασφάλεια & απόρρητο" 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 698f9dffe9..8cf2c4a6a3 100644 --- a/features/roomdetails/impl/src/main/res/values-et/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-et/translations.xml @@ -103,7 +103,7 @@ "Vaikimisi seadistuste taastamine ei õnnestunud. Palun proovi uuesti." "Seadistuste muutmine ei õnnestunud. Palun proovi uuesti." "Sinu koduserver ei toeta seda võimalust krüptitud jututubades, seega sa ei saa selle jututoa kohta teavitusi." - "Kõik sõnumid" + "Kõikide sõnumite korral" "Mainimiste ja võtmesõnade alusel" "Selles jututoas teavita mind" "Peakasutajad" @@ -122,7 +122,7 @@ "Rollid ja õigused" "Lisa jututoa aadress" "Kõik võivad paluda jututoaga liitumist, kuid peakasutaja või moderaator peavad sellega nõustuma." - "Palu võimalust liituda" + "Küsi võimalust liitumiseks" "Jah, lülita krüptimine sisse" "Kui jututoa krüptimine on kord sisse lülitatud, siis seda välja lülitada ei saa. Sõnumite ajalugu on nähtav vaid jututoa liikmetele alates kutse saamise või liitumise hetkest. Keegi teine peale jututoa liikmete ei saa sõnumeid lugeda. See võib takistada suhtlusrobotite ja/või võrgusildade toimimist. diff --git a/features/roomdetails/impl/src/main/res/values-hu/translations.xml b/features/roomdetails/impl/src/main/res/values-hu/translations.xml index 1dfc0f50e8..585f61ece5 100644 --- a/features/roomdetails/impl/src/main/res/values-hu/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-hu/translations.xml @@ -139,7 +139,7 @@ Nem javasoljuk a titkosítás engedélyezését az olyan szobákban, amelyeket b "A terek jelenleg nem támogatottak" "A tér tagjai" "Szüksége lesz egy szobacímre, hogy láthatóvá váljon a szobakatalógusban." - "Szoba címe" + "A szoba címe" "A szoba megtalálhatóvá tétele a(z) %1$s nyilvános szobakatalógusában való kereséssel." "Látható a nyilvános szobakatalógusban" "Bárki" diff --git a/features/roomdetails/impl/src/main/res/values-in/translations.xml b/features/roomdetails/impl/src/main/res/values-in/translations.xml index 24c6fd1f0a..d09ccd3cff 100644 --- a/features/roomdetails/impl/src/main/res/values-in/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-in/translations.xml @@ -115,4 +115,9 @@ "Peran" "Detail ruangan" "Peran dan perizinan" + "Minta untuk bergabung" + "Enkripsi" + "Siapa pun" + "Siapa pun" + "Keterlihatan ruangan" diff --git a/features/roomdetails/impl/src/main/res/values-nb/translations.xml b/features/roomdetails/impl/src/main/res/values-nb/translations.xml index 573622f3b6..a416b97cd2 100644 --- a/features/roomdetails/impl/src/main/res/values-nb/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-nb/translations.xml @@ -18,7 +18,6 @@ "Inviter folk" "Forlat samtalen" "Forlat rommet" - "Medier og filer" "Tilpasset" "Standard" "Romnavn" @@ -60,10 +59,10 @@ "globale innstillinger" "Standard innstilling" "Fjern egendefinert innstilling" - "Alle meldinger" "I dette rommet, varsle meg om" "Administratorer" "Endre rollen min" + "Kryptering" "Områder støttes ikke for øyeblikket" "Medlemmer av område" diff --git a/features/roomdetails/impl/src/main/res/values-nl/translations.xml b/features/roomdetails/impl/src/main/res/values-nl/translations.xml index 6c677ea68e..10a8539ffa 100644 --- a/features/roomdetails/impl/src/main/res/values-nl/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-nl/translations.xml @@ -114,4 +114,7 @@ "Rollen" "Kamergegevens" "Rollen en rechten" + "Vraag om toe te treden" + "Iedereen" + "Iedereen" 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 e2dec9da49..3d8954e760 100644 --- a/features/roomdetails/impl/src/main/res/values-pl/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-pl/translations.xml @@ -1,5 +1,7 @@ + "Aby pokój był widoczny w katalogu, potrzebny jest adres pokoju." + "Adres pokoju" "Wystąpił błąd podczas aktualizacji ustawienia powiadomień." "Twój serwer domowy nie wspiera tej opcji w pokojach szyfrowanych, możesz nie otrzymać powiadomień z niektórych pokoi." "Ankiety" @@ -7,11 +9,11 @@ "Banowanie osób" "Usuwanie wiadomości" "Wszyscy" - "Zapraszanie osób" + "Zapraszanie osób i akceptowanie próśb o dołączenie" "Moderacja członków" "Wiadomości i zawartość" "Administratorzy i moderatorzy" - "Usuwanie osób" + "Usuwanie osób i odrzucanie próśb o dołączenie" "Zmień awatar pokoju" "Szczegóły pokoju" "Zmień nazwę pokoju" @@ -50,10 +52,11 @@ "Opuść rozmowę" "Opuść pokój" "Media i pliki" - "Niestandardowy" + "Niestandardowe" "Domyślny" "Powiadomienia" "Przypięte wiadomości" + "Profil" "Prośby o dołączenie" "Role i uprawnienia" "Nazwa pokoju" @@ -118,6 +121,7 @@ "Role" "Szczegóły pokoju" "Role i uprawnienia" + "Dodaj adres pokoju" "Każdy może poprosić o dołączenie do pokoju, ale administrator lub moderator będzie musiał zatwierdzić żądanie." "Poproś o dołączenie" "Tak, włącz szyfrowanie" @@ -129,9 +133,25 @@ Odradzamy włączanie szyfrowania dla pokoi, które każdy może znaleźć i do "Szyfrowanie" "Włącz szyfrowanie end-to-end" "Każdy może znaleźć i dołączyć" - "Każdy" + "Wszyscy" "Tylko osoby z zaproszeniem mogą dołączyć" "Tylko zaproszenie" "Dostęp do pokoju" + "Przestrzenie nie są obecnie wspierane" + "Członkowie przestrzeni" + "Aby pokój był widoczny w katalogu pokoi, potrzebny jest adres pokoju." + "Adres pokoju" + "Zezwól na znalezienie tego pokoju wyszukując %1$s w katalogu pokoi publicznych" + "Widoczny w katalogu pokoi publicznych" + "Wszyscy" + "Kto może czytać historię" + "Od momentu kiedy członkowie zostali zaproszeni" + "Członkowie od momentu włączenia tej opcji" + "Adresy pokoju umożliwiają łatwe znalezienie i dołączenie do pokojów. +Również możesz się zdecydować na upublicznienie Twojego serwera w katalogu pokoi publicznych." + "Publikowanie pokoju" + "Adresy pokoju umożliwiają łatwe znalezienie i dołączenie do pokojów. +Dodatkowo adres pokoju jest wymagany, aby pomieszczenie było widoczne w katalogu pokoi publicznych %1$s." + "Widoczność pomieszczenia" "Bezpieczeństwo i prywatność" diff --git a/features/roomdetails/impl/src/main/res/values-pt/translations.xml b/features/roomdetails/impl/src/main/res/values-pt/translations.xml index d4dcb4f7f4..7bc9f38097 100644 --- a/features/roomdetails/impl/src/main/res/values-pt/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-pt/translations.xml @@ -1,5 +1,7 @@ + "É necessário um endereço para tornar a sala visível no diretório." + "Endereço da sala" "Erro ao atualizar a configuração de notificação." "O teu servidor não suporta esta opção em salas cifradas, pelo que poderás não ser notificado em algumas salas." "Sondagens" @@ -7,11 +9,11 @@ "Banir pessoas" "Remover mensagens" "Toda a gente" - "Convida pessoas" + "Convidar pessoas e aceitar pedidos de entrada" "Moderação de participantes" "Mensagens e conteúdo" "Administradores e moderadores" - "Remover pessoas" + "Remover pessoas e rejeitar pedidos de entrada" "Alterar o ícone da sala" "Detalhes da sala" "Altera o nome da sala" @@ -54,9 +56,11 @@ "Predefinição" "Notificações" "Mensagens afixadas" + "Perfil" "Pedidos de entrada" "Cargos e permissões" "Nome da sala" + "Segurança e privacidade" "Segurança" "Partilhar sala" "Informação da sala" @@ -99,7 +103,7 @@ "Falha ao restaurar o modo predefinido, tenta novamente." "Falha ao definir o modo, tenta novamente." "O teu servidor não suporta esta opção em salas cifradas, pelo que não serás notificado nesta sala." - "Todas as mensagens" + "Qualquer mensagem" "Menções ou palavras-chave" "Nesta sala, notifica-me se" "Administradores" @@ -116,4 +120,37 @@ "Cargos" "Detalhes da sala" "Cargos e permissões" + "Adicionar endereço de sala" + "Qualquer pessoa pode pedir para entrar na sala, mas um administrador ou moderador tem que aceitar o pedido." + "Pedir para participar" + "Sim, ativar cifragem" + "Uma vez ativada, a cifragem não pode ser desativada. O histórico de mensagens só será visível a membros a partir do momento em que foram convidados ou que entraram na sala. +Ninguém além dos membros poderão ler quaisquer mensagens. Isto pode impedir que robôs (\"bots\") e pontes (\"bridges\") funcionem devidamente. +Não recomendamos ativar a cifragem em salas que qualquer pessoa possa encontrar e entrar." + "Ativar cifragem?" + "Uma vez ativada, a cifragem não pode ser desativada." + "Cifragem" + "Ativar cifragem ponta-a-ponta" + "Qualquer pessoa pode encontrar a sala e entrar" + "Qualquer pessoa" + "Só é possível entrar tendo um convite" + "Apenas por convite" + "Acesso à sala" + "Os espaços ainda não estão implementados" + "Membros do espaço" + "É necessário um endereço para tornar a sala visível no diretório." + "Endereço da sala" + "Permite que esta sala seja encontrada através do diretório público do %1$s." + "Visível no diretório público de salas" + "Qualquer pessoa" + "Quem pode ler o histórico de mensagens" + "Apenas membros, desde o momento em que forem convidados" + "Apenas membros, desde o memento em que esta opção for selecionada" + "Estes endereços permitem encontrar e aceder a sala, bem como a sua fácil partilha com outros. +Podes escolher publicar a sala no diretório público do teu servidor." + "Publicar sala" + "Estes endereços permitem encontrar e aceder a sala, bem como a sua fácil partilha com outros. +Além disso, é necessário ter endereço para publicar a sala no diretório público do %1$s." + "Visibilidade da sala" + "Segurança e privacidade" diff --git a/features/roomdetails/impl/src/main/res/values-ro/translations.xml b/features/roomdetails/impl/src/main/res/values-ro/translations.xml index e4ad084733..38c9fdc5c1 100644 --- a/features/roomdetails/impl/src/main/res/values-ro/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-ro/translations.xml @@ -114,4 +114,8 @@ "Roluri" "Detaliile camerei" "Roluri și permisiuni" + "Cereți să vă alăturați" + "Criptare" + "Oricine" + "Oricine" diff --git a/features/roomdetails/impl/src/main/res/values-ru/translations.xml b/features/roomdetails/impl/src/main/res/values-ru/translations.xml index 611b89a45d..7c984f573e 100644 --- a/features/roomdetails/impl/src/main/res/values-ru/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-ru/translations.xml @@ -123,7 +123,7 @@ "Роли и разрешения" "Добавить адрес комнаты" "Любой желающий может подать заявку на присоединение к комнате, но администратор или модератор должен будет принять запрос." - "Присоединиться" + "Попросить присоединиться" "Да, включить шифрование" "Шифрование комнаты нельзя будет отключить, история сообщений будет видна только участникам комнаты с момента их приглашения или с момента присоединения к комнате. Никто, кроме членов комнаты, не сможет читать сообщения. Это может помешать ботам и мостам работать корректно. diff --git a/features/roomdetails/impl/src/main/res/values-sv/translations.xml b/features/roomdetails/impl/src/main/res/values-sv/translations.xml index 829ab87f86..97fc370203 100644 --- a/features/roomdetails/impl/src/main/res/values-sv/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-sv/translations.xml @@ -49,12 +49,15 @@ "Bjud in personer" "Lämna konversation" "Lämna rum" + "Media och filer" "Anpassad" "Förval" "Aviseringar" "Fästa meddelanden" + "Begäran om att gå med" "Roller och behörigheter" "Rumsnamn" + "Säkerhet och sekretess" "Säkerhet" "Dela rum" "Rumsinfo" @@ -114,4 +117,25 @@ "Roller" "Rumsdetaljer" "Roller och behörigheter" + "Vem som helst kan be om att gå med i rummet men en administratör eller moderator måste acceptera begäran." + "Be om att gå med" + "Ja, aktivera kryptering" + "När det är aktiverat kan kryptering för ett rum inte inaktiveras, meddelandehistoriken visas bara för rumsmedlemmar sedan de blev inbjudna eller sedan de gick med i rummet. +Ingen förutom rumsmedlemmarna kommer att kunna läsa meddelanden. Detta kan förhindra att bots och bridges fungerar korrekt. +Vi rekommenderar inte att aktivera kryptering för rum som vem som helst kan hitta och gå med i." + "Aktivera kryptering?" + "Efter aktivering kan kryptering inte inaktiveras." + "Kryptering" + "Aktivera totalsträckskryptering" + "Vem som helst kan hitta och gå med" + "Vem som helst" + "Användare kan bara gå med om de är inbjudna" + "Endast inbjudan" + "Tillgång till rum" + "Vem som helst" + "Vem kan läsa historik" + "Endast medlemmar sedan de bjöds in" + "Endast medlemmar sedan det här alternativet har valts" + "Rumssynlighet" + "Säkerhet och sekretess" diff --git a/features/roomdetails/impl/src/main/res/values-tr/translations.xml b/features/roomdetails/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..f3dfc3f336 --- /dev/null +++ b/features/roomdetails/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,156 @@ + + + "Dizinde görünür hale getirmek için bir oda adresine ihtiyacınız olacak." + "Oda adresi" + "Bildirim ayarı güncellenirken bir hata oluştu." + "Ana sunucunuz şifreli odalarda bu seçeneği desteklemiyor, bazı odalarda bildirim almayabilirsiniz." + "Anketler" + "Yalnızca yöneticiler" + "İnsanları yasakla" + "Mesajları kaldır" + "Herkes" + "Kişileri davet etme ve katılma isteklerini kabul etme" + "Üye moderasyonu" + "Mesajlar ve içerik" + "Yöneticiler ve moderatörler" + "Kişileri kaldırma ve katılma isteklerini reddetme" + "Oda resmini değiştir" + "Oda bilgileri" + "Oda adını değiştir" + "Oda konusunu değiştir" + "Mesaj gönder" + "Yöneticileri Düzenle" + "Bu eylemi geri alamazsınız. Kullanıcıyı sizinle aynı güç seviyesine sahip olacak şekilde terfi ettiriyorsunuz." + "Yönetici Ekle?" + "Rütbe Düşür" + "Rütbenizi düşürdüğünüz için bu değişikliği geri alamazsınız, eğer odadaki son ayrıcalıklı kullanıcı sizseniz ayrıcalıkları yeniden kazanmanız mümkün olmayacaktır." + "Rütbeni düşür?" + "%1$s (Beklemede)" + "(Beklemede)" + "Yöneticiler otomatik olarak moderatör ayrıcalıklarına sahiptir" + "Moderatörleri Düzenle" + "Yöneticiler" + "Moderatörler" + "Üyeler" + "Kaydedilmemiş değişiklikleriniz var." + "Değişiklikleri Kaydet?" + "Konu ekle" + "Zaten üye" + "Zaten davet edildi" + "Şifrelenmiş" + "Şifrelenmemiş" + "Herkese açık oda" + "Odayı Düzenle" + "Bilinmeyen bir hata oluştu ve bilgiler değiştirilemedi." + "Oda güncellenemiyor" + "Mesajlar kilitlerle güvence altına alınır. Yalnızca siz ve alıcılar, bunların kilidini açmak için benzersiz anahtarlara sahipsiniz." + "Mesaj şifrelemesi etkinleştirildi" + "Bildirim ayarları yüklenirken bir hata oluştu." + "Bu odayı sessize alma başarısız oldu, lütfen tekrar deneyin." + "Bu odanın sesi açılamadı, lütfen tekrar deneyin." + "İnsanları davet et" + "Sohbeti bırak" + "Odadan ayrıl" + "Medya ve dosyalar" + "Özel" + "Varsayılan" + "Bildirimler" + "Sabitlenmiş mesajlar" + "Profil" + "Katılma istekleri" + "Roller ve izinler" + "Oda adı" + "Güvenlik ve gizlilik" + "Güvenlik" + "Oda paylaş" + "Oda bilgisi" + "Konu" + "Oda güncelleniyor…" + "Yasakla" + "Davet edilseler bile bu odaya tekrar katılamazlar." + "Bu üyeyi yasaklamak istediğinize emin misiniz?" + "Bu odada yasaklı kullanıcı yok." + "Yasaklanıyor %1$s" + + "%1$d kişi" + "%1$d kişi" + + "Üyeyi çıkar ve yasakla" + "Odadan çıkar" + "Üyeyi çıkar ve yasakla" + "Yalnızca üyeyi kaldır" + "Üyeyi çıkarın ve gelecekte katılmasını yasaklayın?" + "Yasağı Kaldır" + "Davet edildikleri takdirde bu odaya tekrar katılabileceklerdir." + "Kullanıcının yasağını kaldır" + "Profili görüntüle" + "Yasaklandı" + "Üyeler" + "Beklemede" + "Kaldırılıyor %1$s…" + "Yönetici" + "Moderatör" + "Oda üyeleri" + "Yasak kaldırılıyor %1$s" + "Özel ayarlara izin ver" + "Bunu açmak varsayılan ayarlarınızı geçersiz kılacaktır" + "Bu sohbette bana bildir" + "Bunu %1$s içinde değiştirebilirsiniz." + "genel ayarlar" + "Varsayılan ayar" + "Özel ayarı kaldır" + "Bildirim ayarları yüklenirken bir hata oluştu." + "Varsayılan ayarlar geri yüklenemedi, lütfen tekrar deneyin." + "Ayarlanamadı, lütfen tekrar deneyin." + "Ana sunucunuz şifreli odalarda bu seçeneği desteklemiyor, bu odada bildirim almayacaksınız." + "Tüm mesajlar" + "Yalnızca Bahsetmeler ve Anahtar Kelimeler" + "Bu odada, bana bildir" + "Yöneticiler" + "Rolümü değiştir" + "Üyeliğe düşür" + "Moderatörlüğe düşür" + "Üye moderasyonu" + "Mesajlar ve içerik" + "Moderatörler" + "İzinler" + "İzinleri sıfırla" + "İzinleri sıfırladığınızda, mevcut ayarları kaybedersiniz." + "İzinleri sıfırla?" + "Roller" + "Oda bilgileri" + "Roller ve izinler" + "Oda adresi ekle" + "Herkes odaya katılma isteğinde bulunabilir ancak bir yönetici veya moderatörün isteği kabul etmesi gerekir." + "Katılmak için sor" + "Evet, şifrelemeyi etkinleştir" + "Etkinleştirildikten sonra, bir oda için şifreleme devre dışı bırakılamaz, Mesaj geçmişi yalnızca davet edildiklerinden veya odaya katıldıklarından beri oda üyeleri için görünür olacaktır. +Oda üyeleri dışında hiç kimse mesajları okuyamayacaktır. Bu, botların ve köprülerin düzgün çalışmasını engelleyebilir. +Herkesin bulabileceği ve katılabileceği odalar için şifrelemenin etkinleştirilmesini önermiyoruz." + "Şifrelemeyi etkinleştir?" + "Açıldıktan donra şifreleme kapatılamaz." + "Şifreleme" + "Uçtan uca şifrelemeyi etkinleştir" + "Herkes bulabilir ve katılabilir" + "Herkes" + "İnsanlar yalnızca davet edildiklerinde katılabilirler" + "Yalnızca davet" + "Oda Erişimi" + "Alanlar şu anda desteklenmiyor" + "Alan üyeleri" + "Oda dizininde görünür kılmak için bir oda adresine ihtiyacınız olacaktır." + "Oda adresi" + "Bu odanın %1$s genel oda dizininde arama yapılarak bulunmasına izin verin" + "Genel oda dizininde görünür" + "Herkes" + "Geçmişi kimler okuyabilir ?" + "Sadece üyeler (davet edildiklerinden beri)" + "Bu seçeneği seçtiğinden beri yalnızca üyeler" + "Oda adresleri, odaları bulmanın ve odalara erişmenin yoludur. Bu aynı zamanda odanızı başkalarıyla kolayca paylaşabilmenizi sağlar. +Odanızı ana sunucunuzun genel oda dizininde yayınlamayı seçebilirsiniz." + "Oda yayınlama" + "Oda adresleri, odaları bulmanın ve odalara erişmenin yollarıdır. Bu aynı zamanda odanızı başkalarıyla kolayca paylaşabilmenizi sağlar. +Adres, odayı %1$s genel oda dizininde görünür kılmak için de gereklidir." + "Oda görünürlüğü" + "Güvenlik ve gizlilik" + diff --git a/features/roomdetails/impl/src/main/res/values-uk/translations.xml b/features/roomdetails/impl/src/main/res/values-uk/translations.xml index 1bbbcd4817..745c2dd029 100644 --- a/features/roomdetails/impl/src/main/res/values-uk/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-uk/translations.xml @@ -9,11 +9,11 @@ "Заблоковувати людей" "Вилучати повідомлення" "Усі" - "Запрошувати людей" + "Запрошувати людей і приймати запити на приєднання" "Модерація учасників" "Повідомлення та зміст" "Адміністратори та модератори" - "Вилучати людей" + "Вилучати людей і відхиляти запити на приєднання" "Змінювати аватар кімнати" "Деталі кімнати" "Змінювати назву кімнати" @@ -123,7 +123,7 @@ "Ролі та дозволи" "Додати адресу кімнати" "Будь-хто може надіслати запит приєднатися до кімнати, але адміністратор або модератор повинні прийняти запит." - "Запит на приєднання" + "Запросити приєднатися" "Так, увімкнути шифрування" "Після ввімкнення шифрування кімнати, його неможливо вимкнути, історію повідомлень бачитимуть лише учасники кімнати, яких було запрошено або які приєдналися до кімнати. Ніхто, крім учасників кімнати, не зможе прочитати повідомлення. Це може перешкоджати коректній роботі ботів і мостів. @@ -133,7 +133,7 @@ "Шифрування" "Увімкнути наскрізне шифрування" "Будь-хто може знайти та приєднатися." - "Будь-хто" + "Кожний" "Люди можуть приєднатися, лише якщо їх запросили" "Лише запрошені" "Доступ до кімнати" @@ -143,7 +143,7 @@ "Адреса кімнати" "Дозвольте, щоб цю кімнату можна було знайти за допомогою пошуку в каталозі загальнодоступних кімнат %1$s " "Видима в каталозі загальнодоступних кімнат" - "Будь-хто" + "Кожний" "Хто може читати історію" "Лише учасники з моменту запрошення" "Лише учасники після вибору цього параметра" diff --git a/features/roomdetails/impl/src/main/res/values-zh/translations.xml b/features/roomdetails/impl/src/main/res/values-zh/translations.xml index 6446625c26..10a6e19265 100644 --- a/features/roomdetails/impl/src/main/res/values-zh/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-zh/translations.xml @@ -102,7 +102,7 @@ "恢复默认模式失败,请重试。" "设置模式失败,请重试。" "服务器在加密聊天室中不支持此选项,无法在此聊天室收到通知。" - "所有消息" + "全部消息" "仅限提及和关键词" "在这个聊天室,通知我:" "管理员" diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/MatrixRoomFixture.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/MatrixRoomFixture.kt similarity index 97% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/MatrixRoomFixture.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/MatrixRoomFixture.kt index 2bc200a0d8..d9cc77be76 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/MatrixRoomFixture.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/MatrixRoomFixture.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails +package io.element.android.features.roomdetails.impl import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId @@ -73,7 +73,6 @@ fun aMatrixRoom( topic = topic, avatarUrl = avatarUrl, isDirect = isDirect, - isPublic = isPublic, joinRule = joinRule, ) ) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt index 81e95cc051..1eec78ea9c 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt @@ -18,7 +18,6 @@ import io.element.android.features.leaveroom.api.LeaveRoomEvent import io.element.android.features.leaveroom.api.LeaveRoomState import io.element.android.features.leaveroom.api.aLeaveRoomState import io.element.android.features.roomcall.api.aStandByCallState -import io.element.android.features.roomdetails.aMatrixRoom import io.element.android.features.roomdetails.impl.members.aRoomMember import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter import io.element.android.features.userprofile.shared.aUserProfileState @@ -146,7 +145,6 @@ class RoomDetailsPresenterTest { fun `present - initial state is updated with roomInfo if it exists`() = runTest { val roomInfo = aRoomInfo( name = A_ROOM_NAME, - isPublic = true, topic = A_ROOM_TOPIC, avatarUrl = AN_AVATAR_URL, pinnedEventIds = listOf(AN_EVENT_ID), diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt similarity index 99% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt index 7989ab9b42..26c9f99105 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt @@ -5,14 +5,12 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.edit +package io.element.android.features.roomdetails.impl.edit import android.net.Uri import app.cash.turbine.ReceiveTurbine import com.google.common.truth.Truth.assertThat -import io.element.android.features.roomdetails.aMatrixRoom -import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditEvents -import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditPresenter +import io.element.android.features.roomdetails.impl.aMatrixRoom import io.element.android.libraries.androidutils.file.TemporaryUriDeleter import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.mimetype.MimeTypes diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt similarity index 95% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt index d3376d2d06..5cc12d8b57 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.edit +package io.element.android.features.roomdetails.impl.edit import androidx.activity.ComponentActivity import androidx.annotation.StringRes @@ -18,10 +18,6 @@ import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performTextInput import androidx.test.ext.junit.runners.AndroidJUnit4 -import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditEvents -import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditState -import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditView -import io.element.android.features.roomdetails.impl.edit.aRoomDetailsEditState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.testtags.TestTags diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt index 7c15b66630..cd14a8b513 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt @@ -11,7 +11,7 @@ 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.roomdetails.aMatrixRoom +import io.element.android.features.roomdetails.impl.aMatrixRoom import io.element.android.features.roomdetails.impl.members.RoomMemberListDataSource import io.element.android.features.roomdetails.impl.members.aRoomMember import io.element.android.features.roomdetails.impl.members.aRoomMemberList diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/PowerLevelRoomMemberComparatorTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/PowerLevelRoomMemberComparatorTest.kt similarity index 94% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/PowerLevelRoomMemberComparatorTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/PowerLevelRoomMemberComparatorTest.kt index 3ae6b86f5d..496cfb3136 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/PowerLevelRoomMemberComparatorTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/PowerLevelRoomMemberComparatorTest.kt @@ -5,10 +5,8 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.members +package io.element.android.features.roomdetails.impl.members -import io.element.android.features.roomdetails.impl.members.PowerLevelRoomMemberComparator -import io.element.android.features.roomdetails.impl.members.aRoomMember import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt similarity index 94% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt index f426086269..0200b8116d 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenterTest.kt @@ -5,19 +5,12 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.members +package io.element.android.features.roomdetails.impl.members 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.roomdetails.impl.members.RoomMemberListDataSource -import io.element.android.features.roomdetails.impl.members.RoomMemberListEvents -import io.element.android.features.roomdetails.impl.members.RoomMemberListNavigator -import io.element.android.features.roomdetails.impl.members.RoomMemberListPresenter -import io.element.android.features.roomdetails.impl.members.aRoomMemberList -import io.element.android.features.roomdetails.impl.members.aVictor -import io.element.android.features.roomdetails.impl.members.aWalter import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationEvents import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationState import io.element.android.features.roomdetails.impl.members.moderation.aRoomMembersModerationState diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenterTest.kt similarity index 96% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenterTest.kt index d837fda376..95e3b47ce3 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenterTest.kt @@ -5,15 +5,14 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.members.details +package io.element.android.features.roomdetails.impl.members.details 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.roomdetails.aMatrixRoom +import io.element.android.features.roomdetails.impl.aMatrixRoom import io.element.android.features.roomdetails.impl.members.aRoomMember -import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter import io.element.android.features.userprofile.api.UserProfilePresenterFactory import io.element.android.features.userprofile.shared.aUserProfileState import io.element.android.libraries.architecture.Presenter diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenterTest.kt similarity index 96% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenterTest.kt index 0b3050bd90..d569a93baa 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.members.moderation +package io.element.android.features.roomdetails.impl.members.moderation import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -14,10 +14,6 @@ import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.RoomModeration import io.element.android.features.roomdetails.impl.members.aRoomMember import io.element.android.features.roomdetails.impl.members.aVictor -import io.element.android.features.roomdetails.impl.members.moderation.ConfirmingRoomMemberAction -import io.element.android.features.roomdetails.impl.members.moderation.ModerationAction -import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationEvents -import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationPresenter import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState @@ -46,7 +42,7 @@ class RoomMembersModerationPresenterTest { canBanResult = { Result.success(true) }, userRoleResult = { Result.success(RoomMember.Role.ADMIN) }, ).apply { - givenRoomInfo(aRoomInfo(isDirect = true, isPublic = false, activeMembersCount = 2)) + givenRoomInfo(aRoomInfo(isDirect = true, activeMembersCount = 2)) } val presenter = createRoomMembersModerationPresenter(matrixRoom = room) presenter.test { diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationViewTest.kt similarity index 92% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationViewTest.kt index dff3b2fd01..6fc9b8a20f 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/moderation/RoomMembersModerationViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/members/moderation/RoomMembersModerationViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.members.moderation +package io.element.android.features.roomdetails.impl.members.moderation import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -13,12 +13,6 @@ 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.roomdetails.impl.members.anAlice -import io.element.android.features.roomdetails.impl.members.moderation.ConfirmingRoomMemberAction -import io.element.android.features.roomdetails.impl.members.moderation.ModerationAction -import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationEvents -import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationState -import io.element.android.features.roomdetails.impl.members.moderation.RoomMembersModerationView -import io.element.android.features.roomdetails.impl.members.moderation.aRoomMembersModerationState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenterTest.kt similarity index 96% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenterTest.kt index b27e9a95d0..748c4a26e2 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenterTest.kt @@ -5,15 +5,13 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.notificationsettings +package io.element.android.features.roomdetails.impl.notificationsettings 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.roomdetails.aMatrixRoom -import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsEvents -import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsPresenter +import io.element.android.features.roomdetails.impl.aMatrixRoom import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_THROWABLE diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/RolesAndPermissionPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt similarity index 96% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/RolesAndPermissionPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt index 7767c61ce5..2ae6dae3aa 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/RolesAndPermissionPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt @@ -5,15 +5,13 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions +package io.element.android.features.roomdetails.impl.rolesandpermissions import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.RoomModeration -import io.element.android.features.roomdetails.impl.rolesandpermissions.RolesAndPermissionsEvents -import io.element.android.features.roomdetails.impl.rolesandpermissions.RolesAndPermissionsPresenter import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.matrix.api.room.RoomMember diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/RolesAndPermissionsViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsViewTest.kt similarity index 92% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/RolesAndPermissionsViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsViewTest.kt index ff06dee543..9d793952b3 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/RolesAndPermissionsViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsViewTest.kt @@ -5,18 +5,13 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions +package io.element.android.features.roomdetails.impl.rolesandpermissions 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.roomdetails.impl.rolesandpermissions.RolesAndPermissionsEvents -import io.element.android.features.roomdetails.impl.rolesandpermissions.RolesAndPermissionsNavigator -import io.element.android.features.roomdetails.impl.rolesandpermissions.RolesAndPermissionsState -import io.element.android.features.roomdetails.impl.rolesandpermissions.RolesAndPermissionsView -import io.element.android.features.roomdetails.impl.rolesandpermissions.aRolesAndPermissionsState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt similarity index 98% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt index 1270dc7295..035aecb40a 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions.changeroles +package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -13,8 +13,6 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.RoomModeration import io.element.android.features.roomdetails.impl.members.aRoomMemberList -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesEvent -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesPresenter import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.designsystem.theme.components.SearchBarResultState diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesViewTest.kt similarity index 94% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesViewTest.kt index 773005983d..da3a3fa4d0 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/ChangeRolesViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions.changeroles +package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -16,11 +16,6 @@ import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesEvent -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesState -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.ChangeRolesView -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.aChangeRolesState -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.aChangeRolesStateWithSelectedUsers import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.room.RoomMember @@ -39,7 +34,6 @@ import org.junit.Test import org.junit.rules.TestRule import org.junit.runner.RunWith import org.robolectric.annotation.Config -import java.lang.IllegalStateException @RunWith(AndroidJUnit4::class) class ChangeRolesViewTest { diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/MembersByRoleTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/MembersByRoleTest.kt similarity index 94% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/MembersByRoleTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/MembersByRoleTest.kt index 16f5683f4a..f788624ccc 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/changeroles/MembersByRoleTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/MembersByRoleTest.kt @@ -5,10 +5,9 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions.changeroles +package io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles import com.google.common.truth.Truth.assertThat -import io.element.android.features.roomdetails.impl.rolesandpermissions.changeroles.MembersByRole import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/permissions/ChangeRoomPermissionsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenterTest.kt similarity index 95% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/permissions/ChangeRoomPermissionsPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenterTest.kt index 3ee1f9584c..d9458c3149 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/permissions/ChangeRoomPermissionsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions.permissions +package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -14,11 +14,6 @@ import app.cash.turbine.TurbineTestContext import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.RoomModeration -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsEvent -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsPresenter -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsSection -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsState -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.RoomPermissionType 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 diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/permissions/ChangeRoomPermissionsViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsViewTest.kt similarity index 91% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/permissions/ChangeRoomPermissionsViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsViewTest.kt index 7ccce9e3de..7615b89d00 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/rolesandpermissions/permissions/ChangeRoomPermissionsViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.rolesandpermissions.permissions +package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -15,12 +15,6 @@ 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.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsEvent -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsSection -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsState -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.ChangeRoomPermissionsView -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.RoomPermissionType -import io.element.android.features.roomdetails.impl.rolesandpermissions.permissions.aChangeRoomPermissionsState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt similarity index 79% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt index e4dfbcdbba..0d68afae1c 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/FakeSecurityAndPrivacyNavigator.kt @@ -5,9 +5,8 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.securityandprivacy +package io.element.android.features.roomdetails.impl.securityandprivacy -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyNavigator import io.element.android.tests.testutils.lambda.lambdaError class FakeSecurityAndPrivacyNavigator( diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/SecurityAndPrivacyPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenterTest.kt similarity index 96% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/SecurityAndPrivacyPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenterTest.kt index 1618e15b88..1d94c72011 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/SecurityAndPrivacyPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenterTest.kt @@ -5,14 +5,9 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.securityandprivacy +package io.element.android.features.roomdetails.impl.securityandprivacy import com.google.common.truth.Truth.assertThat -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyEvents -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyHistoryVisibility -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyNavigator -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyPresenter -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyRoomAccess import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.room.MatrixRoom diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/SecurityAndPrivacyViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyViewTest.kt similarity index 89% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/SecurityAndPrivacyViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyViewTest.kt index 558fbcc427..a7f7c15940 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/SecurityAndPrivacyViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.securityandprivacy +package io.element.android.features.roomdetails.impl.securityandprivacy import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -14,13 +14,6 @@ import androidx.compose.ui.test.onNodeWithText 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.roomdetails.impl.securityandprivacy.SecurityAndPrivacyEvents -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyHistoryVisibility -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyRoomAccess -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyState -import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyView -import io.element.android.features.roomdetails.impl.securityandprivacy.aSecurityAndPrivacySettings -import io.element.android.features.roomdetails.impl.securityandprivacy.aSecurityAndPrivacyState import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.tests.testutils.EnsureNeverCalled diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/editroomaddress/EditRoomAddressPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenterTest.kt similarity index 97% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/editroomaddress/EditRoomAddressPresenterTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenterTest.kt index 4c10fff350..8c30f3d4fa 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/editroomaddress/EditRoomAddressPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenterTest.kt @@ -5,13 +5,11 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.securityandprivacy.editroomaddress +package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress import com.google.common.truth.Truth.assertThat +import io.element.android.features.roomdetails.impl.securityandprivacy.FakeSecurityAndPrivacyNavigator import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyNavigator -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.EditRoomAddressEvents -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.EditRoomAddressPresenter -import io.element.android.features.roomdetails.securityandprivacy.FakeSecurityAndPrivacyNavigator import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.MatrixRoom diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/editroomaddress/EditRoomAddressViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressViewTest.kt similarity index 88% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/editroomaddress/EditRoomAddressViewTest.kt rename to features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressViewTest.kt index b5c3a8b3bd..03260510a4 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/securityandprivacy/editroomaddress/EditRoomAddressViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.securityandprivacy.editroomaddress +package io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule @@ -13,10 +13,6 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.performTextInput import androidx.test.ext.junit.runners.AndroidJUnit4 -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.EditRoomAddressEvents -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.EditRoomAddressState -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.EditRoomAddressView -import io.element.android.features.roomdetails.impl.securityandprivacy.editroomaddress.anEditRoomAddressState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.ui.room.address.RoomAddressValidity import io.element.android.libraries.testtags.TestTags diff --git a/features/roomdirectory/impl/src/main/res/values-tr/translations.xml b/features/roomdirectory/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..22a76932e3 --- /dev/null +++ b/features/roomdirectory/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,5 @@ + + + "Yükleme başarısız" + "Oda dizini" + diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt index a95f6b7b6d..64348f623c 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt @@ -22,7 +22,6 @@ open class RoomListContentStateProvider : PreviewParameterProvider().forEach { it.onLogoutForNativeSlidingSyncMigrationNeeded() } - } - }, modifier = modifier, ) { acceptDeclineInviteView.Render( @@ -121,8 +111,6 @@ class RoomListNode @AssistedInject constructor( ) } - directLogoutView.Render(state.directLogoutState) { - enableNativeSlidingSyncUseCase() - } + directLogoutView.Render(state.directLogoutState) } } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index ae111297d9..29a462149a 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -48,7 +48,6 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.roomlist.RoomList -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.sync.isOnline import io.element.android.libraries.matrix.api.timeline.ReceiptType @@ -173,16 +172,13 @@ class RoomListPresenter @Inject constructor( @Composable private fun rememberSecurityBannerState( securityBannerDismissed: Boolean, - needsSlidingSyncMigration: Boolean, ): State { val currentSecurityBannerDismissed by rememberUpdatedState(securityBannerDismissed) - val currentNeedsSlidingSyncMigration by rememberUpdatedState(needsSlidingSyncMigration) val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState() return remember { derivedStateOf { calculateBannerState( securityBannerDismissed = currentSecurityBannerDismissed, - needsSlidingSyncMigration = currentNeedsSlidingSyncMigration, recoveryState = recoveryState, ) } @@ -191,7 +187,6 @@ class RoomListPresenter @Inject constructor( private fun calculateBannerState( securityBannerDismissed: Boolean, - needsSlidingSyncMigration: Boolean, recoveryState: RecoveryState, ): SecurityBannerState { if (securityBannerDismissed) { @@ -206,10 +201,6 @@ class RoomListPresenter @Inject constructor( RecoveryState.ENABLED -> Unit } - if (needsSlidingSyncMigration) { - return SecurityBannerState.NeedsNativeSlidingSyncMigration - } - return SecurityBannerState.None } @@ -231,10 +222,7 @@ class RoomListPresenter @Inject constructor( loadingState == RoomList.LoadingState.NotLoaded || roomSummaries is AsyncData.Loading } } - val needsSlidingSyncMigration by produceState(false) { - value = client.needsSlidingSyncMigration().getOrDefault(false) - } - val securityBannerState by rememberSecurityBannerState(securityBannerDismissed, needsSlidingSyncMigration) + val securityBannerState by rememberSecurityBannerState(securityBannerDismissed) return when { showEmpty -> RoomListContentState.Empty(securityBannerState = securityBannerState) showSkeleton -> RoomListContentState.Skeleton(count = 16) @@ -320,19 +308,6 @@ class RoomListPresenter @Inject constructor( } } - /** - * Checks if the user needs to migrate to a native sliding sync version. - */ - private suspend fun MatrixClient.needsSlidingSyncMigration(): Result = runCatching { - val currentSlidingSyncVersion = currentSlidingSyncVersion().getOrThrow() - if (currentSlidingSyncVersion != SlidingSyncVersion.Native) { - val availableSlidingSyncVersions = availableSlidingSyncVersions().getOrThrow() - availableSlidingSyncVersions.contains(SlidingSyncVersion.Native) - } else { - false - } - } - private var currentUpdateVisibleRangeJob: Job? = null private fun CoroutineScope.updateVisibleRange(range: IntRange) { currentUpdateVisibleRangeJob?.cancel() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt index 65cf5a35a6..07994ef8cb 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt @@ -56,7 +56,6 @@ enum class SecurityBannerState { None, SetUpRecovery, RecoveryKeyConfirmation, - NeedsNativeSlidingSyncMigration, } @Immutable diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt index d40546b5dd..877442ef1b 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt @@ -14,7 +14,6 @@ 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.MaterialTheme import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable @@ -22,6 +21,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter +import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.leaveroom.api.LeaveRoomView import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorContainer @@ -50,7 +50,6 @@ fun RoomListView( onRoomSettingsClick: (roomId: RoomId) -> Unit, onMenuActionClick: (RoomListMenuAction) -> Unit, onRoomDirectorySearchClick: () -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, acceptDeclineInviteView: @Composable () -> Unit, ) { @@ -77,7 +76,6 @@ fun RoomListView( onOpenSettings = onSettingsClick, onCreateRoomClick = onCreateRoomClick, onMenuActionClick = onMenuActionClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, modifier = Modifier.padding(top = topPadding), ) // This overlaid view will only be visible when state.displaySearchResults is true @@ -90,7 +88,7 @@ fun RoomListView( .statusBarsPadding() .padding(top = topPadding) .fillMaxSize() - .background(MaterialTheme.colorScheme.background) + .background(ElementTheme.colors.bgCanvasDefault) ) acceptDeclineInviteView() } @@ -107,7 +105,6 @@ private fun RoomListScaffold( onOpenSettings: () -> Unit, onCreateRoomClick: () -> Unit, onMenuActionClick: (RoomListMenuAction) -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { fun onRoomClick(room: RoomListRoomSummary) { @@ -143,7 +140,6 @@ private fun RoomListScaffold( onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, onRoomClick = ::onRoomClick, onCreateRoomClick = onCreateRoomClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, modifier = Modifier .padding(padding) .consumeWindowInsets(padding) @@ -152,14 +148,13 @@ private fun RoomListScaffold( floatingActionButton = { if (state.displayActions) { FloatingActionButton( - // FIXME align on Design system theme - containerColor = MaterialTheme.colorScheme.primary, + containerColor = ElementTheme.colors.iconPrimary, onClick = onCreateRoomClick ) { Icon( - // Note cannot use Icons.Outlined.EditSquare, it does not exist :/ - imageVector = CompoundIcons.Compose(), - contentDescription = stringResource(id = R.string.screen_roomlist_a11y_create_message) + imageVector = CompoundIcons.Plus(), + contentDescription = stringResource(id = R.string.screen_roomlist_a11y_create_message), + tint = ElementTheme.colors.iconOnSolidPrimary, ) } } @@ -184,6 +179,5 @@ internal fun RoomListViewPreview(@PreviewParameter(RoomListStateProvider::class) onMenuActionClick = {}, onRoomDirectorySearchClick = {}, acceptDeclineInviteView = {}, - onMigrateToNativeSlidingSyncClick = {}, ) } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/NativeSlidingSyncMigrationBanner.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/NativeSlidingSyncMigrationBanner.kt deleted file mode 100644 index 132f0a0dc9..0000000000 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/NativeSlidingSyncMigrationBanner.kt +++ /dev/null @@ -1,44 +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.features.roomlist.impl.components - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import io.element.android.features.roomlist.impl.R -import io.element.android.libraries.designsystem.components.Announcement -import io.element.android.libraries.designsystem.components.AnnouncementType -import io.element.android.libraries.designsystem.preview.ElementPreview -import io.element.android.libraries.designsystem.preview.PreviewsDayNight - -@Composable -internal fun NativeSlidingSyncMigrationBanner( - onContinueClick: () -> Unit, - onDismissClick: () -> Unit, - modifier: Modifier = Modifier, -) { - Announcement( - modifier = modifier.roomListBannerPadding(), - title = stringResource(R.string.banner_migrate_to_native_sliding_sync_title), - description = stringResource(R.string.banner_migrate_to_native_sliding_sync_description), - type = AnnouncementType.Actionable( - actionText = stringResource(R.string.banner_migrate_to_native_sliding_sync_action), - onActionClick = onContinueClick, - onDismissClick = onDismissClick, - ) - ) -} - -@PreviewsDayNight -@Composable -internal fun NativeSlidingSyncMigrationBannerPreview() = ElementPreview { - NativeSlidingSyncMigrationBanner( - onContinueClick = {}, - onDismissClick = {}, - ) -} diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt index f719a9c9c9..ebd618185c 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt @@ -64,7 +64,6 @@ fun RoomListContentView( onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, onCreateRoomClick: () -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { Box(modifier = modifier) { @@ -90,7 +89,6 @@ fun RoomListContentView( eventSink = eventSink, onSetUpRecoveryClick = onSetUpRecoveryClick, onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, onRoomClick = onRoomClick, ) } @@ -162,7 +160,6 @@ private fun RoomsView( onSetUpRecoveryClick: () -> Unit, onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { if (state.summaries.isEmpty() && filtersState.hasAnyFilterSelected) { @@ -177,7 +174,6 @@ private fun RoomsView( onSetUpRecoveryClick = onSetUpRecoveryClick, onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, onRoomClick = onRoomClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, modifier = modifier.fillMaxSize(), ) } @@ -190,7 +186,6 @@ private fun RoomsViewList( onSetUpRecoveryClick: () -> Unit, onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { val lazyListState = rememberLazyListState() @@ -229,14 +224,6 @@ private fun RoomsViewList( ) } } - SecurityBannerState.NeedsNativeSlidingSyncMigration -> { - item { - NativeSlidingSyncMigrationBanner( - onContinueClick = onMigrateToNativeSlidingSyncClick, - onDismissClick = { updatedEventSink(RoomListEvents.DismissBanner) }, - ) - } - } SecurityBannerState.None -> if (state.fullScreenIntentPermissionsState.shouldDisplayBanner) { item { FullScreenIntentPermissionBanner(state = state.fullScreenIntentPermissionsState) @@ -318,6 +305,5 @@ internal fun RoomListContentViewPreview(@PreviewParameter(RoomListContentStatePr onConfirmRecoveryKeyClick = {}, onRoomClick = {}, onCreateRoomClick = {}, - onMigrateToNativeSlidingSyncClick = {}, ) } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt index f196ba3c19..a0e9078530 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt @@ -162,7 +162,7 @@ private fun DefaultRoomListTopBar( // Workaround to display a very subtle bloom for avatars with very soft colors Color(0xFFF9F9F9) } else { - ElementTheme.materialColors.background + ElementTheme.colors.bgCanvasDefault }, blurSize = DpSize(avatarBloomSize, avatarBloomSize), offset = DpOffset(24.dp, 24.dp + statusBarPadding), @@ -174,7 +174,7 @@ private fun DefaultRoomListTopBar( } else { DpSize.Unspecified }, - bottomSoftEdgeColor = ElementTheme.materialColors.background, + bottomSoftEdgeColor = ElementTheme.colors.bgCanvasDefault, bottomSoftEdgeAlpha = if (displayFilters) { 1f } else { @@ -233,7 +233,7 @@ private fun DefaultRoomListTopBar( leadingIcon = { Icon( imageVector = CompoundIcons.ShareAndroid(), - tint = ElementTheme.materialColors.secondary, + tint = ElementTheme.colors.iconSecondary, contentDescription = null, ) } @@ -249,7 +249,7 @@ private fun DefaultRoomListTopBar( leadingIcon = { Icon( imageVector = CompoundIcons.ChatProblem(), - tint = ElementTheme.materialColors.secondary, + tint = ElementTheme.colors.iconSecondary, contentDescription = null, ) } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt index 05ff1042e5..0fbd4d38fe 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryRow.kt @@ -24,7 +24,6 @@ import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -212,7 +211,7 @@ private fun NameAndTimestampRow( style = ElementTheme.typography.fontBodyLgMedium, text = name ?: stringResource(id = CommonStrings.common_no_room_name), fontStyle = FontStyle.Italic.takeIf { name == null }, - color = MaterialTheme.roomListRoomName(), + color = ElementTheme.roomListRoomName(), maxLines = 1, overflow = TextOverflow.Ellipsis ) @@ -223,7 +222,7 @@ private fun NameAndTimestampRow( color = if (isHighlighted) { ElementTheme.colors.unreadIndicator } else { - MaterialTheme.roomListRoomMessageDate() + ElementTheme.roomListRoomMessageDate() }, ) } @@ -247,7 +246,7 @@ private fun InviteSubtitle( maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.roomListRoomMessage(), + color = ElementTheme.roomListRoomMessage(), modifier = modifier, ) } @@ -268,7 +267,7 @@ private fun LastMessageAndIndicatorRow( Text( modifier = Modifier.weight(1f), text = attributedLastMessage, - color = MaterialTheme.roomListRoomMessage(), + color = ElementTheme.roomListRoomMessage(), style = ElementTheme.typography.fontBodyMdRegular, minLines = 2, maxLines = 2, @@ -315,7 +314,7 @@ private fun InviteNameAndIndicatorRow( style = ElementTheme.typography.fontBodyLgMedium, text = name ?: stringResource(id = CommonStrings.common_no_room_name), fontStyle = FontStyle.Italic.takeIf { name == null }, - color = MaterialTheme.roomListRoomName(), + color = ElementTheme.roomListRoomName(), maxLines = 1, overflow = TextOverflow.Ellipsis ) diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryProvider.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryProvider.kt index d293951f89..e71c8849b7 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryProvider.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryProvider.kt @@ -123,6 +123,7 @@ internal fun anInviteSender( userId = userId, displayName = displayName, avatarData = avatarData, + membershipChangeReason = null, ) internal fun aRoomListRoomSummary( diff --git a/features/roomlist/impl/src/main/res/values-be/translations.xml b/features/roomlist/impl/src/main/res/values-be/translations.xml index a6201922ff..d7d20060c8 100644 --- a/features/roomlist/impl/src/main/res/values-be/translations.xml +++ b/features/roomlist/impl/src/main/res/values-be/translations.xml @@ -1,9 +1,5 @@ - "Выйсці і абнавіць" - "Ваш сервер зараз падтрымлівае новы, хутчэйшы пратакол. Выйдзіце з сістэмы і зноў увайдзіце, каб абнавіць яе. Гэта дапаможа вам пазбегнуць прымусовага выхаду з сістэмы, калі стары пратакол будзе пазней выдалены." - "Ваш хатні сервер больш не падтрымлівае стары пратакол. Калі ласка, выйдзіце і ўвайдзіце зноў, каб працягнуць выкарыстанне праграмы." - "Даступна абнаўленне" "Стварыце новы ключ аднаўлення, які можна выкарыстоўваць для аднаўлення зашыфраванай гісторыі паведамленняў у выпадку страты доступу да вашых прылад." "Наладзьце аднаўленне" "Наладзіць аднаўленне" diff --git a/features/roomlist/impl/src/main/res/values-bg/translations.xml b/features/roomlist/impl/src/main/res/values-bg/translations.xml index 8012e4283b..4afa8044f3 100644 --- a/features/roomlist/impl/src/main/res/values-bg/translations.xml +++ b/features/roomlist/impl/src/main/res/values-bg/translations.xml @@ -9,6 +9,7 @@ "Създаване на нов разговор или стая" "Започнете, като изпратите съобщение на някого." "Все още няма чатове." + "Покани" "Нисък приоритет" "Хора" "Стаи" diff --git a/features/roomlist/impl/src/main/res/values-cs/translations.xml b/features/roomlist/impl/src/main/res/values-cs/translations.xml index 921bb77027..795edcfe0c 100644 --- a/features/roomlist/impl/src/main/res/values-cs/translations.xml +++ b/features/roomlist/impl/src/main/res/values-cs/translations.xml @@ -1,9 +1,5 @@ - "Odhlásit se a upgradovat" - "Váš server nyní podporuje nový, rychlejší protokol. Chcete-li upgradovat, odhlaste se a znovu se přihlaste. Pokud to uděláte nyní, pomůže vám vyhnout se nucenému odhlášení, když bude starý protokol později odstraněn." - "Váš domovský server již nepodporuje starý protokol. Chcete-li pokračovat v používání aplikace, odhlaste se a znovu se přihlaste." - "Upgrade k dispozici" "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/roomlist/impl/src/main/res/values-de/translations.xml b/features/roomlist/impl/src/main/res/values-de/translations.xml index 3b8b70c40f..8fa6b7c756 100644 --- a/features/roomlist/impl/src/main/res/values-de/translations.xml +++ b/features/roomlist/impl/src/main/res/values-de/translations.xml @@ -1,9 +1,5 @@ - "Abmelden und aktualisieren" - "Dein Server unterstützt jetzt ein neues, schnelleres Protokoll. Melde dich ab und melde dich wieder an, um zu aktualisieren. Wenn du das jetzt tust, vermeidest du eine erzwungene Abmeldung, wenn das alte Protokoll später entfernt wird." - "Dein Homeserver unterstützt das alte Protokoll nicht mehr. Bitte logge dich aus und melde dich wieder an, um die App weiter zu nutzen." - "Aktualisierung verfügbar" "Erstelle einen neuen Wiederherstellungsschlüssel, mit dem du deinen verschlüsselten Nachrichtenverlauf wiederherstellen kannst, wenn du dich an einem neuen Gerät anmeldest." "Wiederherstellung einrichten" "Wiederherstellung einrichten" diff --git a/features/roomlist/impl/src/main/res/values-el/translations.xml b/features/roomlist/impl/src/main/res/values-el/translations.xml index c1ac4c5945..b92c7daa90 100644 --- a/features/roomlist/impl/src/main/res/values-el/translations.xml +++ b/features/roomlist/impl/src/main/res/values-el/translations.xml @@ -1,9 +1,5 @@ - "Αποσύνδεση & Αναβάθμιση" - "Ο διακομιστής σου υποστηρίζει τώρα ένα νέο, ταχύτερο πρωτόκολλο. Αποσυνδέσου και συνδέσου ξανά για αναβάθμιση τώρα. Κάνοντας αυτό τώρα θα σε βοηθήσει να αποφύγεις μια αναγκαστική αποσύνδεση όταν το παλιό πρωτόκολλο καταργηθεί αργότερα." - "Ο οικιακός διακομιστής σου δεν υποστηρίζει πλέον το παλιό πρωτόκολλο. Αποσυνδέσου και συνδέσου ξανά για να συνεχίσεις να χρησιμοποιείς την εφαρμογή." - "Διαθέσιμη αναβάθμιση" "Δημιούργησε ένα νέο κλειδί ανάκτησης που μπορεί να χρησιμοποιηθεί για την επαναφορά του ιστορικού των κρυπτογραφημένων μηνυμάτων σου σε περίπτωση που χάσεις την πρόσβαση στις συσκευές σου." "Ρύθμιση ανάκτησης" "Ρύθμιση ανάκτησης" diff --git a/features/roomlist/impl/src/main/res/values-es/translations.xml b/features/roomlist/impl/src/main/res/values-es/translations.xml index 25f8e0ba21..396f125994 100644 --- a/features/roomlist/impl/src/main/res/values-es/translations.xml +++ b/features/roomlist/impl/src/main/res/values-es/translations.xml @@ -18,6 +18,7 @@ "Puedes añadir un chat a tus favoritos en la configuración del chat. Por ahora, puedes deseleccionar los filtros para ver tus otros chats" "Aún no tienes chats favoritos" + "Invitaciones" "Prioridad baja" "Puedes deseleccionar filtros para ver tus otros chats." "No tienes chats para esta selección" diff --git a/features/roomlist/impl/src/main/res/values-et/translations.xml b/features/roomlist/impl/src/main/res/values-et/translations.xml index 2eb1f63832..f642e34457 100644 --- a/features/roomlist/impl/src/main/res/values-et/translations.xml +++ b/features/roomlist/impl/src/main/res/values-et/translations.xml @@ -1,9 +1,5 @@ - "Logi välja ja uuenda" - "Sinu koduserver toetab uut ja kiiremat protokolli. Uuendamiseks logi korraks rakendusest välja ja siis tagasi. Mingil hetkel tulevikus vana protokoll eemaldatakse kasutusest ja tehes uuenduse nüüd väldid hilisemat sundkorras uuendust." - "Sinu koduserver enam ei toeta vana protokolli. Jätkamaks rakenduse kasutamist palun logi välja ning seejärel tagasi." - "Saadaval on uuendus" "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/roomlist/impl/src/main/res/values-fa/translations.xml b/features/roomlist/impl/src/main/res/values-fa/translations.xml index f99eb289a6..2bccfdb38a 100644 --- a/features/roomlist/impl/src/main/res/values-fa/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fa/translations.xml @@ -1,7 +1,5 @@ - "خروج و ارتقا" - "ارتقا موجود است" "برپایی بازیابی" "برپایی بازیابی" "ورود کلید بازیابیتان" diff --git a/features/roomlist/impl/src/main/res/values-fi/translations.xml b/features/roomlist/impl/src/main/res/values-fi/translations.xml index 5927a1bc57..9c79e556ac 100644 --- a/features/roomlist/impl/src/main/res/values-fi/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fi/translations.xml @@ -1,9 +1,5 @@ - "Kirjaudu Ulos & Päivitä" - "Palvelimesi tukee nyt uutta, nopeampaa protokollaa. Kirjaudu ulos ja takaisin sisään päivittääksesi nyt. Jos teet tämän nyt, voit välttää pakotetun uloskirjautumisen, kun vanha protokolla poistetaan myöhemmin." - "Kotipalvelimesi ei enää tue vanhaa protokollaa. Kirjaudu ulos ja takaisin sisään jatkaaksesi sovelluksen käyttöä." - "Päivitys saatavilla" "Palauta kryptografinen identiteettisi ja viestihistoriasi palautusavaimella, mikäli menetät pääsyn kaikkiin laitteisiisi." "Ota palautus käyttöön" "Ota palautus käyttöön tilisi suojaamiseksi" diff --git a/features/roomlist/impl/src/main/res/values-fr/translations.xml b/features/roomlist/impl/src/main/res/values-fr/translations.xml index 04fb371eeb..102edf2ee4 100644 --- a/features/roomlist/impl/src/main/res/values-fr/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fr/translations.xml @@ -1,9 +1,5 @@ - "Déconnecter et mettre à niveau" - "Votre serveur prend désormais en charge un nouveau protocole plus rapide. Déconnectez-vous, puis reconnectez-vous pour effectuer la mise à niveau dès maintenant. En le faisant tout de suite, vous éviterez une déconnexion forcée lorsque l’ancien protocole sera supprimé." - "Votre serveur d’accueil ne prend plus en charge l’ancien protocole. Veuillez vous déconnecter puis vous reconnecter pour continuer à utiliser l’application." - "Mise à niveau disponible" "Générez une nouvelle clé de récupération qui peut être utilisée pour restaurer l’historique de vos messages chiffrés au cas où vous perdriez l’accès à vos appareils." "Configurer la sauvegarde" "Configurer la récupération" diff --git a/features/roomlist/impl/src/main/res/values-hu/translations.xml b/features/roomlist/impl/src/main/res/values-hu/translations.xml index 1505f13367..aae22494a0 100644 --- a/features/roomlist/impl/src/main/res/values-hu/translations.xml +++ b/features/roomlist/impl/src/main/res/values-hu/translations.xml @@ -1,12 +1,8 @@ - "Kijelentkezés és frissítés" - "A kiszolgálója mostantól egy új, gyorsabb protokollt támogat. A frissítéshez jelentkezzen ki, majd jelentkezzen be újra. Ha ezt most megteszi, elkerülheti a kényszerített kijelentkeztetést a régi protokollt eltávolításakor." - "A Matrix-kiszolgáló már nem támogatja a régi protokollt. Az alkalmazás további használatához jelentkezzen ki és be." - "Frissítés érhető el" "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" + "Helyreállítás beállítása a fiókja védelméhez" "Erősítse meg a helyreállítási kulcsát, hogy továbbra is hozzáférjen a kulcstárolójához és az üzenetelőzményekhez." "Adja meg a helyreállítási kulcsot" "Elfelejtette a helyreállítási kulcsot?" diff --git a/features/roomlist/impl/src/main/res/values-in/translations.xml b/features/roomlist/impl/src/main/res/values-in/translations.xml index e3c3bb4800..936bb1e399 100644 --- a/features/roomlist/impl/src/main/res/values-in/translations.xml +++ b/features/roomlist/impl/src/main/res/values-in/translations.xml @@ -1,9 +1,5 @@ - "Keluar & Tingkatkan" - "Server Anda kini mendukung protokol baru yang lebih cepat. Keluar dan masuk lagi untuk memperbarui sekarang. Melakukan hal ini sekarang akan membantu Anda menghindari keluar paksa saat protokol lama dihapus nantinya." - "Homeserver Anda tidak lagi mendukung protokol lama. Silakan keluar dan masuk kembali untuk terus menggunakan aplikasi." - "Peningkatan tersedia" "Buat kunci pemulihan baru yang dapat digunakan untuk memulihkan riwayat pesan terenkripsi Anda jika Anda kehilangan akses ke perangkat Anda." "Siapkan pemulihan" "Siapkan pemulihan" diff --git a/features/roomlist/impl/src/main/res/values-it/translations.xml b/features/roomlist/impl/src/main/res/values-it/translations.xml index cd248d7372..95b926f169 100644 --- a/features/roomlist/impl/src/main/res/values-it/translations.xml +++ b/features/roomlist/impl/src/main/res/values-it/translations.xml @@ -1,9 +1,5 @@ - "Esci e aggiorna" - "Il tuo server ora supporta un nuovo protocollo più veloce. Esci e rientra per effettuare l\'aggiornamento. Se lo fai ora, eviterai una disconnessione forzata quando il vecchio protocollo verrà rimosso in seguito." - "Il tuo homeserver non supporta più il vecchio protocollo. Esci e rientra per continuare a usare l\'app." - "Aggiornamento disponibile" "Genera una nuova chiave di recupero che può essere usata per ripristinare la cronologia dei messaggi crittografati nel caso in cui tu perda l\'accesso ai tuoi dispositivi." "Configura il recupero" "Configura il ripristino" diff --git a/features/roomlist/impl/src/main/res/values-ka/translations.xml b/features/roomlist/impl/src/main/res/values-ka/translations.xml index 0086aeb6e4..4fad6be272 100644 --- a/features/roomlist/impl/src/main/res/values-ka/translations.xml +++ b/features/roomlist/impl/src/main/res/values-ka/translations.xml @@ -14,6 +14,7 @@ "ახალი საუბრისა ან ოთახის შექმნა" "დაიწყეთ ვინმესთვის შეტყობინების გაგზავნით." "არც ერთი ჩატი ჯერ არაა." + "მოწვევები" "ხალხი" "ჩატები" "როგორც ჩანს, ახალ მოწყობილობას იყენებთ. დაადასტურეთ სხვა მოწყობილობით თქვენს დაშიფრულ შეტყობინებებზე წვდომისთვის." diff --git a/features/roomlist/impl/src/main/res/values-nb/translations.xml b/features/roomlist/impl/src/main/res/values-nb/translations.xml index 7c108c91a4..11741812c7 100644 --- a/features/roomlist/impl/src/main/res/values-nb/translations.xml +++ b/features/roomlist/impl/src/main/res/values-nb/translations.xml @@ -1,6 +1,5 @@ - "Oppgradering tilgjengelig" "Skriv inn gjenopprettingsnøkkelen din" "Har du glemt din gjenopprettingsnøkkel?" "Er du sikker på at du vil takke nei til invitasjonen til å bli med i %1$s?" diff --git a/features/roomlist/impl/src/main/res/values-nl/translations.xml b/features/roomlist/impl/src/main/res/values-nl/translations.xml index d8ea5bc6f3..3acfb82cf2 100644 --- a/features/roomlist/impl/src/main/res/values-nl/translations.xml +++ b/features/roomlist/impl/src/main/res/values-nl/translations.xml @@ -1,9 +1,5 @@ - "Uitloggen & Upgraden" - "Je server ondersteunt nu een nieuw, sneller protocol. Log uit en log opnieuw in om nu te upgraden. Als je dit nu doet, voorkom je dat je geforceerd uitlogt wordt wanneer het oude protocol later wordt verwijderd." - "Je homeserver ondersteunt het oude protocol niet meer. Log uit en log opnieuw in om de app te blijven gebruiken." - "Upgrade beschikbaar" "Herstelmogelijkheid instellen" "Je chatback-up is momenteel niet gesynchroniseerd. Je moet je herstelsleutel invoeren om toegang te behouden tot je chatback-up." "Voer je herstelsleutel in" diff --git a/features/roomlist/impl/src/main/res/values-pl/translations.xml b/features/roomlist/impl/src/main/res/values-pl/translations.xml index 140eb7b1c4..c0721a6081 100644 --- a/features/roomlist/impl/src/main/res/values-pl/translations.xml +++ b/features/roomlist/impl/src/main/res/values-pl/translations.xml @@ -1,9 +1,5 @@ - "Wyloguj się i zaktualizuj" - "Twój serwer obsługuje teraz nowy, szybszy protokół. Wyloguj się i zaloguj ponownie, aby uaktualnić teraz. Zrobienie tego teraz pomoże uniknąć wymuszonego wylogowania, gdy stary protokół zostanie później usunięty." - "Twój serwer domowy już nie wspiera starego protokołu. Zaloguj się ponownie, aby kontynuować korzystanie z aplikacji." - "Dostępna aktualizacja" "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" diff --git a/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml b/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml index 354c6c736f..025a67ffcf 100644 --- a/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/roomlist/impl/src/main/res/values-pt-rBR/translations.xml @@ -16,6 +16,7 @@ "Ainda não há conversas." "Favoritos" "Você não tem nenhuma conversa favorita ainda" + "Convites" "Baixa prioridade" "Você não tem conversas para esta seleção" "Pessoas" diff --git a/features/roomlist/impl/src/main/res/values-pt/translations.xml b/features/roomlist/impl/src/main/res/values-pt/translations.xml index b6198aa5a4..d5f11986e1 100644 --- a/features/roomlist/impl/src/main/res/values-pt/translations.xml +++ b/features/roomlist/impl/src/main/res/values-pt/translations.xml @@ -1,9 +1,5 @@ - "Sair & Atualizar" - "O teu servidor suporta agora um protocolo novo e mais rápido. Termina a sessão e volta a iniciar sessão para atualizar agora. Se o fizeres agora, evitarás um fim de sessão forçado quando o protocolo antigo for removido mais tarde." - "Seu homeserver não suporta mais o protocolo antigo. Termine sessão e volte a iniciar sessão para continuar a utilizar a aplicação." - "Atualização disponível" "Recupera a tua identidade criptográfica e o histórico de mensagens com uma chave de recuperação se tiveres perdido todos os teus dispositivos existentes." "Configurar recuperação" "Configurar a recuperação" diff --git a/features/roomlist/impl/src/main/res/values-ro/translations.xml b/features/roomlist/impl/src/main/res/values-ro/translations.xml index 077ed1a4c5..b4d276dd74 100644 --- a/features/roomlist/impl/src/main/res/values-ro/translations.xml +++ b/features/roomlist/impl/src/main/res/values-ro/translations.xml @@ -1,9 +1,5 @@ - "Deconectați-vă și faceți upgrade" - "Serverul dvs. acceptă acum un protocol nou, mai rapid. Deconectați-vă și conectați-vă din nou pentru a face upgrade acum. Dacă faceți acest lucru acum, vă va ajuta să evitați o deconectare forțată atunci când vechiul protocol este eliminat ulterior." - "Serverul dvs. de acasă nu mai acceptă vechiul protocol. Vă rugăm să vă deconectați și să vă conectați din nou pentru a continua să utilizați aplicația." - "Upgrade disponibil" "Recuperați-vă identitatea criptografică și istoricul mesajelor cu o cheie de recuperare dacă ați pierdut toate dispozitivele existente." "Configurați recuperarea" "Configurați recuperarea pentru a vă proteja contul" diff --git a/features/roomlist/impl/src/main/res/values-ru/translations.xml b/features/roomlist/impl/src/main/res/values-ru/translations.xml index 9c2e902afc..63072a2dc6 100644 --- a/features/roomlist/impl/src/main/res/values-ru/translations.xml +++ b/features/roomlist/impl/src/main/res/values-ru/translations.xml @@ -1,9 +1,5 @@ - "Выйти и обновить" - "Теперь ваш сервер поддерживает новый, более быстрый протокол. Чтобы обновить его прямо сейчас, выйдите и войдите в свою учётную запись снова. Сделав это сейчас, вы сможете избежать принудительного выхода из системы при последующем удалении старого протокола." - "Ваш домашний сервер больше не поддерживает старый протокол. Пожалуйста, выйдите и войдите в свою учётную запись снова, чтобы продолжить использование приложения." - "Доступно обновление" "Создайте новый ключ восстановления, который можно использовать для восстановления зашифрованной истории сообщений в случае потери доступа к своим устройствам." "Настроить восстановление" "Для защиты вашего аккаунта рекомендуется настроить восстановление" diff --git a/features/roomlist/impl/src/main/res/values-sk/translations.xml b/features/roomlist/impl/src/main/res/values-sk/translations.xml index 610d9bb489..e2f67e643e 100644 --- a/features/roomlist/impl/src/main/res/values-sk/translations.xml +++ b/features/roomlist/impl/src/main/res/values-sk/translations.xml @@ -1,9 +1,5 @@ - "Odhlásiť sa a aktualizovať" - "Váš server teraz podporuje nový, rýchlejší protokol. Odhláste sa a prihláste sa znova, aby ste mohli aktualizovať. Ak to urobíte teraz, pomôže vám vyhnúť sa nútenému odhláseniu, keď sa starý protokol neskôr odstráni." - "Váš domovský server už nepodporuje starý protokol. Ak chcete pokračovať v používaní aplikácie, odhláste sa a znova sa prihláste." - "Aktualizácia je k dispozícii" "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/roomlist/impl/src/main/res/values-sv/translations.xml b/features/roomlist/impl/src/main/res/values-sv/translations.xml index f2a30a2050..5509f17dc0 100644 --- a/features/roomlist/impl/src/main/res/values-sv/translations.xml +++ b/features/roomlist/impl/src/main/res/values-sv/translations.xml @@ -1,13 +1,11 @@ - "Logga ut och uppgradera" - "Din server stöder nu ett nytt, snabbare protokoll. Logga ut och logga in igen för att uppgradera nu. Om du gör detta nu hjälper du dig att undvika en tvingad utloggning när det gamla protokollet tas bort senare." - "Din hemserver stöder inte längre det gamla protokollet. Logga ut och logga in igen för att fortsätta använda appen." - "Uppgradering tillgänglig" "Skapa en ny återställningsnyckel som kan användas för att återställa din krypterade meddelandehistorik om du förlorar åtkomst till dina enheter." "Ställ in återställning" "Ställ in återställning" "Bekräfta din återställningsnyckel för att behålla åtkomsten till din nyckellagring och meddelandehistorik." + "Ange din återställningsnyckel" + "Glömt din återställningsnyckel?" "Din nyckellagring är inte synkroniserad" "För att säkerställa att du aldrig missar ett viktigt samtal, ändra dina inställningar för att tillåta helskärmsmeddelanden när telefonen är låst." "Förbättra din samtalsupplevelse" diff --git a/features/roomlist/impl/src/main/res/values-tr/translations.xml b/features/roomlist/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..1176b53662 --- /dev/null +++ b/features/roomlist/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,46 @@ + + + "Mevcut tüm cihazlarınızı kaybettiyseniz şifreleme kimliğinizi ve mesaj geçmişinizi bir kurtarma anahtarıyla kurtarın." + "Kurtarmayı ayarlayın" + "Hesabınızı korumak için kurtarmayı ayarlayın" + "Anahtar depolama alanınıza ve mesaj geçmişinize erişimi sürdürmek için kurtarma anahtarınızı onaylayın." + "Kurtarma anahtarınızı girin" + "Kurtarma anahtarınızı mı unuttunuz?" + "Anahtar depolama alanınız senkronize değil" + "Önemli bir aramayı asla kaçırmamak için, telefonunuz kilitliyken tam ekran bildirimlere izin vermek üzere ayarlarınızı değiştirin." + "Arama deneyiminizi geliştirin" + "%1$s katılma davetini reddetmek istediğinizden emin misiniz?" + "Daveti reddet" + "%1$s ile bu özel sohbeti reddetmek istediğinizden emin misiniz?" + "Sohbeti reddet" + "Davet Yok" + "%1$s (%2$s) sizi davet etti" + "Katılma isteği gönderildi" + "Bu tek seferlik bir işlemdir, beklediğiniz için teşekkürler." + "Hesabınızı ayarlanıyor." + "Yeni bir sohbet veya oda oluşturun" + "Birine mesaj göndererek başla." + "Henüz sohbet yok." + "Favoriler" + "Sohbet ayarlarından bir sohbeti favorilerinize ekleyebilirsiniz. +Şimdilik, diğer sohbetlerinizi görmek için filtrelerin seçimini kaldırabilirsiniz" + "Henüz favori sohbetleriniz yok" + "Davetiyeler" + "Bekleyen davetiniz yok." + "Düşük Öncelikli" + "Diğer sohbetlerinizi görmek için filtrelerin seçimini kaldırabilirsiniz" + "Bu seçim için sohbetiniz yok" + "Kişiler" + "Henüz hiç DM\'niz yok" + "Odalar" + "Henüz herhangi bir odada değilsiniz" + "Okunmamış" + "Tebrikler! +Okunmamış mesajınız yok!" + "Sohbetler" + "Okundu olarak işaretle" + "Okunmamış olarak işaretle" + "Tüm odalara göz at" + "Görünüşe göre yeni bir cihaz kullanıyorsunuz. Şifrelenmiş mesajlarınıza erişmek için başka bir cihazla doğrulayın." + "Siz olduğunuzu doğrulayın" + diff --git a/features/roomlist/impl/src/main/res/values-uk/translations.xml b/features/roomlist/impl/src/main/res/values-uk/translations.xml index 783bac68c0..2f136bc64f 100644 --- a/features/roomlist/impl/src/main/res/values-uk/translations.xml +++ b/features/roomlist/impl/src/main/res/values-uk/translations.xml @@ -1,9 +1,5 @@ - "Вийти та оновити" - "Ваш сервер тепер підтримує новий, швидший протокол. Вийдіть із системи та увійдіть знову, щоб оновити систему зараз. Якщо ви зробите це зараз, це допоможе вам уникнути примусового виходу з системи, коли старий протокол буде видалено пізніше." - "Ваш домашній сервер більше не підтримує старий протокол. Будь ласка, вийдіть і увійдіть знову, щоб продовжити використання програми." - "Доступне оновлення" "Відновіть свою криптографічну ідентичність та історію повідомлень за допомогою ключа відновлення, якщо ви втратили всі наявні пристрої." "Налаштувати відновлення" "Налаштуйте відновлення для захисту свого облікового запису" diff --git a/features/roomlist/impl/src/main/res/values-uz/translations.xml b/features/roomlist/impl/src/main/res/values-uz/translations.xml index 0fb8858304..077f9ecc4a 100644 --- a/features/roomlist/impl/src/main/res/values-uz/translations.xml +++ b/features/roomlist/impl/src/main/res/values-uz/translations.xml @@ -12,6 +12,7 @@ "Yangi suhbat yoki xona yarating" "Kimgadir xabar yuborishdan boshlang." "Hozircha chatlar yo‘q." + "Takliflar" "Odamlar" "Suhbatlar" "Siz yangi qurilmadan foydalanayotganga o‘xshaysiz. Shifrlangan xabarlaringizga kirish uchun boshqa qurilma bilan tasdiqlang." diff --git a/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml b/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml index 82b333e778..7a6057fc0b 100644 --- a/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml @@ -1,9 +1,5 @@ - "登出並升級" - "您的伺服器現在支援新的、更快的協定。立即登出並重新登入以進行升級。現在這樣做將協助您避免在稍後移除舊協定時被強制登出。" - "您的家伺服器不再支援舊協定。請登出並重新登入以繼續使用應用程式。" - "可升級" "若您遺失了所有現有裝置,則請使用復原金鑰以救援您的密碼學身份與訊息歷史紀錄。" "設定復原" "設定備援以保護您的帳號" diff --git a/features/roomlist/impl/src/main/res/values-zh/translations.xml b/features/roomlist/impl/src/main/res/values-zh/translations.xml index 7c2555d489..b4970b4382 100644 --- a/features/roomlist/impl/src/main/res/values-zh/translations.xml +++ b/features/roomlist/impl/src/main/res/values-zh/translations.xml @@ -1,9 +1,5 @@ - "登出并升级" - "您的服务器现在支持更快的新协议。现在登出并重新登录以进行升级。现在这样做可以帮助您避免在以后删除旧协议时被强制登出。" - "您的服务器不再支持旧协议。请登出并重新登录以继续使用此应用。" - "有可用升级" "生成新的恢复密钥,该密钥可用于在您无法访问设备时恢复加密的消息历史记录。" "设置恢复" "设置恢复" diff --git a/features/roomlist/impl/src/main/res/values/localazy.xml b/features/roomlist/impl/src/main/res/values/localazy.xml index e10d8da908..2e1159c02c 100644 --- a/features/roomlist/impl/src/main/res/values/localazy.xml +++ b/features/roomlist/impl/src/main/res/values/localazy.xml @@ -1,9 +1,5 @@ - "Log Out & Upgrade" - "Your server now supports a new, faster protocol. Log out and log back in to upgrade now. Doing this now will help you avoid a forced logout when the old protocol is removed later." - "Your homeserver no longer supports the old protocol. Please log out and log back in to continue using the app." - "Upgrade available" "Recover your cryptographic identity and message history with a recovery key if you have lost all your existing devices." "Set up recovery" "Set up recovery to protect your account" diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt index ee7989cafc..1810aedd2d 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt @@ -229,21 +229,6 @@ class RoomListViewTest { listOf(RoomListEvents.AcceptInvite(invitedRoom), RoomListEvents.DeclineInvite(invitedRoom)), ) } - - @Test - fun `clicking on logout and migrate calls the migration clicked callback`() { - val state = aRoomListState( - contentState = aRoomsContentState(securityBannerState = SecurityBannerState.NeedsNativeSlidingSyncMigration), - eventSink = {}, - ) - ensureCalledOnce { callback -> - rule.setRoomListView( - state = state, - onMigrateToNativeSlidingSyncClick = callback, - ) - rule.clickOn(R.string.banner_migrate_to_native_sliding_sync_action) - } - } } private fun AndroidComposeTestRule.setRoomListView( @@ -256,7 +241,6 @@ private fun AndroidComposeTestRule.setRoomL onRoomSettingsClick: (RoomId) -> Unit = EnsureNeverCalledWithParam(), onMenuActionClick: (RoomListMenuAction) -> Unit = EnsureNeverCalledWithParam(), onRoomDirectorySearchClick: () -> Unit = EnsureNeverCalled(), - onMigrateToNativeSlidingSyncClick: () -> Unit = EnsureNeverCalled() ) { setContent { RoomListView( @@ -269,7 +253,6 @@ private fun AndroidComposeTestRule.setRoomL onRoomSettingsClick = onRoomSettingsClick, onMenuActionClick = onMenuActionClick, onRoomDirectorySearchClick = onRoomDirectorySearchClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, acceptDeclineInviteView = { }, ) } 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 5e97f4193d..c8e9072c6b 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 @@ -9,11 +9,11 @@ package io.element.android.features.securebackup.impl.reset import android.app.Activity import android.os.Parcelable +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.window.DialogProperties import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner @@ -160,7 +160,7 @@ class ResetIdentityFlowNode @AssistedInject constructor( override fun View(modifier: Modifier) { // Workaround to get the current activity if (!this::activity.isInitialized) { - activity = LocalContext.current as Activity + activity = requireNotNull(LocalActivity.current) } val startResetState by resetIdentityFlowManager.currentHandleFlow.collectAsState() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordView.kt index 2c118c3049..998b46046c 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordView.kt @@ -33,6 +33,7 @@ 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.Icon import io.element.android.libraries.designsystem.theme.components.TextField +import io.element.android.libraries.designsystem.theme.components.TextFieldValidity import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -99,7 +100,7 @@ private fun Content(text: String, onTextChange: (String) -> Unit, hasError: Bool Icon(imageVector = image, description) } }, - isError = hasError, + validity = if (hasError) TextFieldValidity.Invalid else TextFieldValidity.None, supportingText = if (hasError) { stringResource(R.string.screen_reset_encryption_password_error) } else { diff --git a/features/securebackup/impl/src/main/res/values-hu/translations.xml b/features/securebackup/impl/src/main/res/values-hu/translations.xml index f655234864..92212a4086 100644 --- a/features/securebackup/impl/src/main/res/values-hu/translations.xml +++ b/features/securebackup/impl/src/main/res/values-hu/translations.xml @@ -25,7 +25,7 @@ "Elveszíti meglévő üzenetelőzményeit" "Újból ellenőriznie kell az összes meglévő eszközét és csevegőpartnerét" "Csak akkor állítsa vissza a személyazonosságát, ha nem fér hozzá másik bejelentkezett eszközhöz, és elvesztette a helyreállítási kulcsot." - "Állítsa vissza a személyazonosságát, ha más módon nem tudja megerősíteni" + "Állítsa alaphelyzetbe a személyazonosságát, ha más módon nem tudja megerősíteni" "Kikapcsolás" "Ha kijelentkezik az összes eszközéről, akkor elveszti a titkosított üzeneteit." "Biztos, hogy kikapcsolja a biztonsági mentéseket?" diff --git a/features/securebackup/impl/src/main/res/values-sv/translations.xml b/features/securebackup/impl/src/main/res/values-sv/translations.xml index 785e023bc5..501182b7aa 100644 --- a/features/securebackup/impl/src/main/res/values-sv/translations.xml +++ b/features/securebackup/impl/src/main/res/values-sv/translations.xml @@ -4,7 +4,11 @@ "Slå på säkerhetskopiering" "Lagra din kryptografiska identitet och dina meddelandenycklar säkert på servern. Detta gör att du kan se din meddelandehistorik på alla nya enheter. %1$s." "Nyckellagring" + "Nyckellagring måste vara aktiverat för att konfigurera återställning." + "Ladda upp nycklar från den här enheten" + "Tillåt lagring av nycklar" "Byt återställningsnyckel" + "Återställ din kryptografiska identitet och meddelandehistorik med en återställningsnyckel om du har tappat bort alla dina befintliga enheter." "Ange återställningsnyckel" "Din nyckellagring är för närvarande osynkroniserad." "Ställ in återställning" @@ -42,6 +46,7 @@ "Ange …" "Blivit av med din återställningsnyckel?" "Återställningsnyckel bekräftad" + "Ange din återställningsnyckel" "Kopierade återställningsnyckel" "Genererar …" "Spara återställningsnyckeln" diff --git a/features/securebackup/impl/src/main/res/values-tr/translations.xml b/features/securebackup/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..b3a2acc0e9 --- /dev/null +++ b/features/securebackup/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,70 @@ + + + "Anahtar depolamasını sil" + "Yedeklemeyi aç" + "Kriptografik kimliğinizi ve mesaj anahtarlarınızı sunucuda güvenli bir şekilde saklayın. Bu, mesaj geçmişinizi herhangi bir yeni cihazda görüntülemenize olanak tanır. %1$s." + "Anahtar Depolama" + "Kurtarmayı ayarlamak için anahtar depolama alanı açık olmalıdır." + "Anahtarları bu cihazdan yükle" + "Anahtar depolamaya izin ver" + "Kurtarma anahtarını değiştir" + "Mevcut tüm cihazlarınızı kaybettiyseniz, kurtarma anahtarıyla şifreleme kimliğinizi ve mesaj geçmişinizi kurtarın." + "Kurtarma anahtarını girin" + "Anahtar depolama alanınız şu anda senkronize değil." + "Kurtarmayı ayarlayın" + "Tüm cihazlarınızı kaybettiğinizde veya %1$s adresinden çıkış yaptığınızda şifrelenmiş mesajlarınıza her yerden erişin." + "Masaüstü cihazında aç %1$s" + "Hesabınızda tekrar oturum açın" + "Cihazınızı doğrulamanız istendiğinde %1$s öğesini seçin" + "\"Tümünü sıfırla\"" + "Yeni bir kurtarma anahtarı oluşturmak için talimatları izleyin" + "Yeni kurtarma anahtarınızı bir parola yöneticisine veya şifreli bir nota kaydedin" + "Hesabınızın şifrelemesini başka bir cihaz kullanarak sıfırlayın" + "Sıfırlamaya devam et" + "Hesap bilgileriniz, kişileriniz, tercihleriniz ve sohbet listeniz saklanacaktır" + "Yalnızca sunucuda depolanan mesaj geçmişlerini kaybedeceksiniz" + "Mevcut tüm cihazlarınızı ve kişilerinizi tekrar doğrulamanız gerekecek" + "Kimliğinizi yalnızca oturum açtığınız başka bir cihaza erişiminiz yoksa ve kurtarma anahtarınızı kaybettiyseniz sıfırlayın." + "Onaylayamıyor musunuz? Kimliğinizi sıfırlamanız gerekecek." + "Kapat" + "Tüm cihazlardan çıkış yaparsanız şifrelenmiş mesajlarınızı kaybedersiniz." + "Yedeklemeyi kapatmak istediğinizden emin misiniz?" + "Anahtar depolamanın silinmesi kriptografik kimliğinizi ve mesaj anahtarlarınızı sunucudan kaldıracak ve aşağıdaki güvenlik özelliklerini kapatacaktır:" + "Yeni cihazlarda şifrelenmiş mesaj geçmişine sahip olmayacaksınız" + "%1$s adresinden her yerde oturumunuzu kapatırsanız şifrelenmiş mesajlarınıza erişiminizi kaybedersiniz" + "Anahtar depolamayı kapatmak ve silmek istediğinizden emin misiniz?" + "Mevcut kurtarma anahtarınızı kaybettiyseniz yeni bir kurtarma anahtarı alın. Kurtarma anahtarınızı değiştirdikten sonra eski anahtarınız artık çalışmayacaktır." + "Yeni bir kurtarma anahtarı oluştur" + "Bunu kimseyle paylaşmayın!" + "Kurtarma anahtarı değiştirildi" + "Kurtarma anahtarını değiştir?" + "Yeni kurtarma anahtarı oluştur" + "Bu ekranı kimsenin göremediğinden emin olun!" + "Anahtar depolama alanınıza erişimi onaylamak için lütfen tekrar deneyin." + "Yanlış kurtarma anahtarı" + "Bir güvenlik anahtarınız veya güvenlik ifadeniz varsa, bu da işe yarayacaktır." + "Gir…" + "Kurtarma anahtarınızı mı kaybettiniz?" + "Kurtarma anahtarı onaylandı" + "Kurtarma anahtarınızı girin" + "Kurtarma anahtarı kopyalandı" + "Oluşturuluyor…" + "Kurtarma anahtarını kaydet" + "Bu kurtarma anahtarını şifre yöneticisi, şifreli not veya fiziksel kasa gibi güvenli bir yere kaydedin." + "Kurtarma anahtarını kopyalamak için dokunun" + "Kurtarma anahtarınızı güvenli bir yere kaydedin" + "Bu adımdan sonra yeni kurtarma anahtarınıza erişemeyeceksiniz." + "Kurtarma anahtarınızı kaydettiniz mi?" + "Anahtar depolama alanınız bir kurtarma anahtarıyla korunmaktadır. Kurulumdan sonra yeni bir kurtarma anahtarına ihtiyacınız olursa, \"Kurtarma anahtarını değiştir\"i seçerek yeniden oluşturabilirsiniz." + "Kurtarma anahtarınızı oluşturun" + "Bunu kimseyle paylaşmayın!" + "Kurtarma kurulumu başarılı" + "Kurtarmayı ayarlayın" + "Evet, şimdi sıfırla" + "Bu işlem geri alınamaz." + "Kimliğinizi sıfırlamak istediğinizden emin misiniz?" + "Bilinmeyen bir hata oluştu. Lütfen hesap şifrenizin doğru olup olmadığını kontrol edin ve tekrar deneyin." + "Gir…" + "Kimliğinizi sıfırlamak istediğinizi onaylayın." + "Devam etmek için hesap şifrenizi girin" + diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootStateTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootStateTest.kt new file mode 100644 index 0000000000..1e4f58a84a --- /dev/null +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootStateTest.kt @@ -0,0 +1,63 @@ +/* + * 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.securebackup.impl.root + +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.matrix.api.encryption.BackupState +import io.element.android.libraries.matrix.test.AN_EXCEPTION +import org.junit.Test + +class SecureBackupRootStateTest { + @Test + fun `isKeyStorageEnabled should be true for all these backup states`() { + listOf( + BackupState.CREATING, + BackupState.ENABLING, + BackupState.RESUMING, + BackupState.DOWNLOADING, + BackupState.ENABLED, + ).forEach { backupState -> + assertThat(aSecureBackupRootState(backupState = backupState).isKeyStorageEnabled).isTrue() + } + } + + @Test + fun `isKeyStorageEnabled should be false for all these backup states`() { + listOf( + BackupState.WAITING_FOR_SYNC, + BackupState.DISABLING, + ).forEach { backupState -> + assertThat(aSecureBackupRootState(backupState = backupState).isKeyStorageEnabled).isFalse() + } + } + + @Test + fun `isKeyStorageEnabled should have value depending on doesBackupExistOnServer when state is UNKNOWN`() { + assertThat( + aSecureBackupRootState( + backupState = BackupState.UNKNOWN, + doesBackupExistOnServer = AsyncData.Success(true), + ).isKeyStorageEnabled + ).isTrue() + + listOf( + AsyncData.Uninitialized, + AsyncData.Loading(), + AsyncData.Failure(AN_EXCEPTION), + AsyncData.Success(false), + ).forEach { doesBackupExistOnServer -> + assertThat( + aSecureBackupRootState( + backupState = BackupState.UNKNOWN, + doesBackupExistOnServer = doesBackupExistOnServer, + ).isKeyStorageEnabled + ).isFalse() + } + } +} diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt index 85c9934cdc..969da07f40 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt @@ -14,8 +14,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AccountCircle import androidx.compose.runtime.Composable import androidx.compose.ui.BiasAlignment import androidx.compose.ui.Modifier @@ -63,7 +61,7 @@ private fun SignedOutHeader(state: SignedOutState) { modifier = Modifier.padding(top = 60.dp, bottom = 12.dp), title = stringResource(id = R.string.screen_signed_out_title), subTitle = stringResource(id = R.string.screen_signed_out_subtitle, state.appName), - iconStyle = BigIcon.Style.Default(Icons.Filled.AccountCircle), + iconStyle = BigIcon.Style.Default(CompoundIcons.UserProfileSolid()), ) } diff --git a/features/signedout/impl/src/main/res/values-pt/translations.xml b/features/signedout/impl/src/main/res/values-pt/translations.xml index d7e6ad8948..95f0c980b5 100644 --- a/features/signedout/impl/src/main/res/values-pt/translations.xml +++ b/features/signedout/impl/src/main/res/values-pt/translations.xml @@ -1,7 +1,7 @@ "Alteraste a tua senha noutra sessão" - "Apagaste esta sessão a partir de outra" + "Eliminaste esta sessão a partir de outra" "O administrador do teu servidor invalidou o teu acesso" "A tua sessão pode ter sido terminada por um dos motivos indicados abaixo. Inicia sessão novamente para continuares a utilizar a %s." "Não tens sessão iniciada" diff --git a/features/signedout/impl/src/main/res/values-tr/translations.xml b/features/signedout/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..0da098f822 --- /dev/null +++ b/features/signedout/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,8 @@ + + + "Başka bir oturumda şifrenizi değiştirdiniz" + "Oturumu başka bir oturumdan sildiniz" + "Sunucunuzun yöneticisi erişiminizi geçersiz kıldı" + "Aşağıda listelenen nedenlerden biri nedeniyle oturumunuz kapatılmış olabilir. %s kullanmaya devam etmek için lütfen tekrar oturum açın." + "Oturumunuz kapatıldı" + 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 1695ea886c..8189f75aa3 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 @@ -119,7 +119,11 @@ class UserProfilePresenter @AssistedInject constructor( } UserProfileEvents.StartDM -> { coroutineScope.launch { - startDMAction.execute(userId, startDmActionState) + startDMAction.execute( + matrixUser = userProfile ?: MatrixUser(userId), + createIfDmDoesNotExist = startDmActionState.value is AsyncAction.Confirming, + actionState = startDmActionState, + ) } } UserProfileEvents.ClearStartDMState -> { diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt index 80bfd81a8a..41626737cc 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/UserProfilePresenterTest.kt @@ -7,8 +7,13 @@ package io.element.android.features.userprofile.impl +import androidx.compose.runtime.MutableState +import app.cash.molecule.RecompositionMode +import app.cash.molecule.moleculeFlow import app.cash.turbine.ReceiveTurbine +import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.createroom.api.StartDMAction import io.element.android.features.createroom.test.FakeStartDMAction import io.element.android.features.userprofile.api.UserProfileEvents @@ -19,6 +24,7 @@ import io.element.android.libraries.architecture.AsyncData 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.UserId +import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_THROWABLE @@ -30,6 +36,9 @@ import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.awaitLastSequentialItem +import io.element.android.tests.testutils.lambda.any +import io.element.android.tests.testutils.lambda.lambdaRecorder +import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.test import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest @@ -229,37 +238,122 @@ class UserProfilePresenterTest { } @Test - fun `present - start DM action complete scenario`() = runTest { - val startDMAction = FakeStartDMAction() + fun `present - start DM action failure scenario`() = runTest { + val startDMFailureResult = AsyncAction.Failure(A_THROWABLE) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMFailureResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) val presenter = createUserProfilePresenter(startDMAction = startDMAction) - presenter.test { + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { val initialState = awaitFirstItem() assertThat(initialState.startDmActionState).isInstanceOf(AsyncAction.Uninitialized::class.java) - val startDMSuccessResult = AsyncAction.Success(A_ROOM_ID) - val startDMFailureResult = AsyncAction.Failure(A_THROWABLE) - - // Failure - startDMAction.givenExecuteResult(startDMFailureResult) + val matrixUser = MatrixUser(UserId("@alice:server.org")) initialState.eventSink(UserProfileEvents.StartDM) - assertThat(awaitItem().startDmActionState).isInstanceOf(AsyncAction.Loading::class.java) awaitItem().also { state -> assertThat(state.startDmActionState).isEqualTo(startDMFailureResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) state.eventSink(UserProfileEvents.ClearStartDMState) } - - // Success - startDMAction.givenExecuteResult(startDMSuccessResult) awaitItem().also { state -> - assertThat(state.startDmActionState).isEqualTo(AsyncAction.Uninitialized) - state.eventSink(UserProfileEvents.StartDM) + assertThat(state.startDmActionState.isUninitialized()).isTrue() } - assertThat(awaitItem().startDmActionState).isInstanceOf(AsyncAction.Loading::class.java) + } + } + + @Test + fun `present - start DM action success scenario`() = runTest { + val startDMSuccessResult = AsyncAction.Success(A_ROOM_ID) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMSuccessResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) + val presenter = createUserProfilePresenter(startDMAction = startDMAction) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitFirstItem() + assertThat(initialState.startDmActionState).isInstanceOf(AsyncAction.Uninitialized::class.java) + val matrixUser = MatrixUser(UserId("@alice:server.org")) + initialState.eventSink(UserProfileEvents.StartDM) awaitItem().also { state -> assertThat(state.startDmActionState).isEqualTo(startDMSuccessResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) } } } + @Test + fun `present - start DM action confirmation scenario - cancel`() = runTest { + val matrixUser = MatrixUser(UserId("@alice:server.org")) + val startDMConfirmationResult = ConfirmingStartDmWithMatrixUser(matrixUser) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMConfirmationResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) + val presenter = createUserProfilePresenter(startDMAction = startDMAction) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitFirstItem() + assertThat(initialState.startDmActionState).isInstanceOf(AsyncAction.Uninitialized::class.java) + initialState.eventSink(UserProfileEvents.StartDM) + val confirmingState = awaitItem() + assertThat(confirmingState.startDmActionState).isEqualTo(startDMConfirmationResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) + // Cancelling should not create the DM + confirmingState.eventSink(UserProfileEvents.ClearStartDMState) + val finalState = awaitItem() + assertThat(finalState.startDmActionState.isUninitialized()).isTrue() + executeResult.assertions().isCalledExactly(1) + } + } + + @Test + fun `present - start DM action confirmation scenario - confirm`() = runTest { + val matrixUser = MatrixUser(UserId("@alice:server.org")) + val startDMConfirmationResult = ConfirmingStartDmWithMatrixUser(matrixUser) + val executeResult = lambdaRecorder>, Unit> { _, _, actionState -> + actionState.value = startDMConfirmationResult + } + val startDMAction = FakeStartDMAction(executeResult = executeResult) + val presenter = createUserProfilePresenter(startDMAction = startDMAction) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitFirstItem() + assertThat(initialState.startDmActionState).isInstanceOf(AsyncAction.Uninitialized::class.java) + initialState.eventSink(UserProfileEvents.StartDM) + val confirmingState = awaitItem() + assertThat(confirmingState.startDmActionState).isEqualTo(startDMConfirmationResult) + executeResult.assertions().isCalledOnce().with( + value(matrixUser), + value(false), + any(), + ) + // Start DM again should invoke the action with createIfDmDoesNotExist = true + confirmingState.eventSink(UserProfileEvents.StartDM) + executeResult.assertions().isCalledExactly(2).withSequence( + listOf(value(matrixUser), value(false), any()), + listOf(value(matrixUser), value(true), any()), + ) + } + } + @Test fun `present - when user is verified, the value in the state is true`() = runTest { val client = createFakeMatrixClient(isUserVerified = true) diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt index 1a59e43fc6..c8755aac56 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt @@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -72,7 +71,7 @@ fun UserProfileHeaderSection( Text( text = userId.value, style = ElementTheme.typography.fontBodyLgRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, textAlign = TextAlign.Center, ) if (isUserVerified.dataOrNull() == true) { diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt index 01a36077fb..a53f53c48c 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileStateProvider.kt @@ -8,12 +8,14 @@ package io.element.android.features.userprofile.shared import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.userprofile.api.UserProfileEvents import io.element.android.features.userprofile.api.UserProfileState import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.libraries.matrix.ui.components.aMatrixUser open class UserProfileStateProvider : PreviewParameterProvider { override val values: Sequence @@ -26,7 +28,7 @@ open class UserProfileStateProvider : PreviewParameterProvider aUserProfileState(isBlocked = AsyncData.Loading(true), isVerified = AsyncData.Loading()), aUserProfileState(startDmActionState = AsyncAction.Loading), aUserProfileState(canCall = true), - // Add other states here + aUserProfileState(startDmActionState = ConfirmingStartDmWithMatrixUser(aMatrixUser())), ) } diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt index 6fb3e5ccb7..dee44377d6 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileView.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.features.createroom.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.userprofile.api.UserProfileEvents import io.element.android.features.userprofile.api.UserProfileState import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs @@ -37,6 +38,7 @@ 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.matrix.ui.components.CreateDmConfirmationBottomSheet import io.element.android.libraries.ui.strings.CommonStrings @OptIn(ExperimentalMaterial3Api::class) @@ -95,6 +97,19 @@ fun UserProfileView( errorMessage = { stringResource(R.string.screen_start_chat_error_starting_chat) }, onRetry = { state.eventSink(UserProfileEvents.StartDM) }, onErrorDismiss = { state.eventSink(UserProfileEvents.ClearStartDMState) }, + confirmationDialog = { data -> + if (data is ConfirmingStartDmWithMatrixUser) { + CreateDmConfirmationBottomSheet( + matrixUser = data.matrixUser, + onSendInvite = { + state.eventSink(UserProfileEvents.StartDM) + }, + onDismiss = { + state.eventSink(UserProfileEvents.ClearStartDMState) + }, + ) + } + }, ) } } diff --git a/features/userprofile/shared/src/main/res/values-tr/translations.xml b/features/userprofile/shared/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..9f80d33836 --- /dev/null +++ b/features/userprofile/shared/src/main/res/values-tr/translations.xml @@ -0,0 +1,19 @@ + + + "Engelle" + "Engellenen kullanıcılar size mesaj gönderemez ve tüm mesajları gizlenir. İstediğiniz zaman engellemelerini kaldırabilirsiniz." + "Kullanıcıyı engelle" + "Engellemeyi kaldır" + "Onlardan gelen tüm mesajları tekrar görebileceksiniz." + "Kullanıcının engelini kaldır" + "Engelle" + "Engellenen kullanıcılar size mesaj gönderemez ve tüm mesajları gizlenir. İstediğiniz zaman engellemelerini kaldırabilirsiniz." + "Kullanıcıyı engelle" + "Profil" + "Engellemeyi kaldır" + "Onlardan gelen tüm mesajları tekrar görebileceksiniz." + "Kullanıcının engelini kaldır" + "Bu kullanıcıyı doğrulamak için web uygulamasını kullan." + "Doğrula %1$s" + "Sohbet başlatmaya çalışırken bir hata oluştu" + diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionNode.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionNode.kt index bf7afffaad..dbd39c4a12 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionNode.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionNode.kt @@ -8,9 +8,9 @@ package io.element.android.features.verifysession.impl.outgoing import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -20,7 +20,6 @@ import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode import io.element.android.appconfig.LearnMoreConfig import io.element.android.compound.theme.ElementTheme -import io.element.android.features.logout.api.util.onSuccessLogout import io.element.android.features.verifysession.api.VerifySessionEntryPoint import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab import io.element.android.libraries.architecture.inputs @@ -45,7 +44,7 @@ class VerifySelfSessionNode @AssistedInject constructor( @Composable override fun View(modifier: Modifier) { val state = presenter.present() - val activity = LocalContext.current as Activity + val activity = requireNotNull(LocalActivity.current) val isDark = ElementTheme.isLightTheme.not() VerifySelfSessionView( state = state, @@ -56,7 +55,6 @@ class VerifySelfSessionNode @AssistedInject constructor( onEnterRecoveryKey = callback::onEnterRecoveryKey, onResetKey = callback::onResetKey, onFinish = callback::onDone, - onSuccessLogout = { onSuccessLogout(activity, isDark, it) }, ) } } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenter.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenter.kt index 35e66ad24e..c0760074ed 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenter.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenter.kt @@ -69,7 +69,7 @@ class VerifySelfSessionPresenter @AssistedInject constructor( val skipVerification by sessionPreferencesStore.isSessionVerificationSkipped().collectAsState(initial = false) val sessionVerifiedStatus by sessionVerificationService.sessionVerifiedStatus.collectAsState() val signOutAction = remember { - mutableStateOf>(AsyncAction.Uninitialized) + mutableStateOf>(AsyncAction.Uninitialized) } val step by remember { derivedStateOf { @@ -195,7 +195,7 @@ class VerifySelfSessionPresenter @AssistedInject constructor( .launchIn(this) } - private fun CoroutineScope.signOut(signOutAction: MutableState>) = launch { + private fun CoroutineScope.signOut(signOutAction: MutableState>) = launch { suspend { logoutUseCase.logout(ignoreSdkError = true) }.runCatchingUpdatingState(signOutAction) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionState.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionState.kt index 6c04042b92..3c998247c7 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionState.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionState.kt @@ -16,7 +16,7 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationD @Immutable data class VerifySelfSessionState( val step: Step, - val signOutAction: AsyncAction, + val signOutAction: AsyncAction, val displaySkipButton: Boolean, val eventSink: (VerifySelfSessionViewEvents) -> Unit, ) { diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionStateProvider.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionStateProvider.kt index 31927562bf..9ebb80b68b 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionStateProvider.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionStateProvider.kt @@ -65,7 +65,7 @@ open class VerifySelfSessionStateProvider : PreviewParameterProvider = AsyncAction.Uninitialized, + signOutAction: AsyncAction = AsyncAction.Uninitialized, displaySkipButton: Boolean = false, eventSink: (VerifySelfSessionViewEvents) -> Unit = {}, ) = VerifySelfSessionState( diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionView.kt index ca683424e9..2a73a4b627 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionView.kt @@ -58,7 +58,6 @@ fun VerifySelfSessionView( onEnterRecoveryKey: () -> Unit, onResetKey: () -> Unit, onFinish: () -> Unit, - onSuccessLogout: (String?) -> Unit, modifier: Modifier = Modifier, ) { val step = state.step @@ -144,12 +143,7 @@ fun VerifySelfSessionView( AsyncAction.Loading -> { ProgressDialog(text = stringResource(id = R.string.screen_signout_in_progress_dialog_content)) } - is AsyncAction.Success -> { - val latestOnSuccessLogout by rememberUpdatedState(onSuccessLogout) - LaunchedEffect(state) { - latestOnSuccessLogout(state.signOutAction.data) - } - } + is AsyncAction.Success, is AsyncAction.Confirming, is AsyncAction.Failure, AsyncAction.Uninitialized -> Unit @@ -372,6 +366,5 @@ internal fun VerifySelfSessionViewPreview(@PreviewParameter(VerifySelfSessionSta onEnterRecoveryKey = {}, onResetKey = {}, onFinish = {}, - onSuccessLogout = {}, ) } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/ui/VerificationContentVerifying.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/ui/VerificationContentVerifying.kt index 4484c9c708..12775cd2e0 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/ui/VerificationContentVerifying.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/ui/VerificationContentVerifying.kt @@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -49,7 +48,7 @@ internal fun VerificationContentVerifying( modifier = Modifier.fillMaxWidth(), text = text, style = ElementTheme.typography.fontHeadingLgBold, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, textAlign = TextAlign.Center, ) } @@ -86,7 +85,7 @@ private fun EmojiItemView(emoji: VerificationEmoji, modifier: Modifier = Modifie Text( text = stringResource(id = emojiResource.nameRes), style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, ) diff --git a/features/verifysession/impl/src/main/res/values-be/translations.xml b/features/verifysession/impl/src/main/res/values-be/translations.xml index da894a2ddb..c48da7e8d0 100644 --- a/features/verifysession/impl/src/main/res/values-be/translations.xml +++ b/features/verifysession/impl/src/main/res/values-be/translations.xml @@ -24,6 +24,7 @@ "Чаканне супадзення" "Параўнайце ўнікальны набор эмодзі." "Параўнайце ўнікальныя эмодзі, пераканаўшыся, што яны размешчаны ў тым жа парадку." + "Прылада праверана" "Яны не супадаюць" "Яны супадаюць" "Для працягу працы прыміце запыт на запуск працэсу праверкі ў іншым сеансе." diff --git a/features/verifysession/impl/src/main/res/values-cs/translations.xml b/features/verifysession/impl/src/main/res/values-cs/translations.xml index 30e43eadc9..9b59cb2041 100644 --- a/features/verifysession/impl/src/main/res/values-cs/translations.xml +++ b/features/verifysession/impl/src/main/res/values-cs/translations.xml @@ -13,9 +13,11 @@ "Něco není v pořádku. Buď vypršel časový limit požadavku, nebo byl požadavek zamítnut." "Zkontrolujte, zda se níže uvedené emotikony shodují s emotikony zobrazenými na jiné relaci." "Porovnání emotikonů" + "Zkontrolujte, zda se níže uvedené emotikony shodují s emotikony zobrazenými v zařízení druhého uživatele." "Potvrďte, že níže uvedená čísla odpovídají číslům zobrazeným na vaší druhé relaci." "Porovnejte čísla" "Vaše nová relace je nyní ověřena. Má přístup k vašim zašifrovaným zprávám a ostatní uživatelé ji uvidí jako důvěryhodnou." + "Nyní můžete důvěřovat identitě tohoto uživatele při odesílání nebo přijímání zpráv." "Zadejte klíč pro obnovení" "Buď vypršel časový limit požadavku, požadavek byl zamítnut, nebo došlo k nesouladu ověření." "Pro přístup k historii zašifrovaných zpráv prokažte, že jste to vy." @@ -37,8 +39,14 @@ "Shodují se" "Před zahájením ověřování se ujistěte, že máte aplikaci otevřenou na druhém zařízení." "Otevřete aplikaci na jiném ověřeném zařízení" + "Pro větší bezpečnost ověřte tohoto uživatele porovnáním sady emotikonů na svých zařízeních. Proveďte to pomocí důvěryhodného způsobu komunikace." + "Ověřte tohoto uživatele?" + "Pro větší bezpečnost chce jiný uživatel ověřit vaši totožnost. Zobrazí se vám sada emotikonů k porovnání." "Na druhém zařízení byste měli vidět vyskakovací okno. Začněte s ověrením tam." "Spusťte ověření na druhém zařízení" + "Čekání na druhé zařízení" + "Čekání na druhého uživatele" + "Po přijetí budete moci pokračovat v ověřování." "Pro pokračování přijměte požadavek na zahájení ověření v jiné relaci." "Čekání na přijetí žádosti" "Odhlašování…" diff --git a/features/verifysession/impl/src/main/res/values-de/translations.xml b/features/verifysession/impl/src/main/res/values-de/translations.xml index 4534411033..30979188e7 100644 --- a/features/verifysession/impl/src/main/res/values-de/translations.xml +++ b/features/verifysession/impl/src/main/res/values-de/translations.xml @@ -13,9 +13,11 @@ "Etwas scheint nicht zu stimmen. Entweder ist das Zeitlimit für die Anfrage abgelaufen oder die Anfrage wurde abgelehnt." "Vergewissere dich dass die folgenden Emojis mit denen in deiner anderen Session übereinstimmen." "Emojis vergleichen" + "Vergewissern Sie sich, dass die folgenden Emojis mit denen auf dem Gerät des anderen Benutzers übereinstimmen." "Bestätige, dass die Zahlen mit denen deiner anderen Sitzung übereinstimmen." "Vergleiche die Zahlen" "Deine neue Session ist nun verifiziert. Sie hat Zugriff auf deine verschlüsselten Nachrichten und wird von anderen Benutzern als vertrauenswürdig eingestuft." + "Jetzt können Sie der Identität dieses Benutzers vertrauen, wenn Sie Nachrichten senden oder empfangen." "Wiederherstellungsschlüssel eingeben" "Entweder ist bei der Anfrage ein Timeout aufgetreten, oder die Anfrage wurde abgelehnt, oder es gab eine Nichtübereinstimmung bei der Überprüfung." "Beweise deine Identität, um auf deinen verschlüsselten Nachrichtenverlauf zuzugreifen." @@ -27,7 +29,7 @@ "Vergleiche die einzelnen Emojis und stelle sicher, dass sie in der gleichen Reihenfolge erscheinen." "Angemeldet" "Entweder ist bei der Anfrage ein Timeout aufgetreten, oder die Anfrage wurde abgelehnt, oder es gab eine Nichtübereinstimmung bei der Überprüfung." - "Überprüfung fehlgeschlagen" + "Verifizierung fehlgeschlagen" "Fahren Sie nur fort, falls Sie für diese Überprüfung verantwortlich sind.." "Verifizieren Sie das andere Gerät, um die Sicherheit Ihres Nachrichtenverlaufs zu gewährleisten." "Jetzt können Sie gesichert Nachrichten auf Ihrem anderen Gerät lesen oder senden." @@ -37,8 +39,14 @@ "Sie stimmen überein" "Stellen Sie sicher, dass die App auf dem anderen Gerät geöffnet ist, bevor Sie die Überprüfung auf diesem Gerät aus starten." "Öffnen Sie die App auf einem anderen verifizierten Gerät" + "Für zusätzliche Sicherheit verifizieren Sie diesen Benutzer, indem Sie eine Reihe von Emojis auf Ihren Geräten vergleichen. Verwenden Sie dazu eine vertrauenswürdige Art der Kommunikation." + "Diesen Benutzer verifizieren?" + "Für zusätzliche Sicherheit möchte ein anderer Benutzer Ihre Identität überprüfen. Es wird Ihnen eine Reihe von Emojis zum Vergleich angezeigt." "Sie sollten ein Popup-Fenster auf dem anderen Gerät sehen. Starten Sie die Überprüfung von dort aus." "Starten Sie die Überprüfung auf dem anderen Gerät" + "Warten auf das andere Gerät" + "Warten auf den anderen Benutzer" + "Sobald Sie die Bestätigung akzeptiert haben, können Sie mit der Überprüfung fortfahren." "Akzeptiere die Anfrage, um den Verifizierungsprozess in deiner anderen Session zu starten, um fortzufahren." "Warten auf die Annahme der Anfrage" "Abmelden…" diff --git a/features/verifysession/impl/src/main/res/values-el/translations.xml b/features/verifysession/impl/src/main/res/values-el/translations.xml index 1cac842a7b..06f3b25489 100644 --- a/features/verifysession/impl/src/main/res/values-el/translations.xml +++ b/features/verifysession/impl/src/main/res/values-el/translations.xml @@ -31,7 +31,7 @@ "Συνέχισε μόνο εάν ξεκίνησες εσύ αυτήν την επαλήθευση." "Επαλήθευσε την άλλη συσκευή για να διατηρήσεις το ιστορικό μηνυμάτων σου ασφαλές." "Τώρα μπορείς να διαβάσεις ή να στείλεις μηνύματα με ασφάλεια στην άλλη συσκευή σου." - "Η συσκευή επαληθεύτηκε" + "Επαληθευμένη συσκευή" "Ζητήθηκε επαλήθευση" "Δεν ταιριάζουν" "Ταιριάζουν" diff --git a/features/verifysession/impl/src/main/res/values-es/translations.xml b/features/verifysession/impl/src/main/res/values-es/translations.xml index 9c43fe28e8..9dd9ec38b5 100644 --- a/features/verifysession/impl/src/main/res/values-es/translations.xml +++ b/features/verifysession/impl/src/main/res/values-es/translations.xml @@ -20,6 +20,7 @@ "Esperando a que coincida" "Compara un conjunto único de emojis." "Compara los emoji, asegurándote de que aparecen en el mismo orden." + "Dispositivo verificado" "No coinciden" "Coinciden" "Acepta la solicitud para iniciar el proceso de verificación en tu otra sesión para continuar." diff --git a/features/verifysession/impl/src/main/res/values-et/translations.xml b/features/verifysession/impl/src/main/res/values-et/translations.xml index dc9367bd02..fa2a5733da 100644 --- a/features/verifysession/impl/src/main/res/values-et/translations.xml +++ b/features/verifysession/impl/src/main/res/values-et/translations.xml @@ -13,9 +13,11 @@ "Olukord pole päris õige. Päring kas aegus või teine osapool keeldus päringule vastamast." "Kinnita, et kõik järgnevalt kuvatud emojid on täpselt samad, mida sa näed oma teises sessioonis." "Võrdle emojisid" + "Palun kinnita, et allpool näidatud emojid vastavad täpselt neile, mida kuvatakse teise kasutaja seadmes." "Kinnita, et kõik järgnevalt kuvatud numbrid on täpselt samad, mida sa näed oma teises sessioonis." "Võrdle numbreid" "Sinu uus sessioon on nüüd verifitseeritud. Sellel sessioonil on nüüd ligipääs sinu krüptitud sõnumitele ja teised osapooled näevad teda usaldusväärsena." + "Nüüd sa võid sõnumite vastuvõtmisel ja saatmisel selle kasutaja identiteeti usaldada." "Sisesta taastevõti" "Kas verifitseerimine aegus, teine osapool keeldus vastamast või tekkis vastuste mittevastavus." "Saamaks ligipääsu krüptitud sõnumite ajaloole tõesta et tegemist on sinuga." @@ -37,8 +39,14 @@ "Nad klapivad omavahel" "Enne kui alustad siin verifitseerimist, palun ava rakendus teises seadmes." "Ava rakendus teises verifitseeritud seadmes" + "Lisaturvalisuse nimel verifitseeri seee kasutaja, võrreldes oma seadmetes olevaid emojisid. Tee seda, kasutades usaldusväärset suhtlusviisi." + "Kas verifitseerime selle kasutaja?" + "Lisaturvalisuse nimel soovib teine kasutaja sinu identiteeti verifitseerida. Järgmiseks näed sa emojisid, mida peate omavahel võrdlema." "Sa peaksid teises seadmes nägema hüpikakent. Palun alusta sealt verifitseerimist." "Alusta verifitseerimist teises seadmes" + "Ootame teise seadme järgi" + "Ootame teise kasutaja järgi" + "Kui oled nõustunud, siis saad sa verifitseerimist jätkata." "Jätkamaks nõustu verifitseerimisprotsessi alustamisega oma teises sessioonis." "Ootame nõustumist verifitseerimispäringuga" "Logime välja…" 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 3899f7acff..14936c41a9 100644 --- a/features/verifysession/impl/src/main/res/values-fa/translations.xml +++ b/features/verifysession/impl/src/main/res/values-fa/translations.xml @@ -20,6 +20,7 @@ "منتظر تطابق" "مقایسهٔ مجموعه‌ای یکتا از شکلک‌ها." "شکلک‌ها را مقایسه کنید، از ترتیب نمایش آنان نیز مطمئن شوید." + "افزاره تأیید شده" "مطابق نیستند" "مطابقند" "منظر پذیرش درخواست" diff --git a/features/verifysession/impl/src/main/res/values-fr/translations.xml b/features/verifysession/impl/src/main/res/values-fr/translations.xml index bd3f194e4b..2ec52d94fc 100644 --- a/features/verifysession/impl/src/main/res/values-fr/translations.xml +++ b/features/verifysession/impl/src/main/res/values-fr/translations.xml @@ -13,9 +13,11 @@ "Quelque chose ne va pas. Soit la demande a expiré, soit elle a été refusée." "Confirmez que les emojis ci-dessous correspondent à ceux affichés sur votre autre session." "Comparez les émojis" + "Vérifiez que les émojis ci-dessous correspondent à ceux affichés sur l’appareil de l’autre utilisateur." "Confirmez que les nombres ci-dessous correspondent à ceux affichés sur votre autre session." "Comparez les nombres" "Votre nouvelle session est désormais vérifiée. Elle a accès à vos messages chiffrés et les autres utilisateurs la verront identifiée comme fiable." + "Vous pouvez désormais être sûr(e) de l’identité de cet utilisateur lors de l’envoi ou de la réception de messages." "Utiliser la clé de récupération" "Soit la demande a expiré, soit elle a été refusée, soit il y a eu une non-concordance de vérification." "Prouvez qu’il s’agit bien de vous pour accéder à l’historique de vos messages chiffrés." @@ -31,14 +33,20 @@ "Continuez uniquement si c’est vous qui avez commencé cette vérification." "Vérifiez l’autre appareil pour sécuriser l’historique de vos messages." "Vous pouvez désormais lire ou envoyer des messages en toute sécurité sur votre autre appareil." - "Appareil vérifié" + "Session vérifiée" "Vérification demandée" "Ils ne correspondent pas" "Ils correspondent" "Assurez-vous que l’application est ouverte sur un autre appareil avant de commencer la vérification." "Ouvrez l’application sur un autre appareil vérifié" + "Pour plus de sécurité, vérifiez cet utilisateur en comparant des émojis sur vos appareils. Pour ce faire, utilisez un moyen de communication fiable." + "Vérifier cet utilisateur ?" + "Pour plus de sécurité, un autre utilisateur souhaite vérifier votre identité. Des émojis à comparer vous seront présentés." "Vous devriez voir une alerte sur l’autre appareil. Démarrez la vérification à partir de là dès maintenant." "Démarrer la vérification sur l’autre appareil" + "En attente de l’autre appareil" + "En attente de l’autre utilisateur" + "Une fois accepté, vous pourrez poursuivre la vérification." "Pour continuer, acceptez la demande de lancement de la procédure de vérification dans votre autre session." "En attente d’acceptation de la demande" "Déconnexion…" diff --git a/features/verifysession/impl/src/main/res/values-hu/translations.xml b/features/verifysession/impl/src/main/res/values-hu/translations.xml index 7e786dfc6c..56abe18d67 100644 --- a/features/verifysession/impl/src/main/res/values-hu/translations.xml +++ b/features/verifysession/impl/src/main/res/values-hu/translations.xml @@ -13,16 +13,18 @@ "Valami hibásnak tűnik. A kérés vagy időtúllépésre futott, vagy elutasították." "Erősítse meg, hogy a lenti emodzsik egyeznek-e a másik munkamenetben megjelenítettekkel." "Emodzsik összehasonlítása" + "Ellenőrizze, hogy az alábbi emodzsik megegyeznek-e a másik felhasználó eszközén látható emodzsikkal." "Ellenőrizze, hogy az alábbi számok megegyeznek-e a másik munkamenetben feltüntetett számokkal." "Számok összehasonlítása" "Az új munkamenete most már ellenőrizve van. Eléri a titkosított üzeneteit, és a többi felhasználó is megbízhatónak fogja látni." + "Mostantól megbízhat a felhasználó személyazonosságában, amikor üzeneteket küld vagy fogad." "Adja meg a helyreállítási kulcsot" "A kérés túllépte az időkorlátot, el lett utasítva, vagy ellenőrzési eltérés történt." "Bizonyítsa, hogy valóban Ön az, hogy elérje a titkosított üzeneteinek előzményeit." "Meglévő munkamenet megnyitása" "Ellenőrzés újrapróbálása" "Kész vagyok" - "Várakozás az egyezésre" + "Várakozás az egyezésre…" "Egyedi emodzsik összehasonlítása." "Hasonlítsa össze az egyedi emodzsikat, meggyőződve arról, hogy azonos a sorrendjük." "Bejelentkezve" @@ -37,8 +39,14 @@ "Megegyeznek" "Győződjön meg róla, hogy az alkalmazás nyitva van a másik eszközön, mielőtt innen elindítja az ellenőrzést." "Nyissa meg az alkalmazást egy másik ellenőrzött eszközön" + "A fokozott biztonság érdekében ellenőrizze ezt a felhasználót az eszközökön megjelenő emodzsik összehasonlításával. Ehhez használjon megbízható kommunikációs csatornát." + "Ellenőrzi ezt a felhasználót?" + "A további biztonság érdekében egy másik felhasználó ellenőrizni szeretné személyazonosságát. Meg fog jelenni egy sor emodzsi, melyeket össze kell majd hasonlítania." "A másik eszközön egy felugró ablaknak kell megjelennie. Kezdje el az ellenőrzést onnan." "Ellenőrzés megkezdése a másik eszközön" + "Várakozás a másik eszközre" + "Várakozás a másik felhasználóra" + "Az elfogadása után folytathatja az ellenőrzést." "A folytatáshoz fogadja el az ellenőrzési folyamat indítási kérését a másik munkamenetében." "Várakozás a kérés elfogadására" "Kijelentkezés…" diff --git a/features/verifysession/impl/src/main/res/values-in/translations.xml b/features/verifysession/impl/src/main/res/values-in/translations.xml index c19ebe602c..b1dbf1f6a0 100644 --- a/features/verifysession/impl/src/main/res/values-in/translations.xml +++ b/features/verifysession/impl/src/main/res/values-in/translations.xml @@ -31,7 +31,7 @@ "Lanjutkan hanya jika Anda memulai verifikasi ini." "Verifikasi perangkat lain untuk menjaga riwayat pesan Anda tetap aman." "Sekarang Anda dapat membaca atau mengirim pesan dengan aman di perangkat Anda yang lain." - "Perangkat diverifikasi" + "Perangkat terverifikasi" "Verifikasi diminta" "Mereka tidak cocok" "Mereka cocok" diff --git a/features/verifysession/impl/src/main/res/values-nb/translations.xml b/features/verifysession/impl/src/main/res/values-nb/translations.xml index da4264871e..8b2e5fad70 100644 --- a/features/verifysession/impl/src/main/res/values-nb/translations.xml +++ b/features/verifysession/impl/src/main/res/values-nb/translations.xml @@ -27,7 +27,6 @@ "Sammenlign de unike emojiene, og sørg for at de vises i samme rekkefølge." "Logget inn" "Enten ble forespørselen tidsavbrutt, forespørselen ble avslått eller det var en feil i verifiseringen." - "Verifisering mislyktes" "Bare fortsett hvis du startet denne verifiseringen." "Bekreft den andre enheten for å holde meldingsloggen din sikker." "Nå kan du lese eller sende meldinger sikkert på den andre enheten din." diff --git a/features/verifysession/impl/src/main/res/values-nl/translations.xml b/features/verifysession/impl/src/main/res/values-nl/translations.xml index 20e588e2db..6e4c7644ee 100644 --- a/features/verifysession/impl/src/main/res/values-nl/translations.xml +++ b/features/verifysession/impl/src/main/res/values-nl/translations.xml @@ -24,6 +24,7 @@ "Wachten om te vergelijken" "Vergelijk een unieke combinatie van emoji\'s." "Vergelijk de unieke emoji\'s, ze dienen in dezelfde volgorde te worden weergegeven." + "Apparaat geverifieerd" "Ze komen niet overeen" "Ze komen overeen" "Accepteer het verzoek tot verificatie in je andere sessie om door te gaan." 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 022a07d6a9..d5cd461b8d 100644 --- a/features/verifysession/impl/src/main/res/values-pl/translations.xml +++ b/features/verifysession/impl/src/main/res/values-pl/translations.xml @@ -13,9 +13,11 @@ "Coś tu nie gra. Albo upłynął limit czasu, albo żądanie zostało odrzucone." "Upewnij się, że emoji poniżej pasują do tych pokazanych na innej sesji." "Porównaj emoji" + "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 zaufać tożsamości tego użytkownika podczas wysyłania lub odbierania wiadomości." "Wprowadź klucz przywracania" "Albo upłynął limit czasu żądania, albo żądanie zostało odrzucone, albo wystąpił błąd weryfikacji." "Udowodnij, że to ty, aby uzyskać dostęp do historii zaszyfrowanych wiadomości." @@ -37,8 +39,14 @@ "Pasują do siebie" "Upewnij się, że aplikacja jest otwarta na drugim urządzeniu przed rozpoczęciem weryfikacji." "Otwórz aplikację na drugim zweryfikowanym urządzeniu" + "Dla dodatkowej ochrony, zweryfikuj tego użytkownika, porównując zestaw emoji na obu urządzeniach. Zrób to, korzystając z zaufanej metody komunikacji." + "Zweryfikować tego użytkownika?" + "Dla dodatkowej ochrony, inny użytkownik chce zweryfikować Twoją tożsamość. Pojawi się unikalny zestaw emoji do porównania." "Powinno wyskoczyć okno na drugim urządzeniu. Rozpocznij tam weryfikację." "Rozpocznij weryfikację na drugim urządzeniu" + "Oczekiwanie na drugie urządzenie" + "Oczekiwanie na drugiego użytkownika" + "Po zaakceptowaniu będziesz mógł kontynuować weryfikację." "Zaakceptuj prośbę o rozpoczęcie procesu weryfikacji w innej sesji, aby kontynuować." "Oczekiwanie na zaakceptowanie prośby" "Wylogowywanie…" diff --git a/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml b/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml index 9874cfa2b3..c06776f25f 100644 --- a/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml +++ b/features/verifysession/impl/src/main/res/values-pt-rBR/translations.xml @@ -17,6 +17,7 @@ "Esperando para combinar" "Compare um conjunto único de emojis." "Compare os emojis únicos, garantindo que apareçam na mesma ordem." + "Dispositivo verificado" "Eles não combinam" "Eles combinam" "Aceite a solicitação para iniciar o processo de verificação em sua outra sessão para continuar." diff --git a/features/verifysession/impl/src/main/res/values-pt/translations.xml b/features/verifysession/impl/src/main/res/values-pt/translations.xml index 967c6df1c9..1386091254 100644 --- a/features/verifysession/impl/src/main/res/values-pt/translations.xml +++ b/features/verifysession/impl/src/main/res/values-pt/translations.xml @@ -13,9 +13,11 @@ "Algo não bateu certo. O pedido ou demorou demasiado tempo ou foi rejeitado." "Confirma se os emojis abaixo correspondem aos apresentados na tua outra sessão." "Compara os emojis" + "Confirma se os emojis abaixo correspondem aos apresentados no dispositivo do outro utilizador." "Confirma se os números abaixo correspondem aos números apresentados na tua outra sessão." "Comparar números" "A tua nova sessão está agora verificada, pelo que tem acesso às tuas mensagens cifradas e os outros utilizadores vão vê-la como de confiança." + "Agora podes confiar na identidade deste utilizador quando envias ou recebes mensagens." "Insere a chave de recuperação" "O pedido expirou, o pedido foi recusado ou houve um erro de verificação." "Prova que és tu para acederes ao teu histórico de mensagens cifradas." @@ -37,8 +39,14 @@ "Correspondem" "Certifica-te de que tens a aplicação aberta no outro dispositivo antes de iniciares a verificação aqui." "Abre a aplicação noutro dispositivo verificado" + "Para maior segurança, verifica este utilizador comparando um conjunto de emojis nos teus dispositivos. Faz isto utilizando uma forma de comunicação de confiança." + "Verificar este utilizador?" + "Para maior segurança, outro utilizador quer verificar a tua identidade. Ser-te-á mostrado um conjunto de emojis para comparares." "Deves ver uma notificação no outro dispositivo. Inicia a verificação a partir daí." "Inicia a verificação no outro dispositivo" + "À espera do outro dispositivo" + "A espera do outro utilizador" + "Uma vez aceite, poderás continuar com a verificação." "Para continuar, aceita o pedido de verificação na tua outra sessão." "À aguardar a aceitação do pedido" "A terminar sessão…" diff --git a/features/verifysession/impl/src/main/res/values-ru/translations.xml b/features/verifysession/impl/src/main/res/values-ru/translations.xml index 61895a94a3..ace2354837 100644 --- a/features/verifysession/impl/src/main/res/values-ru/translations.xml +++ b/features/verifysession/impl/src/main/res/values-ru/translations.xml @@ -13,9 +13,11 @@ "Похоже, что-то не так. Время ожидания запроса либо истекло, либо запрос был отклонен." "Убедитесь, что приведенные ниже емоджи совпадают с емоджи показанными во время другого сеанса." "Сравните емодзи" + "Убедитесь, что указанные ниже эмодзи соответствуют тем, которые отображаются на устройстве другого пользователя." "Убедитесь, что приведенные ниже числа совпадают с цифрами, показанными в другом сеансе." "Сравните числа" "Ваш новый сеанс подтвержден. У него есть доступ к вашим зашифрованным сообщениям, и другие пользователи увидят его как доверенное." + "Теперь вы можете доверять этому пользователя при отправке или получении сообщений." "Введите ключ восстановления" "Время ожидания подтверждения истекло, запрос был отклонён, или при подтверждении произошло несоответствие." "Чтобы получить доступ к зашифрованной истории сообщений, докажите, что это вы." @@ -37,8 +39,14 @@ "Они совпадают" "Прежде чем начать проверку, убедитесь, что приложение открыто на другом устройстве." "Откройте приложение на другом проверенном устройстве" + "Для дополнительной безопасности проверьте этого пользователя, сравнив набор эмодзи на ваших устройствах. Сделайте это, используя надежный способ коммуникации." + "Проверить этого пользователя?" + "Для дополнительной безопасности другой пользователь хочет проверить вашу личность. Вам будет показан набор эмодзи для сравнения." "Вы должны увидеть всплывающее окно на другом устройстве. Начните проверку оттуда прямо сейчас." "Начать проверку на другом устройстве" + "Ожидание другого устройства" + "Ожидание другого пользователя" + "После одобрения вы сможете продолжить проверку." "Чтобы продолжить, примите запрос на запуск процесса подтверждения в другом сеансе." "Ожидание принятия запроса" "Выполняется выход…" 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 9612618b58..cc5f26e85b 100644 --- a/features/verifysession/impl/src/main/res/values-sk/translations.xml +++ b/features/verifysession/impl/src/main/res/values-sk/translations.xml @@ -13,9 +13,11 @@ "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." "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 dôverovať identite tohto používateľa pri odosielaní alebo prijímaní správ." "Zadajte kľúč na obnovenie" "Buď žiadosť vypršala, žiadosť bola zamietnutá, alebo došlo k nesúladu overovania." "Dokážte, že ste to vy, aby ste získali prístup k histórii vašich zašifrovaných správ." @@ -37,8 +39,14 @@ "Zhodujú sa" "Pred začatím overovania odtiaľto sa uistite, že máte aplikáciu otvorenú v inom zariadení." "Otvorte aplikáciu na inom overenom zariadení" + "Pre väčšiu bezpečnosť overte tohto používateľa porovnaním sady emotikonov vo vašich zariadeniach. Urobte to pomocou dôveryhodného spôsobu komunikácie." + "Overiť tohto používateľa?" + "Kvôli vyššej bezpečnosti chce druhý používateľ overiť vašu identitu. Zobrazí sa vám sada emotikonov na porovnanie." "Na druhom zariadení by sa malo zobraziť vyskakovacie okno. Začnite teraz overovanie odtiaľ." "Spustiť overovanie na druhom zariadení" + "Čaká sa na druhé zariadenie" + "Čaká sa na druhého používateľa" + "Po prijatí budete môcť pokračovať v overovaní." "Ak chcete pokračovať, prijmite žiadosť o spustenie procesu overenia vo vašej druhej relácii." "Čaká sa na prijatie žiadosti" "Prebieha odhlasovanie…" 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 f790ec399d..f95acc7347 100644 --- a/features/verifysession/impl/src/main/res/values-sv/translations.xml +++ b/features/verifysession/impl/src/main/res/values-sv/translations.xml @@ -17,6 +17,7 @@ "Jämför siffror" "Din nya session är nu verifierad. Den har tillgång till dina krypterade meddelanden, och andra användare kommer att se den som betrodd." "Ange återställningsnyckel" + "Antingen överskreds tidsgränsen för begäran, begäran nekades eller så fanns det ett matchningsfel för verifieringen." "Bevisa att det är du för att komma åt din krypterade meddelandehistorik." "Öppna en befintlig session" "Försök att verifiera igen" @@ -25,11 +26,19 @@ "Jämför en unik uppsättning emojis." "Jämför de unika emojierna och se till att de visas i samma ordning." "Inloggad" + "Antingen överskreds tidsgränsen för begäran, begäran nekades eller så fanns det ett matchningsfel för verifieringen." + "Verifiering misslyckades" "Fortsätt bara om du initierade denna verifiering." "Verifiera den andra enheten för att hålla din meddelandehistorik säker." + "Du kan nu läsa eller skicka meddelanden säkert på din andra enhet." + "Enhet verifierad" "Verifiering begärd" "De matchar inte" "De matchar" + "Se till att du har appen öppen på den andra enheten innan du startar verifieringen härifrån." + "Öppna appen på en annan verifierad enhet" + "Du bör se en popup på den andra enheten. Starta verifieringen därifrån nu." + "Starta verifieringen på den andra enheten" "Godkänn begäran om att starta verifieringsprocessen på din andra session för att fortsätta." "Väntar på att acceptera begäran" "Loggar ut …" diff --git a/features/verifysession/impl/src/main/res/values-tr/translations.xml b/features/verifysession/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..a045731bd4 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,53 @@ + + + "Onaylayamıyor musunuz?" + "Yeni bir kurtarma anahtarı oluştur" + "Güvenli mesajlaşmayı ayarlamak için bu cihazı doğrulayın." + "Kimliğinizi doğrulayın" + "Başka bir cihaz kullan" + "Kurtarma anahtarı kullan" + "Artık mesajları güvenli bir şekilde okuyabilir veya gönderebilirsiniz ve sohbet ettiğiniz herkes de bu cihaza güvenebilir." + "Cihaz doğrulandı" + "Başka bir cihaz kullan" + "Diğer cihazda bekleniyor…" + "Bir şeyler doğru görünmüyor. İstek zaman aşımına uğradı veya istek reddedildi." + "Aşağıdaki emojilerin diğer oturumunuzda gösterilenlerle eşleştiğini onaylayın." + "Emojileri karşılaştırın" + "Aşağıdaki emojilerin diğer kullanıcının cihazında gösterilenlerle eşleştiğini onaylayın." + "Aşağıdaki sayıların diğer oturumunuzda gösterilen sayılarla eşleştiğini onaylayın." + "Sayıları karşılaştır" + "Yeni oturumunuz artık doğrulandı. Şifrelenmiş mesajlarınıza erişebilir ve diğer kullanıcılar oturumu güvenilir olarak görecektir." + "Artık mesaj gönderirken veya alırken bu kullanıcının kimliğine güvenebilirsiniz." + "Kurtarma anahtarını girin" + "İstek zaman aşımına uğradı, istek reddedildi veya bir doğrulama uyuşmazlığı vardı." + "Şifrelenmiş mesaj geçmişinize erişmek için siz olduğunuzu kanıtlayın." + "Mevcut bir oturumu aç" + "Doğrulamayı yeniden dene" + "Hazırım" + "Eşleşme bekleniyor…" + "Benzersiz bir emoji setini karşılaştır." + "Benzersiz emojileri karşılaştırın ve aynı sırayla göründüklerinden emin olun." + "Oturum açıldı" + "İstek zaman aşımına uğradı, istek reddedildi veya bir doğrulama uyuşmazlığı vardı." + "Doğrulama başarısız" + "Yalnızca bu doğrulamayı siz başlattıysanız devam edin." + "Mesaj geçmişinizi güvende tutmak için diğer cihazı doğrulayın." + "Artık diğer cihazınızda güvenli bir şekilde mesaj okuyabilir veya gönderebilirsiniz." + "Cihaz doğrulandı" + "Doğrulama talep edildi" + "Eşleşmiyorlar" + "Eşleşiyorlar" + "Buradan doğrulamaya başlamadan önce uygulamanın diğer cihazda açık olduğundan emin olun." + "Uygulamayı doğrulanmış başka bir cihazda açın" + "Daha fazla güvenlik için, cihazlarınızdaki bir dizi emojiyi karşılaştırarak bu kullanıcıyı doğrulayın. Bunu, iletişim kurmak için güvenilir bir yol kullanarak yapın." + "Bu kullanıcıyı doğrula?" + "Ekstra güvenlik için, başka bir kullanıcı kimliğinizi doğrulamak istiyor. Karşılaştırmanız için size bir dizi emoji gösterilecektir." + "Diğer cihazda bir açılır pencere görmelisiniz. Doğrulamayı şimdi oradan başlatın." + "Diğer cihazda doğrulamayı başlat" + "Diğer cihaz bekleniyor" + "Diğer kullanıcı bekleniyor" + "Kabul edildikten sonra doğrulama işlemine devam edebileceksiniz." + "Devam etmek için diğer oturumunuzda doğrulama işlemini başlatma isteğini kabul edin." + "İsteğin kabul edilmesi bekleniyor" + "Oturum kapatılıyor…" + diff --git a/features/verifysession/impl/src/main/res/values-uk/translations.xml b/features/verifysession/impl/src/main/res/values-uk/translations.xml index 773adf6318..45038bfe60 100644 --- a/features/verifysession/impl/src/main/res/values-uk/translations.xml +++ b/features/verifysession/impl/src/main/res/values-uk/translations.xml @@ -13,9 +13,11 @@ "Щось не так. Або час очікування запиту минув, або в запиті було відмовлено." "Переконайтеся, що емодзі нижче збігаються з тими, що відображаються під час іншого сеансу." "Порівняти емодзі" + "Переконайтеся, що наведені емоджі збігаються з тими, що показані на пристрої іншого користувача." "Переконайтеся, що наведені нижче цифри збігаються з тими, що показані під час вашого іншого сеансу." "Порівняйте цифри" "Ваш новий сеанс підтверджено. Він матиме доступ до ваших зашифрованих повідомлень, й інші користувачі вважатимуть його надійним." + "Тепер ви можете довіряти особистості цього користувача під час надсилання або отримання повідомлень." "Введіть ключ відновлення" "Або час очікування запиту минув, або запит було відхилено, або виникла розбіжність у верифікації." "Доведіть, що це ви, щоб отримати доступ до історії зашифрованих повідомлень." @@ -27,7 +29,7 @@ "Порівняйте унікальні емодзі, переконавшись, що вони показані в однаковому порядку." "Увійшов" "Або час очікування запиту минув, або запит було відхилено, або виникла розбіжність у верифікації." - "Не вдалося перевірити" + "Перевірка не вдалася" "Продовжуйте, лише якщо ви ініціювали цю перевірку." "Перевірте інший пристрій, щоб захистити історію повідомлень." "Тепер ви можете безпечно читати або надсилати повідомлення на іншому пристрої." @@ -37,8 +39,13 @@ "Вони збігаються" "Перш ніж починати перевірку звідси, переконайтеся, що програму відкрито на іншому пристрої." "Відкрийте додаток на іншому перевіреному пристрої" + "Верифікувати цього користувача?" + "Для додаткової безпеки інший користувач хоче верифікувати вашу особистість. Вам буде показано набір емоджі для порівняння." "Ви повинні побачити спливаюче вікно на іншому пристрої. Почніть перевірку звідти." "Почніть перевірку на іншому пристрої" + "Очікування іншого пристрою" + "Очікування іншого користувача" + "Після погодження ви зможете продовжити верифікацію." "Щоб продовжити, прийміть запит на початок процесу верифікації в іншому сеансі." "Очікування на прийняття запиту" "Вихід…" diff --git a/features/verifysession/impl/src/main/res/values-zh-rTW/translations.xml b/features/verifysession/impl/src/main/res/values-zh-rTW/translations.xml index 7eb21b9330..82dc0acd35 100644 --- a/features/verifysession/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/verifysession/impl/src/main/res/values-zh-rTW/translations.xml @@ -27,11 +27,11 @@ "表情符號是唯一的,請相互比對,確認它們的排列順序是否相同。" "已登入" "請求逾時、請求被拒或是驗證不符。" - "驗證失敗" + "驗證失敗。" "僅當您啟動此驗證時才繼續。" "驗證其他裝置以保護您的訊息歷史紀錄安全。" "現在,您可以在其他裝置上安全地閱讀或傳送訊息。" - "已驗證裝置" + "裝置已驗證" "已請求驗證" "不一樣" "一樣" diff --git a/features/verifysession/impl/src/main/res/values/localazy.xml b/features/verifysession/impl/src/main/res/values/localazy.xml index db18590cbe..df9e6284d5 100644 --- a/features/verifysession/impl/src/main/res/values/localazy.xml +++ b/features/verifysession/impl/src/main/res/values/localazy.xml @@ -13,9 +13,11 @@ "Something doesn’t seem right. Either the request timed out or the request was denied." "Confirm that the emojis below match those shown on your other session." "Compare emojis" + "Confirm that the emojis below match those shown on the other user’s device." "Confirm that the numbers below match those shown on your other session." "Compare numbers" "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted." + "Now you can trust the identity of this user when sending or receiving messages." "Enter recovery key" "Either the request timed out, the request was denied, or there was a verification mismatch." "Prove it’s you in order to access your encrypted message history." @@ -37,8 +39,14 @@ "They match" "Make sure you have the app open in the other device before starting verification from here." "Open the app on another verified device" + "For extra security, verify this user by comparing a set of emojis on your devices. Do this by using a trusted way to communicate." + "Verify this user?" + "For extra security, another user wants to verify your identity. You’ll be shown a set of emojis to compare." "You should see a popup on the other device. Start the verification from there now." "Start verification on the other device" + "Waiting for the other device" + "Waiting for the other user" + "Once accepted you’ll be able to continue with the verification." "Accept the request to start the verification process in your other session to continue." "Waiting to accept request" "Signing out…" diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenterTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenterTest.kt index 0e3b05ecbf..435e2e688c 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenterTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionPresenterTest.kt @@ -314,7 +314,7 @@ class VerifySelfSessionPresenterTest { emitVerifiedStatus(SessionVerifiedStatus.Verified) emitVerificationFlowState(VerificationFlowState.DidFinish) } - val signOutLambda = lambdaRecorder { "aUrl" } + val signOutLambda = lambdaRecorder {} val presenter = createVerifySelfSessionPresenter( service, logoutUseCase = FakeLogoutUseCase(signOutLambda) @@ -326,7 +326,6 @@ class VerifySelfSessionPresenterTest { assertThat(awaitItem().signOutAction.isLoading()).isTrue() val finalItem = awaitItem() assertThat(finalItem.signOutAction.isSuccess()).isTrue() - assertThat(finalItem.signOutAction.dataOrNull()).isEqualTo("aUrl") signOutLambda.assertions().isCalledOnce().with(value(true)) } } diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionViewTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionViewTest.kt index e812d98038..9eb8724152 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionViewTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/VerifySelfSessionViewTest.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.test.ext.junit.runners.AndroidJUnit4 import io.element.android.features.verifysession.impl.R import io.element.android.features.verifysession.impl.ui.aEmojisSessionVerificationData -import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.tests.testutils.EnsureNeverCalled @@ -21,7 +20,6 @@ import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.clickOn import io.element.android.tests.testutils.ensureCalledOnce -import io.element.android.tests.testutils.ensureCalledOnceWithParam import io.element.android.tests.testutils.pressBackKey import org.junit.Rule import org.junit.Test @@ -224,27 +222,12 @@ class VerifySelfSessionViewTest { } } - @Test - fun `on success logout - onFinished callback is called immediately`() { - val aUrl = "aUrl" - ensureCalledOnceWithParam(aUrl) { callback -> - rule.setVerifySelfSessionView( - aVerifySelfSessionState( - signOutAction = AsyncAction.Success(aUrl), - eventSink = EnsureNeverCalledWithParam(), - ), - onSuccessLogout = callback, - ) - } - } - private fun AndroidComposeTestRule.setVerifySelfSessionView( state: VerifySelfSessionState, onLearnMoreClick: () -> Unit = EnsureNeverCalled(), onEnterRecoveryKey: () -> Unit = EnsureNeverCalled(), onFinished: () -> Unit = EnsureNeverCalled(), onResetKey: () -> Unit = EnsureNeverCalled(), - onSuccessLogout: (String?) -> Unit = EnsureNeverCalledWithParam(), ) { setContent { VerifySelfSessionView( @@ -253,7 +236,6 @@ class VerifySelfSessionViewTest { onEnterRecoveryKey = onEnterRecoveryKey, onFinish = onFinished, onResetKey = onResetKey, - onSuccessLogout = onSuccessLogout, ) } } diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderView.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderView.kt index d247d87a17..7ccdf78539 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderView.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderView.kt @@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Description import androidx.compose.material.icons.outlined.Folder import androidx.compose.material.icons.outlined.SubdirectoryArrowLeft import androidx.compose.material3.ExperimentalMaterial3Api @@ -27,6 +26,7 @@ import androidx.compose.ui.text.style.TextAlign 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.viewfolder.impl.model.Item import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.list.ListItemContent @@ -130,7 +130,7 @@ private fun ItemRow( } is Item.File -> { ListItem( - leadingContent = ListItemContent.Icon(IconSource.Vector(Icons.Outlined.Description)), + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Document())), headlineContent = { Text( text = item.name, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2dd8ecae8c..2f71f47745 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,11 +3,11 @@ [versions] # Project -android_gradle_plugin = "8.8.0" +android_gradle_plugin = "8.8.1" kotlin = "2.1.10" -kotlinpoet = "2.0.0" -ksp = "2.1.10-1.0.29" -firebaseAppDistribution = "5.1.0" +kotlinpoet = "2.1.0" +ksp = "2.1.10-1.0.30" +firebaseAppDistribution = "5.1.1" # AndroidX core = "1.15.0" @@ -17,28 +17,28 @@ core = "1.15.0" # due to the DefaultMigrationStore not behaving as expected. # Stick to 1.0.0 for now, and ensure that this scenario cannot be reproduced when upgrading the version. datastore = "1.0.0" -constraintlayout = "2.2.0" -constraintlayout_compose = "1.1.0" +constraintlayout = "2.2.1" +constraintlayout_compose = "1.1.1" lifecycle = "2.8.7" -activity = "1.10.0" +activity = "1.10.1" media3 = "1.5.1" camera = "1.4.1" # Compose -compose_bom = "2025.01.01" +compose_bom = "2025.02.00" composecompiler = "1.5.15" # Coroutines coroutines = "1.10.1" # Accompanist -accompanist = "0.37.0" +accompanist = "0.37.2" # Test test_core = "1.6.1" # Jetbrain -datetime = "0.6.1" +datetime = "0.6.2" serialization_json = "1.8.0" #other @@ -47,10 +47,10 @@ showkase = "1.0.3" appyx = "1.6.0" sqldelight = "2.0.2" wysiwyg = "2.38.2" -telephoto = "0.14.0" +telephoto = "0.15.1" # Dependency analysis -dependencyAnalysis = "2.8.0" +dependencyAnalysis = "2.10.1" # DI dagger = "2.55" @@ -68,7 +68,7 @@ kover = "0.9.1" android_gradle_plugin = { module = "com.android.tools.build:gradle", version.ref = "android_gradle_plugin" } compose_compiler_plugin = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" } # https://developer.android.com/studio/write/java8-support#library-desugaring-versions -android_desugar = "com.android.tools:desugar_jdk_libs:2.1.4" +android_desugar = "com.android.tools:desugar_jdk_libs:2.1.5" anvil_gradle_plugin = { module = "dev.zacsweers.anvil:gradle-plugin", version.ref = "anvil" } kotlin_gradle_plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } kotlinpoet = { module = "com.squareup:kotlinpoet", version.ref = "kotlinpoet" } @@ -77,7 +77,7 @@ kover_gradle_plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", ve ksp_gradle_plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } gms_google_services = "com.google.gms:google-services:4.4.2" # https://firebase.google.com/docs/android/setup#available-libraries -google_firebase_bom = "com.google.firebase:firebase-bom:33.8.0" +google_firebase_bom = "com.google.firebase:firebase-bom:33.9.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" } @@ -88,7 +88,7 @@ androidx_corektx = { module = "androidx.core:core-ktx", version.ref = "core" } androidx_annotationjvm = "androidx.annotation:annotation-jvm:1.9.1" androidx_datastore_preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" } androidx_datastore_datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" } -androidx_exifinterface = "androidx.exifinterface:exifinterface:1.3.7" +androidx_exifinterface = "androidx.exifinterface:exifinterface:1.4.0" androidx_constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" } androidx_constraintlayout_compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "constraintlayout_compose" } androidx_camera_lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "camera" } @@ -156,14 +156,14 @@ test_truth = "com.google.truth:truth:1.4.4" test_parameter_injector = "com.google.testparameterinjector:test-parameter-injector:1.18" test_robolectric = "org.robolectric:robolectric:4.14.1" test_appyx_junit = { module = "com.bumble.appyx:testing-junit4", version.ref = "appyx" } -test_composable_preview_scanner = "com.github.sergio-sastre.ComposablePreviewScanner:android:0.1.2" +test_composable_preview_scanner = "io.github.sergio-sastre.ComposablePreviewScanner:android:0.5.1" # Others coil = { module = "io.coil-kt:coil", version.ref = "coil" } coil_compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } coil_gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" } coil_test = { module = "io.coil-kt:coil-test", version.ref = "coil" } -compound = { module = "io.element.android:compound-android", version = "0.2.0" } +compound = { module = "io.element.android:compound-android", version = "25.2.26" } datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" } serialization_json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization_json" } kotlinx_collections_immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8" @@ -173,7 +173,7 @@ jsoup = "org.jsoup:jsoup:1.18.3" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.0.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.2.77" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.2.26" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } @@ -187,15 +187,15 @@ 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:11.8.0" +maplibre = "org.maplibre.gl:android-sdk:11.8.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.1.0" -zxing_cpp = "io.github.zxing-cpp:android:2.2.0" +zxing_cpp = "io.github.zxing-cpp:android:2.3.0" # Analytics -posthog = "com.posthog:posthog-android:3.11.1" -sentry = "io.sentry:sentry-android:8.1.0" +posthog = "com.posthog:posthog-android:3.11.3" +sentry = "io.sentry:sentry-android:8.3.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" @@ -232,10 +232,10 @@ kotlin_serialization = { id = "org.jetbrains.kotlin.plugin.serialization", versi kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } anvil = { id = "dev.zacsweers.anvil", version.ref = "anvil" } -detekt = "io.gitlab.arturbosch.detekt:1.23.7" +detekt = "io.gitlab.arturbosch.detekt:1.23.8" ktlint = "org.jlleitschuh.gradle.ktlint:12.1.2" dependencygraph = "com.savvasdalkitsis.module-dependency-graph:0.12" -dependencycheck = "org.owasp.dependencycheck:12.0.2" +dependencycheck = "org.owasp.dependencycheck:12.1.0" dependencyanalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } paparazzi = "app.cash.paparazzi:1.3.5" sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/text/LinkifyHelper.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/text/LinkifyHelper.kt new file mode 100644 index 0000000000..2f724cd743 --- /dev/null +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/text/LinkifyHelper.kt @@ -0,0 +1,110 @@ +/* + * 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.text + +import android.text.Spannable +import android.text.style.URLSpan +import android.text.util.Linkify +import androidx.core.text.getSpans +import androidx.core.text.toSpannable +import androidx.core.text.util.LinkifyCompat +import timber.log.Timber +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.isNotEmpty +import kotlin.collections.iterator + +/** + * Helper class to linkify text while preserving existing URL spans. + * + * It also checks the linkified results to make sure URLs spans are not including trailing punctuation. + */ +object LinkifyHelper { + fun linkify( + text: CharSequence, + @LinkifyCompat.LinkifyMask linkifyMask: Int = Linkify.WEB_URLS or Linkify.PHONE_NUMBERS or Linkify.EMAIL_ADDRESSES, + ): CharSequence { + // Convert the text to a Spannable to be able to add URL spans, return the original text if it's not possible (in tests, i.e.) + val spannable = text.toSpannable() ?: return text + + // Get all URL spans, as they will be removed by LinkifyCompat.addLinks + val oldURLSpans = spannable.getSpans(0, text.length).associateWith { + val start = spannable.getSpanStart(it) + val end = spannable.getSpanEnd(it) + Pair(start, end) + } + // Find and set as URLSpans any links present in the text + val addedNewLinks = LinkifyCompat.addLinks(spannable, linkifyMask) + + // Process newly added URL spans + if (addedNewLinks) { + val newUrlSpans = spannable.getSpans(0, spannable.length) + for (urlSpan in newUrlSpans) { + val start = spannable.getSpanStart(urlSpan) + val end = spannable.getSpanEnd(urlSpan) + + // Try to avoid including trailing punctuation in the link. + // Since this might fail in some edge cases, we catch the exception and just use the original end index. + val newEnd = runCatching { + adjustLinkifiedUrlSpanEndIndex(spannable, start, end) + }.onFailure { + Timber.e(it, "Failed to adjust end index for link span") + }.getOrNull() ?: end + + // Adapt the url in the URL span to the new end index too if needed + if (end != newEnd) { + val url = spannable.subSequence(start, newEnd).toString() + spannable.removeSpan(urlSpan) + spannable.setSpan(URLSpan(url), start, newEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } else { + spannable.setSpan(urlSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } + } + } + + // Restore old spans, remove new ones if there is a conflict + for ((urlSpan, location) in oldURLSpans) { + val (start, end) = location + val addedConflictingSpans = spannable.getSpans(start, end) + if (addedConflictingSpans.isNotEmpty()) { + for (span in addedConflictingSpans) { + spannable.removeSpan(span) + } + } + + spannable.setSpan(urlSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } + return spannable + } + + private fun adjustLinkifiedUrlSpanEndIndex(spannable: Spannable, start: Int, end: Int): Int { + var end = end + + // Trailing punctuation found, adjust the end index + while (spannable[end - 1] in sequenceOf('.', ',', ';', ':', '!', '?', '…') && end > start) { + end-- + } + + // If the last character is a closing parenthesis, check if it's part of a pair + if (spannable[end - 1] == ')' && end > start) { + val linkifiedTextLastPath = spannable.substring(start, end).substringAfterLast('/') + val closingParenthesisCount = linkifiedTextLastPath.count { it == ')' } + val openingParenthesisCount = linkifiedTextLastPath.count { it == '(' } + // If it's not part of a pair, remove it from the link span by adjusting the end index + end -= closingParenthesisCount - openingParenthesisCount + } + return end + } +} + +/** + * Linkify the text with the default mask (WEB_URLS, PHONE_NUMBERS, EMAIL_ADDRESSES). + */ +fun CharSequence.safeLinkify(): CharSequence { + return LinkifyHelper.linkify(this, Linkify.WEB_URLS or Linkify.PHONE_NUMBERS or Linkify.EMAIL_ADDRESSES) +} diff --git a/libraries/androidutils/src/main/res/values-tr/translations.xml b/libraries/androidutils/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..070ef9d3b4 --- /dev/null +++ b/libraries/androidutils/src/main/res/values-tr/translations.xml @@ -0,0 +1,4 @@ + + + "Bu eylemi gerçekleştirecek uyumlu bir uygulama bulunamadı." + diff --git a/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/text/LinkifierHelperTest.kt b/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/text/LinkifierHelperTest.kt new file mode 100644 index 0000000000..69dcaa32d2 --- /dev/null +++ b/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/text/LinkifierHelperTest.kt @@ -0,0 +1,124 @@ +/* + * 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.text + +import android.telephony.TelephonyManager +import android.text.style.URLSpan +import androidx.core.text.getSpans +import androidx.core.text.toSpannable +import com.google.common.truth.Truth.assertThat +import io.element.android.tests.testutils.WarmUpRule +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.Shadows.shadowOf +import org.robolectric.annotation.Config +import org.robolectric.shadow.api.Shadow.newInstanceOf + +@RunWith(RobolectricTestRunner::class) +class LinkifierHelperTest { + @get:Rule + val warmUpRule = WarmUpRule() + + @Test + fun `linkification finds URL`() { + val text = "A url https://matrix.org" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("https://matrix.org") + } + + @Test + fun `linkification finds partial URL`() { + val text = "A partial url matrix.org/test" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("http://matrix.org/test") + } + + @Test + fun `linkification finds domain`() { + val text = "A domain matrix.org" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("http://matrix.org") + } + + @Test + fun `linkification finds email`() { + val text = "An email address john@doe.com" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("mailto:john@doe.com") + } + + @Test + @Config(sdk = [30]) + fun `linkification finds phone`() { + val text = "Test phone number +34950123456" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("tel:+34950123456") + } + + @Test + @Config(sdk = [30]) + fun `linkification finds phone in Germany`() { + // For some reason the linkification of phone numbers in Germany is very lenient and any number will fit here + val telephonyManager = shadowOf(newInstanceOf(TelephonyManager::class.java)) + telephonyManager.setSimCountryIso("DE") + + val text = "Test phone number 1234" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("tel:1234") + } + + @Test + fun `linkification handles trailing dot`() { + val text = "A url https://matrix.org." + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("https://matrix.org") + } + + @Test + fun `linkification handles trailing punctuation`() { + val text = "A url https://matrix.org!?; Check it out!" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("https://matrix.org") + } + + @Test + fun `linkification handles parenthesis surrounding URL`() { + val text = "A url (this one (https://github.com/element-hq/element-android/issues/1234))" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("https://github.com/element-hq/element-android/issues/1234") + } + + @Test + fun `linkification handles parenthesis in URL`() { + val text = "A url: (https://github.com/element-hq/element-android/READ(ME))" + val result = LinkifyHelper.linkify(text) + val urlSpans = result.toSpannable().getSpans() + assertThat(urlSpans.size).isEqualTo(1) + assertThat(urlSpans.first().url).isEqualTo("https://github.com/element-hq/element-android/READ(ME)") + } +} diff --git a/libraries/dateformatter/impl/src/main/res/values-pt/translations.xml b/libraries/dateformatter/impl/src/main/res/values-pt/translations.xml new file mode 100644 index 0000000000..7c72997e33 --- /dev/null +++ b/libraries/dateformatter/impl/src/main/res/values-pt/translations.xml @@ -0,0 +1,5 @@ + + + "%1$s às %2$s" + "Este mês" + diff --git a/libraries/dateformatter/impl/src/main/res/values-sv/translations.xml b/libraries/dateformatter/impl/src/main/res/values-sv/translations.xml new file mode 100644 index 0000000000..58f22f89ab --- /dev/null +++ b/libraries/dateformatter/impl/src/main/res/values-sv/translations.xml @@ -0,0 +1,5 @@ + + + "%1$svid %2$s" + "Denna månad" + diff --git a/libraries/dateformatter/impl/src/main/res/values-tr/translations.xml b/libraries/dateformatter/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..5276e6c91f --- /dev/null +++ b/libraries/dateformatter/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,5 @@ + + + "%1$s %2$s" + "Bu ay" + diff --git a/libraries/designsystem/build.gradle.kts b/libraries/designsystem/build.gradle.kts index 01e8d56bb0..bbb8efdadf 100644 --- a/libraries/designsystem/build.gradle.kts +++ b/libraries/designsystem/build.gradle.kts @@ -31,7 +31,9 @@ android { implementation(libs.androidx.compose.material3.adaptive) implementation(libs.coil.compose) implementation(libs.vanniktech.blurhash) + implementation(projects.features.enterprise.api) implementation(projects.libraries.architecture) + implementation(projects.libraries.core) implementation(projects.libraries.preferences.api) implementation(projects.libraries.testtags) implementation(projects.libraries.uiStrings) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ColorUtil.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ColorUtil.kt index 317abe76ba..8b22e53ae6 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ColorUtil.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ColorUtil.kt @@ -7,24 +7,24 @@ package io.element.android.libraries.designsystem -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color +import io.element.android.compound.theme.ElementTheme @Composable fun Boolean.toEnabledColor(): Color { return if (this) { - MaterialTheme.colorScheme.primary + ElementTheme.colors.textPrimary } else { - MaterialTheme.colorScheme.primary.copy(alpha = 0.40f) + ElementTheme.colors.textDisabled } } @Composable fun Boolean.toSecondaryEnabledColor(): Color { return if (this) { - MaterialTheme.colorScheme.secondary + ElementTheme.colors.textSecondary } else { - MaterialTheme.colorScheme.secondary.copy(alpha = 0.40f) + ElementTheme.colors.textDisabled } } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/MatrixBadgeAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/MatrixBadgeAtom.kt index 6437c0a822..5c24d01b61 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/MatrixBadgeAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/MatrixBadgeAtom.kt @@ -93,7 +93,7 @@ internal fun MatrixBadgeAtomNegativePreview() = ElementPreview { MatrixBadgeAtom.View( MatrixBadgeAtom.MatrixBadgeData( text = "Not trusted", - icon = CompoundIcons.Error(), + icon = CompoundIcons.ErrorSolid(), type = MatrixBadgeAtom.Type.Negative, ) ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt index 86537f1435..354eada12a 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt @@ -33,7 +33,7 @@ fun RedIndicatorAtom( Box( modifier = modifier .size(size) - .border(borderSize, ElementTheme.materialColors.background, CircleShape) + .border(borderSize, ElementTheme.colors.bgCanvasDefault, CircleShape) .padding(borderSize / 2) .clip(CircleShape) .background(color) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt index 7816a59e48..71dbd93ec5 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt @@ -13,9 +13,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Home -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -24,6 +21,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.Dp 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 @@ -45,7 +43,7 @@ fun RoundedIconAtom( size: RoundedIconAtomSize = RoundedIconAtomSize.Big, resourceId: Int? = null, imageVector: ImageVector? = null, - tint: Color = MaterialTheme.colorScheme.secondary, + tint: Color = ElementTheme.colors.iconSecondary, backgroundTint: Color = ElementTheme.colors.temporaryColorBgSpecial, ) { Box( @@ -95,11 +93,11 @@ internal fun RoundedIconAtomPreview() = ElementPreview { Column(verticalArrangement = Arrangement.spacedBy(8.dp)) { RoundedIconAtom( size = RoundedIconAtomSize.Medium, - imageVector = Icons.Filled.Home, + imageVector = CompoundIcons.HomeSolid(), ) RoundedIconAtom( size = RoundedIconAtomSize.Big, - imageVector = Icons.Filled.Home, + imageVector = CompoundIcons.HomeSolid(), ) } } 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 30944ead69..33706239dc 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 @@ -58,7 +58,7 @@ fun ComposerAlertMolecule( ) val startColor = if (isCritical) ElementTheme.colors.bgCriticalSubtle else ElementTheme.colors.bgInfoSubtle val brush = Brush.verticalGradient( - listOf(startColor, ElementTheme.materialColors.background), + listOf(startColor, ElementTheme.colors.bgCanvasDefault), ) Box( modifier = Modifier @@ -78,7 +78,11 @@ fun ComposerAlertMolecule( text = content, modifier = Modifier.weight(1f), style = ElementTheme.typography.fontBodyMdRegular, - color = ElementTheme.colors.textPrimary, + color = if (isCritical) { + ElementTheme.colors.textCriticalPrimary + } else { + ElementTheme.colors.textPrimary + }, textAlign = TextAlign.Start, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/IconTitleSubtitleMolecule.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/IconTitleSubtitleMolecule.kt index d07f47b43c..9496f53993 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/IconTitleSubtitleMolecule.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/IconTitleSubtitleMolecule.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -51,7 +50,7 @@ fun IconTitleSubtitleMolecule( .fillMaxWidth(), textAlign = TextAlign.Center, style = ElementTheme.typography.fontHeadingMdBold, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) if (subTitle != null) { Spacer(Modifier.height(8.dp)) @@ -60,7 +59,7 @@ fun IconTitleSubtitleMolecule( modifier = Modifier.fillMaxWidth(), textAlign = TextAlign.Center, style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, ) } } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt index 8a95340342..47b43fea40 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt @@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.movableContentOf import androidx.compose.runtime.remember @@ -46,7 +45,7 @@ import io.element.android.libraries.designsystem.theme.components.Text fun HeaderFooterPage( modifier: Modifier = Modifier, paddingValues: PaddingValues = PaddingValues(20.dp), - containerColor: Color = MaterialTheme.colorScheme.background, + containerColor: Color = ElementTheme.colors.bgCanvasDefault, isScrollable: Boolean = false, background: @Composable () -> Unit = {}, topBar: @Composable () -> Unit = {}, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/background/LightGradientBackground.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/background/LightGradientBackground.kt index 274518f831..d33fa9f211 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/background/LightGradientBackground.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/background/LightGradientBackground.kt @@ -9,13 +9,13 @@ package io.element.android.libraries.designsystem.background import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.center import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RadialGradientShader import androidx.compose.ui.graphics.ShaderBrush +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -25,7 +25,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight @Composable fun LightGradientBackground( modifier: Modifier = Modifier, - backgroundColor: Color = MaterialTheme.colorScheme.background, + backgroundColor: Color = ElementTheme.colors.bgCanvasDefault, firstColor: Color = Color(0x1E0DBD8B), secondColor: Color = Color(0x001273EB), ratio: Float = 642 / 775f, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Announcement.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Announcement.kt index ee0a13466e..ae88faa205 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Announcement.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Announcement.kt @@ -118,7 +118,7 @@ private fun InformativeAnnouncement( AnnouncementSurface(modifier = modifier) { Row { Icon( - imageVector = if (isError) CompoundIcons.Error() else CompoundIcons.Info(), + imageVector = if (isError) CompoundIcons.ErrorSolid() else CompoundIcons.Info(), tint = if (isError) ElementTheme.colors.iconCriticalPrimary else ElementTheme.colors.iconPrimary, contentDescription = null, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/BigIcon.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/BigIcon.kt index 7d5d805ff8..c9a80a50d7 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/BigIcon.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/BigIcon.kt @@ -105,7 +105,7 @@ object BigIcon { val icon = when (style) { is Style.Default -> style.vectorIcon Style.Alert, - Style.AlertSolid -> CompoundIcons.Error() + Style.AlertSolid -> CompoundIcons.ErrorSolid() Style.Success, Style.SuccessSolid -> CompoundIcons.CheckCircleSolid() } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt index 5e3aebd656..b86fdd8db5 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt @@ -477,7 +477,7 @@ internal fun BloomPreview() { } .bloom( hash = blurhash, - background = ElementTheme.materialColors.background, + background = ElementTheme.colors.bgCanvasDefault, blurSize = DpSize(430.dp, 430.dp), offset = DpOffset(24.dp, 24.dp), clipToSize = if (topAppBarHeight > 0) DpSize(430.dp, topAppBarHeight.toDp()) else DpSize.Zero, @@ -554,9 +554,9 @@ internal fun BloomInitialsPreview(@PreviewParameter(InitialsColorIntProvider::cl // Workaround to display a very subtle bloom for avatars with very soft colors Color(0xFFF9F9F9) } else { - ElementTheme.materialColors.background + ElementTheme.colors.bgCanvasDefault }, - bottomSoftEdgeColor = ElementTheme.materialColors.background, + bottomSoftEdgeColor = ElementTheme.colors.bgCanvasDefault, blurSize = DpSize(256.dp, 256.dp), ), contentAlignment = Alignment.Center diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ClickableLinkText.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ClickableLinkText.kt index cfa0c1fd8a..169403104a 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ClickableLinkText.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ClickableLinkText.kt @@ -147,6 +147,7 @@ fun AnnotatedString.linkify(linkStyle: SpanStyle): AnnotatedString { if (original.getLinkAnnotations(start, end).isEmpty() && original.getStringAnnotations("URL", start, end).isEmpty()) { // Prevent linkifying domains in user or room handles (@user:domain.com, #room:domain.com) if (start > 0 && !spannable[start - 1].isWhitespace()) continue + addStyle( start = start, end = end, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledCheckbox.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledCheckbox.kt index 554050511e..3f25a69eb0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledCheckbox.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledCheckbox.kt @@ -9,11 +9,11 @@ package io.element.android.libraries.designsystem.components import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.theme.components.Checkbox @@ -38,7 +38,7 @@ fun LabelledCheckbox( ) Text( text = text, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) } } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt index 8e27661359..f5d8a50ce0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup @@ -64,13 +65,13 @@ fun ProgressDialog( when (type) { is ProgressDialogType.Indeterminate -> { CircularProgressIndicator( - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.iconPrimary ) } is ProgressDialogType.Determinate -> { CircularProgressIndicator( progress = { type.progress }, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.iconPrimary ) } } @@ -93,7 +94,7 @@ private fun ProgressDialogContent( onCancelClick: () -> Unit = {}, progressIndicator: @Composable () -> Unit = { CircularProgressIndicator( - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.iconPrimary ) } ) { @@ -114,7 +115,7 @@ private fun ProgressDialogContent( Spacer(modifier = Modifier.height(22.dp)) Text( text = text, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) } if (showCancelButton) { 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 a3cd6f75e3..12b6fe05a3 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 @@ -8,6 +8,8 @@ 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( @@ -27,24 +29,36 @@ data class AvatarData( startIndex++ } - var length = 1 - var first = dn[startIndex] + var next = dn[startIndex] // LEFT-TO-RIGHT MARK - if (dn.length >= 2 && 0x200e == first.code) { + if (dn.length >= 2 && 0x200e == next.code) { startIndex++ - first = dn[startIndex] + next = dn[startIndex] } - // check if it’s the start of a surrogate pair - if (first.code in 0xD800..0xDBFF && dn.length > startIndex + 1) { - val second = dn[startIndex + 1] - if (second.code in 0xDC00..0xDFFF) { - length++ + while (next.isWhitespace()) { + if (dn.length > startIndex + 1) { + startIndex++ + next = dn[startIndex] + } else { + break } } - dn.substring(startIndex, startIndex + length) + val fullCharacterIterator = BreakIterator.getCharacterInstance() + fullCharacterIterator.setText(dn) + val glyphBoundary = tryOrNull { fullCharacterIterator.following(startIndex) } + ?.takeIf { it in startIndex..dn.length } + + when { + // Use the found boundary + glyphBoundary != null -> dn.substring(startIndex, glyphBoundary) + // If no boundary was found, default to the next char if possible + startIndex + 1 < dn.length -> dn.substring(startIndex, startIndex + 1) + // Return a fallback character otherwise + else -> "#" + } } .uppercase() } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt index d0950d2960..437b36235e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt @@ -59,4 +59,6 @@ enum class AvatarSize(val dp: Dp) { KnockRequestBanner(32.dp), MediaSender(32.dp), + + DmCreationConfirmation(64.dp), } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/MainActionButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/MainActionButton.kt index b8b4a31259..537c1f639f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/MainActionButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/MainActionButton.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn import androidx.compose.material3.LocalContentColor -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -58,17 +57,16 @@ fun MainActionButton( .widthIn(min = 76.dp, max = 96.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { - val tintColor = if (enabled) LocalContentColor.current else MaterialTheme.colorScheme.secondary Icon( imageVector = imageVector, contentDescription = contentDescription, - tint = tintColor, + tint = if (enabled) LocalContentColor.current else ElementTheme.colors.iconDisabled, ) Spacer(modifier = Modifier.height(14.dp)) Text( title, style = ElementTheme.typography.fontBodyMdMedium.copy(hyphens = Hyphens.Auto), - color = tintColor, + color = if (enabled) LocalContentColor.current else ElementTheme.colors.textDisabled, overflow = TextOverflow.Visible, textAlign = TextAlign.Center, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt index 29d3633cc0..77ac8d6dd6 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.designsystem.theme -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import io.element.android.compound.annotations.CoreColorToken @@ -24,13 +23,13 @@ import kotlinx.collections.immutable.persistentMapOf * Room list. */ @Composable -fun MaterialTheme.roomListRoomName() = colorScheme.primary +fun ElementTheme.roomListRoomName() = colors.textPrimary @Composable -fun MaterialTheme.roomListRoomMessage() = colorScheme.secondary +fun ElementTheme.roomListRoomMessage() = colors.textSecondary @Composable -fun MaterialTheme.roomListRoomMessageDate() = colorScheme.secondary +fun ElementTheme.roomListRoomMessageDate() = colors.textSecondary val SemanticColors.unreadIndicator get() = iconAccentTertiary @@ -181,9 +180,9 @@ internal fun ColorAliasesPreview() = ElementPreview { backgroundColor = Color.Black, foregroundColor = Color.White, colors = persistentMapOf( - "roomListRoomName" to MaterialTheme.roomListRoomName(), - "roomListRoomMessage" to MaterialTheme.roomListRoomMessage(), - "roomListRoomMessageDate" to MaterialTheme.roomListRoomMessageDate(), + "roomListRoomName" to ElementTheme.roomListRoomName(), + "roomListRoomMessage" to ElementTheme.roomListRoomMessage(), + "roomListRoomMessageDate" to ElementTheme.roomListRoomMessageDate(), "unreadIndicator" to ElementTheme.colors.unreadIndicator, "placeholderBackground" to ElementTheme.colors.placeholderBackground, "messageFromMeBackground" to ElementTheme.colors.messageFromMeBackground, 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 2c69b8575a..0944664074 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 @@ -17,6 +17,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.libraries.preferences.api.store.AppPreferencesStore /** @@ -29,6 +30,7 @@ import io.element.android.libraries.preferences.api.store.AppPreferencesStore @Composable fun ElementThemeApp( appPreferencesStore: AppPreferencesStore, + enterpriseService: EnterpriseService, content: @Composable () -> Unit, ) { val theme by remember { @@ -44,8 +46,12 @@ fun ElementThemeApp( } ) } + val compoundLight = remember { enterpriseService.semanticColorsLight() } + val compoundDark = remember { enterpriseService.semanticColorsDark() } ElementTheme( darkTheme = theme.isDark(), content = content, + compoundLight = compoundLight, + compoundDark = compoundDark, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt index 7936c25fcb..51fe275ee1 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt @@ -159,7 +159,7 @@ internal fun SimpleAlertDialogContent( // most cases, TextButtons should be used for dismiss and confirm buttons. // TextButtons will not consume this provided content color value, and will used their // own defined or default colors. - buttonContentColor = MaterialTheme.colorScheme.primary, + buttonContentColor = ElementTheme.colors.textPrimary, applyPaddingToContents = applyPaddingToContents, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt index 4a198379ca..8b1ca52515 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt @@ -314,7 +314,7 @@ internal enum class ButtonStyle { contentColor = if (destructive) { ElementTheme.colors.textCriticalPrimary } else { - if (LocalContentColor.current.isSpecified) LocalContentColor.current else ElementTheme.materialColors.primary + if (LocalContentColor.current.isSpecified) LocalContentColor.current else ElementTheme.colors.textPrimary }, disabledContainerColor = Color.Transparent, disabledContentColor = getDisabledContentColor(destructive), diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/IconToggleButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/IconToggleButton.kt index 18e503d26a..2c9a030439 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/IconToggleButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/IconToggleButton.kt @@ -11,9 +11,6 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.RadioButtonUnchecked import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.IconToggleButtonColors import androidx.compose.runtime.Composable @@ -24,6 +21,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup @@ -56,7 +54,7 @@ internal fun IconToggleButtonPreview() = ElementThemedPreview(vertical = false) Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) { val icon: @Composable () -> Unit = { Icon( - imageVector = if (checked) Icons.Default.CheckCircle else Icons.Default.RadioButtonUnchecked, + imageVector = if (checked) CompoundIcons.CheckCircleSolid() else CompoundIcons.Circle(), contentDescription = null ) } @@ -66,7 +64,7 @@ internal fun IconToggleButtonPreview() = ElementThemedPreview(vertical = false) Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) { val icon: @Composable () -> Unit = { Icon( - imageVector = if (!checked) Icons.Default.CheckCircle else Icons.Default.RadioButtonUnchecked, + imageVector = if (!checked) CompoundIcons.CheckCircleSolid() else CompoundIcons.Circle(), contentDescription = null ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt index 99f9f1a556..e75b7727eb 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt @@ -106,7 +106,7 @@ fun SearchBar( Icon( imageVector = CompoundIcons.Search(), contentDescription = stringResource(CommonStrings.action_search), - tint = ElementTheme.materialColors.tertiary, + tint = ElementTheme.colors.iconTertiary, ) } } @@ -138,7 +138,7 @@ fun SearchBar( Text( text = stringResource(CommonStrings.common_no_results), textAlign = TextAlign.Center, - color = ElementTheme.materialColors.tertiary, + color = ElementTheme.colors.textSecondary, modifier = Modifier.fillMaxWidth() ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/TextField.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/TextField.kt index 333716e6c2..d51e9745c2 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/TextField.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/TextField.kt @@ -58,7 +58,7 @@ fun TextField( placeholder: String? = null, leadingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null, - isError: Boolean = false, + validity: TextFieldValidity = TextFieldValidity.None, enabled: Boolean = true, readOnly: Boolean = false, singleLine: Boolean = false, @@ -93,7 +93,7 @@ fun TextField( readOnly = readOnly, enabled = enabled, isFocused = isFocused, - isError = isError, + validity = validity, leadingIcon = leadingIcon, placeholder = placeholder, isTextEmpty = value.isEmpty(), @@ -114,7 +114,7 @@ fun TextField( placeholder: String? = null, leadingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null, - isError: Boolean = false, + validity: TextFieldValidity? = null, enabled: Boolean = true, readOnly: Boolean = false, singleLine: Boolean = false, @@ -149,7 +149,7 @@ fun TextField( readOnly = readOnly, enabled = enabled, isFocused = isFocused, - isError = isError, + validity = validity, leadingIcon = leadingIcon, placeholder = placeholder, isTextEmpty = value.text.isEmpty(), @@ -166,7 +166,7 @@ private fun DecorationBox( enabled: Boolean, readOnly: Boolean, isFocused: Boolean, - isError: Boolean, + validity: TextFieldValidity?, placeholder: String?, isTextEmpty: Boolean, supportingText: String?, @@ -187,7 +187,7 @@ private fun DecorationBox( enabled = enabled, readOnly = readOnly, isFocused = isFocused, - isError = isError + isError = validity == TextFieldValidity.Invalid ) { Row(modifier = Modifier.padding(16.dp)) { if (leadingIcon != null) { @@ -216,7 +216,7 @@ private fun DecorationBox( } if (supportingText != null) { Spacer(modifier = Modifier.height(4.dp)) - SupportingTextLayout(isError, supportingText) + SupportingTextLayout(validity, supportingText) } } } @@ -254,24 +254,45 @@ private fun TextFieldContainer( } @Composable -private fun SupportingTextLayout(isError: Boolean, supportingText: String) { +private fun SupportingTextLayout(validity: TextFieldValidity?, supportingText: String) { Row(horizontalArrangement = spacedBy(4.dp)) { - if (isError) { - Icon( - imageVector = CompoundIcons.Error(), - contentDescription = null, - modifier = Modifier.size(16.dp), - tint = ElementTheme.colors.iconCriticalPrimary - ) + when (validity) { + TextFieldValidity.Invalid -> { + Icon( + imageVector = CompoundIcons.ErrorSolid(), + contentDescription = null, + modifier = Modifier.size(16.dp), + tint = ElementTheme.colors.iconCriticalPrimary + ) + } + TextFieldValidity.Valid -> { + Icon( + imageVector = CompoundIcons.CheckCircleSolid(), + contentDescription = null, + modifier = Modifier.size(16.dp), + tint = ElementTheme.colors.iconSuccessPrimary + ) + } + else -> Unit } Text( text = supportingText, - color = if (isError) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textSecondary, + color = when (validity) { + TextFieldValidity.Invalid -> ElementTheme.colors.textCriticalPrimary + TextFieldValidity.Valid -> ElementTheme.colors.textSuccessPrimary + else -> ElementTheme.colors.textSecondary + }, style = ElementTheme.typography.fontBodySmRegular, ) } } +enum class TextFieldValidity { + None, + Invalid, + Valid +} + @Composable private fun textFieldStyle(enabled: Boolean): TextStyle { return ElementTheme.typography.fontBodyLgRegular.copy( @@ -283,11 +304,11 @@ private fun textFieldStyle(enabled: Boolean): TextStyle { ) } -@Preview(group = PreviewGroup.TextFields) +@Preview(group = PreviewGroup.TextFields, heightDp = 1000) @Composable internal fun TextFieldsLightPreview() = ElementPreviewLight { ContentToPreview() } -@Preview(group = PreviewGroup.TextFields) +@Preview(group = PreviewGroup.TextFields, heightDp = 1000) @Composable internal fun TextFieldsDarkPreview() = ElementPreviewDark { ContentToPreview() } @@ -295,15 +316,15 @@ internal fun TextFieldsDarkPreview() = ElementPreviewDark { ContentToPreview() } @ExcludeFromCoverage private fun ContentToPreview() { Column(modifier = Modifier.padding(4.dp)) { - allBooleans.forEach { isError -> + TextFieldValidity.entries.forEach { validity -> allBooleans.forEach { enabled -> allBooleans.forEach { readonly -> TextField( onValueChange = {}, label = "Label", - value = "Hello er=${isError.asInt()}, en=${enabled.asInt()}, ro=${readonly.asInt()}", + value = "Hello val=$validity, en=${enabled.asInt()}, ro=${readonly.asInt()}", supportingText = "Supporting text", - isError = isError, + validity = validity, enabled = enabled, readOnly = readonly, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt index e207657d2c..dbfb0b29a6 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt @@ -10,10 +10,10 @@ package io.element.android.libraries.designsystem.theme.components.previews import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.DatePicker import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.rememberDatePickerState import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight @@ -48,7 +48,7 @@ private fun ContentToPreview() { shape = AlertDialogDefaults.shape, containerColor = AlertDialogDefaults.containerColor, tonalElevation = AlertDialogDefaults.TonalElevation, - buttonContentColor = MaterialTheme.colorScheme.primary, + buttonContentColor = ElementTheme.colors.textPrimary, iconContentColor = AlertDialogDefaults.iconContentColor, titleContentColor = AlertDialogDefaults.titleContentColor, textContentColor = AlertDialogDefaults.textContentColor, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/MenuPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/MenuPreview.kt index 8c69eeac5d..6ae35532ea 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/MenuPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/MenuPreview.kt @@ -7,8 +7,6 @@ package io.element.android.libraries.designsystem.theme.components.previews -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Favorite import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -35,7 +33,7 @@ internal fun MenuPreview() { val leadingIcon: @Composable (() -> Unit)? = if (i in 2..3) { @Composable { Icon( - imageVector = Icons.Filled.Favorite, + imageVector = CompoundIcons.Favourite(), contentDescription = null ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt index 9513a2468f..57ecb9c967 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt @@ -9,12 +9,12 @@ package io.element.android.libraries.designsystem.theme.components.previews import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.TimePicker import androidx.compose.material3.TimePickerLayoutType import androidx.compose.material3.rememberTimePickerState import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementThemedPreview @@ -35,7 +35,7 @@ internal fun TimePickerHorizontalPreview() { shape = AlertDialogDefaults.shape, containerColor = AlertDialogDefaults.containerColor, tonalElevation = AlertDialogDefaults.TonalElevation, - buttonContentColor = MaterialTheme.colorScheme.primary, + buttonContentColor = ElementTheme.colors.textPrimary, iconContentColor = AlertDialogDefaults.iconContentColor, titleContentColor = AlertDialogDefaults.titleContentColor, textContentColor = AlertDialogDefaults.textContentColor, @@ -57,7 +57,7 @@ internal fun TimePickerVerticalLightPreview() { shape = AlertDialogDefaults.shape, containerColor = AlertDialogDefaults.containerColor, tonalElevation = AlertDialogDefaults.TonalElevation, - buttonContentColor = MaterialTheme.colorScheme.primary, + buttonContentColor = ElementTheme.colors.textPrimary, iconContentColor = AlertDialogDefaults.iconContentColor, titleContentColor = AlertDialogDefaults.titleContentColor, textContentColor = AlertDialogDefaults.textContentColor, @@ -83,7 +83,7 @@ internal fun TimePickerVerticalDarkPreview() { shape = AlertDialogDefaults.shape, containerColor = AlertDialogDefaults.containerColor, tonalElevation = AlertDialogDefaults.TonalElevation, - buttonContentColor = MaterialTheme.colorScheme.primary, + buttonContentColor = ElementTheme.colors.textPrimary, iconContentColor = AlertDialogDefaults.iconContentColor, titleContentColor = AlertDialogDefaults.titleContentColor, textContentColor = AlertDialogDefaults.textContentColor, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/ForceOrientation.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/ForceOrientation.kt index bb2833a022..37e6e1c93e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/ForceOrientation.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/ForceOrientation.kt @@ -8,14 +8,13 @@ package io.element.android.libraries.designsystem.utils import android.content.pm.ActivityInfo -import androidx.activity.ComponentActivity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect -import androidx.compose.ui.platform.LocalContext @Composable fun ForceOrientation(orientation: ScreenOrientation) { - val activity = LocalContext.current as? ComponentActivity ?: return + val activity = LocalActivity.current ?: return val orientationFlags = when (orientation) { ScreenOrientation.PORTRAIT -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ScreenOrientation.LANDSCAPE -> ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE diff --git a/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarDataTest.kt b/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarDataTest.kt new file mode 100644 index 0000000000..6fe50e995b --- /dev/null +++ b/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarDataTest.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.libraries.designsystem.components.avatar + +import com.google.common.truth.Truth.assertThat +import org.junit.Test + +class AvatarDataTest { + @Test + fun `initial with text should get the first char, uppercased`() { + val data = AvatarData("id", "test", null, AvatarSize.InviteSender) + assertThat(data.initial).isEqualTo("T") + } + + @Test + fun `initial with leading whitespace should get the first non-whitespace char, uppercased`() { + val data = AvatarData("id", " test", null, AvatarSize.InviteSender) + assertThat(data.initial).isEqualTo("T") + } + + @Test + fun `initial with long emoji should get the full emoji`() { + val data = AvatarData("id", "\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08 Test", null, AvatarSize.InviteSender) + assertThat(data.initial).isEqualTo("\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08") + } + + @Test + fun `initial with short emoji should get the emoji`() { + val data = AvatarData("id", "✂ Test", null, AvatarSize.InviteSender) + assertThat(data.initial).isEqualTo("✂") + } + + @Test + fun `initial with a single letter should take that letter`() { + val data = AvatarData("id", "T", null, AvatarSize.InviteSender) + assertThat(data.initial).isEqualTo("T") + } +} diff --git a/libraries/eventformatter/impl/src/main/res/values-tr/translations.xml b/libraries/eventformatter/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..507804892e --- /dev/null +++ b/libraries/eventformatter/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,69 @@ + + + "(Profil fotoğrafı değiştirildi)" + "%1$s profil fotoğrafını değiştirdi" + "Profil fotoğrafını değiştirdin" + "%1$s üyeliğe düşürüldü" + "%1$s moderatörlüğe düşürüldü" + "%1$s görünen adını bundan %2$s şuna %3$s değiştirdi" + "Görünen adınızı bundan %1$s şuna %2$s değiştirdiniz" + "%1$s görünen adını kaldırdı (önceden %2$s)" + "Görünen adınızı kaldırdınız (önceden %1$s)" + "%1$s görünen adlarını şuna ayarla %2$s" + "Görünen adınız %1$s" + "%1$s yöneticiliğe terfi etti" + "%1$s moderatörlüğe terfi etti" + "%1$s odanın fotoğrafını değiştirdi" + "Odanın fotoğrafını değiştirdiniz" + "%1$s oda fotoğrafını kaldırdı" + "Oda fotoğrafını kaldırdınız" + "%1$syasaklandı%2$s" + "%1$s yasakladınız" + "%1$sodayı yarattı" + "Odayı sen yarattın" + "%1$s davet edildi %2$s" + "%1$s daveti kabul etti" + "Daveti kabul ettiniz" + "%1$s davet ettiniz" + "%1$s sizi davet etti" + "%1$sodaya katıldı" + "Odaya katıldınız" + "%1$s katılmak istiyor" + "%1$s, %2$s\'e erişim izni verdi" + "%1$s \'ın katılmasına izin verdiniz" + "Katılmayı talep ettiniz" + "%1$s, %2$s\'ın katılma isteğini reddetti" + "%1$s kullanıcısının katılma isteğini reddettiniz" + "%1$s katılma isteğinizi reddetti" + "%1$s artık katılmakla ilgilenmiyor" + "Katılma talebinizi iptal ettiniz" + "%1$sodadan ayrıldı" + "Odadan ayrıldın." + "%1$s Oda adını değiştirdi: %2$s" + "Odanın adını değiştridiniz: %1$s" + "%1$s Oda adını kaldırdı" + "Oda adını kaldırdınız" + "%1$s hiçbir değişiklik yapmadı" + "Hiçbir değişiklik yapmadınız" + "%1$s sabitlenmiş iletileri değiştirdi" + "Sabitlenmiş mesajları değiştirdiniz" + "%1$s bir mesaj sabitledi" + "Bir mesaj sabitlediniz" + "%1$s bir mesajın sabitlemesini kaldırdı" + "Bir mesajın sabitlemesini kaldırdınız" + "%1$sdaveti reddetti" + "Daveti reddettiniz" + "%1$skaldırıldı%2$s" + "%1$s kaldırdınız" + "%1$s odaya katılması için %2$s\'a davet gönderdi" + "Odaya katılması için %1$s\'a davet gönderdin" + "%1$s, %2$s\'nin odaya katılma davetini iptal etti" + "%1$s\'ın odaya katılma davetini iptal ettiniz" + "%1$s konuyu değiştirdi: %2$s" + "Konuyu değiştirdiniz: %1$s" + "%1$s oda konusunu kaldırdı" + "Oda konusunu kaldırdınız" + "%1$syasaklanmamış%2$s" + "%1$s yasağını kaldırdınız" + "%1$s üyeliğinde bilinmeyen bir değişiklik yaptı" + 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 cae7ee1bad..c19793fb8d 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 @@ -7,7 +7,9 @@ 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.MatrixPatterns import io.element.android.libraries.matrix.api.core.ProgressCallback import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId @@ -23,10 +25,9 @@ import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomInfo -import io.element.android.libraries.matrix.api.room.PendingRoom import io.element.android.libraries.matrix.api.room.RoomMembershipObserver +import io.element.android.libraries.matrix.api.room.RoomPreview import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias -import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.roomlist.RoomSummary @@ -53,7 +54,7 @@ interface MatrixClient : Closeable { val sessionCoroutineScope: CoroutineScope val ignoredUsersFlow: StateFlow> suspend fun getRoom(roomId: RoomId): MatrixRoom? - suspend fun getPendingRoom(roomId: RoomId): PendingRoom? + suspend fun getPendingRoom(roomId: RoomId): RoomPreview? suspend fun findDM(userId: UserId): RoomId? suspend fun ignoreUser(userId: UserId): Result suspend fun unignoreUser(userId: UserId): Result @@ -83,12 +84,11 @@ interface MatrixClient : Closeable { /** * Logout the user. - * Returns an optional URL. When the URL is there, it should be presented to the user after logout for - * Relying Party (RP) initiated logout on their account page. + * * @param userInitiated if false, the logout came from the HS, no request will be made and the session entry will be kept in the store. * @param ignoreSdkError if true, the SDK will ignore any error and delete the session data anyway. */ - suspend fun logout(userInitiated: Boolean, ignoreSdkError: Boolean): String? + suspend fun logout(userInitiated: Boolean, ignoreSdkError: Boolean) /** * Retrieve the user profile, will also eventually emit a new value to [userProfile]. @@ -144,7 +144,11 @@ interface MatrixClient : Closeable { * Execute generic GET requests through the SDKs internal HTTP client. */ suspend fun getUrl(url: String): Result - suspend fun getRoomPreviewInfo(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result + + /** + * Get a room preview for a given room ID or alias. This is especially useful for rooms that the user is not a member of, or hasn't joined yet. + */ + suspend fun getRoomPreview(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result /** * Returns the currently used sliding sync version. @@ -172,11 +176,12 @@ fun MatrixClient.getRoomInfoFlow(roomIdOrAlias: RoomIdOrAlias): Flow { - return runCatching { - RoomAlias("#$name:${userIdServerName()}") - } +fun MatrixClient.roomAliasFromName(name: String): RoomAlias? { + return name.takeIf { it.isNotEmpty() } + ?.let { "#$it:${userIdServerName()}" } + ?.takeIf { MatrixPatterns.isRoomAlias(it) } + ?.let { tryOrNull { RoomAlias(it) } } } 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 bc009d3ee8..a1a4eb9b1c 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 @@ -66,6 +66,15 @@ interface EncryptionService { * Remember this identity, ensuring it does not result in a pin violation. */ suspend fun pinUserIdentity(userId: UserId): Result + + /** + * Withdraw the verification for that user (also pin the identity). + * + * Useful when a user that was verified is not anymore, but it is not + * possible to re-verify immediately. This allows to restore communication by reverting the + * user trust from verified to TOFU verified. + */ + suspend fun withdrawVerification(userId: UserId): Result } /** diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/identity/IdentityState.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/identity/IdentityState.kt index d05b8618e3..d565c47336 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/identity/IdentityState.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/identity/IdentityState.kt @@ -32,3 +32,5 @@ enum class IdentityState { */ VerificationViolation, } + +fun IdentityState.isAViolation() = this == IdentityState.PinViolation || this == IdentityState.VerificationViolation diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ClientException.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ClientException.kt index fcafe08569..eba1654714 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ClientException.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ClientException.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.matrix.api.exception sealed class ClientException(message: String) : Exception(message) { class Generic(message: String) : ClientException(message) + class MatrixApi(val kind: ErrorKind, val code: String, message: String) : ClientException(message) class Other(message: String) : ClientException(message) } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ErrorKind.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ErrorKind.kt new file mode 100644 index 0000000000..8ca7ce5579 --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/exception/ErrorKind.kt @@ -0,0 +1,457 @@ +/* + * 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.exception + +sealed interface ErrorKind { + /** + * M_BAD_ALIAS + * + * One or more room aliases within the m.room.canonical_alias event do + * not point to the room ID for which the state event is to be sent to. + * + * room aliases: https://spec.matrix.org/latest/client-server-api/#room-aliases + */ + data object BadAlias : ErrorKind + + /** + * M_BAD_JSON + * + * The request contained valid JSON, but it was malformed in some way, e.g. + * missing required keys, invalid values for keys. + */ + data object BadJson : ErrorKind + + /** + * M_BAD_STATE + * + * The state change requested cannot be performed, such as attempting to + * unban a user who is not banned. + */ + data object BadState : ErrorKind + + /** + * M_BAD_STATUS + * + * The application service returned a bad status. + */ + data class BadStatus( + /** + * The HTTP status code of the response. + */ + val status: Int?, + /** + * The body of the response. + */ + val body: String? + ) : ErrorKind + + /** + * M_CANNOT_LEAVE_SERVER_NOTICE_ROOM + * + * The user is unable to reject an invite to join the server notices + * room. + * + * server notices: https://spec.matrix.org/latest/client-server-api/#server-notices + */ + data object CannotLeaveServerNoticeRoom : ErrorKind + + /** + * M_CANNOT_OVERWRITE_MEDIA + * + * The create_content_async endpoint was called with a media ID that + * already has content. + * + */ + data object CannotOverwriteMedia : ErrorKind + + /** + * M_CAPTCHA_INVALID + * + * The Captcha provided did not match what was expected. + */ + data object CaptchaInvalid : ErrorKind + + /** + * M_CAPTCHA_NEEDED + * + * A Captcha is required to complete the request. + */ + data object CaptchaNeeded : ErrorKind + + /** + * M_CONNECTION_FAILED + * + * The connection to the application service failed. + */ + data object ConnectionFailed : ErrorKind + + /** + * M_CONNECTION_TIMEOUT + * + * The connection to the application service timed out. + */ + data object ConnectionTimeout : ErrorKind + + /** + * M_DUPLICATE_ANNOTATION + * + * The request is an attempt to send a duplicate annotation. + * + * duplicate annotation: https://spec.matrix.org/latest/client-server-api/#avoiding-duplicate-annotations + */ + data object DuplicateAnnotation : ErrorKind + + /** + * M_EXCLUSIVE + * + * The resource being requested is reserved by an application service, or + * the application service making the request has not created the + * resource. + */ + data object Exclusive : ErrorKind + + /** + * M_FORBIDDEN + * + * Forbidden access, e.g. joining a room without permission, failed login. + */ + data object Forbidden : ErrorKind + + /** + * M_GUEST_ACCESS_FORBIDDEN + * + * The room or resource does not permit guests to access it. + * + * guests: https://spec.matrix.org/latest/client-server-api/#guest-access + */ + data object GuestAccessForbidden : ErrorKind + + /** + * M_INCOMPATIBLE_ROOM_VERSION + * + * The client attempted to join a room that has a version the server does + * not support. + */ + data class IncompatibleRoomVersion( + /** + * The room's version. + */ + val roomVersion: String + ) : ErrorKind + + /** + * M_INVALID_PARAM + * + * A parameter that was specified has the wrong value. For example, the + * server expected an integer and instead received a string. + */ + data object InvalidParam : ErrorKind + + /** + * M_INVALID_ROOM_STATE + * + * The initial state implied by the parameters to the create_room + * request is invalid, e.g. the user's power_level is set below that + * necessary to set the room name. + * + */ + data object InvalidRoomState : ErrorKind + + /** + * M_INVALID_USERNAME + * + * The desired user name is not valid. + */ + data object InvalidUsername : ErrorKind + + /** + * M_LIMIT_EXCEEDED + * + * The request has been refused due to rate limiting: too many requests + * have been sent in a short period of time. + * + * rate limiting: https://spec.matrix.org/latest/client-server-api/#rate-limiting + */ + data class LimitExceeded( + /** + * How long a client should wait before they can try again. + */ + val retryAfterMs: Long? + ) : ErrorKind + + /** + * M_MISSING_PARAM + * + * A required parameter was missing from the request. + */ + data object MissingParam : ErrorKind + + /** + * M_MISSING_TOKEN + * + * No access token was specified for the request, but one is required. + * + * access token: https://spec.matrix.org/latest/client-server-api/#client-authentication + */ + data object MissingToken : ErrorKind + + /** + * M_NOT_FOUND + * + * No resource was found for this request. + */ + data object NotFound : ErrorKind + + /** + * M_NOT_JSON + * + * The request did not contain valid JSON. + */ + data object NotJson : ErrorKind + + /** + * M_NOT_YET_UPLOADED + * + * An mxc URI generated was used and the content is not yet available. + * + */ + data object NotYetUploaded : ErrorKind + + /** + * M_RESOURCE_LIMIT_EXCEEDED + * + * The request cannot be completed because the homeserver has reached a + * resource limit imposed on it. For example, a homeserver held in a + * shared hosting environment may reach a resource limit if it starts + * using too much memory or disk space. + */ + data class ResourceLimitExceeded( + /** + * A URI giving a contact method for the server administrator. + */ + val adminContact: String + ) : ErrorKind + + /** + * M_ROOM_IN_USE + * + * The room alias specified in the request is already taken. + * + * room alias: https://spec.matrix.org/latest/client-server-api/#room-aliases + */ + data object RoomInUse : ErrorKind + + /** + * M_SERVER_NOT_TRUSTED + * + * The client's request used a third-party server, e.g. identity server, + * that this server does not trust. + */ + data object ServerNotTrusted : ErrorKind + + /** + * M_THREEPID_AUTH_FAILED + * + * Authentication could not be performed on the third-party identifier. + * + * third-party identifier: https://spec.matrix.org/latest/client-server-api/#adding-account-administrative-contact-information + */ + data object ThreepidAuthFailed : ErrorKind + + /** + * M_THREEPID_DENIED + * + * The server does not permit this third-party identifier. This may + * happen if the server only permits, for example, email addresses from + * a particular domain. + * + * third-party identifier: https://spec.matrix.org/latest/client-server-api/#adding-account-administrative-contact-information + */ + data object ThreepidDenied : ErrorKind + + /** + * M_THREEPID_IN_USE + * + * The third-party identifier is already in use by another user. + * + * third-party identifier: https://spec.matrix.org/latest/client-server-api/#adding-account-administrative-contact-information + */ + data object ThreepidInUse : ErrorKind + + /** + * M_THREEPID_MEDIUM_NOT_SUPPORTED + * + * The homeserver does not support adding a third-party identifier of the + * given medium. + * + * third-party identifier: https://spec.matrix.org/latest/client-server-api/#adding-account-administrative-contact-information + */ + data object ThreepidMediumNotSupported : ErrorKind + + /** + * M_THREEPID_NOT_FOUND + * + * No account matching the given third-party identifier could be found. + * + * third-party identifier: https://spec.matrix.org/latest/client-server-api/#adding-account-administrative-contact-information + */ + data object ThreepidNotFound : ErrorKind + + /** + * M_TOO_LARGE + * + * The request or entity was too large. + */ + data object TooLarge : ErrorKind + + /** + * M_UNABLE_TO_AUTHORISE_JOIN + * + * The room is restricted and none of the conditions can be validated by + * the homeserver. This can happen if the homeserver does not know + * about any of the rooms listed as conditions, for example. + * + * restricted: https://spec.matrix.org/latest/client-server-api/#restricted-rooms + */ + data object UnableToAuthorizeJoin : ErrorKind + + /** + * M_UNABLE_TO_GRANT_JOIN + * + * A different server should be attempted for the join. This is typically + * because the resident server can see that the joining user satisfies + * one or more conditions, such as in the case of restricted rooms, + * but the resident server would be unable to meet the authorization + * rules. + * + * restricted rooms: https://spec.matrix.org/latest/client-server-api/#restricted-rooms + */ + data object UnableToGrantJoin : ErrorKind + + /** + * M_UNAUTHORIZED + * + * The request was not correctly authorized. Usually due to login failures. + */ + data object Unauthorized : ErrorKind + + /** + * M_UNKNOWN + * + * An unknown error has occurred. + */ + data object Unknown : ErrorKind + + /** + * M_UNKNOWN_TOKEN + * + * The access or refresh token specified was not recognized. + * + * access or refresh token: https://spec.matrix.org/latest/client-server-api/#client-authentication + */ + data class UnknownToken( + /** + * If this is true, the client is in a "soft logout" state, i.e. + * the server requires re-authentication but the session is not + * invalidated. The client can acquire a new access token by + * specifying the device ID it is already using to the login API. + * + * soft logout: https://spec.matrix.org/latest/client-server-api/#soft-logout + */ + val softLogout: Boolean + ) : ErrorKind + + /** + * M_UNRECOGNIZED + * + * The server did not understand the request. + * + * This is expected to be returned with a 404 HTTP status code if the + * endpoint is not implemented or a 405 HTTP status code if the + * endpoint is implemented, but the incorrect HTTP method is used. + */ + data object Unrecognized : ErrorKind + + /** + * M_UNSUPPORTED_ROOM_VERSION + * + * The request to create_room used a room version that the server does + * not support. + * + */ + data object UnsupportedRoomVersion : ErrorKind + + /** + * M_URL_NOT_SET + * + * The application service doesn't have a URL configured. + */ + data object UrlNotSet : ErrorKind + + /** + * M_USER_DEACTIVATED + * + * The user ID associated with the request has been deactivated. + */ + data object UserDeactivated : ErrorKind + + /** + * M_USER_IN_USE + * + * The desired user ID is already taken. + */ + data object UserInUse : ErrorKind + + /** + * M_USER_LOCKED + * + * The account has been locked and cannot be used at this time. + * + * locked: https://spec.matrix.org/latest/client-server-api/#account-locking + */ + data object UserLocked : ErrorKind + + /** + * M_USER_SUSPENDED + * + * The account has been suspended and can only be used for limited + * actions at this time. + * + * suspended: https://spec.matrix.org/latest/client-server-api/#account-suspension + */ + data object UserSuspended : ErrorKind + + /** + * M_WEAK_PASSWORD + * + * The password was rejected by the server for being too weak. + * + * rejected: https://spec.matrix.org/latest/client-server-api/#notes-on-password-management + */ + data object WeakPassword : ErrorKind + + /** + * M_WRONG_ROOM_KEYS_VERSION + * + * The version of the room keys backup provided in the request does not + * match the current backup version. + * + * room keys backup: https://spec.matrix.org/latest/client-server-api/#server-side-key-backups + */ + data class WrongRoomKeysVersion( + /** + * The currently active backup version. + */ + val currentVersion: String? + ) : ErrorKind + + /** + * A custom API error. + */ + data class Custom(val errcode: String) : ErrorKind +} diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CreateTimelineParams.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CreateTimelineParams.kt new file mode 100644 index 0000000000..0bcfb0bf54 --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CreateTimelineParams.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.matrix.api.room + +import io.element.android.libraries.matrix.api.core.EventId + +sealed interface CreateTimelineParams { + data class Focused(val focusedEventId: EventId) : CreateTimelineParams + data object MediaOnly : CreateTimelineParams + data class MediaOnlyFocused(val focusedEventId: EventId) : CreateTimelineParams + data object PinnedOnly : CreateTimelineParams +} diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt index 1d8d151716..41b25c0dc0 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt @@ -109,21 +109,12 @@ interface MatrixRoom : Closeable { val liveTimeline: Timeline /** - * Create a new timeline, focused on the provided Event. - * Should not be used directly, see `TimelineController` to manage the various timelines. + * Create a new timeline. + * @param createTimelineParams contains parameters about how to filter the timeline. Will also configure the date separators. */ - suspend fun timelineFocusedOnEvent(eventId: EventId): Result - - /** - * Create a new timeline for the pinned events of the room. - */ - suspend fun pinnedEventsTimeline(): Result - - /** - * Create a new timeline for the media events of the room. - * @param eventId The event to focus on, if any. - */ - suspend fun mediaTimeline(eventId: EventId?): Result + suspend fun createTimeline( + createTimelineParams: CreateTimelineParams, + ): Result fun destroy() diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomInfo.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomInfo.kt index ff525c403d..32cc4646c0 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomInfo.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomInfo.kt @@ -28,7 +28,6 @@ data class MatrixRoomInfo( val topic: String?, val avatarUrl: String?, val isDirect: Boolean, - val isPublic: Boolean, val joinRule: JoinRule?, val isSpace: Boolean, val isTombstoned: Boolean, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/PendingRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/PendingRoom.kt deleted file mode 100644 index 3c7a6c6fe0..0000000000 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/PendingRoom.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.matrix.api.room - -import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.core.SessionId - -/** A reference to a room the current user has knocked to or has been invited to, with the ability to leave the room. */ -interface PendingRoom : AutoCloseable { - val sessionId: SessionId - val roomId: RoomId - - /** Leave the room ie.decline invite or cancel knock. */ - suspend fun leave(): Result -} 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 758136c3a7..00da7e4137 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 @@ -20,6 +20,7 @@ data class RoomMember( val normalizedPowerLevel: Long, val isIgnored: Boolean, val role: Role, + val membershipChangeReason: String?, ) { /** * Role of the RoomMember, based on its [powerLevel]. diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipDetails.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipDetails.kt new file mode 100644 index 0000000000..20d7b0e2ad --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMembershipDetails.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.libraries.matrix.api.room + +/** + * Room membership details for the current user and the sender of the membership event. + * + * It also includes the reason the current user's membership changed, if any. + */ +data class RoomMembershipDetails( + val currentUserMember: RoomMember, + val senderMember: RoomMember?, +) { + val membershipChangeReason: String? = currentUserMember.membershipChangeReason +} diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomPreview.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomPreview.kt new file mode 100644 index 0000000000..6dd8ac0992 --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomPreview.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.api.room + +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo + +/** A reference to a room either invited, knocked or banned. */ +interface RoomPreview : AutoCloseable { + val sessionId: SessionId + val info: RoomPreviewInfo + + /** Leave the room ie.decline invite or cancel knock. */ + suspend fun leave(): Result + + /** + * Forget the room if we had access to it, and it was left or banned. + */ + suspend fun forget(): Result + + /** + * Get the membership details of the user in the room, as well as from the user who sent the `m.room.member` event. + */ + suspend fun membershipDetails(): Result +} diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt index 973ecc74e2..7755d97d8c 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt @@ -12,21 +12,27 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId /** - * Try to find an existing DM with the given user, or create one if none exists. + * Try to find an existing DM with the given user, or create one if none exists and [createIfDmDoesNotExist] is true. */ -suspend fun MatrixClient.startDM(userId: UserId): StartDMResult { +suspend fun MatrixClient.startDM( + userId: UserId, + createIfDmDoesNotExist: Boolean, +): StartDMResult { val existingDM = findDM(userId) return if (existingDM != null) { StartDMResult.Success(existingDM, isNew = false) - } else { + } else if (createIfDmDoesNotExist) { createDM(userId).fold( { StartDMResult.Success(it, isNew = true) }, { StartDMResult.Failure(it) } ) + } else { + StartDMResult.DmDoesNotExist } } sealed interface StartDMResult { data class Success(val roomId: RoomId, val isNew: Boolean) : StartDMResult + data object DmDoesNotExist : StartDMResult data class Failure(val throwable: Throwable) : StartDMResult } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/preview/RoomPreviewInfo.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/preview/RoomPreviewInfo.kt index e256cf7d0e..b00d59a3f6 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/preview/RoomPreviewInfo.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/preview/RoomPreviewInfo.kt @@ -9,7 +9,9 @@ package io.element.android.libraries.matrix.api.room.preview 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.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomType +import io.element.android.libraries.matrix.api.room.join.JoinRule data class RoomPreviewInfo( /** The room id for this room. */ @@ -28,12 +30,8 @@ data class RoomPreviewInfo( val roomType: RoomType, /** Is the history world-readable for this room? */ val isHistoryWorldReadable: Boolean, - /** Is the room joined by the current user? */ - val isJoined: Boolean, - /** Is the current user invited to this room? */ - val isInvited: Boolean, - /** is the join rule public for this room? */ - val isPublic: Boolean, - /** Can we knock (or restricted-knock) to this room? */ - val canKnock: Boolean, + /** the membership of the current user. */ + val membership: CurrentUserMembership?, + /** The room's join rule. */ + val joinRule: JoinRule, ) 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 8bc6976924..9ba2655c76 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 @@ -13,6 +13,7 @@ import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.childScope import io.element.android.libraries.core.data.tryOrNull +import io.element.android.libraries.core.extensions.mapFailure 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 @@ -32,12 +33,11 @@ import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.MatrixRoom -import io.element.android.libraries.matrix.api.room.PendingRoom import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMembershipObserver +import io.element.android.libraries.matrix.api.room.RoomPreview import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias import io.element.android.libraries.matrix.api.room.join.JoinRule -import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.roomlist.RoomListService @@ -50,6 +50,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.impl.core.toProgressWatcher import io.element.android.libraries.matrix.impl.encryption.RustEncryptionService +import io.element.android.libraries.matrix.impl.exception.mapClientException import io.element.android.libraries.matrix.impl.media.RustMediaLoader import io.element.android.libraries.matrix.impl.notification.RustNotificationService import io.element.android.libraries.matrix.impl.notificationsettings.RustNotificationSettingsService @@ -58,9 +59,9 @@ import io.element.android.libraries.matrix.impl.pushers.RustPushersService import io.element.android.libraries.matrix.impl.room.RoomContentForwarder import io.element.android.libraries.matrix.impl.room.RoomSyncSubscriber import io.element.android.libraries.matrix.impl.room.RustRoomFactory +import io.element.android.libraries.matrix.impl.room.RustRoomPreview import io.element.android.libraries.matrix.impl.room.TimelineEventTypeFilterFactory import io.element.android.libraries.matrix.impl.room.join.map -import io.element.android.libraries.matrix.impl.room.preview.RoomPreviewInfoMapper import io.element.android.libraries.matrix.impl.roomdirectory.RustRoomDirectoryService import io.element.android.libraries.matrix.impl.roomdirectory.map import io.element.android.libraries.matrix.impl.roomlist.RoomListFactory @@ -261,8 +262,8 @@ class RustMatrixClient( return roomFactory.create(roomId) } - override suspend fun getPendingRoom(roomId: RoomId): PendingRoom? { - return roomFactory.createPendingRoom(roomId) + override suspend fun getPendingRoom(roomId: RoomId): RoomPreview? { + return roomFactory.createRoomPreview(roomId) } /** @@ -393,7 +394,7 @@ class RustMatrixClient( null } } - } + }.mapFailure { it.mapClientException() } override suspend fun joinRoomByIdOrAlias(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result = withContext(sessionDispatcher) { runCatching { @@ -407,7 +408,7 @@ class RustMatrixClient( Timber.e(e, "Timeout waiting for the room to be available in the room list") null } - } + }.mapFailure { it.mapClientException() } } override suspend fun knockRoom(roomIdOrAlias: RoomIdOrAlias, message: String, serverNames: List): Result = withContext( @@ -421,7 +422,7 @@ class RustMatrixClient( Timber.e(e, "Timeout waiting for the room to be available in the room list") null } - } + }.mapFailure { it.mapClientException() } } override suspend fun trackRecentlyVisitedRoom(roomId: RoomId): Result = withContext(sessionDispatcher) { @@ -448,15 +449,14 @@ class RustMatrixClient( } } - override suspend fun getRoomPreviewInfo(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result = withContext(sessionDispatcher) { + override suspend fun getRoomPreview(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result = withContext(sessionDispatcher) { runCatching { - when (roomIdOrAlias) { + val roomPreview = when (roomIdOrAlias) { is RoomIdOrAlias.Alias -> innerClient.getRoomPreviewFromRoomAlias(roomIdOrAlias.roomAlias.value) is RoomIdOrAlias.Id -> innerClient.getRoomPreviewFromRoomId(roomIdOrAlias.roomId.value, serverNames) - }.use { roomPreview -> - RoomPreviewInfoMapper.map(roomPreview.info()) } - } + RustRoomPreview(sessionId, roomPreview, roomMembershipObserver) + }.mapFailure { it.mapClientException() } } override fun syncService(): SyncService = rustSyncService @@ -493,15 +493,15 @@ class RustMatrixClient( deleteSessionDirectory(deleteCryptoDb = false) } - override suspend fun logout(userInitiated: Boolean, ignoreSdkError: Boolean): String? { - var result: String? = null + override suspend fun logout(userInitiated: Boolean, ignoreSdkError: Boolean) { + sessionCoroutineScope.cancel() // Remove current delegate so we don't receive an auth error clientDelegateTaskHandle?.cancelAndDestroy() clientDelegateTaskHandle = null withContext(sessionDispatcher) { if (userInitiated) { try { - result = innerClient.logout() + innerClient.logout() } catch (failure: Throwable) { if (ignoreSdkError) { Timber.e(failure, "Fail to call logout on HS. Still delete local files.") @@ -520,7 +520,6 @@ class RustMatrixClient( sessionStore.removeSession(sessionId.value) } } - return result } override fun canDeactivateAccount(): Boolean { 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 48e1296792..deca69e1e9 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 @@ -129,10 +129,8 @@ class RustMatrixClientFactory @Inject constructor( // Apply sliding sync version settings when (slidingSyncType) { ClientBuilderSlidingSync.Restored -> this - is ClientBuilderSlidingSync.CustomProxy -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.Proxy(slidingSyncType.url)) - ClientBuilderSlidingSync.Discovered -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.DiscoverProxy) - ClientBuilderSlidingSync.Simplified -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.DiscoverNative) - ClientBuilderSlidingSync.ForcedSimplified -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.Native) + ClientBuilderSlidingSync.Discovered -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.DISCOVER_NATIVE) + ClientBuilderSlidingSync.Native -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.NATIVE) } } .run { @@ -143,21 +141,14 @@ class RustMatrixClientFactory @Inject constructor( } sealed interface ClientBuilderSlidingSync { - // The proxy is set by the user. - data class CustomProxy(val url: String) : ClientBuilderSlidingSync - // The proxy will be supplied when restoring the Session. data object Restored : ClientBuilderSlidingSync - // A proxy must be discovered whilst building the session. + // A Native Sliding Sync instance must be discovered whilst building the session. data object Discovered : ClientBuilderSlidingSync - // Use Simplified Sliding Sync. - data object Simplified : ClientBuilderSlidingSync - - // Force using Simplified Sliding Sync. - // TODO allow the user to select between proxy, simplified or force simplified in developer options. - data object ForcedSimplified : ClientBuilderSlidingSync + // Force using Native Sliding Sync. + data object Native : ClientBuilderSlidingSync } private fun SessionData.toSession() = Session( @@ -166,6 +157,6 @@ private fun SessionData.toSession() = Session( userId = userId, deviceId = deviceId, homeserverUrl = homeserverUrl, - slidingSyncVersion = slidingSyncProxy?.let(SlidingSyncVersion::Proxy) ?: SlidingSyncVersion.Native, + slidingSyncVersion = SlidingSyncVersion.NATIVE, oidcData = oidcData, ) 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 54808fdb0e..0a4b136492 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 @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.impl.auth import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.appconfig.AuthenticationConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.di.AppScope @@ -32,7 +31,6 @@ import io.element.android.libraries.matrix.impl.keys.PassphraseGenerator import io.element.android.libraries.matrix.impl.mapper.toSessionData import io.element.android.libraries.matrix.impl.paths.SessionPaths import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory -import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.sessionstorage.api.LoggedInState import io.element.android.libraries.sessionstorage.api.LoginType import io.element.android.libraries.sessionstorage.api.SessionStore @@ -40,10 +38,8 @@ import kotlinx.coroutines.CancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.Client -import org.matrix.rustcomponents.sdk.ClientBuildException import org.matrix.rustcomponents.sdk.ClientBuilder import org.matrix.rustcomponents.sdk.HumanQrLoginException import org.matrix.rustcomponents.sdk.OidcConfiguration @@ -64,7 +60,6 @@ class RustMatrixAuthenticationService @Inject constructor( private val rustMatrixClientFactory: RustMatrixClientFactory, private val passphraseGenerator: PassphraseGenerator, private val oidcConfigurationProvider: OidcConfigurationProvider, - private val appPreferencesStore: AppPreferencesStore, ) : MatrixAuthenticationService { // Passphrase which will be used for new sessions. Existing sessions will use the passphrase // stored in the SessionData. @@ -288,28 +283,12 @@ class RustMatrixAuthenticationService @Inject constructor( sessionPaths: SessionPaths, config: suspend ClientBuilder.() -> ClientBuilder, ): Client { - val slidingSyncType = getSlidingSyncType() - if (slidingSyncType is ClientBuilderSlidingSync.Simplified) { - Timber.d("Creating client with simplified sliding sync") - try { - return rustMatrixClientFactory - .getBaseClientBuilder( - sessionPaths = sessionPaths, - passphrase = pendingPassphrase, - slidingSyncType = slidingSyncType, - ) - .config() - .build() - } catch (e: ClientBuildException.SlidingSyncVersion) { - Timber.e(e, "Failed to create client with simplified sliding sync, trying with Proxy now") - } - } - Timber.d("Creating client with Proxy sliding sync") + Timber.d("Creating client with simplified sliding sync") return rustMatrixClientFactory .getBaseClientBuilder( sessionPaths = sessionPaths, passphrase = pendingPassphrase, - slidingSyncType = getSlidingSyncProxy(), + slidingSyncType = ClientBuilderSlidingSync.Discovered, ) .config() .build() @@ -322,43 +301,17 @@ class RustMatrixAuthenticationService @Inject constructor( oidcConfiguration: OidcConfiguration, progressListener: QrLoginProgressListener, ): Client { - val slidingSyncType = getSlidingSyncType() - if (slidingSyncType is ClientBuilderSlidingSync.Simplified) { - Timber.d("Creating client for QR Code login with simplified sliding sync") - try { - return rustMatrixClientFactory - .getBaseClientBuilder( - sessionPaths = sessionPaths, - passphrase = pendingPassphrase, - slidingSyncType = slidingSyncType, - ) - .passphrase(passphrase) - .buildWithQrCode(qrCodeData, oidcConfiguration, progressListener) - } catch (e: HumanQrLoginException.SlidingSyncNotAvailable) { - Timber.e(e, "Failed to create client with simplified sliding sync, trying with Proxy now") - } - } - Timber.d("Creating client for QR Code login with Proxy sliding sync") + Timber.d("Creating client for QR Code login with simplified sliding sync") return rustMatrixClientFactory .getBaseClientBuilder( sessionPaths = sessionPaths, passphrase = pendingPassphrase, - slidingSyncType = getSlidingSyncProxy(), + slidingSyncType = ClientBuilderSlidingSync.Discovered, ) .passphrase(passphrase) .buildWithQrCode(qrCodeData, oidcConfiguration, progressListener) } - private suspend fun getSlidingSyncType(nativeSlidingSyncFailed: Boolean = false) = when { - appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first() && !nativeSlidingSyncFailed -> ClientBuilderSlidingSync.Simplified - else -> getSlidingSyncProxy() - } - - private fun getSlidingSyncProxy() = when { - AuthenticationConfig.SLIDING_SYNC_PROXY_URL != null -> ClientBuilderSlidingSync.CustomProxy(AuthenticationConfig.SLIDING_SYNC_PROXY_URL!!) - else -> ClientBuilderSlidingSync.Discovered - } - private fun clear() { currentClient?.close() currentClient = null 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 3e0e6571d4..2730d93c87 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 @@ -209,6 +209,10 @@ internal class RustEncryptionService( getUserIdentity(userId).pin() } + override suspend fun withdrawVerification(userId: UserId): Result = runCatching { + getUserIdentity(userId).withdrawVerification() + } + private suspend fun getUserIdentity(userId: UserId): UserIdentity { return service.userIdentity( userId = userId.value, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ClientException.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ClientException.kt index d8bc9ccff7..b721a3211c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ClientException.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ClientException.kt @@ -15,6 +15,11 @@ fun Throwable.mapClientException(): ClientException { is RustClientException -> { when (this) { is RustClientException.Generic -> ClientException.Generic(msg) + is RustClientException.MatrixApi -> ClientException.MatrixApi( + kind = kind.map(), + code = code, + message = msg + ) } } else -> ClientException.Other(message ?: "Unknown error") diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ErrorKind.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ErrorKind.kt new file mode 100644 index 0000000000..12b15b6465 --- /dev/null +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/exception/ErrorKind.kt @@ -0,0 +1,63 @@ +/* + * 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.exception +import io.element.android.libraries.matrix.api.exception.ErrorKind +import org.matrix.rustcomponents.sdk.ErrorKind as RustErrorKind + +fun RustErrorKind.map(): ErrorKind { + return when (this) { + RustErrorKind.BadAlias -> ErrorKind.BadAlias + RustErrorKind.BadJson -> ErrorKind.BadJson + RustErrorKind.BadState -> ErrorKind.BadState + is RustErrorKind.BadStatus -> ErrorKind.BadStatus(status?.toInt(), body) + RustErrorKind.CannotLeaveServerNoticeRoom -> ErrorKind.CannotLeaveServerNoticeRoom + RustErrorKind.CannotOverwriteMedia -> ErrorKind.CannotOverwriteMedia + RustErrorKind.CaptchaInvalid -> ErrorKind.CaptchaInvalid + RustErrorKind.CaptchaNeeded -> ErrorKind.CaptchaNeeded + RustErrorKind.ConnectionFailed -> ErrorKind.ConnectionFailed + RustErrorKind.ConnectionTimeout -> ErrorKind.ConnectionTimeout + is RustErrorKind.Custom -> ErrorKind.Custom(errcode) + RustErrorKind.DuplicateAnnotation -> ErrorKind.DuplicateAnnotation + RustErrorKind.Exclusive -> ErrorKind.Exclusive + RustErrorKind.Forbidden -> ErrorKind.Forbidden + RustErrorKind.GuestAccessForbidden -> ErrorKind.GuestAccessForbidden + is RustErrorKind.IncompatibleRoomVersion -> ErrorKind.IncompatibleRoomVersion(roomVersion) + RustErrorKind.InvalidParam -> ErrorKind.InvalidParam + RustErrorKind.InvalidRoomState -> ErrorKind.InvalidRoomState + RustErrorKind.InvalidUsername -> ErrorKind.InvalidUsername + is RustErrorKind.LimitExceeded -> ErrorKind.LimitExceeded(retryAfterMs?.toLong()) + RustErrorKind.MissingParam -> ErrorKind.MissingParam + RustErrorKind.MissingToken -> ErrorKind.MissingToken + RustErrorKind.NotFound -> ErrorKind.NotFound + RustErrorKind.NotJson -> ErrorKind.NotJson + RustErrorKind.NotYetUploaded -> ErrorKind.NotYetUploaded + is RustErrorKind.ResourceLimitExceeded -> ErrorKind.ResourceLimitExceeded(adminContact) + RustErrorKind.RoomInUse -> ErrorKind.RoomInUse + RustErrorKind.ServerNotTrusted -> ErrorKind.ServerNotTrusted + RustErrorKind.ThreepidAuthFailed -> ErrorKind.ThreepidAuthFailed + RustErrorKind.ThreepidDenied -> ErrorKind.ThreepidDenied + RustErrorKind.ThreepidInUse -> ErrorKind.ThreepidInUse + RustErrorKind.ThreepidMediumNotSupported -> ErrorKind.ThreepidMediumNotSupported + RustErrorKind.ThreepidNotFound -> ErrorKind.ThreepidNotFound + RustErrorKind.TooLarge -> ErrorKind.TooLarge + RustErrorKind.UnableToAuthorizeJoin -> ErrorKind.UnableToAuthorizeJoin + RustErrorKind.UnableToGrantJoin -> ErrorKind.UnableToGrantJoin + RustErrorKind.Unauthorized -> ErrorKind.Unauthorized + RustErrorKind.Unknown -> ErrorKind.Unknown + is RustErrorKind.UnknownToken -> ErrorKind.UnknownToken(softLogout) + RustErrorKind.Unrecognized -> ErrorKind.Unrecognized + RustErrorKind.UnsupportedRoomVersion -> ErrorKind.UnsupportedRoomVersion + RustErrorKind.UrlNotSet -> ErrorKind.UrlNotSet + RustErrorKind.UserDeactivated -> ErrorKind.UserDeactivated + RustErrorKind.UserInUse -> ErrorKind.UserInUse + RustErrorKind.UserLocked -> ErrorKind.UserLocked + RustErrorKind.UserSuspended -> ErrorKind.UserSuspended + RustErrorKind.WeakPassword -> ErrorKind.WeakPassword + is RustErrorKind.WrongRoomKeysVersion -> ErrorKind.WrongRoomKeysVersion(currentVersion) + } +} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt index f90b334f05..1d45c47470 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt @@ -12,7 +12,6 @@ import io.element.android.libraries.matrix.impl.paths.SessionPaths import io.element.android.libraries.sessionstorage.api.LoginType import io.element.android.libraries.sessionstorage.api.SessionData import org.matrix.rustcomponents.sdk.Session -import org.matrix.rustcomponents.sdk.SlidingSyncVersion import java.util.Date internal fun Session.toSessionData( @@ -28,7 +27,7 @@ internal fun Session.toSessionData( refreshToken = refreshToken, homeserverUrl = homeserverUrl ?: this.homeserverUrl, oidcData = oidcData, - slidingSyncProxy = (slidingSyncVersion as? SlidingSyncVersion.Proxy)?.url, + slidingSyncProxy = null, loginTimestamp = Date(), isTokenValid = isTokenValid, loginType = loginType, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt index 0be4ccbc67..5b39595e20 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt @@ -37,7 +37,6 @@ class MatrixRoomInfoMapper { topic = it.topic, avatarUrl = it.avatarUrl, isDirect = it.isDirect, - isPublic = it.isPublic, joinRule = it.joinRule?.map(), isSpace = it.isSpace, isTombstoned = it.isTombstoned, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt index ef570f5ae3..87c61ca17c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt @@ -28,6 +28,7 @@ import io.element.android.libraries.matrix.api.media.MediaUploadHandler import io.element.android.libraries.matrix.api.media.VideoInfo import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.poll.PollKind +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.IntentionalMention import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomInfo @@ -214,80 +215,81 @@ class RustMatrixRoom( override suspend fun subscribeToSync() = roomSyncSubscriber.subscribe(roomId) - override suspend fun timelineFocusedOnEvent(eventId: EventId): Result = withContext(roomDispatcher) { - runCatching { - innerRoom.timelineWithConfiguration( - configuration = TimelineConfiguration( - focus = TimelineFocus.Event( - eventId = eventId.value, - numContextEvents = 50u, - ), - allowedMessageTypes = AllowedMessageTypes.All, - internalIdPrefix = "focus_$eventId", - dateDividerMode = DateDividerMode.DAILY, - ) - ).let { inner -> - createTimeline(inner, mode = Timeline.Mode.FOCUSED_ON_EVENT) - } - }.mapFailure { - it.toFocusEventException() - }.onFailure { - if (it is CancellationException) { - throw it - } - } - } - - override suspend fun pinnedEventsTimeline(): Result = withContext(roomDispatcher) { - runCatching { - innerRoom.timelineWithConfiguration( - configuration = TimelineConfiguration( - focus = TimelineFocus.PinnedEvents( - maxEventsToLoad = 100u, - maxConcurrentRequests = 10u, - ), - allowedMessageTypes = AllowedMessageTypes.All, - internalIdPrefix = "pinned_events", - dateDividerMode = DateDividerMode.DAILY, - ) - ).let { inner -> - createTimeline(inner, mode = Timeline.Mode.PINNED_EVENTS) - } - }.onFailure { - if (it is CancellationException) { - throw it - } - } - } - - override suspend fun mediaTimeline( - eventId: EventId?, + override suspend fun createTimeline( + createTimelineParams: CreateTimelineParams, ): Result = withContext(roomDispatcher) { - val focus = if (eventId != null) { - TimelineFocus.Event( - eventId = eventId.value, + val focus = when (createTimelineParams) { + is CreateTimelineParams.PinnedOnly -> TimelineFocus.PinnedEvents( + maxEventsToLoad = 100u, + maxConcurrentRequests = 10u, + ) + is CreateTimelineParams.MediaOnly -> TimelineFocus.Live + is CreateTimelineParams.Focused -> TimelineFocus.Event( + eventId = createTimelineParams.focusedEventId.value, + numContextEvents = 50u, + ) + is CreateTimelineParams.MediaOnlyFocused -> TimelineFocus.Event( + eventId = createTimelineParams.focusedEventId.value, numContextEvents = 50u, ) - } else { - TimelineFocus.Live } + + val allowedMessageTypes = when (createTimelineParams) { + is CreateTimelineParams.MediaOnly, + is CreateTimelineParams.MediaOnlyFocused -> AllowedMessageTypes.Only( + types = listOf( + RoomMessageEventMessageType.FILE, + RoomMessageEventMessageType.IMAGE, + RoomMessageEventMessageType.VIDEO, + RoomMessageEventMessageType.AUDIO, + ) + ) + is CreateTimelineParams.Focused, + CreateTimelineParams.PinnedOnly -> AllowedMessageTypes.All + } + + val internalIdPrefix = when (createTimelineParams) { + is CreateTimelineParams.PinnedOnly -> "pinned_events" + is CreateTimelineParams.Focused -> "focus_${createTimelineParams.focusedEventId}" + is CreateTimelineParams.MediaOnly -> "MediaGallery_" + is CreateTimelineParams.MediaOnlyFocused -> "MediaGallery_${createTimelineParams.focusedEventId}" + } + + // Note that for TimelineFilter.MediaOnlyFocused, the date separator will be filtered out, + // but there is no way to exclude data separator at the moment. + val dateDividerMode = when (createTimelineParams) { + is CreateTimelineParams.MediaOnly, + is CreateTimelineParams.MediaOnlyFocused -> DateDividerMode.MONTHLY + is CreateTimelineParams.Focused, + CreateTimelineParams.PinnedOnly -> DateDividerMode.DAILY + } + runCatching { innerRoom.timelineWithConfiguration( configuration = TimelineConfiguration( focus = focus, - allowedMessageTypes = AllowedMessageTypes.Only( - types = listOf( - RoomMessageEventMessageType.FILE, - RoomMessageEventMessageType.IMAGE, - RoomMessageEventMessageType.VIDEO, - RoomMessageEventMessageType.AUDIO, - ) - ), - internalIdPrefix = "MediaGallery_", - dateDividerMode = DateDividerMode.MONTHLY, + allowedMessageTypes = allowedMessageTypes, + internalIdPrefix = internalIdPrefix, + dateDividerMode = dateDividerMode, ) ).let { inner -> - createTimeline(inner, mode = if (eventId != null) Timeline.Mode.FOCUSED_ON_EVENT else Timeline.Mode.MEDIA) + val mode = when (createTimelineParams) { + is CreateTimelineParams.Focused -> Timeline.Mode.FOCUSED_ON_EVENT + is CreateTimelineParams.MediaOnly -> Timeline.Mode.MEDIA + is CreateTimelineParams.MediaOnlyFocused -> Timeline.Mode.FOCUSED_ON_EVENT + CreateTimelineParams.PinnedOnly -> Timeline.Mode.PINNED_EVENTS + } + createTimeline( + timeline = inner, + mode = mode, + ) + } + }.mapFailure { + when (createTimelineParams) { + is CreateTimelineParams.Focused, + is CreateTimelineParams.MediaOnlyFocused -> it.toFocusEventException() + CreateTimelineParams.MediaOnly, + CreateTimelineParams.PinnedOnly -> it } }.onFailure { if (it is CancellationException) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustPendingRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustPendingRoom.kt deleted file mode 100644 index f53cf957ac..0000000000 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustPendingRoom.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.matrix.impl.room - -import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.matrix.api.room.PendingRoom -import io.element.android.libraries.matrix.api.room.RoomMembershipObserver -import org.matrix.rustcomponents.sdk.RoomPreview - -class RustPendingRoom( - override val sessionId: SessionId, - override val roomId: RoomId, - private val inner: RoomPreview, - private val roomMembershipObserver: RoomMembershipObserver, -) : PendingRoom { - override suspend fun leave(): Result = runCatching { - inner.leave() - }.onSuccess { - roomMembershipObserver.notifyUserLeftRoom(roomId) - } - - override fun close() { - inner.destroy() - } -} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt index f19d75e752..4488b2c036 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt @@ -16,8 +16,8 @@ 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.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.room.MatrixRoom -import io.element.android.libraries.matrix.api.room.PendingRoom import io.element.android.libraries.matrix.api.room.RoomMembershipObserver +import io.element.android.libraries.matrix.api.room.RoomPreview import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.roomlist.awaitLoaded import io.element.android.libraries.matrix.impl.roomlist.fullRoomWithTimeline @@ -28,7 +28,6 @@ import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext -import org.matrix.rustcomponents.sdk.Membership import org.matrix.rustcomponents.sdk.Room import org.matrix.rustcomponents.sdk.RoomListException import org.matrix.rustcomponents.sdk.RoomListItem @@ -36,7 +35,6 @@ import timber.log.Timber import org.matrix.rustcomponents.sdk.RoomListService as InnerRoomListService private const val CACHE_SIZE = 16 -private val PENDING_MEMBERSHIPS = setOf(Membership.INVITED, Membership.KNOCKED) class RustRoomFactory( private val sessionId: SessionId, @@ -125,7 +123,7 @@ class RustRoomFactory( } } - suspend fun createPendingRoom(roomId: RoomId): PendingRoom? = withContext(dispatcher) { + suspend fun createRoomPreview(roomId: RoomId): RoomPreview? = withContext(dispatcher) { if (isDestroyed) { Timber.d("Room factory is destroyed, returning null for $roomId") return@withContext null @@ -135,19 +133,18 @@ class RustRoomFactory( Timber.d("Room not found for $roomId") return@withContext null } - if (roomListItem.membership() !in PENDING_MEMBERSHIPS) { - Timber.d("Room $roomId is not in pending state") + if (roomListItem.membership() !in RustRoomPreview.ALLOWED_MEMBERSHIPS) { + Timber.d("Room $roomId is not in allowed membership") return@withContext null } val innerRoom = try { roomListItem.previewRoom(via = emptyList()) } catch (e: Exception) { - Timber.e(e, "Failed to get pending room for $roomId") + Timber.e(e, "Failed to get room preview for $roomId") return@withContext null } - RustPendingRoom( + RustRoomPreview( sessionId = sessionId, - roomId = roomId, inner = innerRoom, roomMembershipObserver = roomMembershipObserver, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomPreview.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomPreview.kt new file mode 100644 index 0000000000..0739a2cd0f --- /dev/null +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomPreview.kt @@ -0,0 +1,54 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.impl.room + +import androidx.compose.runtime.Immutable +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.room.RoomMembershipDetails +import io.element.android.libraries.matrix.api.room.RoomMembershipObserver +import io.element.android.libraries.matrix.api.room.RoomPreview +import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo +import io.element.android.libraries.matrix.impl.room.member.RoomMemberMapper +import io.element.android.libraries.matrix.impl.room.preview.RoomPreviewInfoMapper +import org.matrix.rustcomponents.sdk.Membership +import org.matrix.rustcomponents.sdk.RoomPreview as InnerRoomPreview + +@Immutable +class RustRoomPreview( + override val sessionId: SessionId, + private val inner: InnerRoomPreview, + private val roomMembershipObserver: RoomMembershipObserver?, +) : RoomPreview { + companion object { + val ALLOWED_MEMBERSHIPS = setOf(Membership.INVITED, Membership.KNOCKED, Membership.BANNED) + } + + override val info: RoomPreviewInfo = RoomPreviewInfoMapper.map(inner.info()) + + override suspend fun leave(): Result = runCatching { + inner.leave() + }.onSuccess { + roomMembershipObserver?.notifyUserLeftRoom(info.roomId) + } + + override suspend fun forget(): Result = runCatching { + inner.forget() + } + + override suspend fun membershipDetails(): Result = runCatching { + val details = inner.ownMembershipDetails() ?: return@runCatching null + RoomMembershipDetails( + currentUserMember = RoomMemberMapper.map(details.ownRoomMember), + senderMember = details.senderRoomMember?.let { RoomMemberMapper.map(it) }, + ) + } + + override fun close() { + inner.destroy() + } +} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt index 5df7b6044b..99fec55a02 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt @@ -25,6 +25,7 @@ object RoomMemberMapper { normalizedPowerLevel = roomMember.normalizedPowerLevel, isIgnored = roomMember.isIgnored, role = mapRole(roomMember.suggestedRoleForPowerLevel), + membershipChangeReason = roomMember.membershipChangeReason ) fun mapRole(role: RoomMemberRole): RoomMember.Role = diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapper.kt index c80ce42529..fd21548224 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapper.kt @@ -11,9 +11,8 @@ import io.element.android.libraries.core.bool.orFalse 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.room.preview.RoomPreviewInfo +import io.element.android.libraries.matrix.impl.room.join.map import io.element.android.libraries.matrix.impl.room.map -import org.matrix.rustcomponents.sdk.JoinRule -import org.matrix.rustcomponents.sdk.Membership import org.matrix.rustcomponents.sdk.RoomPreviewInfo as RustRoomPreviewInfo object RoomPreviewInfoMapper { @@ -27,10 +26,8 @@ object RoomPreviewInfoMapper { numberOfJoinedMembers = info.numJoinedMembers.toLong(), roomType = info.roomType.map(), isHistoryWorldReadable = info.isHistoryWorldReadable.orFalse(), - isJoined = info.membership == Membership.JOINED, - isInvited = info.membership == Membership.INVITED, - isPublic = info.joinRule == JoinRule.Public, - canKnock = info.joinRule == JoinRule.Knock + membership = info.membership?.map(), + joinRule = info.joinRule.map(), ) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt index ce1f1d025c..6284e0028f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt @@ -12,8 +12,7 @@ import org.matrix.rustcomponents.sdk.SlidingSyncVersion as RustSlidingSyncVersio internal fun RustSlidingSyncVersion.map(): SlidingSyncVersion { return when (this) { - RustSlidingSyncVersion.None -> SlidingSyncVersion.None - is RustSlidingSyncVersion.Proxy -> SlidingSyncVersion.Proxy - RustSlidingSyncVersion.Native -> SlidingSyncVersion.Native + RustSlidingSyncVersion.NONE -> SlidingSyncVersion.None + RustSlidingSyncVersion.NATIVE -> SlidingSyncVersion.Native } } 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 2cb1a4efa5..1fbfea7b13 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 @@ -48,6 +48,7 @@ import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.cancel import kotlinx.coroutines.flow.Flow @@ -296,7 +297,7 @@ class RustTimeline( htmlBody: String?, intentionalMentions: List, ): Result = withContext(dispatcher) { - runCatching { + runCatching { val editedContent = EditedContent.RoomMessage( content = MessageEventContent.from( body = body, @@ -324,10 +325,12 @@ class RustTimeline( }, mentions = null, ) - inner.edit( - newContent = editedContent, - eventOrTransactionId = eventOrTransactionId.toRustEventOrTransactionId(), - ) + withContext(Dispatchers.IO) { + inner.edit( + newContent = editedContent, + eventOrTransactionId = eventOrTransactionId.toRustEventOrTransactionId(), + ) + } } } @@ -519,7 +522,7 @@ class RustTimeline( newContent = editedContent, eventOrTransactionId = RustEventOrTransactionId.EventId(pollStartId.value), ) - }.map { } + } } override suspend fun sendPollResponse( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt index 4349a12474..8cd9a47234 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt @@ -113,7 +113,7 @@ class RustSessionVerificationService( override suspend fun requestVerification() = tryOrFail { initVerificationControllerIfNeeded() - verificationController.requestVerification() + verificationController.requestDeviceVerification() } override suspend fun cancelVerification() = tryOrFail { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt index 028930371f..b617889f40 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt @@ -14,9 +14,9 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationR import org.matrix.rustcomponents.sdk.SessionVerificationRequestDetails as RustSessionVerificationRequestDetails fun RustSessionVerificationRequestDetails.map() = SessionVerificationRequestDetails( - senderId = UserId(senderId), + senderId = UserId(senderProfile.userId), flowId = FlowId(flowId), deviceId = DeviceId(deviceId), - displayName = displayName, + displayName = senderProfile.displayName, firstSeenTimestamp = firstSeenTimestamp.toLong(), ) 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 de6e25abd1..61df8e6455 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 @@ -11,7 +11,6 @@ import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.impl.createRustMatrixClientFactory import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore import io.element.android.libraries.sessionstorage.test.aSessionData @@ -50,7 +49,6 @@ class RustMatrixAuthenticationServiceTest { rustMatrixClientFactory = rustMatrixClientFactory, passphraseGenerator = FakePassphraseGenerator(), oidcConfigurationProvider = OidcConfigurationProvider(baseDirectory), - appPreferencesStore = InMemoryAppPreferencesStore(), ) } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt index 010da86887..b1301d0777 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt @@ -14,7 +14,7 @@ import org.matrix.rustcomponents.sdk.Session import org.matrix.rustcomponents.sdk.SlidingSyncVersion internal fun aRustSession( - proxy: SlidingSyncVersion = SlidingSyncVersion.None, + proxy: SlidingSyncVersion = SlidingSyncVersion.NONE, accessToken: String = "accessToken", refreshToken: String = "refreshToken", ): Session { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt index ce0fc49ae2..46a4d35c37 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt @@ -72,7 +72,7 @@ class SessionKtTest { @Test fun `toSessionData copy the sliding sync url if present`() { val result = aRustSession( - proxy = SlidingSyncVersion.Proxy("proxyUrl") + proxy = SlidingSyncVersion.NATIVE ).toSessionData( isTokenValid = true, loginType = LoginType.PASSWORD, @@ -80,7 +80,7 @@ class SessionKtTest { sessionPaths = SessionPaths(File("/a/file"), File("/a/cache")), homeserverUrl = A_HOMESERVER_URL_2, ) - assertThat(result.slidingSyncProxy).isEqualTo("proxyUrl") + assertThat(result.slidingSyncProxy).isNull() } @Test diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapperTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapperTest.kt index aaa8ecc9ec..1befd53ae0 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapperTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapperTest.kt @@ -85,7 +85,6 @@ class MatrixRoomInfoMapperTest { topic = "topic", avatarUrl = AN_AVATAR_URL, isDirect = true, - isPublic = false, isSpace = false, isTombstoned = false, isFavorite = false, @@ -167,7 +166,6 @@ class MatrixRoomInfoMapperTest { topic = null, avatarUrl = null, isDirect = false, - isPublic = true, joinRule = null, isSpace = false, isTombstoned = false, diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapperTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapperTest.kt index 11a851eee6..4b832799cc 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapperTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/preview/RoomPreviewInfoMapperTest.kt @@ -8,14 +8,16 @@ package io.element.android.libraries.matrix.impl.room.preview import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomType +import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomPreviewInfo import io.element.android.libraries.matrix.test.A_ROOM_ALIAS import io.element.android.libraries.matrix.test.A_ROOM_ID import org.junit.Test -import org.matrix.rustcomponents.sdk.JoinRule import org.matrix.rustcomponents.sdk.Membership +import org.matrix.rustcomponents.sdk.JoinRule as RustJoinRule class RoomPreviewInfoMapperTest { @Test @@ -23,7 +25,7 @@ class RoomPreviewInfoMapperTest { assertThat( RoomPreviewInfoMapper.map( info = aRustRoomPreviewInfo( - membership = null, + membership = Membership.JOINED, ) ) ).isEqualTo( @@ -36,10 +38,8 @@ class RoomPreviewInfoMapperTest { numberOfJoinedMembers = 1L, roomType = RoomType.Room, isHistoryWorldReadable = true, - isJoined = false, - isInvited = false, - isPublic = true, - canKnock = false, + membership = CurrentUserMembership.JOINED, + joinRule = JoinRule.Public, ) ) } @@ -51,7 +51,7 @@ class RoomPreviewInfoMapperTest { info = aRustRoomPreviewInfo( canonicalAlias = null, membership = Membership.JOINED, - joinRule = JoinRule.Knock, + joinRule = RustJoinRule.Knock, ) ) ).isEqualTo( @@ -64,10 +64,8 @@ class RoomPreviewInfoMapperTest { numberOfJoinedMembers = 1L, roomType = RoomType.Room, isHistoryWorldReadable = true, - isJoined = true, - isInvited = false, - isPublic = false, - canKnock = true, + membership = CurrentUserMembership.JOINED, + joinRule = JoinRule.Knock, ) ) } 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 6cce2e2f98..5f37394020 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 @@ -23,10 +23,9 @@ import io.element.android.libraries.matrix.api.notificationsettings.Notification import io.element.android.libraries.matrix.api.oidc.AccountManagementAction import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.room.MatrixRoom -import io.element.android.libraries.matrix.api.room.PendingRoom import io.element.android.libraries.matrix.api.room.RoomMembershipObserver +import io.element.android.libraries.matrix.api.room.RoomPreview import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias -import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.roomlist.RoomSummary @@ -73,13 +72,13 @@ class FakeMatrixClient( private val syncService: FakeSyncService = FakeSyncService(), private val encryptionService: FakeEncryptionService = FakeEncryptionService(), private val roomDirectoryService: RoomDirectoryService = FakeRoomDirectoryService(), - private val accountManagementUrlString: Result = Result.success(null), + private val accountManagementUrlResult: (AccountManagementAction?) -> Result = { lambdaError() }, private val resolveRoomAliasResult: (RoomAlias) -> Result> = { Result.success( - Optional.of(ResolvedRoomAlias(A_ROOM_ID, emptyList())) - ) + Optional.of(ResolvedRoomAlias(A_ROOM_ID, emptyList())) + ) }, - private val getRoomPreviewInfoResult: (RoomIdOrAlias, List) -> Result = { _, _ -> Result.failure(AN_EXCEPTION) }, + private val getRoomPreviewResult: (RoomIdOrAlias, List) -> Result = { _, _ -> Result.failure(AN_EXCEPTION) }, private val clearCacheLambda: () -> Unit = { lambdaError() }, private val userIdServerNameLambda: () -> String = { lambdaError() }, private val getUrlLambda: (String) -> Result = { lambdaError() }, @@ -105,7 +104,6 @@ class FakeMatrixClient( private var createDmResult: Result = Result.success(A_ROOM_ID) private var findDmResult: RoomId? = A_ROOM_ID private val getRoomResults = mutableMapOf() - val getPendingRoomResults = mutableMapOf() private val searchUserResults = mutableMapOf>() private val getProfileResults = mutableMapOf>() private var uploadMediaResult: Result = Result.success(AN_AVATAR_URL) @@ -124,16 +122,14 @@ class FakeMatrixClient( var getRoomSummaryFlowLambda = { _: RoomIdOrAlias -> flowOf>(Optional.empty()) } - var logoutLambda: (Boolean, Boolean) -> String? = { _, _ -> - null - } + var logoutLambda: (Boolean, Boolean) -> Unit = { _, _ -> } override suspend fun getRoom(roomId: RoomId): MatrixRoom? { return getRoomResults[roomId] } - override suspend fun getPendingRoom(roomId: RoomId): PendingRoom? { - return getPendingRoomResults[roomId] + override suspend fun getPendingRoom(roomId: RoomId): RoomPreview? = simulateLongTask { + getRoomPreviewResult(RoomIdOrAlias.Id(roomId), emptyList()).getOrNull() } override suspend fun findDM(userId: UserId): RoomId? { @@ -176,8 +172,8 @@ class FakeMatrixClient( clearCacheLambda() } - override suspend fun logout(userInitiated: Boolean, ignoreSdkError: Boolean): String? = simulateLongTask { - return logoutLambda(ignoreSdkError, userInitiated) + override suspend fun logout(userInitiated: Boolean, ignoreSdkError: Boolean) = simulateLongTask { + logoutLambda(ignoreSdkError, userInitiated) } override fun canDeactivateAccount() = canDeactivateAccountResult() @@ -194,8 +190,8 @@ class FakeMatrixClient( return Result.success(result) } - override suspend fun getAccountManagementUrl(action: AccountManagementAction?): Result { - return accountManagementUrlString + override suspend fun getAccountManagementUrl(action: AccountManagementAction?): Result = simulateLongTask { + accountManagementUrlResult(action) } override suspend fun uploadMedia( @@ -313,8 +309,8 @@ class FakeMatrixClient( resolveRoomAliasResult(roomAlias) } - override suspend fun getRoomPreviewInfo(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result = simulateLongTask { - getRoomPreviewInfoResult(roomIdOrAlias, serverNames) + override suspend fun getRoomPreview(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result = simulateLongTask { + getRoomPreviewResult(roomIdOrAlias, serverNames) } override suspend fun getRecentlyVisitedRooms(): Result> { 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 ee126e2f92..7d56ab3d7e 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 @@ -24,6 +24,7 @@ class FakeEncryptionService( var startIdentityResetLambda: () -> Result = { lambdaError() }, private val pinUserIdentityResult: (UserId) -> Result = { lambdaError() }, private val isUserVerifiedResult: (UserId) -> Result = { lambdaError() }, + private val withdrawVerificationResult: (UserId) -> Result = { lambdaError() }, ) : EncryptionService { private var disableRecoveryFailure: Exception? = null override val backupStateStateFlow: MutableStateFlow = MutableStateFlow(BackupState.UNKNOWN) @@ -124,6 +125,10 @@ class FakeEncryptionService( return pinUserIdentityResult(userId) } + override suspend fun withdrawVerification(userId: UserId): Result { + return withdrawVerificationResult(userId) + } + override suspend fun isUserVerified(userId: UserId): Result = simulateLongTask { isUserVerifiedResult(userId) } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt index d214f91f2b..04c32b5445 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt @@ -24,6 +24,7 @@ import io.element.android.libraries.matrix.api.media.MediaUploadHandler import io.element.android.libraries.matrix.api.media.VideoInfo import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.poll.PollKind +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.IntentionalMention import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomInfo @@ -138,9 +139,7 @@ class FakeMatrixRoom( private val leaveRoomLambda: () -> Result = { lambdaError() }, private val updateMembersResult: () -> Unit = { lambdaError() }, private val getMembersResult: (Int) -> Result> = { lambdaError() }, - private val timelineFocusedOnEventResult: (EventId) -> Result = { lambdaError() }, - private val pinnedEventsTimelineResult: () -> Result = { lambdaError() }, - private val mediaTimelineResult: (EventId?) -> Result = { lambdaError() }, + private val createTimelineResult: (CreateTimelineParams) -> Result = { lambdaError() }, private val setSendQueueEnabledLambda: (Boolean) -> Unit = { _: Boolean -> }, private val saveComposerDraftLambda: (ComposerDraft) -> Result = { _: ComposerDraft -> Result.success(Unit) }, private val loadComposerDraftLambda: () -> Result = { Result.success(null) }, @@ -220,16 +219,10 @@ class FakeMatrixRoom( _syncUpdateFlow.tryEmit(_syncUpdateFlow.value + 1) } - override suspend fun timelineFocusedOnEvent(eventId: EventId): Result = simulateLongTask { - timelineFocusedOnEventResult(eventId) - } - - override suspend fun pinnedEventsTimeline(): Result = simulateLongTask { - pinnedEventsTimelineResult() - } - - override suspend fun mediaTimeline(eventId: EventId?): Result = simulateLongTask { - mediaTimelineResult(eventId) + override suspend fun createTimeline( + createTimelineParams: CreateTimelineParams, + ): Result = simulateLongTask { + createTimelineResult(createTimelineParams) } override suspend fun subscribeToSync() { diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakePendingRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakePendingRoom.kt deleted file mode 100644 index 79392cbc44..0000000000 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakePendingRoom.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.matrix.test.room - -import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.matrix.api.room.PendingRoom -import io.element.android.libraries.matrix.test.A_ROOM_ID -import io.element.android.libraries.matrix.test.A_SESSION_ID -import io.element.android.tests.testutils.lambda.lambdaError -import io.element.android.tests.testutils.simulateLongTask - -class FakePendingRoom( - override val sessionId: SessionId = A_SESSION_ID, - override val roomId: RoomId = A_ROOM_ID, - private val declineInviteResult: () -> Result = { lambdaError() } -) : PendingRoom { - override suspend fun leave(): Result = simulateLongTask { - declineInviteResult() - } - - override fun close() = Unit -} diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeRoomPreview.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeRoomPreview.kt new file mode 100644 index 0000000000..80908c5228 --- /dev/null +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeRoomPreview.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.test.room + +import androidx.compose.runtime.Immutable +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.room.RoomMembershipDetails +import io.element.android.libraries.matrix.api.room.RoomPreview +import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo +import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.tests.testutils.lambda.lambdaError +import io.element.android.tests.testutils.simulateLongTask + +@Immutable +class FakeRoomPreview( + override val sessionId: SessionId = A_SESSION_ID, + override val info: RoomPreviewInfo = aRoomPreviewInfo(), + private val declineInviteResult: () -> Result = { lambdaError() }, + private val forgetRoomResult: () -> Result = { lambdaError() }, + private val roomMembershipDetails: () -> Result = { lambdaError() }, +) : RoomPreview { + override suspend fun leave(): Result = simulateLongTask { + declineInviteResult() + } + + override suspend fun forget(): Result = simulateLongTask { + forgetRoomResult() + } + + override suspend fun membershipDetails(): Result = simulateLongTask { + roomMembershipDetails() + } + + override fun close() = Unit +} diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt index ed62d96d98..50a4c30a85 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt @@ -34,7 +34,6 @@ fun aRoomInfo( topic: String? = A_ROOM_TOPIC, avatarUrl: String? = AN_AVATAR_URL, isDirect: Boolean = false, - isPublic: Boolean = true, joinRule: JoinRule? = JoinRule.Public, isSpace: Boolean = false, isTombstoned: Boolean = false, @@ -43,8 +42,8 @@ fun aRoomInfo( alternativeAliases: List = emptyList(), currentUserMembership: CurrentUserMembership = CurrentUserMembership.JOINED, inviter: RoomMember? = null, - activeMembersCount: Long = 1, - invitedMembersCount: Long = 0, + activeMembersCount: Long = 2, + invitedMembersCount: Long = 1, joinedMembersCount: Long = 1, highlightCount: Long = 0, notificationCount: Long = 0, @@ -67,7 +66,6 @@ fun aRoomInfo( topic = topic, avatarUrl = avatarUrl, isDirect = isDirect, - isPublic = isPublic, joinRule = joinRule, isSpace = isSpace, isTombstoned = isTombstoned, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt index 9a8c35d86d..f4f7f3d835 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt @@ -21,6 +21,7 @@ fun aRoomMember( normalizedPowerLevel: Long = 0L, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.USER, + membershipChangeReason: String? = null, ) = RoomMember( userId = userId, displayName = displayName, @@ -31,4 +32,5 @@ fun aRoomMember( normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, + membershipChangeReason = membershipChangeReason, ) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomPreviewInfoFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomPreviewInfoFixture.kt new file mode 100644 index 0000000000..ab52880ef7 --- /dev/null +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomPreviewInfoFixture.kt @@ -0,0 +1,61 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.test.room + +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.SessionId +import io.element.android.libraries.matrix.api.room.CurrentUserMembership +import io.element.android.libraries.matrix.api.room.RoomMembershipDetails +import io.element.android.libraries.matrix.api.room.RoomType +import io.element.android.libraries.matrix.api.room.join.JoinRule +import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo +import io.element.android.libraries.matrix.test.AN_AVATAR_URL +import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.A_ROOM_NAME +import io.element.android.libraries.matrix.test.A_ROOM_TOPIC +import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.tests.testutils.lambda.lambdaError + +fun aRoomPreview( + sessionId: SessionId = A_SESSION_ID, + info: RoomPreviewInfo = aRoomPreviewInfo(), + declineInviteResult: () -> Result = { lambdaError() }, + forgetRoomResult: () -> Result = { lambdaError() }, + roomMembershipDetails: () -> Result = { lambdaError() }, +) = FakeRoomPreview( + sessionId = sessionId, + info = info, + declineInviteResult = declineInviteResult, + forgetRoomResult = forgetRoomResult, + roomMembershipDetails = roomMembershipDetails, +) + +fun aRoomPreviewInfo( + roomId: RoomId = A_ROOM_ID, + name: String? = A_ROOM_NAME, + topic: String? = A_ROOM_TOPIC, + avatarUrl: String? = AN_AVATAR_URL, + joinRule: JoinRule = JoinRule.Public, + isSpace: Boolean = false, + canonicalAlias: RoomAlias? = null, + currentUserMembership: CurrentUserMembership? = null, + numberOfJoinedMembers: Long = 1, + isHistoryWorldReadable: Boolean = true, +) = RoomPreviewInfo( + roomId = roomId, + name = name, + topic = topic, + avatarUrl = avatarUrl, + joinRule = joinRule, + canonicalAlias = canonicalAlias, + numberOfJoinedMembers = numberOfJoinedMembers, + roomType = if (isSpace) RoomType.Space else RoomType.Room, + isHistoryWorldReadable = isHistoryWorldReadable, + membership = currentUserMembership, +) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt index df34bcc734..c85fe824d5 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt @@ -47,7 +47,6 @@ fun aRoomSummary( topic: String? = A_ROOM_TOPIC, avatarUrl: String? = null, isDirect: Boolean = false, - isPublic: Boolean = true, joinRule: JoinRule? = JoinRule.Public, isSpace: Boolean = false, isTombstoned: Boolean = false, @@ -82,7 +81,6 @@ fun aRoomSummary( topic = topic, avatarUrl = avatarUrl, isDirect = isDirect, - isPublic = isPublic, joinRule = joinRule, isSpace = isSpace, isTombstoned = isTombstoned, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt index d4a6627125..7e105a8af7 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt @@ -13,8 +13,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.GraphicEq import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -82,7 +80,7 @@ fun AttachmentThumbnail( } AttachmentThumbnailType.Audio -> { Icon( - imageVector = Icons.Outlined.GraphicEq, + imageVector = CompoundIcons.Audio(), contentDescription = info.textContent, ) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt index 936955008d..fa9cf5156c 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope @@ -97,7 +96,7 @@ private fun AvatarActionBottomSheetContent( Text( text = stringResource(action.titleResId), style = ElementTheme.typography.fontBodyLgRegular, - color = if (action.destructive) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primary, + color = if (action.destructive) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textPrimary, ) }, leadingContent = ListItemContent.Icon(IconSource.Resource(action.iconResourceId)), diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CreateDmConfirmationBottomSheet.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CreateDmConfirmationBottomSheet.kt new file mode 100644 index 0000000000..75b8e5a5f3 --- /dev/null +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CreateDmConfirmationBottomSheet.kt @@ -0,0 +1,106 @@ +/* + * 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.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +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.text.style.TextAlign +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.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.Button +import io.element.android.libraries.designsystem.theme.components.IconSource +import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet +import io.element.android.libraries.designsystem.theme.components.TextButton +import io.element.android.libraries.matrix.api.user.MatrixUser +import io.element.android.libraries.matrix.ui.R +import io.element.android.libraries.matrix.ui.model.getAvatarData +import io.element.android.libraries.matrix.ui.model.getFullName +import io.element.android.libraries.ui.strings.CommonStrings + +/** + * Figma: + * https://www.figma.com/design/dywzKQvHYxFD1Ncn4a5NkI/PSB-675%253A-Improve-invite-into-a-DM?node-id=12-36886 + */ +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun CreateDmConfirmationBottomSheet( + matrixUser: MatrixUser, + onSendInvite: () -> Unit, + onDismiss: () -> Unit, + modifier: Modifier = Modifier, +) { + ModalBottomSheet( + modifier = modifier, + onDismissRequest = onDismiss, + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(modifier = Modifier.height(24.dp)) + Avatar( + avatarData = matrixUser.getAvatarData(AvatarSize.DmCreationConfirmation), + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = stringResource(R.string.screen_bottom_sheet_create_dm_title), + style = ElementTheme.typography.fontHeadingMdBold, + color = ElementTheme.colors.textPrimary, + textAlign = TextAlign.Center, + ) + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = stringResource(R.string.screen_bottom_sheet_create_dm_message, matrixUser.getFullName()), + style = ElementTheme.typography.fontBodyMdRegular, + color = ElementTheme.colors.textSecondary, + textAlign = TextAlign.Center, + ) + Spacer(modifier = Modifier.height(40.dp)) + Button( + modifier = Modifier.fillMaxWidth(), + onClick = onSendInvite, + leadingIcon = IconSource.Vector(CompoundIcons.UserAdd()), + text = stringResource(R.string.screen_bottom_sheet_create_dm_confirmation_button_title), + ) + Spacer(modifier = Modifier.height(16.dp)) + TextButton( + modifier = Modifier.fillMaxWidth(), + onClick = onDismiss, + text = stringResource(CommonStrings.action_cancel), + ) + Spacer(modifier = Modifier.height(16.dp)) + } + } +} + +@PreviewsDayNight +@Composable +internal fun CreateDmConfirmationBottomSheetPreview(@PreviewParameter(MatrixUserProvider::class) matrixUser: MatrixUser) = ElementPreview { + CreateDmConfirmationBottomSheet( + matrixUser = matrixUser, + onSendInvite = {}, + onDismiss = {}, + ) +} 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 9f7583972f..1a0cd53f6d 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 @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -27,6 +26,7 @@ import androidx.compose.ui.draw.clip 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 @@ -79,7 +79,7 @@ fun EditableAvatarView( modifier = Modifier .align(Alignment.BottomEnd) .clip(CircleShape) - .background(MaterialTheme.colorScheme.primary) + .background(ElementTheme.colors.iconPrimary) .size(24.dp), contentAlignment = Alignment.Center, ) { @@ -87,7 +87,7 @@ fun EditableAvatarView( modifier = Modifier.size(16.dp), imageVector = CompoundIcons.EditSolid(), contentDescription = null, - tint = MaterialTheme.colorScheme.onPrimary, + tint = ElementTheme.colors.iconOnSolidPrimary, ) } } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/InviteSenderView.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/InviteSenderView.kt index a081a990a5..008438305d 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/InviteSenderView.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/InviteSenderView.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @@ -40,7 +39,7 @@ fun InviteSenderView( Text( text = inviteSender.annotatedString(), style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, ) } } @@ -56,8 +55,9 @@ internal fun InviteSenderViewPreview() = ElementPreview { id = "@bob:example.com", name = "Bob", url = null, - size = AvatarSize.InviteSender - ) + size = AvatarSize.InviteSender, + ), + membershipChangeReason = null, ) ) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt index 6aea3b6dfd..55833caf59 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt @@ -77,14 +77,14 @@ private fun MatrixUserHeaderContent( maxLines = 1, style = ElementTheme.typography.fontHeadingSmMedium, overflow = TextOverflow.Ellipsis, - color = ElementTheme.materialColors.primary, + color = ElementTheme.colors.textPrimary, ) // Id if (matrixUser.displayName.isNullOrEmpty().not()) { Text( text = matrixUser.userId.value, style = ElementTheme.typography.fontBodyMdRegular, - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis ) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt index 3f9e945ee5..d10f428f1c 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt @@ -21,7 +21,7 @@ open class MatrixUserProvider : PreviewParameterProvider { fun aMatrixUser( id: String = "@id_of_alice:server.org", - displayName: String = "Alice", + displayName: String? = "Alice", avatarUrl: String? = null, ) = MatrixUser( userId = UserId(id), diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SelectedRoom.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SelectedRoom.kt index e43c52f5b0..11f6b74b95 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SelectedRoom.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SelectedRoom.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.res.stringResource 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.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.CompositeAvatar @@ -65,21 +66,21 @@ fun SelectedRoom( ) } Surface( - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.iconPrimary, modifier = Modifier - .clip(CircleShape) - .size(20.dp) - .align(Alignment.TopEnd) - .clickable( - indication = ripple(), - interactionSource = remember { MutableInteractionSource() }, - onClick = { onRemoveRoom(roomInfo) } - ), + .clip(CircleShape) + .size(20.dp) + .align(Alignment.TopEnd) + .clickable( + indication = ripple(), + interactionSource = remember { MutableInteractionSource() }, + onClick = { onRemoveRoom(roomInfo) } + ), ) { Icon( imageVector = CompoundIcons.Close(), contentDescription = stringResource(id = CommonStrings.action_remove), - tint = MaterialTheme.colorScheme.onPrimary, + tint = ElementTheme.colors.iconOnSolidPrimary, modifier = Modifier.padding(2.dp) ) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnresolvedUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnresolvedUserRow.kt index 028c31ec78..41f58fc67a 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnresolvedUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnresolvedUserRow.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -58,7 +57,7 @@ fun UnresolvedUserRow( text = id, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontBodyLgMedium, ) @@ -69,18 +68,17 @@ fun UnresolvedUserRow( .padding(top = 3.dp) ) { Icon( - imageVector = CompoundIcons.Error(), + imageVector = CompoundIcons.ErrorSolid(), contentDescription = null, modifier = Modifier .size(18.dp) .align(Alignment.Top) .padding(2.dp), - tint = MaterialTheme.colorScheme.error, + tint = ElementTheme.colors.iconCriticalPrimary, ) - Text( text = stringResource(CommonStrings.common_invite_unknown_profile), - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodySmRegular.copy(lineHeight = 16.sp), ) } 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 b78f256deb..bbbf014e99 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 @@ -67,7 +67,7 @@ fun UnsavedAvatar( modifier = Modifier .align(Alignment.Center) .size(40.dp), - tint = MaterialTheme.colorScheme.secondary, + tint = ElementTheme.colors.iconSecondary, ) } } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt index 2889c33f99..2f5874b664 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UserRow.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -51,14 +50,14 @@ internal fun UserRow( text = name, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, style = ElementTheme.typography.fontBodyLgRegular, ) // Id subtext?.let { Text( text = subtext, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodySmRegular, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToView.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToView.kt index ed30daf76f..3fb4ddd74a 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToView.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToView.kt @@ -140,7 +140,7 @@ private fun ReplyToErrorContent( Text( text = data.message, style = ElementTheme.typography.fontBodyMdRegular, - color = MaterialTheme.colorScheme.error, + color = ElementTheme.colors.textCriticalPrimary, maxLines = 2, overflow = TextOverflow.Ellipsis, ) @@ -171,7 +171,7 @@ private fun ReplyToContentText(metadata: InReplyToMetadata?) { if (iconResourceId != null) { Icon( resourceId = iconResourceId, - tint = MaterialTheme.colorScheme.secondary, + tint = ElementTheme.colors.iconSecondary, contentDescription = null, modifier = Modifier.size(16.dp) ) @@ -182,7 +182,7 @@ private fun ReplyToContentText(metadata: InReplyToMetadata?) { style = ElementTheme.typography.fontBodyMdRegular, fontStyle = fontStyle, textAlign = TextAlign.Start, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 2, overflow = TextOverflow.Ellipsis, ) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt index 0c0f4e4e2d..d59e9cf24f 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/sender/SenderName.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.matrix.ui.messages.sender import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -77,7 +76,7 @@ private fun RowScope.MainText( val color = when (mode) { is SenderNameMode.Timeline -> mode.mainColor SenderNameMode.ActionList, - SenderNameMode.Reply -> MaterialTheme.colorScheme.primary + SenderNameMode.Reply -> ElementTheme.colors.textPrimary } Text( modifier = modifier.clipToBounds(), @@ -108,7 +107,7 @@ private fun RowScope.SecondaryText( modifier = modifier.clipToBounds(), text = text, style = style, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, ) 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 265668f0f6..778d535fc6 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 @@ -7,7 +7,6 @@ package io.element.android.libraries.matrix.ui.model -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.platform.LocalContext @@ -15,6 +14,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.font.FontWeight +import io.element.android.compound.theme.ElementTheme 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.UserId @@ -26,6 +26,7 @@ data class InviteSender( val userId: UserId, val displayName: String, val avatarData: AvatarData, + val membershipChangeReason: String?, ) { @Composable fun annotatedString(): AnnotatedString { @@ -37,7 +38,7 @@ data class InviteSender( AnnotatedString.Range( SpanStyle( fontWeight = FontWeight.Medium, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.textPrimary ), start = senderNameStart, end = senderNameStart + displayName.length @@ -52,4 +53,5 @@ fun RoomMember.toInviteSender() = InviteSender( userId = userId, displayName = displayName ?: "", avatarData = getAvatarData(size = AvatarSize.InviteSender), + membershipChangeReason = membershipChangeReason ) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt index 464cc57f6e..72f69932aa 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensions.kt @@ -7,9 +7,12 @@ package io.element.android.libraries.matrix.ui.model +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource 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.user.MatrixUser +import io.element.android.libraries.ui.strings.CommonStrings fun MatrixUser.getAvatarData(size: AvatarSize) = AvatarData( id = userId.value, @@ -21,3 +24,14 @@ fun MatrixUser.getAvatarData(size: AvatarSize) = AvatarData( fun MatrixUser.getBestName(): String { return displayName?.takeIf { it.isNotEmpty() } ?: userId.value } + +@Composable +fun MatrixUser.getFullName(): String { + return displayName.let { name -> + if (name.isNullOrBlank()) { + userId.value + } else { + stringResource(CommonStrings.common_name_and_id, name, userId.value) + } + } +} diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressField.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressField.kt index acd7723b87..f97e2ff766 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressField.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressField.kt @@ -15,6 +15,7 @@ import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextField +import io.element.android.libraries.designsystem.theme.components.TextFieldValidity import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.testTag import io.element.android.libraries.ui.strings.CommonStrings @@ -56,7 +57,10 @@ fun RoomAddressField( } else -> supportingText }, - isError = addressValidity.isError(), + validity = when (addressValidity) { + RoomAddressValidity.InvalidSymbols, RoomAddressValidity.NotAvailable -> TextFieldValidity.Invalid + else -> TextFieldValidity.None + }, onValueChange = onAddressChange, singleLine = true, ) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidity.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidity.kt index 25af0ab98d..fef36ccd20 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidity.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidity.kt @@ -19,8 +19,4 @@ sealed interface RoomAddressValidity { data object InvalidSymbols : RoomAddressValidity data object NotAvailable : RoomAddressValidity data object Valid : RoomAddressValidity - - fun isError(): Boolean { - return this is InvalidSymbols || this is NotAvailable - } } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidityEffect.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidityEffect.kt index 73c14c50df..e6ef9de2d3 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidityEffect.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/address/RoomAddressValidityEffect.kt @@ -32,7 +32,7 @@ fun RoomAddressValidityEffect( } // debounce the room address validation delay(300) - val roomAlias = client.roomAliasFromName(newRoomAddress).getOrNull() + val roomAlias = client.roomAliasFromName(newRoomAddress) if (roomAlias == null || !roomAliasHelper.isRoomAliasValid(roomAlias)) { onChange(RoomAddressValidity.InvalidSymbols) } else { diff --git a/libraries/matrixui/src/main/res/values-cs/translations.xml b/libraries/matrixui/src/main/res/values-cs/translations.xml index 0e557cc546..a8e82b288c 100644 --- a/libraries/matrixui/src/main/res/values-cs/translations.xml +++ b/libraries/matrixui/src/main/res/values-cs/translations.xml @@ -1,4 +1,7 @@ + "Poslat pozvánku" + "Chcete začít chatovat s %1$s?" + "Poslat pozvánku?" "%1$s (%2$s) vás pozval(a)" diff --git a/libraries/matrixui/src/main/res/values-de/translations.xml b/libraries/matrixui/src/main/res/values-de/translations.xml index 591fe78328..67d42162c3 100644 --- a/libraries/matrixui/src/main/res/values-de/translations.xml +++ b/libraries/matrixui/src/main/res/values-de/translations.xml @@ -1,4 +1,7 @@ + "Einladung senden" + "Möchten Sie einen Chat mit %1$s starten?" + "Einladung senden?" "%1$s (%2$s) hat dich eingeladen" diff --git a/libraries/matrixui/src/main/res/values-et/translations.xml b/libraries/matrixui/src/main/res/values-et/translations.xml index 5e36d57d33..bd9840940e 100644 --- a/libraries/matrixui/src/main/res/values-et/translations.xml +++ b/libraries/matrixui/src/main/res/values-et/translations.xml @@ -1,4 +1,7 @@ + "Saada kutse" + "Kas sa soovid alustada vestlust kasutajaga %1$s?" + "Kas saadame kutse?" "%1$s (%2$s) saatis sulle kutse" diff --git a/libraries/matrixui/src/main/res/values-fi/translations.xml b/libraries/matrixui/src/main/res/values-fi/translations.xml index abed5f4a88..156f7f2ac2 100644 --- a/libraries/matrixui/src/main/res/values-fi/translations.xml +++ b/libraries/matrixui/src/main/res/values-fi/translations.xml @@ -1,4 +1,6 @@ + "Lähetä kutsu" + "Lähetetäänkö kutsu?" "%1$s (%2$s) kutsui sinut" diff --git a/libraries/matrixui/src/main/res/values-fr/translations.xml b/libraries/matrixui/src/main/res/values-fr/translations.xml index fc024258fa..ca952f53c0 100644 --- a/libraries/matrixui/src/main/res/values-fr/translations.xml +++ b/libraries/matrixui/src/main/res/values-fr/translations.xml @@ -1,4 +1,7 @@ + "Envoyer l’invitation" + "Voulez-vous entamer une discussion avec %1$s ?" + "Envoyer l’invitation ?" "%1$s (%2$s) vous a invité(e)" diff --git a/libraries/matrixui/src/main/res/values-hu/translations.xml b/libraries/matrixui/src/main/res/values-hu/translations.xml index 573f8e1f10..f22454cd16 100644 --- a/libraries/matrixui/src/main/res/values-hu/translations.xml +++ b/libraries/matrixui/src/main/res/values-hu/translations.xml @@ -1,4 +1,7 @@ + "Meghívó küldése" + "Csevegést kezd vele: %1$s?" + "Meghívó küldése?" "%1$s (%2$s) meghívta" diff --git a/libraries/matrixui/src/main/res/values-it/translations.xml b/libraries/matrixui/src/main/res/values-it/translations.xml index 5f31ef01ba..eb9370de4b 100644 --- a/libraries/matrixui/src/main/res/values-it/translations.xml +++ b/libraries/matrixui/src/main/res/values-it/translations.xml @@ -1,4 +1,6 @@ + "Invia invito" + "Inviare invito?" "%1$s (%2$s) ti ha invitato" diff --git a/libraries/matrixui/src/main/res/values-pl/translations.xml b/libraries/matrixui/src/main/res/values-pl/translations.xml index 3c5d9a0d7f..caa2c0e07d 100644 --- a/libraries/matrixui/src/main/res/values-pl/translations.xml +++ b/libraries/matrixui/src/main/res/values-pl/translations.xml @@ -1,4 +1,7 @@ + "Wyślij zaproszenie" + "Czy chcesz rozpocząć czat z %1$s?" + "Wysłać zaproszenie?" "%1$s (%2$s) zaprosił Cię" diff --git a/libraries/matrixui/src/main/res/values-pt/translations.xml b/libraries/matrixui/src/main/res/values-pt/translations.xml index 5b5f826912..c3cb0dcbda 100644 --- a/libraries/matrixui/src/main/res/values-pt/translations.xml +++ b/libraries/matrixui/src/main/res/values-pt/translations.xml @@ -1,4 +1,7 @@ + "Enviar convite" + "Gostarias de iniciar uma conversa com %1$s?" + "Enviar convite?" "%1$s (%2$s) convidou-te" diff --git a/libraries/matrixui/src/main/res/values-ru/translations.xml b/libraries/matrixui/src/main/res/values-ru/translations.xml index 4e076cde1d..44c30532d0 100644 --- a/libraries/matrixui/src/main/res/values-ru/translations.xml +++ b/libraries/matrixui/src/main/res/values-ru/translations.xml @@ -1,4 +1,7 @@ + "Отправить приглашение" + "Хотите начать чат с %1$s?" + "Отправить приглашение?" "%1$s (%2$s) пригласил вас" diff --git a/libraries/matrixui/src/main/res/values-sk/translations.xml b/libraries/matrixui/src/main/res/values-sk/translations.xml index 0fada643d5..57b644f1ee 100644 --- a/libraries/matrixui/src/main/res/values-sk/translations.xml +++ b/libraries/matrixui/src/main/res/values-sk/translations.xml @@ -1,4 +1,7 @@ + "Odoslať pozvánku" + "Chceli by ste začať rozhovor s používateľom %1$s?" + "Poslať pozvánku?" "%1$s (%2$s) vás pozval/a" diff --git a/libraries/matrixui/src/main/res/values-tr/translations.xml b/libraries/matrixui/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..dc065e1d75 --- /dev/null +++ b/libraries/matrixui/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "Davet gönder" + "%1$s ile sohbet başlatmak ister misiniz?" + "Davet gönder?" + "%1$s (%2$s) sizi davet etti" + diff --git a/libraries/matrixui/src/main/res/values-uk/translations.xml b/libraries/matrixui/src/main/res/values-uk/translations.xml index 5b4209626a..324bb96086 100644 --- a/libraries/matrixui/src/main/res/values-uk/translations.xml +++ b/libraries/matrixui/src/main/res/values-uk/translations.xml @@ -1,4 +1,7 @@ + "Надіслати запрошення" + "Хочете розпочати бесіду з %1$s?" + "Надіслати запрошення?" "%1$s (%2$s) запрошує вас" diff --git a/libraries/matrixui/src/main/res/values/localazy.xml b/libraries/matrixui/src/main/res/values/localazy.xml index 80939a8863..b27021ebd6 100644 --- a/libraries/matrixui/src/main/res/values/localazy.xml +++ b/libraries/matrixui/src/main/res/values/localazy.xml @@ -1,4 +1,7 @@ + "Send invite" + "Would you like to start a chat with %1$s?" + "Send invite?" "%1$s (%2$s) invited you" diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt index 6ef12cc305..288d0b3d9c 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt @@ -7,12 +7,6 @@ package io.element.android.libraries.matrix.ui.messages.reply -import android.content.res.Configuration -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalContext -import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -52,6 +46,7 @@ import io.element.android.libraries.matrix.test.timeline.aProfileTimelineDetails import io.element.android.libraries.matrix.ui.components.A_BLUR_HASH import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailInfo import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailType +import io.element.android.tests.testutils.withConfigurationAndContext import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith @@ -350,7 +345,7 @@ class InReplyToMetadataKtTest { @Test fun `a location message content`() = runTest { moleculeFlow(RecompositionMode.Immediate) { - testEnv { + withConfigurationAndContext { anInReplyToDetailsReady( eventContent = aMessageContent( messageType = LocationMessageType( @@ -380,7 +375,7 @@ class InReplyToMetadataKtTest { @Test fun `a voice message content`() = runTest { moleculeFlow(RecompositionMode.Immediate) { - testEnv { + withConfigurationAndContext { anInReplyToDetailsReady( eventContent = aMessageContent( messageType = VoiceMessageType( @@ -588,17 +583,3 @@ fun anImageInfo(): ImageInfo { blurhash = A_BLUR_HASH, ) } - -@Composable -private fun testEnv(content: @Composable () -> Any?): Any? { - var result: Any? = null - CompositionLocalProvider( - LocalConfiguration provides Configuration(), - LocalContext provides ApplicationProvider.getApplicationContext(), - ) { - content().apply { - result = this - } - } - return result -} diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensionsTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensionsTest.kt new file mode 100644 index 0000000000..611616cdd7 --- /dev/null +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/model/MatrixUserExtensionsTest.kt @@ -0,0 +1,101 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.ui.model + +import androidx.test.ext.junit.runners.AndroidJUnit4 +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.designsystem.components.avatar.AvatarData +import io.element.android.libraries.designsystem.components.avatar.AvatarSize +import io.element.android.libraries.matrix.api.user.MatrixUser +import io.element.android.libraries.matrix.test.A_USER_ID +import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.withConfigurationAndContext +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class MatrixUserExtensionsTest { + @get:Rule + val warmUpRule = WarmUpRule() + + @Test + fun `getAvatarData should return the expected value`() { + val matrixUser = MatrixUser( + userId = A_USER_ID, + displayName = "displayName", + avatarUrl = "avatarUrl", + ) + val expected = AvatarData( + id = A_USER_ID.value, + name = "displayName", + url = "avatarUrl", + size = AvatarSize.UserHeader, + ) + assertThat(matrixUser.getAvatarData(AvatarSize.UserHeader)).isEqualTo(expected) + } + + @Test + fun `getBestName should return the display name is available`() { + val matrixUser = MatrixUser( + userId = A_USER_ID, + displayName = "displayName", + ) + assertThat(matrixUser.getBestName()).isEqualTo("displayName") + } + + @Test + fun `getBestName should return the id when name is not available`() { + val matrixUser = MatrixUser( + userId = A_USER_ID, + displayName = null, + ) + assertThat(matrixUser.getBestName()).isEqualTo(A_USER_ID.value) + } + + @Test + fun `getBestName should return the id when name is empty`() { + val matrixUser = MatrixUser( + userId = A_USER_ID, + displayName = "", + ) + assertThat(matrixUser.getBestName()).isEqualTo(A_USER_ID.value) + } + + @Test + fun `getFullName should return the display name is available and the userId`() = runTest { + val matrixUser = MatrixUser( + userId = A_USER_ID, + displayName = "displayName", + ) + moleculeFlow(RecompositionMode.Immediate) { + withConfigurationAndContext { + matrixUser.getFullName() + } + }.test { + assertThat(awaitItem()).isEqualTo("displayName (@alice:server.org)") + } + } + + @Test + fun `getBestName should return only the id when name is not available`() = runTest { + val matrixUser = MatrixUser( + userId = A_USER_ID, + displayName = null, + ) + moleculeFlow(RecompositionMode.Immediate) { + matrixUser.getFullName() + }.test { + assertThat(awaitItem()).isEqualTo(A_USER_ID.value) + } + } +} 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 a824fc5540..906283c457 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 @@ -7,6 +7,7 @@ package io.element.android.libraries.mediaviewer.api +import android.os.Parcelable import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin @@ -14,6 +15,8 @@ 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.media.MediaSource +import io.element.android.libraries.matrix.api.timeline.Timeline +import kotlinx.parcelize.Parcelize interface MediaViewerEntryPoint : FeatureEntryPoint { fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder @@ -39,9 +42,14 @@ interface MediaViewerEntryPoint : FeatureEntryPoint { val canShowInfo: Boolean, ) : NodeInputs - enum class MediaViewerMode { - SingleMedia, - TimelineImagesAndVideos, - TimelineFilesAndAudios, + sealed interface MediaViewerMode : Parcelable { + @Parcelize + data object SingleMedia : MediaViewerMode + + @Parcelize + data class TimelineImagesAndVideos(val timelineMode: Timeline.Mode) : MediaViewerMode + + @Parcelize + data class TimelineFilesAndAudios(val timelineMode: Timeline.Mode) : MediaViewerMode } } 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 f7426aa4e9..f776b35016 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 @@ -18,6 +18,7 @@ interface FocusedTimelineMediaGalleryDataSourceFactory { fun createFor( eventId: EventId, mediaItem: MediaItem.Event, + onlyPinnedEvents: Boolean, ): MediaGalleryDataSource } @@ -30,6 +31,7 @@ class DefaultFocusedTimelineMediaGalleryDataSourceFactory @Inject constructor( override fun createFor( eventId: EventId, mediaItem: MediaItem.Event, + onlyPinnedEvents: Boolean, ): MediaGalleryDataSource { return TimelineMediaGalleryDataSource( room = room, @@ -37,6 +39,7 @@ class DefaultFocusedTimelineMediaGalleryDataSourceFactory @Inject constructor( room = room, eventId = eventId, initialMediaItem = mediaItem, + onlyPinnedEvents = onlyPinnedEvents, ), timelineMediaItemsFactory = timelineMediaItemsFactory, mediaItemsPostProcessor = mediaItemsPostProcessor, 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 6dc4136193..2d7739cc32 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 @@ -12,6 +12,7 @@ import io.element.android.libraries.di.RoomScope import io.element.android.libraries.di.SingleIn 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.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.mediaviewer.impl.model.GroupedMediaItems @@ -44,7 +45,7 @@ class LiveMediaTimeline @Inject constructor( override suspend fun getTimeline(): Result = mutex.withLock { val currentTimeline = timeline if (currentTimeline == null) { - room.mediaTimeline(null) + room.createTimeline(CreateTimelineParams.MediaOnly) .onSuccess { timeline = it } } else { Result.success(currentTimeline) @@ -58,14 +59,22 @@ class LiveMediaTimeline @Inject constructor( /** * A class that will provide a media timeline that is focused on a particular event. + * Optionally, the timeline will only contain the pinned events. */ class FocusedMediaTimeline( private val room: MatrixRoom, private val eventId: EventId, + private val onlyPinnedEvents: Boolean, initialMediaItem: MediaItem.Event, ) : MediaTimeline { override suspend fun getTimeline(): Result { - return room.mediaTimeline(eventId) + return room.createTimeline( + createTimelineParams = if (onlyPinnedEvents) { + CreateTimelineParams.PinnedOnly + } else { + CreateTimelineParams.MediaOnlyFocused(eventId) + }, + ) } override val cache = persistentListOf( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDeleteConfirmationBottomSheet.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDeleteConfirmationBottomSheet.kt index 451569233f..2b3fcb144d 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDeleteConfirmationBottomSheet.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDeleteConfirmationBottomSheet.kt @@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -141,7 +140,7 @@ private fun MediaRow( // Info Text( text = state.mediaInfo.mimeType + " - " + state.mediaInfo.formattedFileSize, - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodySmRegular, 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 90baecb988..5d4b67a411 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 @@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -165,7 +164,7 @@ private fun SenderRow( // Id Text( text = mediaInfo.senderId?.value.orEmpty(), - color = MaterialTheme.colorScheme.secondary, + color = ElementTheme.colors.textSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis, style = ElementTheme.typography.fontBodyMdRegular, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryRootNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryRootNode.kt index 7317920005..f862788c30 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryRootNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryRootNode.kt @@ -27,6 +27,7 @@ import io.element.android.libraries.architecture.overlay.operation.show import io.element.android.libraries.di.RoomScope 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 import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint import io.element.android.libraries.mediaviewer.api.MediaInfo import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint @@ -96,9 +97,9 @@ class MediaGalleryRootNode @AssistedInject constructor( val mode = when (item) { is MediaItem.Audio, is MediaItem.Voice, - is MediaItem.File -> MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios + is MediaItem.File -> MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios(Timeline.Mode.MEDIA) is MediaItem.Image, - is MediaItem.Video -> MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos + is MediaItem.Video -> MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos(Timeline.Mode.MEDIA) } overlay.show( NavTarget.MediaViewer( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/AudioItemView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/AudioItemView.kt index 2cbbe6826c..1bee0dffe3 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/AudioItemView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/AudioItemView.kt @@ -20,8 +20,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.GraphicEq import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -30,6 +28,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.compound.tokens.generated.CompoundIcons import io.element.android.libraries.core.extensions.withBrackets import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -93,7 +92,7 @@ private fun FilenameRow( ) .size(32.dp) .padding(6.dp), - imageVector = Icons.Outlined.GraphicEq, + imageVector = CompoundIcons.Audio(), contentDescription = null, ) Spacer(modifier = Modifier.width(8.dp)) 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 4449e5eefd..8120788c5f 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 @@ -14,6 +14,7 @@ import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope import io.element.android.libraries.mediaviewer.api.local.LocalMedia import io.element.android.libraries.mediaviewer.api.local.LocalMediaRenderer +import me.saket.telephoto.zoomable.OverzoomEffect import me.saket.telephoto.zoomable.ZoomSpec import me.saket.telephoto.zoomable.rememberZoomableState import javax.inject.Inject @@ -24,7 +25,7 @@ class DefaultLocalMediaRenderer @Inject constructor() : LocalMediaRenderer { override fun Render(localMedia: LocalMedia) { val localMediaViewState = rememberLocalMediaViewState( zoomableState = rememberZoomableState( - zoomSpec = ZoomSpec(maxZoomFactor = 4f, preventOverOrUnderZoom = false) + zoomSpec = ZoomSpec(maxZoomFactor = 4f, overzoomEffect = OverzoomEffect.NoLimits) ) ) LocalMediaView( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt index 226aa85234..684b96cb9f 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/audio/MediaAudioView.kt @@ -23,9 +23,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.GraphicEq -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf @@ -54,6 +51,7 @@ import androidx.media3.exoplayer.ExoPlayer import androidx.media3.ui.AspectRatioFrameLayout import androidx.media3.ui.PlayerView import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.components.media.WaveformPlaybackView import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -261,13 +259,13 @@ private fun ExoPlayerMediaAudioView( modifier = Modifier .size(72.dp) .clip(CircleShape) - .background(MaterialTheme.colorScheme.onBackground), + .background(ElementTheme.colors.iconPrimary), contentAlignment = Alignment.Center, ) { Icon( - imageVector = Icons.Outlined.GraphicEq, + imageVector = CompoundIcons.Audio(), contentDescription = null, - tint = MaterialTheme.colorScheme.background, + tint = ElementTheme.colors.iconOnSolidPrimary, modifier = Modifier .size(32.dp), ) @@ -335,7 +333,7 @@ private fun AudioInfoView( style = ElementTheme.typography.fontBodyMdRegular, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.textPrimary ) } if (info != null) { @@ -346,7 +344,7 @@ private fun AudioInfoView( style = ElementTheme.typography.fontBodyLgRegular, overflow = TextOverflow.Ellipsis, textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.textPrimary ) Spacer(modifier = Modifier.height(4.dp)) Text( @@ -354,7 +352,7 @@ private fun AudioInfoView( style = ElementTheme.typography.fontBodyMdRegular, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.textPrimary ) } } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/file/MediaFileView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/file/MediaFileView.kt index 7cc48dbd69..29e743c7b0 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/file/MediaFileView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/file/MediaFileView.kt @@ -19,9 +19,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.GraphicEq -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -72,13 +69,13 @@ fun MediaFileView( modifier = Modifier .size(72.dp) .clip(CircleShape) - .background(MaterialTheme.colorScheme.onBackground), + .background(ElementTheme.colors.iconPrimary), contentAlignment = Alignment.Center, ) { Icon( - imageVector = if (isAudio) Icons.Outlined.GraphicEq else CompoundIcons.Attachment(), + imageVector = if (isAudio) CompoundIcons.Audio() else CompoundIcons.Attachment(), contentDescription = null, - tint = MaterialTheme.colorScheme.background, + tint = ElementTheme.colors.iconOnSolidPrimary, modifier = Modifier .size(32.dp) .rotate(if (isAudio) 0f else -45f), @@ -92,7 +89,7 @@ fun MediaFileView( style = ElementTheme.typography.fontBodyLgRegular, overflow = TextOverflow.Ellipsis, textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.textPrimary ) Spacer(modifier = Modifier.height(4.dp)) Text( @@ -100,7 +97,7 @@ fun MediaFileView( style = ElementTheme.typography.fontBodyMdRegular, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = MaterialTheme.colorScheme.primary + color = ElementTheme.colors.textPrimary ) } } 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 ebaba4cdcd..3fd01cc08e 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 @@ -52,8 +52,8 @@ class MediaViewerDataSource( private val galleryMode = when (mode) { MediaViewerMode.SingleMedia, - MediaViewerMode.TimelineImagesAndVideos -> MediaGalleryMode.Images - MediaViewerMode.TimelineFilesAndAudios -> MediaGalleryMode.Files + is MediaViewerMode.TimelineImagesAndVideos -> MediaGalleryMode.Images + is MediaViewerMode.TimelineFilesAndAudios -> MediaGalleryMode.Files } // Map of sourceUrl to local media state 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 7876641051..d994f374f9 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 @@ -22,6 +22,7 @@ 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.media.MatrixMediaLoader +import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint import io.element.android.libraries.mediaviewer.api.local.LocalMediaFactory import io.element.android.libraries.mediaviewer.impl.datasource.FocusedTimelineMediaGalleryDataSourceFactory @@ -69,16 +70,40 @@ class MediaViewerNode @AssistedInject constructor( // Should not happen timelineMediaGalleryDataSource } else { - // Does timelineMediaGalleryDataSource knows the eventId? - val lastData = timelineMediaGalleryDataSource.getLastData().dataOrNull() - val isEventKnown = lastData?.hasEvent(eventId) == true - if (isEventKnown) { - timelineMediaGalleryDataSource - } else { - focusedTimelineMediaGalleryDataSourceFactory.createFor( - eventId = eventId, - mediaItem = inputs.toMediaItem(), - ) + // 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 + } + when (timelineMode) { + null -> timelineMediaGalleryDataSource + Timeline.Mode.LIVE -> { + // Even if the timelineMediaGalleryDataSource does not know the eventId, the SDK will create the timeline faster + timelineMediaGalleryDataSource + } + Timeline.Mode.FOCUSED_ON_EVENT -> { + // Does timelineMediaGalleryDataSource knows the eventId? + val lastData = timelineMediaGalleryDataSource.getLastData().dataOrNull() + val isEventKnown = lastData?.hasEvent(eventId) == true + if (isEventKnown) { + timelineMediaGalleryDataSource + } else { + focusedTimelineMediaGalleryDataSourceFactory.createFor( + eventId = eventId, + mediaItem = inputs.toMediaItem(), + onlyPinnedEvents = false, + ) + } + } + Timeline.Mode.PINNED_EVENTS -> { + focusedTimelineMediaGalleryDataSourceFactory.createFor( + eventId = eventId, + mediaItem = inputs.toMediaItem(), + onlyPinnedEvents = true, + ) + } + Timeline.Mode.MEDIA -> timelineMediaGalleryDataSource } } } 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 b926291461..834edacd76 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 @@ -204,8 +204,8 @@ class MediaViewerPresenter @AssistedInject constructor( private fun showNoMoreItemsSnackbar() { val messageResId = when (inputs.mode) { MediaViewerEntryPoint.MediaViewerMode.SingleMedia, - MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos -> R.string.screen_media_details_no_more_media_to_show - MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios -> R.string.screen_media_details_no_more_files_to_show + is MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos -> R.string.screen_media_details_no_more_media_to_show + is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios -> R.string.screen_media_details_no_more_files_to_show } val message = SnackbarMessage(messageResId) snackbarDispatcher.post(message) 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 3ba57cae33..dc57f38349 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 @@ -23,8 +23,6 @@ import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.OpenInNew import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.TopAppBarDefaults @@ -81,6 +79,7 @@ import io.element.android.libraries.mediaviewer.impl.local.rememberLocalMediaVie import io.element.android.libraries.mediaviewer.impl.util.bgCanvasWithTransparency import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.coroutines.delay +import me.saket.telephoto.zoomable.OverzoomEffect import me.saket.telephoto.zoomable.ZoomSpec import me.saket.telephoto.zoomable.rememberZoomableState @@ -297,7 +296,7 @@ private fun MediaViewerPage( ) { Box(contentAlignment = Alignment.Center) { val zoomableState = rememberZoomableState( - zoomSpec = ZoomSpec(maxZoomFactor = 4f, preventOverOrUnderZoom = false) + zoomSpec = ZoomSpec(maxZoomFactor = 4f, overzoomEffect = OverzoomEffect.NoLimits) ) val localMediaViewState = rememberLocalMediaViewState(zoomableState) val showThumbnail = !localMediaViewState.isReady @@ -467,7 +466,7 @@ private fun MediaViewerTopBar( contentDescription = stringResource(id = CommonStrings.common_install_apk_android) ) else -> Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + imageVector = CompoundIcons.PopOut(), contentDescription = stringResource(id = CommonStrings.action_open_with) ) } diff --git a/libraries/mediaviewer/impl/src/main/res/values-cs/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-cs/translations.xml index 3cab2b499a..bcb7b64237 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-cs/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-cs/translations.xml @@ -16,8 +16,6 @@ "Název souboru" "Žádné další soubory k zobrazení" "Žádná další média k zobrazení" - "Tento soubor bude odstraněn z místnosti a členové k němu nebudou mít přístup." - "Smazat soubor?" "Nahrál(a)" "Nahráno" diff --git a/libraries/mediaviewer/impl/src/main/res/values-de/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-de/translations.xml index f7cb2c9e60..e27fd3f1cc 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-de/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-de/translations.xml @@ -16,8 +16,6 @@ "Dateiname" "Keine weiteren Dateien zum Anzeigen" "Keine weiteren Medien mehr zum Anzeigen" - "Diese Datei wird aus dem Chatroom entfernt und die Mitglieder werden keinen Zugriff mehr darauf haben." - "Datei löschen?" "Hochgeladen von" "Hochgeladen am" diff --git a/libraries/mediaviewer/impl/src/main/res/values-el/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-el/translations.xml index 8452eb9158..3427270aae 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-el/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-el/translations.xml @@ -11,8 +11,6 @@ "Πολυμέσα και αρχεία" "Μορφή αρχείου" "Όνομα αρχείου" - "Αυτό το αρχείο θα αφαιρεθεί από το δωμάτιο και τα μέλη δεν θα έχουν πρόσβαση σε αυτό." - "Διαγραφή αρχείου;" "Μεταφορτώθηκε από" "Μεταφορτώθηκε στις" diff --git a/libraries/mediaviewer/impl/src/main/res/values-et/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-et/translations.xml index d66433e52e..63329a797d 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-et/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-et/translations.xml @@ -16,8 +16,6 @@ "Failinimi" "Pole enam kuvatavaid faile" "Pole enam kuvatavat meediat" - "Järgnevaga eemaldame selle faili jututoast ja tema liikmed enam ei pääse failile ligi." - "Kas kustutame faili?" "Üleslaadija" "Üleslaaditud" diff --git a/libraries/mediaviewer/impl/src/main/res/values-fi/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-fi/translations.xml index b477b7c94f..b3728cb9b7 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-fi/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-fi/translations.xml @@ -16,8 +16,6 @@ "Tiedostonimi" "Ei enää näytettäviä tiedostoja" "Ei enää näytettävää mediaa" - "Tämä tiedosto poistetaan huoneesta, eikä jäsenillä ole enää pääsyä siihen." - "Poistetaanko tiedosto?" "Lähettäjä" "Lähetetty" diff --git a/libraries/mediaviewer/impl/src/main/res/values-fr/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-fr/translations.xml index 007356e3f6..b6334095ab 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-fr/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-fr/translations.xml @@ -16,8 +16,6 @@ "Nom du fichier" "Il n’y a plus de fichiers à montrer" "Il n’y a plus de médias à montrer" - "Ce fichier sera supprimé du salon et les membres n’y auront plus accès." - "Supprimer le fichier ?" "Envoyé par" "Envoyé le" diff --git a/libraries/mediaviewer/impl/src/main/res/values-hu/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-hu/translations.xml index 8876145e58..14cc11fb96 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-hu/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-hu/translations.xml @@ -16,8 +16,6 @@ "Fájlnév" "Nincs több megjeleníthető fájl" "Nincs több megjeleníthető média" - "Ez a fájl el lesz távolítva a szobából, és a tagok nem férhetnek hozzá." - "Törli a fájlt?" "Feltöltötte:" "Feltöltve:" diff --git a/libraries/mediaviewer/impl/src/main/res/values-it/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-it/translations.xml index 1bdbfa08d9..72701194fc 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-it/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-it/translations.xml @@ -16,8 +16,6 @@ "Nome del file" "Nessun altro file da mostrare" "Non ci sono più contenuti multimediali da mostrare" - "Questo file verrà rimosso dalla stanza e i membri non ne avranno accesso." - "Eliminare il file?" "Caricato da" "Caricato il" diff --git a/libraries/mediaviewer/impl/src/main/res/values-pl/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-pl/translations.xml index 289b75a4d8..c398123873 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-pl/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-pl/translations.xml @@ -2,6 +2,7 @@ "Ten plik zostanie usunięty z pokoju, a członkowie nie będą mieli do niego dostępu." "Usunąć plik?" + "Sprawdź połączenie internetowe i spróbuj ponownie." "Dokumenty, pliki audio i wiadomości głosowe przesłane do tego pokoju będą wyświetlane tutaj." "Jeszcze nie przesłano plików" "Wczytywanie plików…" @@ -13,8 +14,8 @@ "Media i pliki" "Format pliku" "Nazwa pliku" - "Plik zostanie usunięty z pokoju, a członkowie nie będą mieli do niego dostępu." - "Usunąć plik?" + "Brak plików do pokazania" + "Brak mediów do pokazania" "Przesłane przez" "Przesłane w dniu" diff --git a/libraries/mediaviewer/impl/src/main/res/values-pt/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-pt/translations.xml index d36fb9cf83..453a00969d 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-pt/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-pt/translations.xml @@ -2,6 +2,9 @@ "Este ficheiro será removido da sala e os membros deixarão de o poder aceder." "Eliminar ficheiro?" + "Verifica a tua ligação à Internet e tenta novamente." + "Documentos, ficheiros de áudio e mensagens de voz carregados para esta sala serão mostrados aqui." + "Ainda sem qualquer ficheiro" "A carregar ficheiros…" "A carregar multimédia…" "Ficheiros" @@ -11,7 +14,8 @@ "Multimédia e ficheiros" "Formato do ficheiro" "Nome do ficheiro" - "Eliminar ficheiro?" + "Sem mais ficheiros para mostrar" + "Sem mais multimédia para mostrar" "Enviado por" "Enviado a" diff --git a/libraries/mediaviewer/impl/src/main/res/values-ru/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-ru/translations.xml index df898e332f..0598d68fa5 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-ru/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-ru/translations.xml @@ -16,8 +16,6 @@ "Имя файла" "Больше нет файлов для показа" "Больше нет медиа для показа" - "Этот файл будет удален из комнаты и у участников не будет к нему доступа." - "Удалить файл?" "Загружено" "Загружено на" diff --git a/libraries/mediaviewer/impl/src/main/res/values-sk/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-sk/translations.xml index 2b9dbd3952..4cfc16b3b3 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-sk/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-sk/translations.xml @@ -16,8 +16,6 @@ "Názov súboru" "Žiadne ďalšie súbory na zobrazenie" "Žiadne ďalšie médiá na zobrazenie" - "Tento súbor bude odstránený z miestnosti a členovia k nemu nebudú mať prístup." - "Vymazať súbor?" "Nahrané používateľom" "Nahrané dňa" diff --git a/libraries/mediaviewer/impl/src/main/res/values-sv/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-sv/translations.xml new file mode 100644 index 0000000000..fa5305ac47 --- /dev/null +++ b/libraries/mediaviewer/impl/src/main/res/values-sv/translations.xml @@ -0,0 +1,18 @@ + + + "Den här filen kommer att tas bort från rummet och medlemmar kommer inte att ha tillgång till den." + "Radera fil?" + "Dokument, ljudfiler och röstmeddelanden som laddas upp till detta rum visas här." + "Inga filer uppladdade än" + "Laddar in filer…" + "Läser in media…" + "Filer" + "Media" + "Bilder och videor som laddas upp till detta rum kommer att visas här." + "Ingen media uppladdad ännu" + "Media och filer" + "Filformat" + "Filnamn" + "Uppladdad av" + "Uppladdad på" + diff --git a/libraries/mediaviewer/impl/src/main/res/values-tr/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..30a1d13c4d --- /dev/null +++ b/libraries/mediaviewer/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,21 @@ + + + "Bu dosya odadan kaldırılır ve üyeler bu dosyaya erişemez." + "Dosyayı sil?" + "İnternet bağlantınızı kontrol edin ve tekrar deneyin." + "Bu odaya yüklenen belgeler, ses dosyaları ve sesli mesajlar burada gösterilecektir." + "Henüz yüklenen dosya yok" + "Dosyalar yükleniyor…" + "Medya yükleniyor…" + "Dosyalar" + "Medya" + "Bu odaya yüklenen resimler ve videolar burada gösterilecektir." + "Henüz yüklenen medya yok" + "Medya ve dosyalar" + "Dosya biçimi" + "Dosya adı" + "Gösterilecek daha fazla dosya yok" + "Gösterilecek daha fazla medya yok" + "Yükleyen:" + "Yüklendi" + diff --git a/libraries/mediaviewer/impl/src/main/res/values-uk/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-uk/translations.xml index 33bb4ed210..45e1e1703b 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-uk/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-uk/translations.xml @@ -14,8 +14,8 @@ "Медіа та файли" "Формат файлу" "Назва файлу" - "Цей файл буде вилучено з кімнати, і учасники не матимуть доступу до нього." - "Видалити файл?" + "Більше немає файлів для показу" + "Більше немає медіа для показу" "Вивантажено користувачем" "Вивантажено" diff --git a/libraries/mediaviewer/impl/src/main/res/values-zh-rTW/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-zh-rTW/translations.xml index 41c4505419..9f0ec12011 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-zh-rTW/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-zh-rTW/translations.xml @@ -14,8 +14,6 @@ "媒體與檔案" "檔案格式" "檔案名稱" - "此檔案將會從聊天室中移除,成員將無法存取該檔案。" - "刪除檔案?" "上傳者:" "上傳於" diff --git a/libraries/mediaviewer/impl/src/main/res/values-zh/translations.xml b/libraries/mediaviewer/impl/src/main/res/values-zh/translations.xml index 0a8b73eb54..08b33993dc 100644 --- a/libraries/mediaviewer/impl/src/main/res/values-zh/translations.xml +++ b/libraries/mediaviewer/impl/src/main/res/values-zh/translations.xml @@ -16,8 +16,6 @@ "文件名" "没有更多文件可显示了" "没有更多媒体可显示了" - "此文件将从房间中删除,并且成员将无法访问它。" - "删除文件?" "上传者:" "上传于" diff --git a/libraries/mediaviewer/impl/src/main/res/values/localazy.xml b/libraries/mediaviewer/impl/src/main/res/values/localazy.xml index 52a2218331..2982f8002f 100644 --- a/libraries/mediaviewer/impl/src/main/res/values/localazy.xml +++ b/libraries/mediaviewer/impl/src/main/res/values/localazy.xml @@ -16,8 +16,6 @@ "File name" "No more files to show" "No more media to show" - "This file will be removed from the room and members won’t have access to it." - "Delete file?" "Uploaded by" "Uploaded on" diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/DefaultFocusedTimelineMediaGalleryDataSourceFactoryTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/DefaultFocusedTimelineMediaGalleryDataSourceFactoryTest.kt index a2ab9b162f..7496b01324 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/DefaultFocusedTimelineMediaGalleryDataSourceFactoryTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/DefaultFocusedTimelineMediaGalleryDataSourceFactoryTest.kt @@ -25,6 +25,7 @@ class DefaultFocusedTimelineMediaGalleryDataSourceFactoryTest { val result = sut.createFor( eventId = AN_EVENT_ID, mediaItem = aMediaItemImage(), + onlyPinnedEvents = false, ) assertThat(result).isInstanceOf(TimelineMediaGalleryDataSource::class.java) } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedMediaTimelineTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedMediaTimelineTest.kt index 1d4fd3adbe..5c46ffd910 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedMediaTimelineTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedMediaTimelineTest.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.mediaviewer.impl.datasource import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.test.AN_EVENT_ID @@ -75,11 +76,11 @@ class FocusedMediaTimelineTest { @Test fun `getTimeline returns the timeline provided by the room`() = runTest { - val mediaTimelineResult = lambdaRecorder> { + val createTimelineResult = lambdaRecorder> { Result.success(FakeTimeline()) } val room = FakeMatrixRoom( - mediaTimelineResult = mediaTimelineResult, + createTimelineResult = createTimelineResult, ) val sut = createFocusedMediaTimeline( room = room, @@ -87,16 +88,36 @@ class FocusedMediaTimelineTest { ) val timeline = sut.getTimeline() assertThat(timeline.isSuccess).isTrue() - mediaTimelineResult.assertions().isCalledOnce().with(value(AN_EVENT_ID)) + createTimelineResult.assertions().isCalledOnce().with(value(CreateTimelineParams.MediaOnlyFocused(AN_EVENT_ID))) + } + + @Test + fun `getTimeline returns the timeline provided by the room for pinned Events`() = runTest { + val createTimelineResult = lambdaRecorder> { + Result.success(FakeTimeline()) + } + val room = FakeMatrixRoom( + createTimelineResult = createTimelineResult, + ) + val sut = createFocusedMediaTimeline( + room = room, + eventId = AN_EVENT_ID, + onlyPinnedEvent = true, + ) + val timeline = sut.getTimeline() + assertThat(timeline.isSuccess).isTrue() + createTimelineResult.assertions().isCalledOnce().with(value(CreateTimelineParams.PinnedOnly)) } private fun createFocusedMediaTimeline( room: MatrixRoom = FakeMatrixRoom(), eventId: EventId = AN_EVENT_ID, initialMediaItem: MediaItem.Event = aMediaItemImage(), + onlyPinnedEvent: Boolean = false, ) = FocusedMediaTimeline( room = room, eventId = eventId, initialMediaItem = initialMediaItem, + onlyPinnedEvents = onlyPinnedEvent, ) } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/LiveMediaTimelineTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/LiveMediaTimelineTest.kt index 95b62a5824..839f8798d2 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/LiveMediaTimelineTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/LiveMediaTimelineTest.kt @@ -8,7 +8,7 @@ package io.element.android.libraries.mediaviewer.impl.datasource import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.test.room.FakeMatrixRoom @@ -28,22 +28,22 @@ class LiveMediaTimelineTest { @Test fun `getTimeline returns the timeline provided by the room, then from cache`() = runTest { - val mediaTimelineResult = lambdaRecorder> { + val createTimelineResult = lambdaRecorder> { Result.success(FakeTimeline()) } val room = FakeMatrixRoom( - mediaTimelineResult = mediaTimelineResult, + createTimelineResult = createTimelineResult, ) val sut = createLiveMediaTimeline( room = room, ) val timeline = sut.getTimeline() assertThat(timeline.isSuccess).isTrue() - mediaTimelineResult.assertions().isCalledOnce().with(value(null)) + createTimelineResult.assertions().isCalledOnce().with(value(CreateTimelineParams.MediaOnly)) val timeline2 = sut.getTimeline() assertThat(timeline2.isSuccess).isTrue() // No called another time - mediaTimelineResult.assertions().isCalledOnce() + createTimelineResult.assertions().isCalledOnce() } private fun createLiveMediaTimeline( diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaGalleryDataSourceTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaGalleryDataSourceTest.kt index 736fd309f3..8e673ce7aa 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaGalleryDataSourceTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaGalleryDataSourceTest.kt @@ -57,7 +57,7 @@ class TimelineMediaGalleryDataSourceTest { val fakeTimeline = FakeTimeline() val sut = createTimelineMediaGalleryDataSource( room = FakeMatrixRoom( - mediaTimelineResult = { Result.success(fakeTimeline) }, + createTimelineResult = { Result.success(fakeTimeline) }, roomCoroutineScope = backgroundScope, ) ) @@ -75,7 +75,7 @@ class TimelineMediaGalleryDataSourceTest { runTest { val sut = createTimelineMediaGalleryDataSource( room = FakeMatrixRoom( - mediaTimelineResult = { Result.success(fakeTimeline) }, + createTimelineResult = { Result.success(fakeTimeline) }, roomCoroutineScope = backgroundScope, ) ) @@ -112,7 +112,7 @@ class TimelineMediaGalleryDataSourceTest { } val sut = createTimelineMediaGalleryDataSource( room = FakeMatrixRoom( - mediaTimelineResult = { Result.success(fakeTimeline) }, + createTimelineResult = { Result.success(fakeTimeline) }, roomCoroutineScope = backgroundScope, ) ) @@ -135,7 +135,7 @@ class TimelineMediaGalleryDataSourceTest { } val sut = createTimelineMediaGalleryDataSource( room = FakeMatrixRoom( - mediaTimelineResult = { Result.success(fakeTimeline) }, + createTimelineResult = { Result.success(fakeTimeline) }, roomCoroutineScope = backgroundScope, ) ) @@ -154,7 +154,7 @@ class TimelineMediaGalleryDataSourceTest { fun `test - failing to load timeline should emit an error`() = runTest { val sut = createTimelineMediaGalleryDataSource( room = FakeMatrixRoom( - mediaTimelineResult = { Result.failure(AN_EXCEPTION) }, + createTimelineResult = { Result.failure(AN_EXCEPTION) }, roomCoroutineScope = backgroundScope, ) ) @@ -176,7 +176,7 @@ class TimelineMediaGalleryDataSourceTest { ) val sut = createTimelineMediaGalleryDataSource( room = FakeMatrixRoom( - mediaTimelineResult = { Result.success(fakeTimeline) }, + createTimelineResult = { Result.success(fakeTimeline) }, roomCoroutineScope = backgroundScope, ) ) 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 1a43bbacf6..81e270a09f 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 @@ -52,7 +52,7 @@ class MediaGalleryPresenterTest { ), room = FakeMatrixRoom( displayName = A_ROOM_NAME, - mediaTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, ) ) presenter.test { @@ -71,7 +71,7 @@ class MediaGalleryPresenterTest { val presenter = createMediaGalleryPresenter( room = FakeMatrixRoom( displayName = A_ROOM_NAME, - mediaTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, ) ) presenter.test { @@ -101,7 +101,7 @@ class MediaGalleryPresenterTest { room = FakeMatrixRoom( sessionId = A_USER_ID, displayName = A_ROOM_NAME, - mediaTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, canRedactOwnResult = { Result.success(canDeleteOwn) } ) ) @@ -144,7 +144,7 @@ class MediaGalleryPresenterTest { room = FakeMatrixRoom( sessionId = A_USER_ID, displayName = A_ROOM_NAME, - mediaTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, canRedactOtherResult = { Result.success(canDeleteOther) } ) ) @@ -177,7 +177,7 @@ class MediaGalleryPresenterTest { val presenter = createMediaGalleryPresenter( room = FakeMatrixRoom( displayName = A_ROOM_NAME, - mediaTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, ) ) presenter.test { @@ -244,7 +244,7 @@ class MediaGalleryPresenterTest { ) val presenter = createMediaGalleryPresenter( room = FakeMatrixRoom( - mediaTimelineResult = { Result.success(FakeTimeline()) }, + createTimelineResult = { Result.success(FakeTimeline()) }, ), navigator = navigator, ) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSourceTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSourceTest.kt index b49c174d21..6eced261b1 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSourceTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSourceTest.kt @@ -137,7 +137,7 @@ class MediaViewerDataSourceTest { fun `test dataFlow with data galleryMode image`() = runTest { val galleryDataSource = FakeMediaGalleryDataSource() val sut = createMediaViewerDataSource( - mode = MediaViewerMode.TimelineImagesAndVideos, + mode = MediaViewerMode.TimelineImagesAndVideos(timelineMode = Timeline.Mode.MEDIA), galleryDataSource = galleryDataSource, ) sut.dataFlow().test { @@ -159,7 +159,7 @@ class MediaViewerDataSourceTest { fun `test dataFlow with data galleryMode files`() = runTest { val galleryDataSource = FakeMediaGalleryDataSource() val sut = createMediaViewerDataSource( - mode = MediaViewerMode.TimelineFilesAndAudios, + mode = MediaViewerMode.TimelineFilesAndAudios(timelineMode = Timeline.Mode.MEDIA), galleryDataSource = galleryDataSource, ) sut.dataFlow().test { @@ -265,7 +265,7 @@ class MediaViewerDataSourceTest { } private fun TestScope.createMediaViewerDataSource( - mode: MediaViewerMode = MediaViewerMode.TimelineImagesAndVideos, + mode: MediaViewerMode = MediaViewerMode.TimelineImagesAndVideos(timelineMode = Timeline.Mode.MEDIA), galleryDataSource: MediaGalleryDataSource = FakeMediaGalleryDataSource(), mediaLoader: MatrixMediaLoader = FakeMatrixMediaLoader(), localMediaFactory: LocalMediaFactory = FakeLocalMediaFactory(mockMediaUrl), 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 03d66992bf..06418da15e 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 @@ -519,7 +519,7 @@ class MediaViewerPresenterTest { @Test fun `present - snackbar displayed when there is no more items forward images and videos`() { `present - snackbar displayed when there is no more items forward`( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos(timelineMode = Timeline.Mode.MEDIA), expectedSnackbarResId = R.string.screen_media_details_no_more_media_to_show, ) } @@ -527,7 +527,7 @@ class MediaViewerPresenterTest { @Test fun `present - snackbar displayed when there is no more items forward files and audio`() { `present - snackbar displayed when there is no more items forward`( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios(timelineMode = Timeline.Mode.MEDIA), expectedSnackbarResId = R.string.screen_media_details_no_more_files_to_show, ) } @@ -547,7 +547,7 @@ class MediaViewerPresenterTest { awaitFirstItem() mediaGalleryDataSource.emitGroupedMediaItems( AsyncData.Success( - if (mode == MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { + if (mode is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { GroupedMediaItems( imageAndVideoItems = persistentListOf(), fileItems = persistentListOf(aForwardLoadingIndicator, anImage, aBackwardLoadingIndicator), @@ -568,7 +568,7 @@ class MediaViewerPresenterTest { // data source claims that there is no more items to load forward mediaGalleryDataSource.emitGroupedMediaItems( AsyncData.Success( - if (mode == MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { + if (mode is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { GroupedMediaItems( imageAndVideoItems = persistentListOf(), fileItems = persistentListOf(anImage, aBackwardLoadingIndicator), @@ -590,7 +590,7 @@ class MediaViewerPresenterTest { @Test fun `present - snackbar displayed when there is no more items backward images and videos`() { `present - snackbar displayed when there is no more items backward`( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos(timelineMode = Timeline.Mode.MEDIA), expectedSnackbarResId = R.string.screen_media_details_no_more_media_to_show, ) } @@ -598,7 +598,7 @@ class MediaViewerPresenterTest { @Test fun `present - snackbar displayed when there is no more items backward files and audio`() { `present - snackbar displayed when there is no more items backward`( - mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios, + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios(timelineMode = Timeline.Mode.MEDIA), expectedSnackbarResId = R.string.screen_media_details_no_more_files_to_show, ) } @@ -618,7 +618,7 @@ class MediaViewerPresenterTest { awaitFirstItem() mediaGalleryDataSource.emitGroupedMediaItems( AsyncData.Success( - if (mode == MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { + if (mode is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { GroupedMediaItems( imageAndVideoItems = persistentListOf(), fileItems = persistentListOf(aForwardLoadingIndicator, anImage, aBackwardLoadingIndicator), @@ -640,7 +640,7 @@ class MediaViewerPresenterTest { // data source claims that there is no more items to load backward mediaGalleryDataSource.emitGroupedMediaItems( AsyncData.Success( - if (mode == MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { + if (mode is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios) { GroupedMediaItems( imageAndVideoItems = persistentListOf(), fileItems = persistentListOf(aForwardLoadingIndicator, anImage), diff --git a/libraries/permissions/api/src/main/res/values-tr/translations.xml b/libraries/permissions/api/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..20451d91cf --- /dev/null +++ b/libraries/permissions/api/src/main/res/values-tr/translations.xml @@ -0,0 +1,7 @@ + + + "Uygulamanın kamerayı kullanmasına izin vermek için lütfen sistem ayarlarından izin verin." + "Lütfen sistem ayarlarından izin verin." + "Uygulamanın mikrofonu kullanmasına izin vermek için lütfen sistem ayarlarından izin verin." + "Uygulamanın bildirimleri görüntülemesine izin vermek için lütfen sistem ayarlarından izin verin." + diff --git a/libraries/permissions/impl/src/main/res/values-tr/translations.xml b/libraries/permissions/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..84407bc030 --- /dev/null +++ b/libraries/permissions/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,5 @@ + + + "Uygulamanın bildirimleri gösterebildiğini kontrol edin." + "İzinleri kontrol et" + diff --git a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt b/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt index 865e2992d2..537c8d6040 100644 --- a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt +++ b/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt @@ -20,9 +20,6 @@ interface AppPreferencesStore { suspend fun setTheme(theme: String) fun getThemeFlow(): Flow - suspend fun setSimplifiedSlidingSyncEnabled(enabled: Boolean) - fun isSimplifiedSlidingSyncEnabledFlow(): Flow - suspend fun setHideImagesAndVideos(value: Boolean) fun doesHideImagesAndVideosFlow(): Flow diff --git a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCase.kt b/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCase.kt deleted file mode 100644 index 851d659428..0000000000 --- a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCase.kt +++ /dev/null @@ -1,23 +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.preferences.api.store - -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.launch -import javax.inject.Inject - -class EnableNativeSlidingSyncUseCase @Inject constructor( - private val appPreferencesStore: AppPreferencesStore, - private val appCoroutineScope: CoroutineScope, -) { - operator fun invoke() { - appCoroutineScope.launch { - appPreferencesStore.setSimplifiedSlidingSyncEnabled(true) - } - } -} diff --git a/libraries/preferences/api/src/test/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCaseTest.kt b/libraries/preferences/api/src/test/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCaseTest.kt deleted file mode 100644 index e570e7d226..0000000000 --- a/libraries/preferences/api/src/test/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCaseTest.kt +++ /dev/null @@ -1,31 +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.preferences.api.store - -import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.test.advanceUntilIdle -import kotlinx.coroutines.test.runTest -import org.junit.Test - -class EnableNativeSlidingSyncUseCaseTest { - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun `ensure that the use case sets the simplified sliding sync enabled flag`() = runTest { - val preferencesStore = InMemoryAppPreferencesStore() - val useCase = EnableNativeSlidingSyncUseCase(preferencesStore, this) - assertThat(preferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() - - useCase() - advanceUntilIdle() - - assertThat(preferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() - } -} 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 1874b08b0e..06f4b05912 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 @@ -30,7 +30,6 @@ private val Context.dataStore: DataStore by preferencesDataStore(na private val developerModeKey = booleanPreferencesKey("developerMode") private val customElementCallBaseUrlKey = stringPreferencesKey("elementCallBaseUrl") private val themeKey = stringPreferencesKey("theme") -private val simplifiedSlidingSyncKey = booleanPreferencesKey("useSimplifiedSlidingSync") private val hideImagesAndVideosKey = booleanPreferencesKey("hideImagesAndVideos") private val logLevelKey = stringPreferencesKey("logLevel") @@ -82,18 +81,6 @@ class DefaultAppPreferencesStore @Inject constructor( } } - override suspend fun setSimplifiedSlidingSyncEnabled(enabled: Boolean) { - store.edit { prefs -> - prefs[simplifiedSlidingSyncKey] = enabled - } - } - - override fun isSimplifiedSlidingSyncEnabledFlow(): Flow { - return store.data.map { prefs -> - prefs[simplifiedSlidingSyncKey] ?: true - } - } - override suspend fun setHideImagesAndVideos(value: Boolean) { store.edit { prefs -> prefs[hideImagesAndVideosKey] = value diff --git a/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt b/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt index 3191b22073..1a332b42aa 100644 --- a/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt +++ b/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt @@ -51,14 +51,6 @@ class InMemoryAppPreferencesStore( return theme } - override suspend fun setSimplifiedSlidingSyncEnabled(enabled: Boolean) { - simplifiedSlidingSyncEnabled.value = enabled - } - - override fun isSimplifiedSlidingSyncEnabledFlow(): Flow { - return simplifiedSlidingSyncEnabled - } - override suspend fun setHideImagesAndVideos(value: Boolean) { hideImagesAndVideos.value = value } 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 4f814fafd4..e707f3ad51 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 @@ -7,18 +7,16 @@ package io.element.android.libraries.push.impl.notifications.channels -import android.content.Context import android.media.AudioAttributes import android.media.AudioManager -import android.media.RingtoneManager import android.os.Build +import android.provider.Settings import androidx.annotation.ChecksSdkIntAtLeast import androidx.core.app.NotificationChannelCompat import androidx.core.app.NotificationManagerCompat import com.squareup.anvil.annotations.ContributesBinding import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.SingleIn import io.element.android.libraries.push.impl.R import io.element.android.services.toolbox.api.strings.StringProvider @@ -60,7 +58,6 @@ private fun supportNotificationChannels() = Build.VERSION.SDK_INT >= Build.VERSI @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) class DefaultNotificationChannels @Inject constructor( - @ApplicationContext private val context: Context, private val notificationManager: NotificationManagerCompat, private val stringProvider: StringProvider, ) : NotificationChannels { @@ -153,8 +150,6 @@ class DefaultNotificationChannels @Inject constructor( ) // Register a channel for incoming call notifications which will ring the device when received - // TODO use a fallback ringtone if the default ringtone is not available - val ringtoneUri = runCatching { RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE) }.getOrNull() notificationManager.createNotificationChannel( NotificationChannelCompat.Builder( RINGING_CALL_NOTIFICATION_CHANNEL_ID, @@ -162,18 +157,14 @@ class DefaultNotificationChannels @Inject constructor( ) .setName(stringProvider.getString(R.string.notification_channel_ringing_calls).ifEmpty { "Ringing calls" }) .setVibrationEnabled(true) - .apply { - if (ringtoneUri != null) { - setSound( - ringtoneUri, - AudioAttributes.Builder() - .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) - .setLegacyStreamType(AudioManager.STREAM_RING) - .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE) - .build() - ) - } - } + .setSound( + Settings.System.DEFAULT_RINGTONE_URI, + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setLegacyStreamType(AudioManager.STREAM_RING) + .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE) + .build() + ) .setDescription(stringProvider.getString(R.string.notification_channel_ringing_calls)) .setLightsEnabled(true) .setLightColor(accentColor) 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 1e5066a5c8..66742652bf 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 @@ -129,6 +129,7 @@ class DefaultPushHandler @Inject constructor( avatarUrl = notifiableEvent.roomAvatarUrl, timestamp = notifiableEvent.timestamp, notificationChannelId = notificationChannels.getChannelForIncomingCall(ring = true), + textContent = notifiableEvent.description, ) } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt index 58e148c184..8d1d866edd 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEvent.kt @@ -13,7 +13,6 @@ import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.room.MatrixRoom -import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableRingingCallEvent @@ -21,7 +20,6 @@ import io.element.android.services.appnavstate.api.AppForegroundStateService import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeoutOrNull -import java.util.concurrent.atomic.AtomicInteger import javax.inject.Inject import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds @@ -32,27 +30,28 @@ class SyncOnNotifiableEvent @Inject constructor( private val appForegroundStateService: AppForegroundStateService, private val dispatchers: CoroutineDispatchers, ) { - private var syncCounter = AtomicInteger(0) - suspend operator fun invoke(notifiableEvent: NotifiableEvent) = withContext(dispatchers.io) { val isRingingCallEvent = notifiableEvent is NotifiableRingingCallEvent if (!featureFlagService.isFeatureEnabled(FeatureFlags.SyncOnPush) && !isRingingCallEvent) { return@withContext } val client = matrixClientProvider.getOrRestore(notifiableEvent.sessionId).getOrNull() ?: return@withContext + client.getRoom(notifiableEvent.roomId)?.use { room -> room.subscribeToSync() - // If the app is in foreground, sync is already running, so just add the subscription. + // If the app is in foreground, sync is already running, so we just add the subscription above. if (!appForegroundStateService.isInForeground.value) { - val syncService = client.syncService() - syncService.startSyncIfNeeded() if (isRingingCallEvent) { room.waitsUntilUserIsInTheCall(timeout = 60.seconds) } else { - room.waitsUntilEventIsKnown(eventId = notifiableEvent.eventId, timeout = 10.seconds) + try { + appForegroundStateService.updateIsSyncingNotificationEvent(true) + room.waitsUntilEventIsKnown(eventId = notifiableEvent.eventId, timeout = 10.seconds) + } finally { + appForegroundStateService.updateIsSyncingNotificationEvent(false) + } } - syncService.stopSyncIfNeeded() } } } @@ -81,16 +80,4 @@ class SyncOnNotifiableEvent @Inject constructor( } } } - - private suspend fun SyncService.startSyncIfNeeded() { - if (syncCounter.getAndIncrement() == 0) { - startSync() - } - } - - private suspend fun SyncService.stopSyncIfNeeded() { - if (syncCounter.decrementAndGet() == 0 && !appForegroundStateService.isInForeground.value) { - stopSync() - } - } } 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 15a5d22de9..cc31275783 100644 --- a/libraries/push/impl/src/main/res/values-cs/translations.xml +++ b/libraries/push/impl/src/main/res/values-cs/translations.xml @@ -16,7 +16,7 @@ "%d oznámení" "Oznámení" - "Příchozí hovor" + "📹 Příchozí hovor" "** Nepodařilo se odeslat - otevřete prosím místnost" "Vstoupit" "Odmítnout" diff --git a/libraries/push/impl/src/main/res/values-fi/translations.xml b/libraries/push/impl/src/main/res/values-fi/translations.xml index 61c0890fd3..dab7f15fc0 100644 --- a/libraries/push/impl/src/main/res/values-fi/translations.xml +++ b/libraries/push/impl/src/main/res/values-fi/translations.xml @@ -14,7 +14,7 @@ "%d ilmoitusta" "Ilmoitus" - "Saapuva puhelu" + "📹 Saapuva puhelu" "** Lähetys epäonnistui - avaa huone" "Liity" "Hylkää" diff --git a/libraries/push/impl/src/main/res/values-fr/translations.xml b/libraries/push/impl/src/main/res/values-fr/translations.xml index eb386ed459..a198daec64 100644 --- a/libraries/push/impl/src/main/res/values-fr/translations.xml +++ b/libraries/push/impl/src/main/res/values-fr/translations.xml @@ -14,7 +14,7 @@ "%d notifications" "Notification" - "Appel entrant" + "📹 Appel entrant" "** Échec de l’envoi - veuillez ouvrir le salon" "Rejoindre" "Rejeter" 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 1cd641e6f2..ee79042700 100644 --- a/libraries/push/impl/src/main/res/values-pl/translations.xml +++ b/libraries/push/impl/src/main/res/values-pl/translations.xml @@ -16,7 +16,7 @@ "%d powiadomień" "Powiadomienie" - "Przychodzące połączenie" + "📹 Połączenie przychodzące" "** Nie udało się wysłać - proszę otworzyć pokój" "Dołącz" "Odrzuć" diff --git a/libraries/push/impl/src/main/res/values-pt/translations.xml b/libraries/push/impl/src/main/res/values-pt/translations.xml index 49fa827131..24ddc2f216 100644 --- a/libraries/push/impl/src/main/res/values-pt/translations.xml +++ b/libraries/push/impl/src/main/res/values-pt/translations.xml @@ -14,7 +14,7 @@ "%d notificações" "Notificação" - "Chamada recebida" + "📹 A receber chamada" "** Falha no envio - por favor abre a sala" "Entrar" "Rejeitar" diff --git a/libraries/push/impl/src/main/res/values-ru/translations.xml b/libraries/push/impl/src/main/res/values-ru/translations.xml index 0387c42f2d..5b7167a787 100644 --- a/libraries/push/impl/src/main/res/values-ru/translations.xml +++ b/libraries/push/impl/src/main/res/values-ru/translations.xml @@ -16,7 +16,7 @@ "%d уведомлений" "Уведомление" - "Входящий вызов" + "📹 Входящий вызов" "** Не удалось отправить - пожалуйста, откройте комнату" "Присоединиться" "Отклонить" diff --git a/libraries/push/impl/src/main/res/values-sv/translations.xml b/libraries/push/impl/src/main/res/values-sv/translations.xml index d9c096af3d..f0ed754732 100644 --- a/libraries/push/impl/src/main/res/values-sv/translations.xml +++ b/libraries/push/impl/src/main/res/values-sv/translations.xml @@ -14,7 +14,7 @@ "%d aviseringar" "notis" - "Inkommande samtal" + "📹 Inkommande samtal" "** Misslyckades att skicka - vänligen öppna rummet" "Gå med" "Avvisa" diff --git a/libraries/push/impl/src/main/res/values-tr/translations.xml b/libraries/push/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..06f21783be --- /dev/null +++ b/libraries/push/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,81 @@ + + + "Çağrı" + "Etkinlikleri dinlemek" + "Gürültülü bildirimler" + "Çalan aramalar" + "Sessiz bildirimler" + + "%1$s: %2$d mesaj" + "%1$s: %2$d mesaj" + + + "%d bildirim" + "%d bildirim" + + "Bildirim" + "📹 Gelen çağrı" + "** Gönderilemedi - lütfen odayı açın" + "Katıl" + "Reddet" + + "%d davet" + "%d davet" + + "Sizi sohbete davet etti" + "%1$s sizi sohbete davet etti" + "Senden bahsettim: %1$s" + "Yeni Mesajlar" + + "%d yeni mesaj" + "%d yeni mesaj" + + "%1$s ile tepki verildi" + "Okundu olarak işaretle" + "Hızlı cevap" + "Sizi odaya katılmaya davet etti" + "%1$s sizi odaya katılmaya davet etti" + "Ben" + "%1$s belirtildi veya yanıtlandı" + "Bildirimi görüntülüyorsunuz! Beni tıklayın!" + "%1$s: %2$s" + "%1$s: %2$s %3$s" + + "%d okunmamış mesaj bildirimi" + "%d okunmamış mesaj bildirimi" + + "%1$s ve %2$s" + "%1$s içinde %2$s" + "%1$s içinde %2$s ve %3$s" + + "%d oda" + "%d oda" + + "Arkaplan senkronizasyonu" + "Google Hizmetleri" + "Geçerli bir Google Play Hizmeti bulunamadı. Bildirimler düzgün çalışmayabilir." + "Geçerli sağlayıcının adını al." + "Hiçbir gönderme sağlayıcısı seçilmedi." + "Geçerli gönderme sağlayıcısı: %1$s." + "Geçerli gönderme sağlayıcısı" + "Uygulamanın en az bir gönderme sağlayıcısına sahip olduğundan emin olun." + "Gönderim sağlayıcısı bulunamadı." + + "%1$d gönderme sağlayıcısı bulundu: %2$s" + "%1$d gönderme sağlayıcısı bulundu: %2$s" + + "Gönderme sağlayıcılarını tespit et" + "Uygulamanın bildirim görüntüleyebildiğini kontrol edin." + "Bildirime tıklanmadı." + "Bildirim görüntülenemiyor." + "Bildirime tıklandı!" + "Bildirimi görüntüle" + "Teste devam etmek için lütfen bildirime tıklayın." + "Uygulamanın push aldığından emin olun." + "Hata: itici isteği reddetti." + "Hata: %1$s." + "Hata, itme test edilemiyor." + "Hata, push beklenirken zaman aşımı oluştu." + "Geri itme döngüsü %1$d ms sürdü." + "Test Geri İtme döngüsü" + diff --git a/libraries/push/impl/src/main/res/values-uk/translations.xml b/libraries/push/impl/src/main/res/values-uk/translations.xml index 71e8f14d61..22f3b6e2ec 100644 --- a/libraries/push/impl/src/main/res/values-uk/translations.xml +++ b/libraries/push/impl/src/main/res/values-uk/translations.xml @@ -16,7 +16,7 @@ "%d сповіщень" "Сповіщення" - "Вхідний виклик" + "📹 Вхідний виклик" "** Не вдалося надіслати - відкрийте кімнату" "Доєднатися" "Відхилити" diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannelsTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannelsTest.kt index 6bb718092a..2d67cf4705 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannelsTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannelsTest.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.push.impl.notifications.channels import android.os.Build import androidx.core.app.NotificationChannelCompat import androidx.core.app.NotificationManagerCompat -import androidx.test.platform.app.InstrumentationRegistry import com.google.common.truth.Truth.assertThat import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.mockk.every @@ -65,7 +64,6 @@ class NotificationChannelsTest { private fun createNotificationChannels( notificationManager: NotificationManagerCompat = mockk(relaxed = true), ) = DefaultNotificationChannels( - context = InstrumentationRegistry.getInstrumentation().targetContext, notificationManager = notificationManager, stringProvider = FakeStringProvider(), ) 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 67f0027483..155fcd108f 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 @@ -331,5 +331,5 @@ fun createNotificationCreator( fun createNotificationChannels(): NotificationChannels { val context = RuntimeEnvironment.getApplication() - return DefaultNotificationChannels(context, NotificationManagerCompat.from(context), FakeStringProvider("")) + return DefaultNotificationChannels(NotificationManagerCompat.from(context), FakeStringProvider("")) } 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 b0ef3af9ff..a8f921da0d 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 @@ -238,7 +238,17 @@ class DefaultPushHandlerTest { unread = 0, clientSecret = A_SECRET, ) - val handleIncomingCallLambda = lambdaRecorder { _, _, _, _, _, _, _ -> } + val handleIncomingCallLambda = lambdaRecorder< + CallType.RoomCall, + EventId, + UserId, + String?, + String?, + String?, + String, + String?, + Unit, + > { _, _, _, _, _, _, _, _ -> } val elementCallEntryPoint = FakeElementCallEntryPoint(handleIncomingCallResult = handleIncomingCallLambda) val onNotifiableEventReceived = lambdaRecorder {} val defaultPushHandler = createDefaultPushHandler( @@ -266,7 +276,17 @@ class DefaultPushHandlerTest { clientSecret = A_SECRET, ) val onNotifiableEventReceived = lambdaRecorder {} - val handleIncomingCallLambda = lambdaRecorder { _, _, _, _, _, _, _ -> } + val handleIncomingCallLambda = lambdaRecorder< + CallType.RoomCall, + EventId, + UserId, + String?, + String?, + String?, + String, + String?, + Unit, + > { _, _, _, _, _, _, _, _ -> } val elementCallEntryPoint = FakeElementCallEntryPoint(handleIncomingCallResult = handleIncomingCallLambda) val defaultPushHandler = createDefaultPushHandler( elementCallEntryPoint = elementCallEntryPoint, @@ -294,7 +314,17 @@ class DefaultPushHandlerTest { clientSecret = A_SECRET, ) val onNotifiableEventReceived = lambdaRecorder {} - val handleIncomingCallLambda = lambdaRecorder { _, _, _, _, _, _, _ -> } + val handleIncomingCallLambda = lambdaRecorder< + CallType.RoomCall, + EventId, + UserId, + String?, + String?, + String?, + String, + String?, + Unit, + > { _, _, _, _, _, _, _, _ -> } val elementCallEntryPoint = FakeElementCallEntryPoint(handleIncomingCallResult = handleIncomingCallLambda) val defaultPushHandler = createDefaultPushHandler( elementCallEntryPoint = elementCallEntryPoint, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt index 08b14e5680..35dddbce6f 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/SyncOnNotifiableEventTest.kt @@ -7,6 +7,8 @@ package io.element.android.libraries.push.impl.push +import app.cash.turbine.test +import com.google.common.truth.Truth.assertThat import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.MatrixClient @@ -17,6 +19,7 @@ import io.element.android.libraries.matrix.test.A_UNIQUE_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.room.FakeMatrixRoom +import io.element.android.libraries.matrix.test.room.aRoomInfo 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.anEventTimelineItem @@ -26,13 +29,16 @@ import io.element.android.services.appnavstate.test.FakeAppForegroundStateServic import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.testCoroutineDispatchers -import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.advanceTimeBy import kotlinx.coroutines.test.runTest import org.junit.Test +import java.util.concurrent.atomic.AtomicBoolean +import kotlin.time.Duration.Companion.seconds class SyncOnNotifiableEventTest { private val timelineItems = MutableStateFlow>(emptyList()) @@ -73,60 +79,98 @@ class SyncOnNotifiableEventTest { assert(subscribeToSyncLambda).isNeverCalled() } + @OptIn(ExperimentalCoroutinesApi::class) @Test - fun `when feature flag is enabled, a ringing call starts and stops the sync`() = runTest { - val sut = createSyncOnNotifiableEvent(client = client, isAppInForeground = false, isSyncOnPushEnabled = true) + fun `when feature flag is enabled, a ringing call waits until the room is in 'in-call' state`() = runTest { + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = false, + ) + val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) + val unlocked = AtomicBoolean(false) + launch { + advanceTimeBy(1.seconds) + unlocked.set(true) + room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) + } sut(incomingCallNotifiableEvent) - assert(startSyncLambda).isCalledOnce() - assert(stopSyncLambda).isCalledOnce() - assert(subscribeToSyncLambda).isCalledOnce() + // The process was completed before the timeout + assertThat(unlocked.get()).isTrue() } + @OptIn(ExperimentalCoroutinesApi::class) @Test - fun `when feature flag is disabled, a ringing call starts and stops the sync`() = runTest { - val sut = createSyncOnNotifiableEvent(client = client, isAppInForeground = false, isSyncOnPushEnabled = false) + fun `when feature flag is enabled, a ringing call waits until the room is in 'in-call' state or timeouts`() = runTest { + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = false, + ) + val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) + val unlocked = AtomicBoolean(false) + launch { + advanceTimeBy(120.seconds) + unlocked.set(true) + room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) + } sut(incomingCallNotifiableEvent) - assert(startSyncLambda).isCalledOnce() - assert(stopSyncLambda).isCalledOnce() - assert(subscribeToSyncLambda).isCalledOnce() + // Didn't unlock before the timeout + assertThat(unlocked.get()).isFalse() } @Test fun `when feature flag is enabled and app is in foreground, sync is not started`() = runTest { - val sut = createSyncOnNotifiableEvent(client = client, isAppInForeground = true, isSyncOnPushEnabled = true) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = true, + ) + val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) - sut(notifiableEvent) - sut(incomingCallNotifiableEvent) + appForegroundStateService.isSyncingNotificationEvent.test { + sut(notifiableEvent) + sut(incomingCallNotifiableEvent) - assert(startSyncLambda).isNeverCalled() - assert(stopSyncLambda).isNeverCalled() - assert(subscribeToSyncLambda).isCalledExactly(2) + // It's initially false + assertThat(awaitItem()).isFalse() + // It never becomes true + ensureAllEventsConsumed() + } } @Test fun `when feature flag is enabled and app is in background, sync is started and stopped`() = runTest { - val sut = createSyncOnNotifiableEvent(client = client, isAppInForeground = false, isSyncOnPushEnabled = true) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = false, + ) + val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) timelineItems.emit( listOf(MatrixTimelineItem.Event(A_UNIQUE_ID, anEventTimelineItem())) ) - syncService.emitSyncState(SyncState.Running) - sut(notifiableEvent) - assert(startSyncLambda).isCalledOnce() - assert(stopSyncLambda).isCalledOnce() - assert(subscribeToSyncLambda).isCalledOnce() + appForegroundStateService.isSyncingNotificationEvent.test { + syncService.emitSyncState(SyncState.Running) + sut(notifiableEvent) + + // It's initially false + assertThat(awaitItem()).isFalse() + // Then it becomes true when we receive the push + assertThat(awaitItem()).isTrue() + // It becomes false once when the push is processed + assertThat(awaitItem()).isFalse() + + ensureAllEventsConsumed() + } } @Test fun `when feature flag is enabled and app is in background, running multiple time only call once`() = runTest { - val sut = createSyncOnNotifiableEvent(client = client, isAppInForeground = false, isSyncOnPushEnabled = true) + val appForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = false, + ) + val sut = createSyncOnNotifiableEvent(client = client, appForegroundStateService = appForegroundStateService, isSyncOnPushEnabled = true) - coroutineScope { + appForegroundStateService.isSyncingNotificationEvent.test { launch { sut(notifiableEvent) } launch { sut(notifiableEvent) } launch { @@ -135,26 +179,30 @@ class SyncOnNotifiableEventTest { listOf(MatrixTimelineItem.Event(A_UNIQUE_ID, anEventTimelineItem())) ) } - } - assert(startSyncLambda).isCalledOnce() - assert(stopSyncLambda).isCalledOnce() - assert(subscribeToSyncLambda).isCalledExactly(2) + // It's initially false + assertThat(awaitItem()).isFalse() + // Then it becomes true once, for the first received push + assertThat(awaitItem()).isTrue() + // It becomes false once all pushes are processed + assertThat(awaitItem()).isFalse() + + ensureAllEventsConsumed() + } } private fun TestScope.createSyncOnNotifiableEvent( client: MatrixClient = FakeMatrixClient(), isSyncOnPushEnabled: Boolean = true, - isAppInForeground: Boolean = true, + appForegroundStateService: FakeAppForegroundStateService = FakeAppForegroundStateService( + initialForegroundValue = true, + ) ): SyncOnNotifiableEvent { val featureFlagService = FakeFeatureFlagService( initialState = mapOf( FeatureFlags.SyncOnPush.key to isSyncOnPushEnabled ) ) - val appForegroundStateService = FakeAppForegroundStateService( - initialValue = isAppInForeground - ) val matrixClientProvider = FakeMatrixClientProvider { Result.success(client) } return SyncOnNotifiableEvent( matrixClientProvider = matrixClientProvider, diff --git a/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Distributor.kt b/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Distributor.kt index c99e5072b7..d623740444 100644 --- a/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Distributor.kt +++ b/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Distributor.kt @@ -18,4 +18,6 @@ package io.element.android.libraries.pushproviders.api data class Distributor( val value: String, val name: String, -) +) { + val fullName = "$name ($value)" +} diff --git a/libraries/pushproviders/firebase/build.gradle.kts b/libraries/pushproviders/firebase/build.gradle.kts index 619db35282..044b930572 100644 --- a/libraries/pushproviders/firebase/build.gradle.kts +++ b/libraries/pushproviders/firebase/build.gradle.kts @@ -7,6 +7,7 @@ @file:Suppress("UnstableApiUsage") +import config.BuildTimeConfig import extension.setupAnvil plugins { @@ -22,22 +23,14 @@ android { resValue( type = "string", name = "google_app_id", - value = if (isEnterpriseBuild) { - "1:912726360885:android:d273c2077ec3291500427c" - } else { - "1:912726360885:android:d097de99a4c23d2700427c" - } + value = BuildTimeConfig.GOOGLE_APP_ID_RELEASE, ) } getByName("debug") { resValue( type = "string", name = "google_app_id", - value = if (isEnterpriseBuild) { - "1:912726360885:android:f8de9126a94143d300427c" - } else { - "1:912726360885:android:def0a4e454042e9b00427c" - } + value = BuildTimeConfig.GOOGLE_APP_ID_DEBUG, ) } register("nightly") { @@ -46,11 +39,7 @@ android { resValue( type = "string", name = "google_app_id", - value = if (isEnterpriseBuild) { - "1:912726360885:android:3f7e1fe644d99d5a00427c" - } else { - "1:912726360885:android:e17435e0beb0303000427c" - } + value = BuildTimeConfig.GOOGLE_APP_ID_NIGHTLY, ) } } diff --git a/libraries/pushproviders/firebase/src/main/res/values-tr/translations.xml b/libraries/pushproviders/firebase/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..af9b7c2318 --- /dev/null +++ b/libraries/pushproviders/firebase/src/main/res/values-tr/translations.xml @@ -0,0 +1,11 @@ + + + "Firebase\'in kullanılabilir olduğundan emin olun." + "Firebase kullanılamıyor." + "Firebase kullanılabilir." + "Firebase\'i kontrol et" + "Firebase belirtecinin mevcut olduğundan emin olun." + "Firebase belirteci bilinmiyor." + "Firebase belirteci: %1$s." + "Firebase jetonunu kontrol edin" + diff --git a/libraries/pushproviders/unifiedpush/src/main/res/values-tr/translations.xml b/libraries/pushproviders/unifiedpush/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..5fee0a6938 --- /dev/null +++ b/libraries/pushproviders/unifiedpush/src/main/res/values-tr/translations.xml @@ -0,0 +1,10 @@ + + + "UnifiedPush distribütörlerinin mevcut olduğundan emin olun." + "İtme dağıtıcı bulunamadı." + + "%1$d dağıtıcı bulundu: %2$s." + "%1$d dağıtıcı bulundu: %2$s." + + "UnifiedPush\'u kontrol edin" + diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt index bd5451b397..1299f99463 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ComposerModeView.kt @@ -88,7 +88,7 @@ private fun EditingModeView( Icon( imageVector = CompoundIcons.Edit(), contentDescription = null, - tint = ElementTheme.materialColors.secondary, + tint = ElementTheme.colors.iconSecondary, modifier = Modifier .padding(vertical = 8.dp) .size(16.dp), @@ -97,7 +97,7 @@ private fun EditingModeView( text = text, style = ElementTheme.typography.fontBodySmRegular, textAlign = TextAlign.Start, - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, modifier = Modifier .padding(vertical = 8.dp) .weight(1f) @@ -105,7 +105,7 @@ private fun EditingModeView( Icon( imageVector = CompoundIcons.Close(), contentDescription = stringResource(CommonStrings.action_close), - tint = ElementTheme.materialColors.secondary, + tint = ElementTheme.colors.iconSecondary, modifier = Modifier .padding(top = 8.dp, bottom = 8.dp, start = 16.dp, end = 12.dp) .size(16.dp) @@ -140,7 +140,7 @@ private fun ReplyToModeView( Icon( imageVector = CompoundIcons.Close(), contentDescription = stringResource(CommonStrings.action_close), - tint = MaterialTheme.colorScheme.secondary, + tint = ElementTheme.colors.iconSecondary, modifier = Modifier .padding(end = 4.dp, top = 4.dp, start = 8.dp, bottom = 16.dp) .size(16.dp) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt index f7ff275e3a..bf13b8016c 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt @@ -27,9 +27,9 @@ object ElementRichTextEditorStyle { return baseStyle.copy( text = baseStyle.text.copy( color = if (hasFocus) { - ElementTheme.materialColors.primary + ElementTheme.colors.textPrimary } else { - ElementTheme.materialColors.secondary + ElementTheme.colors.textSecondary }, lineHeight = TextUnit.Unspecified, includeFontPadding = true, 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 4e69a1b6a6..d965a3d0d6 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 @@ -84,7 +84,7 @@ internal fun VoiceMessagePreview( Text( text = time.formatShort(), - color = ElementTheme.materialColors.secondary, + color = ElementTheme.colors.textSecondary, style = ElementTheme.typography.fontBodySmMedium, maxLines = 1, overflow = TextOverflow.Ellipsis, diff --git a/libraries/textcomposer/impl/src/main/res/values-hu/translations.xml b/libraries/textcomposer/impl/src/main/res/values-hu/translations.xml index 0353dca419..2b61cbd50f 100644 --- a/libraries/textcomposer/impl/src/main/res/values-hu/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-hu/translations.xml @@ -4,7 +4,7 @@ "Felsorolás be/ki" "Formázási beállítások bezárása" "Kódblokk be/ki" - "Nem kötelező felirat…" + "Felirat hozzáadása…" "Üzenet…" "Hivatkozás létrehozása" "Hivatkozás szerkesztése" diff --git a/libraries/textcomposer/impl/src/main/res/values-nb/translations.xml b/libraries/textcomposer/impl/src/main/res/values-nb/translations.xml index 4dcab4e755..90601b710d 100644 --- a/libraries/textcomposer/impl/src/main/res/values-nb/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-nb/translations.xml @@ -1,5 +1,7 @@ + "Aktiver/deaktiver punktliste" + "Aktiver kodeblokk" "Melding…" "Opprett en lenke" "Rediger lenke" @@ -10,6 +12,8 @@ "Innrykk" "Bruk inline-kodeformat" "Angi lenke" + "Aktiver/deaktiver nummerert liste" + "Slå på sitat" "Fjern lenke" "Fjern innrykk" "Lenke" diff --git a/libraries/textcomposer/impl/src/main/res/values-sv/translations.xml b/libraries/textcomposer/impl/src/main/res/values-sv/translations.xml index 02f5ede9f5..ca402f750b 100644 --- a/libraries/textcomposer/impl/src/main/res/values-sv/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-sv/translations.xml @@ -4,6 +4,7 @@ "Växla punktlista" "Stäng formateringsalternativ" "Växla kodblock" + "Lägg till en bildtext" "Meddelande …" "Skapa en länk" "Redigera länk" diff --git a/libraries/textcomposer/impl/src/main/res/values-tr/translations.xml b/libraries/textcomposer/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..95796c5174 --- /dev/null +++ b/libraries/textcomposer/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,26 @@ + + + "Ek ekle" + "Madde işaretli listeyi aç/kapat" + "Biçimlendirme seçeneklerini kapat" + "Kod Bloğunu Aç/Kapat" + "Açıklama ekle" + "Mesaj…" + "Bir bağlantı oluştur" + "Bağlantıyı Düzenle" + "Kalın biçimi uygula" + "İtalik biçimi uygula" + "Üstü çizili biçimi uygula" + "Altı çizili biçimi uygula" + "Tam ekran modunu aç/kapat" + "Girinti" + "Satır içi kod biçimini uygula" + "Bağlantıyı ayarla" + "Numaralı listeyi aç/kapat" + "Oluşturma seçeneklerini aç" + "Alıntıyı Aç/Kapat" + "Bağlantıyı kaldır" + "Girintiyi kaldır" + "Bağlantı" + "Kaydetmek için basılı tut" + diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsView.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsView.kt index 5278de5056..5a7aded074 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsView.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsView.kt @@ -98,7 +98,7 @@ private fun ColumnScope.TroubleshootTestView( Icon( contentDescription = null, modifier = Modifier.size(24.dp), - imageVector = CompoundIcons.Error(), + imageVector = CompoundIcons.ErrorSolid(), tint = ElementTheme.colors.textCriticalPrimary ) } diff --git a/libraries/troubleshoot/impl/src/main/res/values-tr/translations.xml b/libraries/troubleshoot/impl/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..24dba503e1 --- /dev/null +++ b/libraries/troubleshoot/impl/src/main/res/values-tr/translations.xml @@ -0,0 +1,11 @@ + + + "Testleri çalıştır" + "Testleri yeniden çalıştır" + "Bazı testler başarısız oldu. Lütfen ayrıntıları kontrol edin." + "Yapılandırmanızda bildirimlerin beklendiği gibi davranmamasına neden olabilecek herhangi bir sorunu algılamak için testleri çalıştırın." + "Düzeltmeye çalışın" + "Tüm testler başarıyla geçti." + "Sorun Giderme Bildirimleri" + "Bazı testlere bakmanız gerekiyor. Lütfen ayrıntıları kontrol edin." + diff --git a/libraries/ui-strings/src/main/res/values-be/translations.xml b/libraries/ui-strings/src/main/res/values-be/translations.xml index fbea21c512..08b0fcf858 100644 --- a/libraries/ui-strings/src/main/res/values-be/translations.xml +++ b/libraries/ui-strings/src/main/res/values-be/translations.xml @@ -122,6 +122,8 @@ "Прагляд у хроніцы" "Прагляд зыходнага кода" "Так" + "Ваш сервер зараз падтрымлівае новы, хутчэйшы пратакол. Выйдзіце з сістэмы і зноў увайдзіце, каб абнавіць яе. Гэта дапаможа вам пазбегнуць прымусовага выхаду з сістэмы, калі стары пратакол будзе пазней выдалены." + "Даступна абнаўленне" "Аб праграме" "Палітыка дапушчальнага выкарыстання" "Пашыраныя налады" 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 43806c9215..6d661252cf 100644 --- a/libraries/ui-strings/src/main/res/values-cs/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cs/translations.xml @@ -131,6 +131,8 @@ "Zobrazit zdroj" "Ano" "Ano, zkusit znovu" + "Váš server nyní podporuje nový, rychlejší protokol. Chcete-li upgradovat, odhlaste se a znovu se přihlaste. Pokud to uděláte nyní, pomůže vám vyhnout se nucenému odhlášení, když bude starý protokol později odstraněn." + "Upgrade k dispozici" "O aplikaci" "Zásady používání" "Přidání titulku" @@ -145,7 +147,7 @@ "Zkopírováno do schránky" "Autorská práva" "Vytváření místnosti…" - "Opustit místnost" + "Místnost opuštěna" "Tmavé" "Chyba dešifrování" "Možnosti pro vývojáře" @@ -196,6 +198,7 @@ Důvod: %1$s." "Zpráva byla odstraněna" "Moderní" "Ztlumit" + "%1$s (%2$s)" "Žádné výsledky" "Žádný název místnosti" "Offline" @@ -245,7 +248,7 @@ Důvod: %1$s." "Nastavení" "Sdílená poloha" "Odhlašování" - "Něco se pokazilo" + "Něco se nepovedlo" "Zahajování chatu…" "Nálepka" "Úspěch" @@ -274,6 +277,7 @@ Důvod: %1$s." "Ověřeno" "Ověřit zařízení" "Ověření totožnosti" + "Ověřit uživatele" "Video" "Hlasová zpráva" "Čekání…" @@ -282,6 +286,7 @@ Důvod: %1$s." "Zdá se, že se identita %1$s změnila. %2$s" "Zdá se, že identita %1$s %2$s se změnila. %3$s" "(%1$s)" + "Ověřená identita %1$s se změnila." "Ověřená identita uživatele %1$s %2$s se změnila. %3$s" "Zrušit ověření" "Potvrzení" @@ -300,6 +305,7 @@ Důvod: %1$s." "%1$s nemá oprávnění k přístupu k vaší poloze. Přístup můžete povolit v Nastavení." "%1$s nemá oprávnění k přístupu k vaší poloze. Povolit přístup níže." "%1$s nemá oprávnění k přístupu k mikrofonu. Povolte přístup k nahrávání hlasové zprávy." + "Může to být způsobeno problémy se sítí nebo serverem." "Tato adresa místnosti již existuje, zkuste prosím upravit pole adresy místnosti nebo změnit název místnosti" "Některé znaky nejsou povoleny. Podporovány jsou pouze písmena, číslice a následující symboly ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Některé zprávy nebyly odeslány" 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 d9c55b2819..6a8ecc719b 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -129,6 +129,8 @@ "Quellcode anzeigen" "Ja" "Ja, versuchen Sie es noch einmal" + "Dein Server unterstützt jetzt ein neues, schnelleres Protokoll. Melde dich ab und melde dich wieder an, um zu aktualisieren. Wenn du das jetzt tust, vermeidest du eine erzwungene Abmeldung, wenn das alte Protokoll später entfernt wird." + "Aktualisierung verfügbar" "Über" "Nutzungsrichtlinie" "Hinzufügen einer Bildunterschrift" @@ -193,6 +195,7 @@ Grund: %1$s." "Nachricht entfernt" "Modern" "Stumm" + "%1$s(%2$s)" "Keine Ergebnisse" "Kein Raumname" "Offline" @@ -270,6 +273,7 @@ Grund: %1$s." "Verifiziert" "Gerät verifizieren" "Identität überprüfen" + "Benutzer verifizieren" "Video" "Sprachnachricht" "Warten…" @@ -278,6 +282,7 @@ Grund: %1$s." "%1$s\'s Identität has sich offenbar geändert. %2$s" "%1$s\'s %2$s Identität hat sich offenbar geändert. %3$s" "(%1$s)" + "Die verifizierte Identität von %1$s hat sich geändert." "Die verifizierte Identität von %1$s\'s %2$s hat sich geändert. %3$s" "Verifizierung zurückziehen" "Bestätigung" @@ -296,6 +301,7 @@ Grund: %1$s." "%1$s hat keine Erlaubnis, auf deinen Standort zuzugreifen. Du kannst den Zugriff in den Einstellungen aktivieren." "%1$s hat keine Erlaubnis, auf deinen Standort zuzugreifen. Aktiviere unten den Zugriff." "%1$s hat nicht die Erlaubnis auf dein Mikrofon zuzugreifen. Aktiviere den Zugriff, um eine Sprachnachricht aufzunehmen." + "Dies kann auf Netzwerk- oder Serverprobleme zurückzuführen sein." "Diese Chatroomadresse existiert bereits. Bitte versuchen Sie, das Adressenfeld des Chatrooms zu bearbeiten oder den Namen des Chatrooms zu ändern" "Einige Zeichen sind nicht erlaubt. Es werden nur Buchstaben, Ziffern und die folgenden Symbole unterstützt: ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Einige Nachrichten wurden nicht gesendet" @@ -338,7 +344,7 @@ Grund: %1$s." "Nachricht wird geladen…" "Alle anzeigen" "Chat" - "Beitrittsanfrage gesendet" + "Beitrittsanfrage geschickt" "Standort teilen" "Meinen Standort teilen" "In Apple Maps öffnen" 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 61e583fc1c..1b792ea712 100644 --- a/libraries/ui-strings/src/main/res/values-el/translations.xml +++ b/libraries/ui-strings/src/main/res/values-el/translations.xml @@ -127,6 +127,8 @@ "Προβολή στο χρονοδιάγραμμα" "Προβολή πηγής" "Ναι" + "Ο διακομιστής σου υποστηρίζει τώρα ένα νέο, ταχύτερο πρωτόκολλο. Αποσυνδέσου και συνδέσου ξανά για αναβάθμιση τώρα. Κάνοντας αυτό τώρα θα σε βοηθήσει να αποφύγεις μια αναγκαστική αποσύνδεση όταν το παλιό πρωτόκολλο καταργηθεί αργότερα." + "Διαθέσιμη αναβάθμιση" "Σχετικά" "Πολιτική αποδεκτής χρήσης" "Η λεζάντα προστίθεται" 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 47b4bcae03..be6df95563 100644 --- a/libraries/ui-strings/src/main/res/values-et/translations.xml +++ b/libraries/ui-strings/src/main/res/values-et/translations.xml @@ -129,6 +129,8 @@ "Vaata lähtekoodi" "Jah" "Jah, proovi uuesti" + "Sinu koduserver toetab uut ja kiiremat protokolli. Uuendamiseks logi korraks rakendusest välja ja siis tagasi. Mingil hetkel tulevikus vana protokoll eemaldatakse kasutusest ja tehes uuenduse nüüd väldid hilisemat sundkorras uuendust." + "Saadaval on uuendus" "Rakenduse teave" "Vastuvõetava kasutamise põhimõtted" "Lisame selgitust" @@ -193,6 +195,7 @@ Põhjus: %1$s." "Sõnum on eemaldatud" "Kaasaegne" "Summutatud" + "%1$s (%2$s)" "Otsingul pole tulemusi" "Jututoal puudub nimi" "Võrgust väljas" @@ -270,6 +273,7 @@ Põhjus: %1$s." "Verifitseeritud" "Verifitseeri seade" "Verifitseeri võrguidentiteet" + "Verifitseeri kasutaja" "Video" "Häälsõnum" "Ootame…" @@ -278,6 +282,7 @@ Põhjus: %1$s." "Kasutaja %1$s võrguidentiteet tundub olema muutunud. %2$s" "Kasutaja %1$s %2$s võrguidentiteet tundub olema muutunud. %3$s" "(%1$s)" + "%1$s kasutaja verifitseeritud identiteet on muutunud." "%1$s kasutaja (%2$s kasutajanimi) verifitseeritud identiteet on muutunud. %3$s" "Võta verifitseerimine tagasi" "Kinnitus" @@ -296,6 +301,7 @@ Põhjus: %1$s." "Rakendusel %1$s puudub õigus sinu asukohta tuvastada. Sa saad seda lubada süsteemi seadistustest." "Rakendusel %1$s puudub õigus sinu asukohta tuvastada. Järgnevalt anna vastavad õigused." "Rakendusel %1$s puudub õigus sinu nutiseadme mikrofoni kasutada. Järgnevalt anna õigused heli salvestamiseks." + "See võib olla põhjustatud võrgu- või serverivigadest." "Selline jututoa aadress on juba olemas. Palun proovi muuta kas aadressi või jututoa nime" "Mõned tähemärgid pole lubatud. Kasuta vaid tähti, numbreid ja neid kirjavahemärke ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Mõned sõnumid on saatmata" @@ -333,12 +339,13 @@ Põhjus: %1$s." "Kuna sul on üks või enam verifitseerimata seadet, siis sinu sõnum jäi saatmata" "Meediafaili töötlemine enne üleslaadimist ei õnnestunud. Palun proovi uuesti." "Kasutaja andmete laadimine ei õnnestunud" + "Sõnum jututoas %1$s" "%1$s / %2$s" "%1$s esiletõstetud sõnumit" "Laadime sõnumit…" "Näita kõiki" "Vestlus" - "Liitumispäring on saadetud" + "Liitumispalve on saadetud" "Jaga asukohta" "Jaga minu asukohta" "Ava Apple Mapsis" 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 b41246e3b7..d165cc09a2 100644 --- a/libraries/ui-strings/src/main/res/values-fa/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fa/translations.xml @@ -112,6 +112,7 @@ "دیدن در خط زمانی" "دیدن منبع" "بله" + "ارتقا موجود است" "درباره" "سیاست استفادهٔ پذیرفتنی" "تنظیمات پیش‌رفته" 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 e43d2a583f..2528bab353 100644 --- a/libraries/ui-strings/src/main/res/values-fi/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fi/translations.xml @@ -129,6 +129,8 @@ "Näytä lähde" "Kyllä" "Kyllä, yritä uudelleen" + "Palvelimesi tukee nyt uutta, nopeampaa protokollaa. Kirjaudu ulos ja takaisin sisään päivittääksesi nyt. Jos teet tämän nyt, voit välttää pakotetun uloskirjautumisen, kun vanha protokolla poistetaan myöhemmin." + "Päivitys saatavilla" "Tietoa" "Hyväksyttävän käytön käytäntö" "Lisätään kuvatekstiä" 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 6d3c873dce..c35bf04061 100644 --- a/libraries/ui-strings/src/main/res/values-fr/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fr/translations.xml @@ -129,6 +129,8 @@ "Afficher la source" "Oui" "Oui, réessayez" + "Votre serveur prend désormais en charge un nouveau protocole plus rapide. Déconnectez-vous, puis reconnectez-vous pour effectuer la mise à niveau dès maintenant. En le faisant tout de suite, vous éviterez une déconnexion forcée lorsque l’ancien protocole sera supprimé." + "Mise à niveau disponible" "À propos" "Politique d’utilisation acceptable" "Ajout d’une légende" @@ -193,6 +195,7 @@ Raison : %1$s." "Message supprimé" "Moderne" "Mettre en sourdine" + "%1$s (%2$s)" "Aucun résultat" "Salon sans nom" "Hors ligne" @@ -270,6 +273,7 @@ Raison : %1$s." "Vérifié(e)" "Vérifier la session" "Vérifier l’identité" + "Vérifier l’utilisateur" "Vidéo" "Message vocal" "En attente…" @@ -278,6 +282,7 @@ Raison : %1$s." "L’identité de %1$s semble avoir changé. %2$s" "L’identité de %1$s %2$s semble avoir changé. %3$s" "(%1$s)" + "L’identité vérifiée de l’utilisateur %1$s a changé." "L’identité vérifiée de %1$s %2$s a changé. %3$s" "Révoquer la vérification" "Confirmation" @@ -296,6 +301,7 @@ Raison : %1$s." "%1$s n’est pas autorisé à accéder à votre position. Vous pouvez activer l’accès dans les Paramètres." "%1$s n’est pas autorisé à accéder à votre position. Activez l’accès ci-dessous." "%1$s n’a pas l’autorisation d’utiliser le microphone. Autorisez l’utilisation pour enregistrer un message vocal." + "Cela peut être dû à des problèmes de réseau ou de serveur." "Cette adresse de salon existe déjà, veuillez essayer de modifier le champ d’adresse de salon ou de modifier le nom du salon" "Certains caractères ne sont pas autorisés. Seuls les lettres, les chiffres et les symboles suivants sont utilisables ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Certains messages n’ont pas été envoyés" @@ -333,12 +339,13 @@ Raison : %1$s." "Votre message n’a pas été envoyé car vous n’avez pas vérifié tous vos appareils" "Échec du traitement des médias à télécharger, veuillez réessayer." "Impossible de récupérer les détails de l’utilisateur" + "Message dans %1$s" "%1$s sur %2$s" "%1$s Messages épinglés" "Chargement du message…" "Voir tout" "Discussion" - "Demande d’adhésion envoyée" + "Demande de rejoindre le salon envoyée" "Partage de position" "Partager ma position" "Ouvrir dans Apple Maps" 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 a74d0a2ed0..66d8f44fbb 100644 --- a/libraries/ui-strings/src/main/res/values-hu/translations.xml +++ b/libraries/ui-strings/src/main/res/values-hu/translations.xml @@ -129,6 +129,8 @@ "Forrás megtekintése" "Igen" "Igen, újrapróbálkozás" + "A kiszolgálója mostantól egy új, gyorsabb protokollt támogat. A frissítéshez jelentkezzen ki, majd jelentkezzen be újra. Ha ezt most megteszi, elkerülheti a kényszerített kijelentkeztetést a régi protokollt eltávolításakor." + "Frissítés érhető el" "Névjegy" "Elfogadható használatra vonatkozó szabályzat" "Felirat hozzáadása" @@ -193,6 +195,7 @@ Ok: %1$s." "Üzenet eltávolítva" "Modern" "Némítás" + "%1$s (%2$s)" "Nincs találat" "Nincs szobanév" "Kapcsolat nélkül" @@ -270,6 +273,7 @@ Ok: %1$s." "Ellenőrizve" "Eszköz ellenőrzése" "Személyazonosság ellenőrzése" + "Felhasználó ellenőrzése" "Videó" "Hangüzenet" "Várakozás…" @@ -278,6 +282,7 @@ Ok: %1$s." "Úgy tűnik, hogy %1$s személyazonossága megváltozott. %2$s" "Úgy tűnik, hogy %1$s %2$s személyazonossága megváltozott. %3$s" "(%1$s)" + "%1$s ellenőrzött személyazonossága megváltozott." "%1$s, %2$s ellenőrzött személyazonossága megváltozott. %3$s" "Ellenőrzés visszavonása" "Megerősítés" @@ -296,6 +301,7 @@ Ok: %1$s." "Az %1$snek nincs engedélye, hogy hozzáférjen a tartózkodási helyéhez. Ezt a beállításokban engedélyezheti." "Az %1$snek nincs engedélye, hogy hozzáférjen a tartózkodási helyéhez. Engedélyezze alább az elérését." "Az %1$snek nincs engedélye, hogy hozzáférjen a mikrofonhoz. Engedélyezze, hogy tudjon hangüzenetet felvenni." + "Ennek oka hálózati vagy kiszolgálóprobléma lehet." "Ez a szobacím már létezik. Próbálja meg szerkeszteni a szobacím mezőt, vagy módosítsa a szoba nevét." "Egyes karakterek nem engedélyezettek. Csak a betűk, a számjegyek és a következő szimbólumok támogatottak: $ & \'() * +/; =? @ [] - . _" "Néhány üzenet nem került elküldésre" 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 5ac935b1c5..f624fd4856 100644 --- a/libraries/ui-strings/src/main/res/values-in/translations.xml +++ b/libraries/ui-strings/src/main/res/values-in/translations.xml @@ -125,6 +125,8 @@ "Lihat di lini masa" "Tampilkan sumber" "Ya" + "Server Anda kini mendukung protokol baru yang lebih cepat. Keluar dan masuk lagi untuk memperbarui sekarang. Melakukan hal ini sekarang akan membantu Anda menghindari keluar paksa saat protokol lama dihapus nantinya." + "Peningkatan tersedia" "Tentang" "Kebijakan penggunaan wajar" "Menambahkan keterangan" 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 b6803448ca..5b97172682 100644 --- a/libraries/ui-strings/src/main/res/values-it/translations.xml +++ b/libraries/ui-strings/src/main/res/values-it/translations.xml @@ -129,6 +129,8 @@ "Vedi codice sorgente" "Sì" "Sì, riprova" + "Il tuo server ora supporta un nuovo protocollo più veloce. Esci e rientra per effettuare l\'aggiornamento. Se lo fai ora, eviterai una disconnessione forzata quando il vecchio protocollo verrà rimosso in seguito." + "Aggiornamento disponibile" "Informazioni" "Regole sull\'utilizzo consentito" "Aggiunta didascalia" 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 94542dfb2e..cca77d0afc 100644 --- a/libraries/ui-strings/src/main/res/values-nb/translations.xml +++ b/libraries/ui-strings/src/main/res/values-nb/translations.xml @@ -9,6 +9,7 @@ "Setter på pause" "PIN-felt" "Spill av" + "Avstemning" "Avsluttet avstemning" "Reager med %1$s" "Reager med andre emojier" @@ -113,6 +114,7 @@ "Ta bilde" "Vis kilde" "Ja" + "Oppgradering tilgjengelig" "Om" "Retningslinjer for akseptabel bruk" "Legger til bildetekst" @@ -142,13 +144,17 @@ "Kryptering aktivert" "Skriv inn PIN-koden din" "Feil" + "Alle" "Mislyktes" "Favoritt" "Fil" + "Fil lagret i Nedlastinger" + "Videresend melding" "GIF" "Bilde" "Som svar på %1$s" "Installer APK" + "Finner ikke denne Matrix-IDen, så invitasjonen blir kanskje ikke mottatt." "Forlater rommet" "Lys" "Lenke kopiert til utklippstavlen" @@ -218,8 +224,10 @@ "Synkroniserer" "System" "Tekst" + "Varsler fra tredjeparter" "Tråd" "Emne" + "Hva er dette rommet for?" "Kan ikke dekryptere" "Du har ikke tilgang til denne meldingen" "Avsenderens verifiserte identitet er endret" @@ -247,17 +255,30 @@ "Endringene dine er ikke lagret. Er du sikker på at du vil gå tilbake?" "Lagre endringer?" "Opprettelse av permalenken mislyktes" + "%1$s kunne ikke laste inn kartet. Prøv igjen senere." "Kunne ikke laste inn meldinger" + "%1$s fikk ikke tilgang til lokasjonen din. Vennligst prøv igjen senere." + "%1$s har ikke tilgang til lokasjonen din. Du kan aktivere tilgang i Innstillinger." + "%1$s har ikke tilgang til lokasjonen din. Aktiver tilgang nedenfor." "Noen meldinger er ikke sendt" "Beklager, det oppstod en feil" "Ikke kryptert." "🔐️ Bli med meg på %1$s" "Hei, snakk med meg på %1$s: %2$s" "%1$s Android" + "Kunne ikke velge medium, prøv igjen." + "Kunne ikke behandle medier for opplasting, vennligst prøv igjen." + "Opplasting av medier mislyktes, vennligst prøv igjen." + "Kunne ikke behandle medier for opplasting, vennligst prøv igjen." "Kunne ikke hente brukerdetaljer" + "Del lokasjon" + "Del min lokasjon" "Åpne i Apple Maps" "Åpne i Google Maps" + "Åpne i OpenStreetMap" + "Del denne lokasjonen" "Meldingen ble ikke sendt fordi %1$s ikke har verifisert alle enheter." + "Lokasjon" "Versjon: %1$s (%2$s)" "en" diff --git a/libraries/ui-strings/src/main/res/values-nl/translations.xml b/libraries/ui-strings/src/main/res/values-nl/translations.xml index b9a672e706..6a967ab1f7 100644 --- a/libraries/ui-strings/src/main/res/values-nl/translations.xml +++ b/libraries/ui-strings/src/main/res/values-nl/translations.xml @@ -120,6 +120,8 @@ "Bekijk in tijdlijn" "Bron weergeven" "Ja" + "Je server ondersteunt nu een nieuw, sneller protocol. Log uit en log opnieuw in om nu te upgraden. Als je dit nu doet, voorkom je dat je geforceerd uitlogt wordt wanneer het oude protocol later wordt verwijderd." + "Upgrade beschikbaar" "Over" "Beleid inzake redelijk gebruik" "Geavanceerde instellingen" @@ -309,6 +311,7 @@ Reden: %1$s." "Bericht laden…" "Bekijk alles" "Chat" + "Verzoek om toe te treden verzonden" "Locatie delen" "Deel mijn locatie" "Openen in Apple Maps" 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 e6a643b21f..a09c4635bd 100644 --- a/libraries/ui-strings/src/main/res/values-pl/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pl/translations.xml @@ -31,6 +31,7 @@ "Pokaż hasło" "Rozpocznij rozmowę" "Menu użytkownika" + "Wyświetl szczegóły" "Nagraj wiadomość głosową." "Zatrzymaj nagrywanie" "Akceptuj" @@ -130,6 +131,8 @@ "Wyświetl źródło" "Tak" "Tak, spróbuj ponownie" + "Twój serwer obsługuje teraz nowy, szybszy protokół. Wyloguj się i zaloguj ponownie, aby uaktualnić teraz. Zrobienie tego teraz pomoże uniknąć wymuszonego wylogowania, gdy stary protokół zostanie później usunięty." + "Dostępna aktualizacja" "O programie" "Polityka użytkowania" "Dodawanie opisu" @@ -151,6 +154,7 @@ "ID urządzenia" "Czat prywatny" "Nie pokazuj ponownie" + "Błąd pobierania" "Pobieram" "(edytowane)" "Edytowanie" @@ -168,6 +172,8 @@ Powód: %1$s." "Ulubione" "Ulubione" "Plik" + "Plik usunięty" + "Plik zapisany" "Plik zapisany do folderu Pobrane" "Przekaż wiadomość" "Często używane" @@ -180,6 +186,7 @@ Powód: %1$s." "Jasny" "Link został skopiowany do schowka" "Ładowanie…" + "Ładuję więcej…" "%1$d członek" "%1$d członki" @@ -191,6 +198,7 @@ Powód: %1$s." "Wiadomość usunięta" "Nowoczesny" "Wycisz" + "%1$s (%2$s)" "Brak wyników" "Brak nazwy pokoju" "Offline" @@ -227,7 +235,7 @@ Powód: %1$s." "Zapisano zmiany" "Zapisywanie" "Blokada ekranu" - "Wyszukaj kogoś" + "Szukaj osób" "Wyniki wyszukiwania" "Bezpieczeństwo" "Wyświetlone przez" @@ -269,6 +277,7 @@ Powód: %1$s." "Zweryfikowano" "Weryfikuj urządzenie" "Zweryfikuj tożsamość" + "Zweryfikuj użytkownika" "Film" "Wiadomość głosowa" "Oczekiwanie…" @@ -277,6 +286,8 @@ Powód: %1$s." "Tożsamość %1$s mogła ulec zmianie. %2$s" "Wygląda na to, że tożsamość %1$s %2$s uległa zmianie. %3$s" "(%1$s)" + "Zweryfikowana tożsamość %1$s %2$s uległa zmianie. %3$s" + "Wycofaj weryfikację" "Potwierdzenie" "Błąd" "Sukces" @@ -293,6 +304,7 @@ Powód: %1$s." "%1$s nie uzyskało uprawnienia do dostępu do twojej lokalizacji. Możesz włączyć dostęp w Ustawieniach." "%1$s nie ma uprawnień dostępu do Twojej lokalizacji. Włącz dostęp poniżej." "%1$s nie ma uprawnień dostępu do Twojego mikrofonu. Włącz dostęp, aby nagrać wiadomość głosową." + "Może to być spowodowane problemami z siecią lub serwerem." "Ten adres pokoju już istnieje. Spróbuj zmienić adres lub nazwę pokoju" "Niektóre znaki są niedozwolone. Obsługiwane są tylko litery, cyfry i następujące symbole ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Niektóre wiadomości nie zostały wysłane" 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 516e7cdf0f..184a51c78a 100644 --- a/libraries/ui-strings/src/main/res/values-pt/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pt/translations.xml @@ -29,6 +29,7 @@ "Mostrar senha" "Iniciar chamada" "Menu de utilizador" + "Ver detalhes" "Gravar mensagem de voz." "Parar gravação" "Aceitar" @@ -127,6 +128,9 @@ "Ver na cronologia" "Ver fonte" "Sim" + "Sim, tentar novamente" + "O teu servidor suporta agora um protocolo novo e mais rápido. Termina a sessão e volta a iniciar sessão para atualizar agora. Se o fizeres agora, evitarás um fim de sessão forçado quando o protocolo antigo for removido mais tarde." + "Atualização disponível" "Sobre" "Política de utilização aceitável" "A adicionar legenda" @@ -148,12 +152,13 @@ "ID do dispositivo" "Conversa direta" "Não mostrar novamente" + "Descarga falhada" "A descarregar" "(editada)" "A editar" "A editar legenda" "* %1$s %2$s" - "Encriptação" + "Cifragem" "Cifragem ativada" "Introduz o teu PIN" "Erro" @@ -165,6 +170,8 @@ Razão: %1$s." "Marcar como favorita" "Favoritas" "Ficheiro" + "Ficheiro eliminado" + "Ficheiro guardado" "Ficheiro guardado nas Transferências" "Reencaminhar mensagem" "Frequentemente utilizado" @@ -177,6 +184,7 @@ Razão: %1$s." "Claro" "Ligação copiada para a área de transferência" "A carregar…" + "A carregar mais…" "%1$d membro" "%1$d membros" @@ -187,6 +195,7 @@ Razão: %1$s." "Mensagem removida" "Moderno" "Silenciar" + "%1$s (%2$s)" "Sem resultados" "Sala sem nome" "Desligado" @@ -264,6 +273,7 @@ Razão: %1$s." "Verificado" "Verificar o dispositivo" "Verifica a identidade" + "Verificar utilizador" "Vídeo" "Mensagem de voz" "A aguardar…" @@ -272,6 +282,9 @@ Razão: %1$s." "A identidade de %1$s parece ter mudado. %2$s" "A identidade de %1$s (username: %2$s ) aparenta ter mudado. %3$s" "(%1$s)" + "A identidade verificada de %1$s foi alterada." + "A identidade verificada de %1$s %2$s foi alterada. %3$s" + "Retirar verificação" "Confirmação" "Erro" "Sucesso" @@ -288,6 +301,7 @@ Razão: %1$s." "A %1$s não tem permissão para aceder à tua localização. Podes ativar o acesso nas Definições." "A %1$s não tem permissão para aceder à tua localização. Continua para ativares o acesso." "A %1$s não tem permissão para aceder ao teu microfone. Permite o acesso para gravar uma mensagem de voz." + "Isto pode dever-se a problemas na rede ou no servidor." "Este endereço de sala já existe, tente editar o campo de endereço da sala ou altere o nome da sala" "Alguns caracteres não são permitidos. Apenas letras, dígitos e os seguintes símbolos são suportados! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Algumas mensagens não foram enviadas" @@ -344,6 +358,8 @@ Razão: %1$s." "Versão: %1$s (%2$s)" "pt" "O histórico de mensagens não está disponível neste dispositivo" + "É necessário verificares este dispositivos para acederes a mensagens antigas" + "Não tens acesso a esta mensagem" "Impossível decifrar mensagem" "Esta mensagem foi bloqueada ou porque ainda não verificaste este dispositivo ou porque o remetente necessita de verificar a tua identidade." 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 8a77f7d567..98d849ce1b 100644 --- a/libraries/ui-strings/src/main/res/values-ro/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ro/translations.xml @@ -123,6 +123,8 @@ "Vedeți în cameră" "Vedeți sursă" "Da" + "Serverul dvs. acceptă acum un protocol nou, mai rapid. Deconectați-vă și conectați-vă din nou pentru a face upgrade acum. Dacă faceți acest lucru acum, vă va ajuta să evitați o deconectare forțată atunci când vechiul protocol este eliminat ulterior." + "Upgrade disponibil" "Despre" "Politică de utilizare rezonabilă" "Setări avansate" 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 db85cb90f8..450a8e1923 100644 --- a/libraries/ui-strings/src/main/res/values-ru/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ru/translations.xml @@ -131,6 +131,8 @@ "Показать источник" "Да" "Да, попробуйте еще раз" + "Теперь ваш сервер поддерживает новый, более быстрый протокол. Чтобы обновить его прямо сейчас, выйдите и войдите в свою учётную запись снова. Сделав это сейчас, вы сможете избежать принудительного выхода из системы при последующем удалении старого протокола." + "Доступно обновление" "О приложении" "Политика допустимого использования" "Добавление подписи" @@ -196,6 +198,7 @@ "Сообщение удалено" "Современный" "Выкл. звук" + "%1$s (%2$s)" "Ничего не найдено" "Название комнаты отсутствует" "Не в сети" @@ -274,6 +277,7 @@ "Проверено" "Подтверждение устройства" "Подтвердить личность" + "Подтвердить пользователя" "Видео" "Голосовое сообщение" "Ожидание…" @@ -282,6 +286,7 @@ "Судя по всему, идентификатор %1$s изменился. %2$s" "Пользователь %1$s сменил имя пользователя на %2$s. %3$s" "(%1$s)" + "Проверенная личность пользователя %1$s изменилась." "%1$s’s %2$s подтвержденная личность изменилась. %3$s" "Вывод верификации" "Подтверждение" @@ -300,6 +305,7 @@ "У %1$s нет разрешения на доступ к вашему местоположению. Вы можете разрешить доступ в Настройках." "У %1$s нет разрешения на доступ к вашему местоположению. Разрешите доступ ниже." "%1$s не имеет разрешения на доступ к вашему микрофону. Разрешите доступ к записи голосового сообщения." + "Это может быть связано с проблемами сети или сервера." "Такой адрес комнаты уже существует, попробуйте отредактировать поле адреса комнаты или изменить название комнаты" "Некоторые символы не допускаются. Поддерживаются только буквы, цифры и следующие символы! $ & \'() * +/; =? @ [] - . _" "Некоторые сообщения не были отправлены" @@ -338,6 +344,7 @@ "Ваше сообщение не было отправлено, поскольку вы не подтвердили одно или несколько своих устройств." "Не удалось обработать медиафайл для загрузки, попробуйте еще раз." "Не удалось получить данные о пользователе" + "Сообщение в %1$s" "%1$s из %2$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 ef239dad16..cae3b9c90b 100644 --- a/libraries/ui-strings/src/main/res/values-sk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml @@ -131,6 +131,8 @@ "Zobraziť zdroj" "Áno" "Áno, skúsiť to znova" + "Váš server teraz podporuje nový, rýchlejší protokol. Odhláste sa a prihláste sa znova, aby ste mohli aktualizovať. Ak to urobíte teraz, pomôže vám vyhnúť sa nútenému odhláseniu, keď sa starý protokol neskôr odstráni." + "Aktualizácia je k dispozícii" "O aplikácii" "Zásady prijateľného používania" "Pridáva sa titulok" @@ -196,6 +198,7 @@ Dôvod: %1$s." "Správa odstránená" "Moderné" "Stlmiť" + "%1$s (%2$s)" "Žiadne výsledky" "Žiadny názov miestnosti" "Offline" @@ -274,6 +277,7 @@ Dôvod: %1$s." "Overené" "Overiť zariadenie" "Overiť totožnosť" + "Overiť používateľa" "Video" "Hlasová správa" "Čaká sa…" @@ -282,6 +286,7 @@ Dôvod: %1$s." "Zdá sa, že totožnosť používateľa %1$s sa zmenila.%2$s" "Zdá sa, že identita %2$s používateľa %1$s sa zmenila. %3$s" "(%1$s)" + "Overená totožnosť používateľa %1$s sa zmenila." "Overená identita používateľa %1$s %2$s sa zmenila. %3$s" "Zrušiť overenie" "Potvrdenie" @@ -300,6 +305,7 @@ Dôvod: %1$s." "%1$s nemá povolenie na prístup k vašej polohe. Prístup môžete zapnúť v Nastaveniach." "%1$s nemá povolenie na prístup k vašej polohe. Povoľte prístup nižšie." "%1$s nemá povolenie na prístup k vášmu mikrofónu. Povoľte prístup na nahrávanie hlasovej správy." + "Môže to byť spôsobené problémami so sieťou alebo serverom." "Táto adresa miestnosti už existuje, skúste upraviť pole adresy miestnosti alebo zmeňte názov miestnosti" "Niektoré znaky nie sú povolené. Podporované sú iba písmená, číslice a nasledujúce symboly ! $ & \'() * +/; =? @ [] - . _" "Niektoré správy neboli odoslané" @@ -338,12 +344,13 @@ Dôvod: %1$s." "Vaša správa nebola odoslaná, pretože ste neoverili jedno alebo viac svojich zariadení" "Nepodarilo sa spracovať médiá na odoslanie, skúste to prosím znova." "Nepodarilo sa získať údaje o používateľovi" + "Správa v %1$s" "%1$s z %2$s" "%1$s Pripnutých správ" "Načítava sa správa…" "Zobraziť všetko" "Konverzácia" - "Žiadosť o vstup odoslaná" + "Žiadosť o pripojenie bola odoslaná" "Zdieľať polohu" "Zdieľať moju polohu" "Otvoriť v Apple Maps" 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 44f84c1bd2..12566a81d3 100644 --- a/libraries/ui-strings/src/main/res/values-sv/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sv/translations.xml @@ -32,6 +32,7 @@ "Spela in röstmeddelande." "Stoppa inspelning" "Godkänn" + "Lägg till bildtext" "Lägg till i tidslinjen" "Tillbaka" "Ring" @@ -45,8 +46,10 @@ "Bekräfta lösenord" "Fortsätt" "Kopiera" + "Kopiera bildtext" "Kopiera länk" "Kopiera länk till meddelande" + "Kopiera text" "Skapa" "Skapa ett rum" "Inaktivera" @@ -57,6 +60,7 @@ "Kassera" "Klar" "Redigera" + "Redigera bildtext" "Redigera omröstning" "Aktivera" "Avsluta omröstning" @@ -91,6 +95,8 @@ "Reagera" "Avvisa" "Ta bort" + "Ta bort bildtext" + "Ta bort meddelande" "Svara" "Svara i tråd" "Rapportera bugg" @@ -121,8 +127,12 @@ "Visa i tidslinjen" "Visa källkod" "Ja" + "Ja, försök igen" + "Din server stöder nu ett nytt, snabbare protokoll. Logga ut och logga in igen för att uppgradera nu. Om du gör detta nu hjälper du dig att undvika en tvingad utloggning när det gamla protokollet tas bort senare." + "Uppgradering tillgänglig" "Om" "Policy för godtagbar användning" + "Lägga till bildtext" "Avancerade inställningar" "Analysdata" "Utseende" @@ -141,9 +151,12 @@ "Enhets-ID" "Direktchatt" "Visa inte detta igen" + "Laddar ner" "(redigerad)" "Redigerar" + "Redigera bildtext" "* %1$s %2$s" + "Kryptering" "Kryptering aktiverad" "Ange din PIN-kod" "Fel" @@ -157,6 +170,7 @@ Anledning:%1$s." "Fil" "Fil sparad i Download" "Vidarebefordra meddelande" + "Används ofta" "GIF" "Bild" "Som svar på %1$s" @@ -237,11 +251,14 @@ Anledning:%1$s." "Ämne" "Vad handlar det här rummet om?" "Kan inte avkryptera" + "Skickad från en osäker enhet" "Du har inte tillgång till det här meddelandet" + "Avsändarens verifierade identitet har ändrats" "Inbjudan kunde inte skickas till en eller flera användare." "Kunde inte skicka inbjudningar" "Lås upp" "Avtysta" + "Samtal som inte stöds" "Händelse som inte stöds" "Användarnamn" "Verifiering avbruten" @@ -249,6 +266,7 @@ Anledning:%1$s." "Verifiering misslyckades" "Verifierad" "Verifiera enheten" + "Verifiera identitet" "Video" "Röstmeddelande" "Väntar …" @@ -273,6 +291,8 @@ Anledning:%1$s." "%1$s är inte behörig att komma åt din plats. Du kan aktivera åtkomst i Inställningar." "%1$s är inte behörig att komma åt din plats. Aktivera åtkomst nedan." "%1$s är inte behörig att komma åt din mikrofon. Aktivera åtkomst för att spela in ett röstmeddelande." + "Den här rumsadressen finns redan. Försök att redigera adressfältet för rummet eller ändra rummets namn" + "Vissa tecken är inte tillåtna. Endast bokstäver, siffror och följande symboler stöds ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Vissa meddelanden har inte skickats" "Tyvärr, ett fel uppstod" "Detta krypterade meddelandes äkthet kan inte garanteras på den här enheten." @@ -286,6 +306,7 @@ Anledning:%1$s." "%1$s Android" "Raseriskaka för att rapportera bugg" "Misslyckades att välja media, vänligen pröva igen." + "Bildtexter kanske inte är synliga för personer som använder äldre appar." "Misslyckades att bearbeta media för uppladdning, vänligen pröva igen." "Misslyckades att ladda upp media, vänligen pröva igen." "Tryck på ett meddelande och välj ”%1$s” för att inkludera det här." @@ -312,6 +333,7 @@ Anledning:%1$s." "Laddar meddelande …" "Visa alla" "Chatt" + "Begäran om att gå med skickad" "Dela plats" "Dela min plats" "Öppna i Apple Maps" @@ -324,4 +346,9 @@ Anledning:%1$s." "Plats" "Version: %1$s (%2$s)" "sv" + "Historiska meddelanden är inte tillgängliga på den här enheten" + "Du måste verifiera den här enheten för åtkomst till historiska meddelanden" + "Du har inte tillgång till det här meddelandet" + "Det gick inte att dekryptera meddelandet" + "Det här meddelandet blockerades antingen för att du inte verifierade din enhet eller för att avsändaren måste verifiera din identitet." diff --git a/libraries/ui-strings/src/main/res/values-tr/translations.xml b/libraries/ui-strings/src/main/res/values-tr/translations.xml new file mode 100644 index 0000000000..46f87e2019 --- /dev/null +++ b/libraries/ui-strings/src/main/res/values-tr/translations.xml @@ -0,0 +1,365 @@ + + + "Sil" + + "%1$d basamak girildi" + "%1$d basamak girildi" + + "Şifreyi gizle" + "Aşağıya atla" + "Yalnızca bahsetmeler" + "Sessiz" + "Sayfa %1$d" + "Duraklat" + "PIN alanı" + "Oynat" + "Anket" + "Anket sona erdi" + "%1$s ile tepki verin" + "Diğer emojilerle tepki verin" + "Okuyan %1$s ve %2$s" + + "%1$s ve %2$d diğer kişi tarafından okundu" + "%1$s ve %2$d diğer kişi tarafından okundu" + + "Okuyan %1$s" + "Tümünü göstermek için dokunun" + "Tepkimeyi kaldır %1$s" + "Dosyaları gönder" + "Şifreyi göster" + "Bir arama başlatın" + "Kullanıcı menüsü" + "Ayrıntıları görüntüle" + "Sesli mesajı kaydedin." + "Kaydı durdur" + "Kabul et" + "Açıklama ekle" + "Zaman çizelgesine ekle" + "Geri" + "Çağrı" + "İptal" + "Şimdilik iptal et" + "Fotoğraf seç" + "Temizle" + "Kapat" + "Doğrulamayı tamamlayın" + "Onayla" + "Şifreyi onayla" + "Devam et" + "Kopyala" + "Açıklamayı kopyala" + "Bağlantıyı kopyala" + "Bağlantıyı mesaja kopyala" + "Metni kopyala" + "Oluştur" + "Bir oda oluştur" + "Devre dışı bırak" + "Hesabı devre dışı bırak" + "Reddet" + "Anketi Sil" + "Devre dışı" + "Vazgeç" + "Bitti" + "Düzenle" + "Açıklamayı düzenle" + "Anketi düzenle" + "Etkinleştir" + "Anketi sonlandır" + "PIN girin" + "Parolanızı mı unuttunuz?" + "İleri" + "Geri dön" + "Yoksay" + "Davet et" + "İnsanları davet et" + "İnsanları davet et %1$s" + "İnsanları davet et %1$s" + "Davetiyeler" + "Katıl" + "Daha fazla bilgi" + "Ayrıl" + "Sohbeti bırak" + "Odadan ayrıl" + "Daha fazla yükle" + "Hesabı yönet" + "Cihazları yönet" + "Mesaj" + "Sonraki" + "Hayır" + "Şimdi değil" + "TAMAM" + "Ayarlar" + "İle aç" + "Pin" + "Hızlı cevap" + "Alıntı" + "Tepki" + "Reddet" + "Kaldır" + "Açıklamayı kaldır" + "Mesajı kaldır" + "Yanıtla" + "Konuya cevap ver" + "Hata bildir" + "İçeriği bildir" + "Sıfırla" + "Kimliği sıfırla" + "Yeniden dene" + "Şifre çözmeyi tekrar deneyin" + "Kaydet" + "Ara" + "Gönder" + "Mesaj gönder" + "Paylaş" + "Linki paylaş" + "Göster" + "Tekrar oturum açın" + "Oturumu kapat" + "Yine de çıkış yap" + "Atla" + "Başlat" + "Sohbeti başlat" + "Doğrulamayı başlat" + "Haritayı yüklemek için dokunun" + "Fotoğraf çek" + "Seçenekler için dokunun" + "Tekrar deneyin" + "Sabitlemeyi kaldır" + "Zaman çizelgesinde görüntüle" + "Kaynağı görüntüle" + "Evet" + "Evet, tekrar dene" + "Sunucunuz artık yeni, daha hızlı bir protokolü destekliyor. Şimdi oturumu kapatıp tekrar oturum açarak yükseltme yapın. Bunu şimdi yapmak, eski protokol daha sonra kaldırıldığında zorunlu oturum kapatmayı önlemenize yardımcı olacaktır." + "Yükseltme mevcut" + "Hakkında" + "Kabul edilebilir kullanım politikası" + "Açıklama ekleme" + "Gelişmiş Ayarlar" + "Analizler" + "Görünüm" + "Ses" + "Engellenen kullanıcılar" + "Kabarcıklar" + "Çağrı başladı" + "Sohbet yedekleme" + "Panoya kopyalandı" + "Telif Hakkı" + "Oda yaratmak…" + "Sol oda" + "Koyu" + "Şifre çözme hatası" + "Geliştirici seçenekleri" + "Cihaz Kimliği" + "Doğrudan sohbet" + "Bunu bir daha gösterme" + "İndirme başarısız oldu" + "İndiriliyor" + "(düzenlendi)" + "Düzenleme" + "Açıklamayı düzenleme" + "* %1$s %2$s" + "Şifreleme" + "Şifreleme etkin" + "PIN\'inizi girin" + "Hata" + "Bir hata oluştu, yeni mesajlar için bildirim alamayabilirsiniz. Lütfen ayarlardan bildirimlerle ilgili sorunları giderin. + +Neden: %1$s." + "Herkes" + "Başarısız" + "Favori" + "Favorilere eklendi" + "Dosya" + "Dosya silindi" + "Dosya kaydedildi" + "Dosya İndirilenler\'e kaydedildi" + "Mesajı ilet" + "Sık kullanılanlar" + "GIF" + "Resim" + "Cevap olarak %1$s" + "APK\'yı yükleyin" + "Bu Matrix Kimliği bulunamıyor, bu nedenle davet alınmayabilir." + "Odadan ayrılma" + "Aydınlık" + "Bağlantı panoya kopyalandı" + "Yükleniyor…" + "Daha fazla yükleniyor…" + + "%1$d üye" + "%1$d üye" + + "Mesaj" + "Mesaj eylemleri" + "Mesaj düzeni" + "Mesaj kaldırıldı" + "Modern" + "Sessiz" + "%1$s (%2$s)" + "Sonuç yok" + "Oda adı yok" + "Çevrimdışı" + "Açık kaynak lisansları" + "veya" + "Şifre" + "Kişiler" + "Kalıcı bağlantı" + "İzin" + "Sabitlendi" + "Lütfen bekleyin…" + "Bu anketi sonlandırmak istediğinizden emin misiniz?" + "Anket: %1$s" + "Toplam oy: %1$s" + "Sonuçlar anket sona erdikten sonra gösterilecektir" + + "%d oy" + "%d oy" + + "Gizlilik Politikası" + "Tepki" + "Tepkiler" + "Kurtarma anahtarı" + "Yenileniyor…" + "Cevaplamak için %1$s" + "Hata bildir" + "Sorun bildir" + "Rapor gönderildi" + "Zengin metin editörü" + "Oda" + "Oda adı" + "örn. proje adınız" + "Kaydedilen değişiklikler" + "Kaydediliyor" + "Ekran kilidi" + "Birini arayın" + "Arama sonuçları" + "Güvenlik" + "Tarafından görüldü" + "Şuraya gönder" + "Gönderiliyor…" + "Gönderme başarısız oldu" + "Gönderildi" + "Sunucu desteklenmiyor" + "Sunucu URL\'si" + "Ayarlar" + "Paylaşılan konum" + "Oturumu kapatma" + "Bir şeyler ters gitti" + "Sohbet başlatılıyor…" + "Çıkartma" + "Başarılı" + "Öneriler" + "Senkronizasyon" + "Sistem" + "Metin" + "Üçüncü taraf bildirimleri" + "Konu" + "Konu" + "Bu oda ne hakkında?" + "Şifre çözülemiyor" + "Güvenli olmayan bir cihazdan gönderildi" + "Bu mesaja erişiminiz yok" + "Gönderenin doğrulanmış kimliği değişti" + "Davetler bir veya daha fazla kullanıcıya gönderilemedi." + "Davetiye(ler) gönderilemedi" + "Kilidi aç" + "Sesi aç" + "Desteklenmeyen çağrı" + "Desteklenmeyen etkinlik" + "Kullanıcı adı" + "Doğrulama iptal edildi" + "Doğrulama tamamlandı" + "Doğrulama başarısız" + "Doğrulandı" + "Cihazı doğrula" + "Kimliği doğrula" + "Kullanıcıyı Doğrula" + "Video" + "Sesli Mesaj" + "Bekleniyor…" + "Bu mesajı bekliyorum" + "Sen" + "%1$s kişinin kimliği değişmiş gibi görünüyor. %2$s" + "%1$s\'ın %2$s kimliği değişmiş gibi görünüyor. %3$s" + "(%1$s)" + "%1$s kullanıcısının doğrulanmış kimliği değişti." + "%1$s kullanıcısının %2$s doğrulanmış kimliği değişti. %3$s" + "Doğrulamayı iptal et" + "Onaylama" + "Hata" + "Başarılı" + "Uyarı" + "Değişiklikleriniz kaydedilmedi. Geri dönmek istediğinden emin misin?" + "Değişiklikleri Kaydet?" + "Ana sunucunuzun Matrix Authentication Service ve hesap oluşturmayı destekleyecek şekilde güncellenmesi gerekiyor." + "Kalıcı bağlantı oluşturulamadı" + "%1$s harita yüklenemedi. Lütfen daha sonra tekrar deneyin." + "Mesajlar yüklenemedi" + "%1$s konumunuza erişemedi. Lütfen daha sonra tekrar deneyin." + "Sesli mesajınız yüklenemedi." + "Mesaj bulunamadı" + "%1$s konumunuza erişim iznine sahip değil. Erişimi Ayarlar\'dan etkinleştirebilirsiniz." + "%1$s konumunuza erişim iznine sahip değil. Aşağıdan erişimi etkinleştirin." + "%1$s mikrofonunuza erişim izni yok. Sesli mesaj kaydetmek için erişimi etkinleştirin." + "Bunun nedeni ağ veya sunucu sorunları olabilir." + "Bu oda adresi zaten mevcut. Lütfen oda adres alanını düzenlemeyi deneyin veya oda adını değiştirin" + "Bazı karakterlere izin verilmez. Yalnızca harfler, rakamlar ve aşağıdaki semboller desteklenir ! $ &amp; \' ( ) * + / ; = ? @ [ ] - . _" + "Bazı mesajlar gönderilmedi" + "Üzgünüz, bir hata oluştu" + "Bu şifrelenmiş mesajın doğruluğu bu cihazda garanti edilemez." + "Daha önce doğrulanmış bir kullanıcı tarafından şifrelenmiştir." + "Şifrelenmemiş." + "Bilinmeyen veya silinmiş bir cihaz tarafından şifrelenmiştir." + "Sahibi tarafından doğrulanmamış bir cihaz tarafından şifrelenmiştir." + "Doğrulanmamış bir kullanıcı tarafından şifrelenmiştir." + "🔐️ Bana katılın %1$s" + "Hey, benimle konuş %1$s: %2$s" + "%1$s Android" + "Hata bildirmek için Rageshake" + "Medya seçilemedi, lütfen tekrar deneyin." + "Açıklamalar, eski uygulamaları kullanan kişiler tarafından görülemeyebilir." + "Medya yüklenemedi, lütfen tekrar deneyin." + "Medya yüklenemedi, lütfen tekrar deneyin." + "Bir mesaja basın ve buraya eklemek için “%1$s” yi seçin." + "Önemli mesajları kolayca keşfedilebilmeleri için sabitleyin" + + "%1$d Sabitlenmiş mesaj" + "%1$d Sabitlenmiş mesajlar" + + "Sabitlenmiş mesajlar" + "Kimliğinizi sıfırlamak için %1$s hesabınıza gitmek üzeresiniz. Daha sonra uygulamaya geri döneceksiniz." + "Onaylayamıyor musunuz? Kimliğinizi sıfırlamak için hesabınıza gidin." + "Doğrulamayı geri çek ve gönder" + "Doğrulamanızı geri çekebilir ve yine de bu mesajı gönderebilir veya şimdilik iptal edebilir ve %1$s yeniden doğruladıktan sonra daha sonra tekrar deneyebilirsiniz." + "%1$s kullanıcısının doğrulanmış kimliği değiştiği için mesajınız gönderilmedi" + "Yine de mesaj gönder" + "%1$s bir veya daha fazla doğrulanmamış cihaz kullanıyor. Mesajı yine de gönderebilir veya şimdilik iptal edebilir ve %2$s tüm cihazlarını doğruladıktan sonra tekrar deneyebilirsiniz." + "%1$s tüm cihazları doğrulamadığı için mesajınız gönderilmedi" + "Bir veya daha fazla cihazınız doğrulanmamış. Mesajı yine de gönderebilir veya şimdilik iptal edip tüm cihazlarınızı doğruladıktan sonra tekrar deneyebilirsiniz." + "Bir veya daha fazla cihazınızı doğrulamadığınız için mesajınız gönderilmedi" + "Medya yüklenemedi, lütfen tekrar deneyin." + "Kullanıcı ayrıntıları alınamadı" + "%1$s / %2$s" + "%1$s Sabitlenmiş mesajlar" + "Mesaj yükleniyor…" + "Tümünü görüntüle" + "Sohbet" + "Katılma isteği gönderildi" + "Konum paylaş" + "Konumumu paylaş" + "Apple Maps\'de aç" + "Google Maps\'te aç" + "OpenStreetMap\'te aç" + "Bu konumu paylaş" + "%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." + "Konum" + "Sürüm: %1$s (%2$s)" + "tr" + "Geçmiş mesajlar bu cihazda kullanılamıyor" + "Geçmiş mesajlara erişim için bu cihazı doğrulamanız gerekir" + "Bu mesaja erişiminiz yok" + "Mesaj şifresi çözülemedi" + "Bu mesaj, cihazınızı doğrulamadığınız veya gönderenin kimliğinizi doğrulaması gerektiği için engellendi." + 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 1224525425..bbeefd6eca 100644 --- a/libraries/ui-strings/src/main/res/values-uk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-uk/translations.xml @@ -131,6 +131,8 @@ "Переглянути джерело" "Так" "Так, повторити спробу" + "Ваш сервер тепер підтримує новий, швидший протокол. Вийдіть із системи та увійдіть знову, щоб оновити систему зараз. Якщо ви зробите це зараз, це допоможе вам уникнути примусового виходу з системи, коли старий протокол буде видалено пізніше." + "Доступне оновлення" "Відомості" "Політика прийнятного використання" "Додавання підпису" @@ -184,6 +186,7 @@ "Світла" "Посилання скопійовано в буфер обміну" "Завантаження" + "Завантаження наступних…" "%1$d учасник" "%1$d учасники" @@ -195,6 +198,7 @@ "Повідомлення вилучено" "Модерн" "Вимкнути звук" + "%1$s (%2$s)" "Немає результатів" "Немає назви кімнати" "Не в мережі" @@ -273,6 +277,7 @@ "Перевірено" "Верифікувати пристрій" "Підтвердити особу" + "Верифікувати користувача" "Відео" "Голосове повідомлення" "Очікування…" @@ -299,6 +304,7 @@ "%1$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 b35980f479..80d6f5e134 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 @@ -126,6 +126,8 @@ "檢視原始碼" "是" "是的,再試一次" + "您的伺服器現在支援新的、更快的協定。立即登出並重新登入以進行升級。現在這樣做將協助您避免在稍後移除舊協定時被強制登出。" + "可升級" "關於" "可接受使用政策" "新增標題" 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 76ba789f3c..4f0c0fb06a 100644 --- a/libraries/ui-strings/src/main/res/values-zh/translations.xml +++ b/libraries/ui-strings/src/main/res/values-zh/translations.xml @@ -127,6 +127,8 @@ "查看源码" "是" "是的,再试一次" + "您的服务器现在支持更快的新协议。现在登出并重新登录以进行升级。现在这样做可以帮助您避免在以后删除旧协议时被强制登出。" + "有可用升级" "关于" "可接受的使用政策" "添加标题" @@ -190,6 +192,7 @@ "消息已移除" "现代" "静音" + "%1$s (%2$s)" "没有结果" "无聊天室名" "离线" diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index 2d6c7eea53..4a7668ce46 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -129,6 +129,8 @@ "View source" "Yes" "Yes, try again" + "Your server now supports a new, faster protocol. Log out and log back in to upgrade now. Doing this now will help you avoid a forced logout when the old protocol is removed later." + "Upgrade available" "About" "Acceptable use policy" "Adding caption" @@ -193,6 +195,7 @@ Reason: %1$s." "Message removed" "Modern" "Mute" + "%1$s (%2$s)" "No results" "No room name" "Offline" @@ -270,6 +273,7 @@ Reason: %1$s." "Verified" "Verify device" "Verify identity" + "Verify user" "Video" "Voice message" "Waiting…" @@ -278,6 +282,7 @@ Reason: %1$s." "%1$s\'s identity appears to have changed. %2$s" "%1$s’s %2$s identity appears to have changed. %3$s" "(%1$s)" + "%1$s’s verified identity has changed." "%1$s’s %2$s verified identity has changed. %3$s" "Withdraw verification" "Confirmation" @@ -296,6 +301,7 @@ Reason: %1$s." "%1$s does not have permission to access your location. You can enable access in Settings." "%1$s does not have permission to access your location. Enable access below." "%1$s does not have permission to access your microphone. Enable access to record a voice message." + "This may be due to network or server issues." "This room address already exists. Please try editing the room address field or change the room name" "Some characters are not allowed. Only letters, digits and the following symbols are supported ! $ & ‘ ( ) * + / ; = ? @ [ ] - . _" "Some messages have not been sent" @@ -333,6 +339,7 @@ Reason: %1$s." "Your message was not sent because you have not verified one or more of your devices" "Failed processing media to upload, please try again." "Could not retrieve user details" + "Message in %1$s" "%1$s of %2$s" "%1$s Pinned messages" "Loading message…" diff --git a/plugins/src/main/kotlin/Versions.kt b/plugins/src/main/kotlin/Versions.kt index 94d61becae..09cf2bee58 100644 --- a/plugins/src/main/kotlin/Versions.kt +++ b/plugins/src/main/kotlin/Versions.kt @@ -29,7 +29,7 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion */ private const val versionYear = 25 -private const val versionMonth = 2 +private const val versionMonth = 3 // Note: must be in [0,99] private const val versionReleaseNumber = 0 diff --git a/plugins/src/main/kotlin/config/BuildTimeConfig.kt b/plugins/src/main/kotlin/config/BuildTimeConfig.kt new file mode 100644 index 0000000000..f8512ab956 --- /dev/null +++ b/plugins/src/main/kotlin/config/BuildTimeConfig.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 config + +object BuildTimeConfig { + const val APPLICATION_ID = "io.element.android.x" + const val APPLICATION_NAME = "Element X" + const val GOOGLE_APP_ID_RELEASE = "1:912726360885:android:d097de99a4c23d2700427c" + const val GOOGLE_APP_ID_DEBUG = "1:912726360885:android:def0a4e454042e9b00427c" + const val GOOGLE_APP_ID_NIGHTLY = "1:912726360885:android:e17435e0beb0303000427c" +} diff --git a/plugins/src/main/kotlin/extension/DependencyHandleScope.kt b/plugins/src/main/kotlin/extension/DependencyHandleScope.kt index 3e8f8f57b0..d7fbdfae2c 100644 --- a/plugins/src/main/kotlin/extension/DependencyHandleScope.kt +++ b/plugins/src/main/kotlin/extension/DependencyHandleScope.kt @@ -25,7 +25,7 @@ internal fun DependencyHandler.implementation(dependency: Any) = add("implementa private fun DependencyHandlerScope.implementation( dependency: Any, config: Action -) = dependencies.add("implementation", dependency, closureOf { config.execute(this) }) +) = dependencies.add("implementation", dependency, closureOf { config.execute(this) }) private fun DependencyHandlerScope.androidTestImplementation(dependency: Any) = dependencies.add("androidTestImplementation", dependency) @@ -114,14 +114,30 @@ fun DependencyHandlerScope.allServicesImpl() { implementation(project(":services:toolbox:impl")) } -fun DependencyHandlerScope.allEnterpriseImpl(project: Project) = addAll(project, "enterprise", "impl") +fun DependencyHandlerScope.allEnterpriseImpl(project: Project) = addAll( + project = project, + modulePrefix = ":enterprise:features", + moduleSuffix = ":impl", +) -fun DependencyHandlerScope.allFeaturesImpl(project: Project) = addAll(project, "features", "impl") +fun DependencyHandlerScope.allFeaturesImpl(project: Project) = addAll( + project = project, + modulePrefix = ":features", + moduleSuffix = ":impl", +) -fun DependencyHandlerScope.allFeaturesApi(project: Project) = addAll(project, "features", "api") +fun DependencyHandlerScope.allFeaturesApi(project: Project) = addAll( + project = project, + modulePrefix = ":features", + moduleSuffix = ":api", +) -private fun DependencyHandlerScope.addAll(project: Project, prefix: String, suffix: String) { - val subProjects = project.rootProject.subprojects.filter { it.path.startsWith(":$prefix") && it.path.endsWith(":$suffix") } +private fun DependencyHandlerScope.addAll( + project: Project, + modulePrefix: String, + moduleSuffix: String, +) { + val subProjects = project.rootProject.subprojects.filter { it.path.startsWith(modulePrefix) && it.path.endsWith(moduleSuffix) } for (p in subProjects) { add("implementation", p) } diff --git a/plugins/src/main/kotlin/extension/KoverExtension.kt b/plugins/src/main/kotlin/extension/KoverExtension.kt index 35aa904244..c361aeba52 100644 --- a/plugins/src/main/kotlin/extension/KoverExtension.kt +++ b/plugins/src/main/kotlin/extension/KoverExtension.kt @@ -54,7 +54,6 @@ fun Project.setupKover() { description = "Verifies the code coverage of all subprojects." val dependencies = listOf(":app:koverVerifyGplayDebug") + koverVariants.map { ":app:koverVerify${it.replaceFirstChar(Char::titlecase)}" } dependsOn(dependencies) - } // https://kotlin.github.io/kotlinx-kover/ // Run `./gradlew :app:koverHtmlReport` to get report at ./app/build/reports/kover @@ -180,7 +179,9 @@ fun Project.setupKover() { "io.element.android.libraries.matrix.api.timeline.item.event.OtherState$*", "io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState*", "io.element.android.libraries.mediaviewer.impl.local.pdf.PdfViewerState", + "io.element.android.libraries.mediaviewer.impl.local.player.MediaPlayerControllerState", "io.element.android.libraries.textcomposer.model.TextEditorState", + "io.element.android.libraries.textcomposer.components.FormattingOptionState", ) includes.classes("*State") } diff --git a/plugins/src/main/kotlin/extension/locales.kt b/plugins/src/main/kotlin/extension/locales.kt index 4b83bac32a..ef842dbb1f 100644 --- a/plugins/src/main/kotlin/extension/locales.kt +++ b/plugins/src/main/kotlin/extension/locales.kt @@ -28,6 +28,7 @@ val locales = setOf( "ru", "sk", "sv", + "tr", "uk", "uz", "zh-rCN", diff --git a/screenshots/de/appnav.loggedin_LoggedInView_Day_3_de.png b/screenshots/de/appnav.loggedin_LoggedInView_Day_3_de.png index 4da18362e2..ef041321f5 100644 --- a/screenshots/de/appnav.loggedin_LoggedInView_Day_3_de.png +++ b/screenshots/de/appnav.loggedin_LoggedInView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20431573f0b6dc78fc717e93f86e17f70b3998f70b71680c07cc098c464f233e -size 28738 +oid sha256:5dde09b6fd33ed97ef3fec22736afdcbadd5c0060ef8bdbfaf09824f3d45c247 +size 27502 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png index 202f5ec903..dbe48bd510 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2683c2af9b6e03d8a63478a277bc08fee3938a48cf446e81fee14b8177a7a0e5 -size 17005 +oid sha256:d67dd602ead4c0c58b91aa388d4b25edfb1cbb083272d68d242f76cba8013206 +size 16813 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png index 20fb2fd98d..df53bac8ba 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fabdf30f91e5d14fdb41a78f337adc1781e572bbdb346be34b6de1738362b577 -size 26228 +oid sha256:a613158ae574adcf48344204588d854c04bd95cdb3dc6700058f579e64550dd6 +size 26099 diff --git a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png index 27a46e8484..425510fe87 100644 --- a/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png +++ b/screenshots/de/features.createroom.impl.addpeople_AddPeopleView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00a2119357556362eea4ffc31e982e87e0a2e18af95ab713b433851d5ad99d39 -size 44744 +oid sha256:bd241e34e59cb9a80d8fabe4584ea53af7e8f439ea9b8be1e370fe33c6f44f39 +size 44585 diff --git a/screenshots/de/features.createroom.impl.components_UserListView_Day_0_de.png b/screenshots/de/features.createroom.impl.components_UserListView_Day_0_de.png index d2a6652369..b01e8f3daa 100644 --- a/screenshots/de/features.createroom.impl.components_UserListView_Day_0_de.png +++ b/screenshots/de/features.createroom.impl.components_UserListView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a883439100e721d0749da6690882dad0decd6962ee82599fc7902746415d63d -size 9596 +oid sha256:1f3d3e011b7b2fd9f0732e9632333d65c6f22ddb4df448128ad18bce05fdea19 +size 9392 diff --git a/screenshots/de/features.createroom.impl.components_UserListView_Day_1_de.png b/screenshots/de/features.createroom.impl.components_UserListView_Day_1_de.png index 39a409488e..71d58d0eb7 100644 --- a/screenshots/de/features.createroom.impl.components_UserListView_Day_1_de.png +++ b/screenshots/de/features.createroom.impl.components_UserListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9a7ec6c7c6406da82cbc68a31e1ac6af0c7cd4fcb9a162f2f222a0b98d43ace -size 20914 +oid sha256:0678bcfff323a0fa3991d45c36d45d9d16e97e6c670be714d6de612440b22bef +size 20710 diff --git a/screenshots/de/features.createroom.impl.components_UserListView_Day_9_de.png b/screenshots/de/features.createroom.impl.components_UserListView_Day_9_de.png index 82cb2036e1..821662ba5f 100644 --- a/screenshots/de/features.createroom.impl.components_UserListView_Day_9_de.png +++ b/screenshots/de/features.createroom.impl.components_UserListView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89fecc1b67392dae4b62e99963c440db63adddcc0c9c4f6d81408560063b870d -size 37718 +oid sha256:95148a84c9a1d4574bfbf995a15d2711f59a26015fa6b928207b5e1266b72adb +size 37540 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 00bec43e13..0ecc776a1f 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:457363c25841925076aaad53d728e631427f699cfb7545b8e1abb94fb6a2e774 -size 36741 +oid sha256:f311fd6462e979e179245d6ef1451918736770d1c2c187b126a2b36298163fe5 +size 36258 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 e09d9d4951..a065983d39 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:baf2c57107cd2f639535fc6fdf5b9885224c0f839d78fdbc85e14398f7439cd2 -size 49576 +oid sha256:0238457029de9b2bcb7835b6092a2e97674fcd90f31ce93658cd96ecb94c74f5 +size 49129 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 ba26587c92..715a6fee1e 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:eba277a783d50012cf4a51ec93c4cf02394befc9c5d04edd27ac8113e9257539 -size 63564 +oid sha256:2b2217c0206ff2a96efa24ec94d84ede4ed55bba8d0b879c233e6953d66f1cac +size 63126 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 09b64115e1..56fbc94f19 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:c1f26d21ba37d244fcc5adb5b7580856f8e1a7670fd2defcd4befa3e2d07b8b6 -size 63685 +oid sha256:453fd456a574edc265563d4d6e27b09a050b26df402675de07f2f28ba76f8708 +size 63213 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 81b004f86b..f6a95e3575 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:52f75d9234a0eace30ec10cbdeda6314cea0634d0ccbd2b8f453ec184a35cd13 -size 63592 +oid sha256:4e5ad97aa8f61c06b74c93d913d5b78629d0600b7c72fd6a97abd99032740124 +size 63118 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 5308d79c1e..119f85a43a 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:6c28710d2afe583078a26c8b56c331a942c250cb599d4c00f9dc4cf04286c811 -size 63082 +oid sha256:d9e9109d76921acca7cbc99fb0394d8033340cf847c60417a1421d4f7b2765c3 +size 62610 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 1f6bca734e..512433de00 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:9b449faf40487c6f34253b0157ae14c3df6a8a782b2af18fcd2b6f80198fa7d2 -size 37688 +oid sha256:f078b697c04a8bb129295b07f14464415a640990544fd4314d3034ab15a7be5b +size 37230 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 ba57e7b40b..fe97eb211f 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:09596614dfe191f7eb046aff9d44642e6ecbbf3fbdcb89181bae75c16d6ba72d -size 50492 +oid sha256:1535997d0af95e3e7f40437e2015c28d4acf6acb8b1ce31df28086f4ee79cba7 +size 50048 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 08823300da..9945778f01 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:ae642483fc05fb50555e2fa5b83ac12d84a064c4b840a53a4ebf53d419f87242 -size 65036 +oid sha256:2e180746bac90d0227c6d39727dc3d1fbb00c316e37fa5b09f5bb710b7438377 +size 64595 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 3b9922cb36..ca120a72ae 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:28606cedfc76d8600f8e935a42c4e98dc13c0b1d1733856bc20d064f99a39c5b -size 65826 +oid sha256:a18c0dac1ad5f1f66e4a1eb7540c70f06b4dd25a847771441324d4faf27beb35 +size 65387 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 837e2badf7..3ba9b83e5b 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:3128a8b8ca419b6862d1e5a3e8713f4aefd6fccd494babf006ccbbe15391c956 -size 65747 +oid sha256:dde0ccc0574d99c4cfe78d6d8ab666759800be526f34a6c0ff5ea6814015cd47 +size 65302 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 7acd884662..b83f6d2530 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:54396bda85421376b596d885a43f67a19b06e9d7980d01112b90849ae08568e1 -size 65181 +oid sha256:eebbb8402c34342de27f6d187d52c24b89ccd01e11a2c334e9a1c90301d2c39d +size 64733 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png index 2d07ffb504..225b7cb14b 100644 --- a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b34cd0b4ea524e88df1185ed2223dcce00fb7efb7582f52dece9876b188a4cc -size 21796 +oid sha256:329d29a976cea60e562443f2aa3dce5dc2a403c4924dc27f83f2ea56e3018678 +size 21604 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png index 874582fed6..b78d6d4e52 100644 --- a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b5433313f6359603e64477fc7cdebb10782cbe3c2a9ac8087ff2252c11ece55 -size 48294 +oid sha256:efba431d869044b1f671ebbf36f395d34b1f019d8409204dbe861ea8f53a0d6e +size 48096 diff --git a/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png new file mode 100644 index 0000000000..8a4eb88b0a --- /dev/null +++ b/screenshots/de/features.createroom.impl.root_CreateRoomRootView_Day_4_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f116908e30f3eae509ab91f269daaff5397373ed73546b698bc8358153a019e8 +size 44462 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 5cd0ea0b22..dce73bf2b5 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:de336859078455943d159d4d5d7fe710ecbce95baff983c4b74fab67ba6c16df -size 109581 +oid sha256:a399a5f72fd163ad19d6959fbc9f66248301f7b600394ae41712426f9a370921 +size 50313 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 1f682b74ff..a1eb4e5627 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:19de55a1492cdbb55219720334ac6f5432518462e5a19c4783a32828d7fac899 -size 110605 +oid sha256:330bd1fac2bc5e29713804f6059f9fa8fb0bb0913fe892b0ca5296f6af9cd2a4 +size 48355 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 afb6b33005..7b9b11004a 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:32c5e9a456ea8a2718e50eea5a90f719eff659ed9ada2ab2a9f8da23b2344644 -size 123199 +oid sha256:bfc6154b6ababf2057b430b8e5e91ac36db56d2e7c25542e4673d37d956e8be9 +size 49603 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png new file mode 100644 index 0000000000..e915cbfd56 --- /dev/null +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d73caacbe926aafac405dbe24cc3adbe64adcbb14d6a189a1e565e4001e2043 +size 34791 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png new file mode 100644 index 0000000000..64c6fecfcb --- /dev/null +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f91934bed9fcd2fbee19ad1905ae4e6ebd4d54fb6228f19635ff9d0272f6c93 +size 31595 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png new file mode 100644 index 0000000000..039a18afba --- /dev/null +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32c249acf87d53f5f388a841c2bf56cee3a5d6feae59d98bcbe18e65b1db32ed +size 41299 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png new file mode 100644 index 0000000000..5be5f70731 --- /dev/null +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:174fe7d3e527a760dfec6ee4ea08808c701bc03a41b024994e9475232d0d5aa6 +size 52860 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 147fc99887..d4ef1b6d4d 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:7d233e3dedc7fd2e0876243e250c24e2cf5e3bfa7ade8f3615c641e781c04ad0 -size 113116 +oid sha256:b60a08065ce81f4ec5e4767311299e5130822fbb2657d52ed5d78cb12850bfb0 +size 42551 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 4c40910f49..bddece6596 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:da133e7680d61beb4367513f324ee9800bfaa6df338a3fec46ee6b69ef370566 -size 99473 +oid sha256:bde6c76f079cb2d234e626dd06ce12810567290f0a63edc5da006b7d47ecd59f +size 44360 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 2fbecb35de..2e41e77fe3 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:203615332f2a04e244e1642e5216cf1fbe587451b4e6ef0928a02a8dbdfc83d4 -size 111758 +oid sha256:d6d386b185708760a4ce00aaeef6fc129a54599d7ea8773a57e21b584b48192a +size 32600 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 a0cee32c3d..7ede2d9d1d 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:45d925186a619b7fbe19211ddfc8c052a3571b53ea6fbc914d819473aed9328f -size 112045 +oid sha256:dced13f8f9c27554dd1a7307bd45533c5d46671549e40f6b2d7a648880d501c2 +size 47897 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 623dada791..9ae277ec44 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:2cbf98f8a0c6208379c64f62c2c49a858d67a60469f0001e496c248736a2e82f -size 120862 +oid sha256:a7215d224c586efad218d642d76792b258e784c1a8430bc9ad9e2d058e9f23c4 +size 33308 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 73ad652a38..34dde50b7d 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:e79835f689801de55e6c0b0db98b642d58e235d205f23e76c8eca383cbcfa1f4 -size 97392 +oid sha256:5d5e76a8e1c2532b8841f3d7f439674053095d7b8fe2b96292b7a5093191dd2f +size 27503 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 afba2b6c29..f618849d4e 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:fb15d62e0dd87f76ce8c9f8e2909c4f4a5711cfcae89a81cef2bab0468db5054 -size 101310 +oid sha256:84b9ea337a2cd46f34da8ff08e838c38b46bd306f0cb11722290a4065a3e6d01 +size 36941 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 a3aaef1824..e3c6c5bff3 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:5a975e41d142e75969ca6e4148c5a87acc57c3fc78c1a1bac65207b09ce3fe38 -size 113797 +oid sha256:787f2a7755a4675f3ca3e897553fdf83bc11dcb0357d0bd2615dfc8e52c47cb3 +size 34939 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png new file mode 100644 index 0000000000..5c8f515821 --- /dev/null +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16f7dbc7fba02c10ae6479078eaf4cbe6fc4cde5fbb6b5da1e0343e0dde29774 +size 35629 diff --git a/screenshots/de/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_de.png b/screenshots/de/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_de.png index 98699796a9..50087485c8 100644 --- a/screenshots/de/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09c8f4cc22e3dab09d99370628243573c19f8b2a12f27dd7ea2b85e5b1187730 -size 25938 +oid sha256:cb7c032b25761eab114463409a119ee61c4697b4ae69ef1c34b323f73fab083c +size 31136 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 3c79f99289..1c9f1d8b9e 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:758189b90b2fa9114cc46ba6acc91434b8d7b351b24ee0e9dcd2ecee029fbc1b -size 65914 +oid sha256:673e4e2da20f1803287d17923610d6bfad9bb610a4bb1841fd5a5a256264aa1d +size 70870 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 1155be2a8e..db4ec335f3 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:3511403903945359efbd0ac6e8ca83d0f88577674283b0f11ef8aa1ccc0c28d9 -size 15348 +oid sha256:dd32b279b0b83416e2bee71fd58bfff35e957b478641481852e2c2e93f60dda8 +size 18454 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 f99d9c7d6d..76f714c982 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:d529b4fd0e5b5ba965bfcd6ebaebc3a00e85d06d56ece90e00c9a64bcef4d966 -size 60422 +oid sha256:f81a39d96eb3d1932f00efd8ada780609edc75db69288960829dd4be4551f100 +size 60411 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 98a0ae335f..f1a58048a0 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:d47da269f00ff61627923ac38c863decf3b764e95c2d96c460673bff36d79879 -size 21824 +oid sha256:9f47404776f784b39bde50217ce260943fecfe0ca8f57756391785b1b7f227f8 +size 21823 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 c70824b12d..348564e8b3 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:641167924c8b1ce1485a4c2d8f5c62d80c00b26920e7fd8878728b1c5d776766 -size 48691 +oid sha256:eca84ceab1901c61ae1200b8dcb7eb1230daa0cb3f47cd65d85a538f8e515500 +size 48685 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 c70824b12d..348564e8b3 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:641167924c8b1ce1485a4c2d8f5c62d80c00b26920e7fd8878728b1c5d776766 -size 48691 +oid sha256:eca84ceab1901c61ae1200b8dcb7eb1230daa0cb3f47cd65d85a538f8e515500 +size 48685 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 7167008af8..9bcdda534e 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:4a43926c96a5cfefe179091e79083ea3148b4f6d66c4f8356168ce8ba165d6a1 -size 75125 +oid sha256:8667989a8e4791ec4949543251bf72c1de93628ea635ad543030d3b96b6c4dd9 +size 75335 diff --git a/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png b/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png new file mode 100644 index 0000000000..e3c6c5bff3 --- /dev/null +++ b/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787f2a7755a4675f3ca3e897553fdf83bc11dcb0357d0bd2615dfc8e52c47cb3 +size 34939 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 49f1b7fc83..5a362ae534 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:bb04686d6e7c4e26edacc4cf24a4e29adfcbff0527be23e89f58b7b09aea152f -size 101743 +oid sha256:1a35596ef35cd3fac5b9deb82df89b7066949c8c272bcb484c6ca52434b61a06 +size 27031 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 28b48c9672..59148bdc37 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:7c8c2f78930685af16b95527f5781783693f0be8280808b412d8bfa581013aba -size 15649 +oid sha256:e12074298b55bc1e79d39dbf7200933653698417fc3bf9a40775989f33c0d114 +size 15458 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 22bd6ac780..13d90fca34 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:bd1a9370e7482947abe8d9ac447116683db85aa8ebc8cca99d12d5cc3246fdca -size 26222 +oid sha256:fe94e25696521e9ed30951109002523f03c27d5bc8c12e934e1e987d3df159b8 +size 26098 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 9a6ec6a07a..305047698a 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:c2c4d3664c29c0260da80d9e10784ee79f7697da67ef07b56a44385961bdddd0 -size 34061 +oid sha256:060b934a586c09671d8d9a8cf836f509cc69119b458a7ab11be295374c3de9a5 +size 33881 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 296d5e1fe3..eba88dc95e 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:9050c23765ecd53f43848512031e9b49dfc07369cb107cbf35538bbfba80ed73 -size 34359 +oid sha256:dd5c940af37b03268f32d57e43d35eec59261fa9674d89ba09d2a234d5427e7b +size 34176 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 9894e67059..e50613340c 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:492892e916387121192876e1e90e8a2a8862f65179e166910e87cf7ba67a2ef5 -size 25745 +oid sha256:bea5fe491eef49d520d53021f3ac2a4184b4b50422be6439f3822200643034ca +size 25558 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 1abe5f3155..f007819735 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:471fbb4c02418814037434bda896789e60b0fd7d0d63579b6e368eb1b57a1eb9 -size 47040 +oid sha256:0b8333deb905a5e1431597f59fe58b14591cb2fc424c80804fbb1ce340ce8bb8 +size 46941 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 c71d234d43..c7ee196df8 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:20f7a2b75af02a76ef6d3ca99e5babeca32e1a25de075385e0a7f0965d6dee80 -size 12708 +oid sha256:c263b0b8fd4c6bdf53118aa5ed06ef919ae5973ed370580cd3d6290c455f9c39 +size 12524 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 86a2ae8a04..4bdd05fb18 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:545e31ee319083c052eb97fb54cac5e4f97ac3d199289bdb544dda908fc2e941 -size 14062 +oid sha256:1fc655569ee74f678cf7355bc2cd69349d119c5bee233604f4c11815766371e8 +size 13876 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 c71d234d43..c7ee196df8 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:20f7a2b75af02a76ef6d3ca99e5babeca32e1a25de075385e0a7f0965d6dee80 -size 12708 +oid sha256:c263b0b8fd4c6bdf53118aa5ed06ef919ae5973ed370580cd3d6290c455f9c39 +size 12524 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 8055489688..9886eb1f07 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:1f36c4fc25cfc9ba31e564d5c0f5520f4f3b08eb7bf839d6ed35bc4e1e1c9898 -size 21857 +oid sha256:7f29deb95619350659f5c1932c72d06edb952c06bb894d2afec87282503ce266 +size 21647 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_de.png index 88f9bc02cc..ed7482c50a 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:821fffec529240bef83cb0230fd262fa8775d07fbf9775e5af4bced0597b7384 -size 16283 +oid sha256:5a2c8c098a7d8f23342f561de6ab7f6edacdbe4fe5eeec53428e19a2ff2dd078 +size 16089 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png index f4da3cdc35..71af31f332 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2400bc1dd8fc0b1a8fe9b31724f28cbcdc26cf7824ae3ac49f289e9192fba5eb -size 51854 +oid sha256:133864d58cc04374073951dc02d58662260bdd9c2017a09f4049fc346ce3550b +size 51721 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png index 0ceaad4567..1e4f297013 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72a5fff0aa68f63d730611c91f9a83092bb9ff93c398e04c33f434e4bc55ef59 -size 73466 +oid sha256:6e964c116b3dd244021abbeb70e0a612e1d913b306f7d5aaab759f6fb101d086 +size 73293 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png index 152d19c0d4..6a4b90c0a7 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc88eb3057bb53e39f63b66d9f209ab1a0ff1baf981c708291c10d0924f12e3d -size 66529 +oid sha256:18fe56867c3d0efc4e17b2d08c195fd66ebb4f27df0d6ce567bf5c6133ae42b2 +size 66339 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png index 9a3f586b9a..cf912dd5cd 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66e47c84c4eb0235a3f6b6e3525d0dd0b4df538f74a530042b9f07ee6632101f -size 66347 +oid sha256:d327354425d4fe637dfa63e2cc95931dc9f40a75ce88201248e069b06df29a4d +size 66150 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png index b11456191e..c285ad9b0a 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f7137edd680e494c65683501a1b763c8ed60c19a0746ebc4f62204713945247 -size 61311 +oid sha256:b8de342bd67e9dddc743f8716da6c41dffa6e8c1d3fdc64bb092a3561170f71a +size 61148 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png index 5893185333..ad6ccc4c98 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b0c5481c868eb7dc61aca6b5f0232aa1bda2db9f144b2ec3c5b9af38a8d45d1 -size 64488 +oid sha256:02d1579b6994061a9e397049cd7b446a98c9505dd13d72e159e91902928ea889 +size 64377 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png index b669e7a0db..859c7c4641 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e20fcee247e6481b0a8572e62406a6ca1860c213d21c6fa0d5dac0c96fd31516 -size 65931 +oid sha256:2c482326554e6872e8aef8cafb0fb5c568ce04749894856bae671b218066555f +size 65834 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png index b7f4ba7952..ef70ed7164 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06cfe3f276744cdc2e062713a5f0740fb4f3183e25d9c6e774d03c54b4e0834f -size 55992 +oid sha256:d51626bc080f77c4cfd8166780a4cca6cfb6f587beab7c88cebf131d8d606db6 +size 55879 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png index 2fa5bd13f9..76a4d898a5 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8246376167a0ec50efc38d493304380a6c3b74d472d44525001a75f4ca6b5ead -size 68844 +oid sha256:1b2f7973608d2a6cf008240270f42621f6d90640df828f892777ac0b477d11b2 +size 68666 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 72994deb64..8633ecc2d8 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:14d765a01eae72aac266ed43f76dc90d22b7266d7101d0ff0375e57659024b1d -size 47752 +oid sha256:f383344042f1bb7d43d0e3a833a752037027fb0001ebd6cc40ff021d3ba6e46c +size 48565 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 7b08fa1778..5055643be0 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:9175dd8bae4d6b6e3dc083df268d54614be201dc892d092920b270159eb21a6f -size 70104 +oid sha256:7cc757a69788e3eb07e4c87bc2dc1aaf71b5ceac308abf5241b3c96855293d37 +size 71472 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 c4bcab84d1..fc337bf454 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:25913f33e8fea06f17385015b5b1a88c98b34d99438baea85909c46d7b1b82a0 -size 70236 +oid sha256:784fac4a85c0d55c442662a7fdc98d98c9f7c1169bbbcab6f7bb89aea1b1209c +size 71604 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 c9daaac280..aa7bdb9646 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:23d85d68bc2dc825d6805623dbd193a5ef1b412a5cdf900441f01fcb2e318348 -size 68328 +oid sha256:f75d12955843c54ac735cb0b331f99b759355f40e590eccb3cdc773aed70a81f +size 69637 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 0cc055f73c..1420e7677f 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:502681d6b4b59763d7d5a82297431bbaf1ce3d80f355d778df24ce627dfb8a7c -size 69739 +oid sha256:312e50890a21e2a79d39fb768800cccf674628b5b3b66ca05e470063c394a735 +size 71119 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 bf80d60947..7ee9e9d9e4 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:2949e189567007b37f6c81e281a8669318db77f3d02457efb544905a010b5354 -size 47515 +oid sha256:2c00b5f7bce75d364cb46d4cfe1f63bd6a9d003fb3f68e32486bd6f60520ae4f +size 48341 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 bf80d60947..7ee9e9d9e4 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:2949e189567007b37f6c81e281a8669318db77f3d02457efb544905a010b5354 -size 47515 +oid sha256:2c00b5f7bce75d364cb46d4cfe1f63bd6a9d003fb3f68e32486bd6f60520ae4f +size 48341 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 26a397618f..613aff3c94 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:12cd5e58293045f53097220dabe12cc112b58e048baace0fe16441d882fdb3b6 -size 50175 +oid sha256:536fb85bdbc3e2660db78007728f0fc2f7830a0def406cc7214d484285c19fe2 +size 50439 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 0a0c20b3ef..084e63091e 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:1fb0f53a1226c45749c3c5a610f6b61bc2f32735cd8a8191dba789be6bc233ef -size 41812 +oid sha256:a260d5bda02a37ed6b69370d12b4520c6031bb8934f09e46443b062abd71ffbd +size 42447 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 76af4e60a9..68c28f0a01 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:87fe0c72b32ec3763e55e006ef2e8cd4fa136fe51909c1e2a014acbdf67f5acb -size 49984 +oid sha256:bbeda1904ab02151d6a80c32f0e9402327a06dfc4611d1d7d83bb44b52aed864 +size 50596 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 f0cddc93c0..626117ba58 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:20f6f802c0efde55dede378f3931ba91954a343b85e20622254edb9536eb8520 -size 72749 +oid sha256:12c6583a8adcbbe73757d872e29c39c5baab4361424e87a79fff34a9f3dee050 +size 74113 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 5d7c7fa59f..67a0be42e5 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:6c86e60565c0c48536af6eb9335c6fbf8787338f40942873c6e9761546ae69fe -size 72980 +oid sha256:5e1ee6be576030ab071bfbee60b0b6d6f1e81e525e4ba04c84ef7768621be61b +size 74344 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 a7601a169f..0bec6dfb4a 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:44c111edf5a396ca4f8e2ec330a4ad911a74c031ff338936c629271831e8c4f6 -size 70624 +oid sha256:81949b7dc7f89b0a3941a853a1ce19e1d184a21d4d1c449b7f052277afed2c16 +size 72031 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 4d3fed3a26..39f27fa76b 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:7771b32497709c40670f60d5fd8f7d8690ced4970944780f9ac300fd616aff2e -size 72328 +oid sha256:6118f7f47e086bfe78ef529f0f5ed3ca71172c4b43787b04046b6afa1f4e54fa +size 73692 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 783d558a72..2a51f8cb63 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:3a5fac2cbe4257347412c281d4bee85ecce39045630a20516290dc120a75eb96 -size 49835 +oid sha256:b76f848c6cd6cd9a5b06a32c56d36d5c988ee26b75540c5794172bac8bc1a3fd +size 50568 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 783d558a72..2a51f8cb63 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:3a5fac2cbe4257347412c281d4bee85ecce39045630a20516290dc120a75eb96 -size 49835 +oid sha256:b76f848c6cd6cd9a5b06a32c56d36d5c988ee26b75540c5794172bac8bc1a3fd +size 50568 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 cfca1deb8f..45780e9eb1 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:33974316edc62a80fa1279aebaf875449b721826c0696f0f280c7f966195dfa5 -size 52473 +oid sha256:025c1831c0817136766324c982006a8a8c075845fdf27557155d06edb24f9bf0 +size 52759 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 3382031c79..a0b9e5d656 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:308c12cb5c1db09b7cb0ae42504b9f5df790f03e142ff023480451adeaa2f102 -size 43148 +oid sha256:db1a8f64d38169318cc4cfeaa743693d4aa5749275fbde0e531ba5ddc2752521 +size 43844 diff --git a/screenshots/de/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_de.png b/screenshots/de/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_de.png deleted file mode 100644 index 62e6527c72..0000000000 --- a/screenshots/de/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_de.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:51194d958dc599d2dfb518df716b1a1cd5839a79630ca656ab4ff0dc81fadf98 -size 46332 diff --git a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_5_de.png b/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_5_de.png deleted file mode 100644 index 6c09a6c362..0000000000 --- a/screenshots/de/features.roomlist.impl.components_RoomListContentView_Day_5_de.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:029dd3d61183058f618b890d244fd6092db09e10dd06c7e4764d03b3abf6a860 -size 83409 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png new file mode 100644 index 0000000000..2f6c5ca841 --- /dev/null +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9bee04a897472cb60541b6598fff904138061be4021d01b3ee65264868dc47e +size 37343 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 d7e91ecc8c..b1a584694a 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:c02bd36e06f22e03032829e6bc3a291bf8706fda27e5cbd56138c3cd036e14ea -size 34833 +oid sha256:c9c7c1d0b44e6b64d3e8a9122bbd928996140b35c963ccf4bcfc89414e796c7d +size 34784 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 d7e91ecc8c..b1a584694a 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:c02bd36e06f22e03032829e6bc3a291bf8706fda27e5cbd56138c3cd036e14ea -size 34833 +oid sha256:c9c7c1d0b44e6b64d3e8a9122bbd928996140b35c963ccf4bcfc89414e796c7d +size 34784 diff --git a/screenshots/de/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_de.png b/screenshots/de/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_de.png index c17f45c270..134c2e067e 100644 --- a/screenshots/de/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_de.png +++ b/screenshots/de/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94a51726f68be3f7019c35db4584065a96a16f52a87d14008a0df027172575d6 -size 20694 +oid sha256:cab55f00bc1f59fae859ae25ff7de9000277a7863e61c03194b304e764109b0b +size 20277 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 new file mode 100644 index 0000000000..57e38e94ac --- /dev/null +++ b/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93dfdc0e4adfe743a67dd0bf94f651f032c31deee64ca6345a82a1b664f7b117 +size 28570 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 new file mode 100644 index 0000000000..517fe0fa4f --- /dev/null +++ b/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eab77026323f4221a228c446703b565044e143dc5688269a77966d605464343c +size 26943 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 b6d9281746..3b66447591 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:cd763383c2d6f47b24dfe3f47d278973e29b00450096ff6f949931aa09ca75f8 -size 14089 +oid sha256:6ff19ac2b9dbf379714490d1c8b6b7a84e88f2227bcbb3fd693729cf97ce397c +size 13959 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 ace652b5df..48294c4a85 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:f0bfdf376aea0bd2954f29415ae0f494a18d7182b6da2cb71a2199ff4e53a380 -size 32427 +oid sha256:5b11f9a61532b3b5b7179bbae28cd9834128ed31b5b2d6fa18a5b58b87840c6d +size 32291 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 4cce3588aa..cee48fe4c4 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:98501963992b0a158c299eaba73af2d3de09c8d73e6ef35b7042c291ce21c32e -size 30102 +oid sha256:3f506cdaf8275b1174541b7f50e19f5a2b7f6bd07136333392fbeac8449b8f38 +size 29963 diff --git a/screenshots/html/data.js b/screenshots/html/data.js index 9fa9c53236..f630c76ef2 100644 --- a/screenshots/html/data.js +++ b/screenshots/html/data.js @@ -1,60 +1,60 @@ // 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",20119,], +["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20140,], ["features.invite.impl.response_AcceptDeclineInviteView_Day_0_en","features.invite.impl.response_AcceptDeclineInviteView_Night_0_en",0,], -["features.invite.impl.response_AcceptDeclineInviteView_Day_1_en","features.invite.impl.response_AcceptDeclineInviteView_Night_1_en",20119,], -["features.invite.impl.response_AcceptDeclineInviteView_Day_2_en","features.invite.impl.response_AcceptDeclineInviteView_Night_2_en",20119,], -["features.invite.impl.response_AcceptDeclineInviteView_Day_3_en","features.invite.impl.response_AcceptDeclineInviteView_Night_3_en",20119,], -["features.invite.impl.response_AcceptDeclineInviteView_Day_4_en","features.invite.impl.response_AcceptDeclineInviteView_Night_4_en",20119,], -["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20119,], -["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20119,], -["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20119,], -["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20119,], -["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20119,], +["features.invite.impl.response_AcceptDeclineInviteView_Day_1_en","features.invite.impl.response_AcceptDeclineInviteView_Night_1_en",20140,], +["features.invite.impl.response_AcceptDeclineInviteView_Day_2_en","features.invite.impl.response_AcceptDeclineInviteView_Night_2_en",20140,], +["features.invite.impl.response_AcceptDeclineInviteView_Day_3_en","features.invite.impl.response_AcceptDeclineInviteView_Night_3_en",20140,], +["features.invite.impl.response_AcceptDeclineInviteView_Day_4_en","features.invite.impl.response_AcceptDeclineInviteView_Night_4_en",20140,], +["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20140,], +["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20140,], +["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20140,], +["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20140,], +["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20140,], ["features.login.impl.accountprovider_AccountProviderView_Day_0_en","features.login.impl.accountprovider_AccountProviderView_Night_0_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_1_en","features.login.impl.accountprovider_AccountProviderView_Night_1_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_2_en","features.login.impl.accountprovider_AccountProviderView_Night_2_en",0,], ["features.login.impl.accountprovider_AccountProviderView_Day_3_en","features.login.impl.accountprovider_AccountProviderView_Night_3_en",0,], ["features.messages.impl.actionlist_ActionListViewContent_Day_0_en","features.messages.impl.actionlist_ActionListViewContent_Night_0_en",0,], -["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20119,], +["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20140,], ["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",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20119,], -["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20119,], -["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20119,], -["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20119,], -["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20119,], -["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20119,], -["features.preferences.impl.advanced_AdvancedSettingsView_Day_0_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_0_en",20119,], -["features.preferences.impl.advanced_AdvancedSettingsView_Day_1_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_1_en",20119,], -["features.preferences.impl.advanced_AdvancedSettingsView_Day_2_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_2_en",20119,], -["features.preferences.impl.advanced_AdvancedSettingsView_Day_3_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_3_en",20119,], -["features.preferences.impl.advanced_AdvancedSettingsView_Day_4_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_4_en",20119,], -["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20119,], -["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20119,], -["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20119,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20119,], -["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20119,], +["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20140,], +["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20140,], +["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20140,], +["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20140,], +["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20140,], +["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20140,], +["features.preferences.impl.advanced_AdvancedSettingsView_Day_0_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_0_en",20140,], +["features.preferences.impl.advanced_AdvancedSettingsView_Day_1_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_1_en",20140,], +["features.preferences.impl.advanced_AdvancedSettingsView_Day_2_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_2_en",20140,], +["features.preferences.impl.advanced_AdvancedSettingsView_Day_3_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_3_en",20140,], +["features.preferences.impl.advanced_AdvancedSettingsView_Day_4_en","features.preferences.impl.advanced_AdvancedSettingsView_Night_4_en",20140,], +["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20140,], +["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20140,], +["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20140,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20140,], +["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20140,], ["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",20119,], +["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20140,], ["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",20119,], +["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20140,], ["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",20119,], +["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20140,], ["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",20119,], +["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20140,], ["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",20119,], +["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20140,], ["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,], @@ -64,18 +64,18 @@ export const screenshots = [ ["libraries.matrix.ui.components_AttachmentThumbnail_Day_6_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_6_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en",0,], ["libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en","libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en",0,], -["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20119,], -["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20119,], -["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20119,], -["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20119,], -["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20119,], -["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20119,], +["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20140,], +["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20140,], +["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20140,], +["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20140,], +["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20140,], +["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20140,], ["features.messages.impl.attachments.preview_AttachmentsView_6_en","",0,], -["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20119,], +["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20140,], ["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",20119,], +["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20140,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_0_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_0_en",0,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_1_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_1_en",0,], ["features.knockrequests.impl.banner_AvatarRowRtl_Day_2_en","features.knockrequests.impl.banner_AvatarRowRtl_Night_2_en",0,], @@ -171,19 +171,22 @@ export const screenshots = [ ["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_9_en","",0,], ["libraries.designsystem.components.button_BackButton_Buttons_en","",0,], ["libraries.designsystem.components_Badge_Day_0_en","libraries.designsystem.components_Badge_Night_0_en",0,], ["libraries.designsystem.components_BigCheckmark_Day_0_en","libraries.designsystem.components_BigCheckmark_Night_0_en",0,], ["libraries.designsystem.components_BigIcon_Day_0_en","libraries.designsystem.components_BigIcon_Night_0_en",0,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20119,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20119,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20119,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20119,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20119,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20119,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20119,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20140,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20140,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20140,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20140,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20140,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20140,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20140,], ["libraries.designsystem.components_BloomInitials_Day_0_en","libraries.designsystem.components_BloomInitials_Night_0_en",0,], ["libraries.designsystem.components_BloomInitials_Day_1_en","libraries.designsystem.components_BloomInitials_Night_1_en",0,], ["libraries.designsystem.components_BloomInitials_Day_2_en","libraries.designsystem.components_BloomInitials_Night_2_en",0,], @@ -194,128 +197,132 @@ export const screenshots = [ ["libraries.designsystem.components_BloomInitials_Day_7_en","libraries.designsystem.components_BloomInitials_Night_7_en",0,], ["libraries.designsystem.components_Bloom_Day_0_en","libraries.designsystem.components_Bloom_Night_0_en",0,], ["libraries.designsystem.theme.components_BottomSheetDragHandle_Day_0_en","libraries.designsystem.theme.components_BottomSheetDragHandle_Night_0_en",0,], -["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20119,], -["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20119,], -["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20119,], -["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20119,], -["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20119,], +["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20140,], +["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20140,], +["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20140,], +["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20140,], +["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20140,], ["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",20119,], -["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20119,], +["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20140,], +["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20140,], ["features.messages.impl.timeline.components_CallMenuItem_Day_4_en","features.messages.impl.timeline.components_CallMenuItem_Night_4_en",0,], ["features.call.impl.ui_CallScreenPipView_Day_0_en","features.call.impl.ui_CallScreenPipView_Night_0_en",0,], ["features.call.impl.ui_CallScreenPipView_Day_1_en","features.call.impl.ui_CallScreenPipView_Night_1_en",0,], ["features.call.impl.ui_CallScreenView_Day_0_en","features.call.impl.ui_CallScreenView_Night_0_en",0,], -["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20119,], -["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20119,], -["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20119,], -["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20119,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20119,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20119,], +["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20140,], +["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20140,], +["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20140,], +["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20140,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en","features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20140,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20140,], ["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",20119,], -["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20119,], +["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20140,], +["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20140,], ["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,], -["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20119,], +["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20140,], ["libraries.designsystem.theme.components_Checkboxes_Toggles_en","",0,], ["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",20119,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20119,], -["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20119,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20140,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20140,], +["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20140,], ["libraries.textcomposer_ComposerModeView_Day_1_en","libraries.textcomposer_ComposerModeView_Night_1_en",0,], ["libraries.textcomposer_ComposerModeView_Day_2_en","libraries.textcomposer_ComposerModeView_Night_2_en",0,], ["libraries.textcomposer_ComposerModeView_Day_3_en","libraries.textcomposer_ComposerModeView_Night_3_en",0,], ["libraries.textcomposer.components_ComposerOptionsButton_Day_0_en","libraries.textcomposer.components_ComposerOptionsButton_Night_0_en",0,], ["libraries.designsystem.components.avatar_CompositeAvatar_Avatars_en","",0,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20119,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20119,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20119,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20119,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20119,], -["features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20119,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20140,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20140,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20140,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20140,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20140,], +["features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20140,], ["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",20119,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20119,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20119,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20119,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20119,], -["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20119,], -["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20119,], -["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20119,], -["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20119,], -["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20119,], -["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20119,], -["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20119,], -["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20119,], -["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20119,], -["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20119,], -["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20119,], -["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20119,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20119,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20119,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20119,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20119,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20119,], +["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20140,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20140,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20140,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20140,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20140,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20140,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20140,], +["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20140,], +["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20140,], +["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20140,], +["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20140,], +["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20140,], +["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20140,], +["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20140,], +["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20140,], +["features.createroom.impl.root_CreateRoomRootView_Day_0_en","features.createroom.impl.root_CreateRoomRootView_Night_0_en",20140,], +["features.createroom.impl.root_CreateRoomRootView_Day_1_en","features.createroom.impl.root_CreateRoomRootView_Night_1_en",20140,], +["features.createroom.impl.root_CreateRoomRootView_Day_2_en","features.createroom.impl.root_CreateRoomRootView_Night_2_en",20140,], +["features.createroom.impl.root_CreateRoomRootView_Day_3_en","features.createroom.impl.root_CreateRoomRootView_Night_3_en",20140,], +["features.createroom.impl.root_CreateRoomRootView_Day_4_en","features.createroom.impl.root_CreateRoomRootView_Night_4_en",20140,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20140,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20140,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20140,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20140,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20140,], ["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","",20119,], -["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20119,], +["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20140,], +["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20140,], ["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",20119,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20119,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20119,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20140,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20140,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20140,], ["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",20119,], -["features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20119,], -["features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en",20119,], +["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20140,], +["features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20140,], +["features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en","features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en",20140,], ["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",20119,], -["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20119,], -["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20119,], -["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20119,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20119,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20119,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20119,], +["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20140,], +["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20140,], +["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20140,], +["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20140,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20140,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20140,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20140,], ["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,], ["libraries.designsystem.theme.components_DialogWithTitleAndOkButton_Dialog_with_title_and_ok_button_Dialogs_en","",0,], ["libraries.designsystem.theme.components_DialogWithTitleIconAndOkButton_Dialog_with_title,_icon_and_ok_button_Dialogs_en","",0,], +["features.messages.impl.messagecomposer_DisabledComposerView_Day_0_en","features.messages.impl.messagecomposer_DisabledComposerView_Night_0_en",0,], ["libraries.textcomposer.components_DismissTextFormattingButton_Day_0_en","libraries.textcomposer.components_DismissTextFormattingButton_Night_0_en",0,], ["libraries.designsystem.components.avatar_DmAvatarsRtl_Avatars_en","",0,], ["libraries.designsystem.components.avatar_DmAvatars_Avatars_en","",0,], @@ -323,17 +330,17 @@ export const screenshots = [ ["libraries.designsystem.text_DpScale_1_0f__en","",0,], ["libraries.designsystem.text_DpScale_1_5f__en","",0,], ["libraries.designsystem.theme.components_DropdownMenuItem_Menus_en","",0,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20119,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20119,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20119,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20119,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20119,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20122,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20122,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20122,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20122,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20122,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20119,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20140,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20140,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20140,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20140,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20140,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20140,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20140,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20140,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20140,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20140,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20140,], ["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,], @@ -343,9 +350,9 @@ export const screenshots = [ ["libraries.designsystem.atomic.atoms_ElementLogoAtomMedium_Day_0_en","libraries.designsystem.atomic.atoms_ElementLogoAtomMedium_Night_0_en",0,], ["features.messages.impl.timeline.components.customreaction_EmojiItem_Day_0_en","features.messages.impl.timeline.components.customreaction_EmojiItem_Night_0_en",0,], ["features.messages.impl.timeline.components.customreaction_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction_EmojiPicker_Night_0_en",0,], -["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20119,], -["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20119,], -["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20119,], +["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20140,], +["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20140,], +["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20140,], ["features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en","features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en",0,], ["libraries.featureflag.ui_FeatureListView_Day_0_en","libraries.featureflag.ui_FeatureListView_Night_0_en",0,], ["libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en","libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en",0,], @@ -363,15 +370,15 @@ 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",20119,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20119,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20119,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20140,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20140,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20140,], ["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",20119,], -["features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.roomlist.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20119,], +["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20140,], +["features.roomlist.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.roomlist.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20140,], ["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,], @@ -383,8 +390,8 @@ 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.element_Icon_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,], @@ -393,8 +400,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",20119,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20119,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20140,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20140,], ["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,], @@ -402,63 +409,68 @@ 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",20119,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20140,], ["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",20119,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20140,], ["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",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20119,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20119,], +["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20140,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20140,], +["features.networkmonitor.api.ui_Indicator_Day_0_en","features.networkmonitor.api.ui_Indicator_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en","libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.organisms_InfoListOrganism_Day_0_en","libraries.designsystem.atomic.organisms_InfoListOrganism_Night_0_en",0,], -["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20119,], +["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20140,], ["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",20119,], -["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20119,], -["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",0,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20119,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20119,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20119,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20119,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20119,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20119,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20119,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20119,], +["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20140,], +["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20140,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20140,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20140,], ["libraries.designsystem.components_LabelledCheckbox_Toggles_en","",0,], ["features.leaveroom.api_LeaveRoomView_Day_0_en","features.leaveroom.api_LeaveRoomView_Night_0_en",0,], -["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20119,], -["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20119,], -["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20119,], -["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20119,], -["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20119,], -["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20119,], +["features.leaveroom.api_LeaveRoomView_Day_1_en","features.leaveroom.api_LeaveRoomView_Night_1_en",20140,], +["features.leaveroom.api_LeaveRoomView_Day_2_en","features.leaveroom.api_LeaveRoomView_Night_2_en",20140,], +["features.leaveroom.api_LeaveRoomView_Day_3_en","features.leaveroom.api_LeaveRoomView_Night_3_en",20140,], +["features.leaveroom.api_LeaveRoomView_Day_4_en","features.leaveroom.api_LeaveRoomView_Night_4_en",20140,], +["features.leaveroom.api_LeaveRoomView_Day_5_en","features.leaveroom.api_LeaveRoomView_Night_5_en",20140,], +["features.leaveroom.api_LeaveRoomView_Day_6_en","features.leaveroom.api_LeaveRoomView_Night_6_en",20140,], ["libraries.designsystem.background_LightGradientBackground_Day_0_en","libraries.designsystem.background_LightGradientBackground_Night_0_en",0,], ["libraries.designsystem.theme.components_LinearProgressIndicator_Progress_Indicators_en","",0,], ["libraries.designsystem.components.dialogs_ListDialogContent_Dialogs_en","",0,], @@ -515,29 +527,29 @@ 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",20119,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20119,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20119,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20119,], +["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20140,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20140,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20140,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20140,], ["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",20119,], -["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20119,], -["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20119,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20119,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20119,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20119,], -["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20119,], -["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20119,], -["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20119,], -["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20119,], -["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20119,], -["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20119,], -["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20119,], -["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20119,], -["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20119,], -["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20119,], +["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20140,], +["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20140,], +["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20140,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20140,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20140,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20140,], +["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20140,], +["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20140,], +["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20140,], +["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20140,], +["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20140,], +["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20140,], +["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20140,], +["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20140,], +["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20140,], +["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20140,], ["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,], -["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20119,], +["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20140,], ["libraries.textcomposer.components.markdown_MarkdownTextInput_Day_0_en","libraries.textcomposer.components.markdown_MarkdownTextInput_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en","libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en",0,], ["libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Day_0_en","libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Night_0_en",0,], @@ -549,22 +561,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",20119,], -["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20119,], +["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20140,], +["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20140,], ["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",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20119,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20119,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20140,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20140,], ["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,], @@ -572,13 +584,13 @@ 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","",20119,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20119,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20140,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20140,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20122,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20140,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_15_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_1_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20119,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20140,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,], @@ -590,7 +602,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",20119,], +["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20140,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_0_en","features.messages.impl.timeline.components_MessageEventBubble_Night_0_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_10_en","features.messages.impl.timeline.components_MessageEventBubble_Night_10_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_11_en","features.messages.impl.timeline.components_MessageEventBubble_Night_11_en",0,], @@ -607,7 +619,7 @@ export const screenshots = [ ["features.messages.impl.timeline.components_MessageEventBubble_Day_7_en","features.messages.impl.timeline.components_MessageEventBubble_Night_7_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_8_en","features.messages.impl.timeline.components_MessageEventBubble_Night_8_en",0,], ["features.messages.impl.timeline.components_MessageEventBubble_Day_9_en","features.messages.impl.timeline.components_MessageEventBubble_Night_9_en",0,], -["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20119,], +["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20140,], ["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,], @@ -615,23 +627,23 @@ export const screenshots = [ ["features.messages.impl.timeline.components_MessagesReactionButton_Day_1_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_1_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButton_Day_2_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_2_en",0,], ["features.messages.impl.timeline.components_MessagesReactionButton_Day_3_en","features.messages.impl.timeline.components_MessagesReactionButton_Night_3_en",0,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20119,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20119,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20119,], -["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20119,], -["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20119,], -["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20119,], -["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20119,], -["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20119,], -["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20119,], -["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20119,], -["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20119,], -["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20119,], -["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20119,], -["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20119,], -["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20119,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20140,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20140,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20140,], +["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20140,], +["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20140,], +["features.messages.impl_MessagesView_Day_11_en","features.messages.impl_MessagesView_Night_11_en",20140,], +["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20140,], +["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20140,], +["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20140,], +["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20140,], +["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20140,], +["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20140,], +["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20140,], +["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20140,], +["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20140,], ["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",20119,], +["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20140,], ["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,], ["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,], ["appicon.element_MonochromeIcon_en","",0,], @@ -640,28 +652,27 @@ export const screenshots = [ ["libraries.designsystem.components.list_MutipleSelectionListItemSelectedTrailingContent_Multiple_selection_List_item_-_selection_in_trailing_content_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelected_Multiple_selection_List_item_-_selection_in_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItem_Multiple_selection_List_item_-_no_selection_List_items_en","",0,], -["features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en","features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20119,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20119,], -["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20119,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20140,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20140,], +["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20140,], ["libraries.oidc.impl.webview_OidcView_Day_0_en","libraries.oidc.impl.webview_OidcView_Night_0_en",0,], ["libraries.oidc.impl.webview_OidcView_Day_1_en","libraries.oidc.impl.webview_OidcView_Night_1_en",0,], ["libraries.designsystem.atomic.pages_OnBoardingPage_Day_0_en","libraries.designsystem.atomic.pages_OnBoardingPage_Night_0_en",0,], -["features.onboarding.impl_OnBoardingView_Day_0_en","features.onboarding.impl_OnBoardingView_Night_0_en",20119,], -["features.onboarding.impl_OnBoardingView_Day_1_en","features.onboarding.impl_OnBoardingView_Night_1_en",20119,], -["features.onboarding.impl_OnBoardingView_Day_2_en","features.onboarding.impl_OnBoardingView_Night_2_en",20119,], -["features.onboarding.impl_OnBoardingView_Day_3_en","features.onboarding.impl_OnBoardingView_Night_3_en",20119,], +["features.onboarding.impl_OnBoardingView_Day_0_en","features.onboarding.impl_OnBoardingView_Night_0_en",20140,], +["features.onboarding.impl_OnBoardingView_Day_1_en","features.onboarding.impl_OnBoardingView_Night_1_en",20140,], +["features.onboarding.impl_OnBoardingView_Day_2_en","features.onboarding.impl_OnBoardingView_Night_2_en",20140,], +["features.onboarding.impl_OnBoardingView_Day_3_en","features.onboarding.impl_OnBoardingView_Night_3_en",20140,], ["libraries.designsystem.background_OnboardingBackground_Day_0_en","libraries.designsystem.background_OnboardingBackground_Night_0_en",0,], ["libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en","",0,], ["libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en","",0,], @@ -675,65 +686,65 @@ export const screenshots = [ ["libraries.designsystem.components_PageTitleWithIconFull_Day_4_en","libraries.designsystem.components_PageTitleWithIconFull_Night_4_en",0,], ["libraries.designsystem.components_PageTitleWithIconFull_Day_5_en","libraries.designsystem.components_PageTitleWithIconFull_Night_5_en",0,], ["libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en","libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en",0,], -["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20119,], -["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20119,], -["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20119,], -["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20119,], -["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20119,], -["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20119,], +["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20140,], +["features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Day_0_en","features.roomdetails.impl.rolesandpermissions.changeroles_PendingMemberRowWithLongName_Night_0_en",20140,], +["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20140,], +["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20140,], +["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20140,], +["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20140,], ["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",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20119,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20119,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20140,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20140,], ["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",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20119,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20119,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20119,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20119,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20119,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20119,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20140,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20140,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20140,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20140,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20140,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20140,], ["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",20119,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20119,], -["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20119,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20119,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20119,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20140,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20140,], +["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20140,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20140,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20140,], ["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",20119,], -["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20119,], -["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20119,], -["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20119,], -["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20119,], -["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20119,], -["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20119,], -["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20119,], -["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20119,], -["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20119,], -["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20119,], +["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20140,], +["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20140,], +["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20140,], +["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20140,], +["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20140,], +["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20140,], +["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20140,], +["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20140,], +["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20140,], +["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20140,], +["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20140,], ["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,], @@ -751,202 +762,201 @@ export const screenshots = [ ["libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en","",0,], ["libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en","",0,], -["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20119,], -["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20119,], -["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20119,], -["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20119,], +["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20140,], +["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20140,], +["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20140,], +["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20140,], ["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","",20119,], -["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20119,], -["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20119,], -["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20119,], -["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20119,], -["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20119,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20119,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20119,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20119,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20119,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20119,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20119,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20119,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20119,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20119,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20119,], +["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20140,], +["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20140,], +["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20140,], +["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20140,], +["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20140,], +["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20140,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20140,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20140,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20140,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20140,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20140,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20140,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20140,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20140,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20140,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20140,], ["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,], -["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20119,], -["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20119,], +["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20140,], +["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20140,], ["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",20119,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20119,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20119,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20119,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20119,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20119,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20119,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20140,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20140,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20140,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20140,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20140,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20140,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20140,], ["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",20119,], -["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20119,], -["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20119,], -["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20119,], -["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20119,], -["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20119,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20119,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20119,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20119,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20119,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20119,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20119,], +["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20140,], +["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20140,], +["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20140,], +["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20140,], +["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20140,], +["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20140,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20140,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20140,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20140,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20140,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20140,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20140,], ["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",20119,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20119,], -["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20119,], -["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20119,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20119,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20140,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20140,], +["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20140,], +["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20140,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20140,], ["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",0,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20119,], -["features.roomdetails.impl_RoomDetailsDark_0_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_10_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_11_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_12_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_13_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_14_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_15_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_1_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_2_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_3_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_4_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_5_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_6_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_7_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_8_en","",20119,], -["features.roomdetails.impl_RoomDetailsDark_9_en","",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20119,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20119,], -["features.roomdetails.impl_RoomDetails_0_en","",20119,], -["features.roomdetails.impl_RoomDetails_10_en","",20119,], -["features.roomdetails.impl_RoomDetails_11_en","",20119,], -["features.roomdetails.impl_RoomDetails_12_en","",20119,], -["features.roomdetails.impl_RoomDetails_13_en","",20119,], -["features.roomdetails.impl_RoomDetails_14_en","",20119,], -["features.roomdetails.impl_RoomDetails_15_en","",20119,], -["features.roomdetails.impl_RoomDetails_1_en","",20119,], -["features.roomdetails.impl_RoomDetails_2_en","",20119,], -["features.roomdetails.impl_RoomDetails_3_en","",20119,], -["features.roomdetails.impl_RoomDetails_4_en","",20119,], -["features.roomdetails.impl_RoomDetails_5_en","",20119,], -["features.roomdetails.impl_RoomDetails_6_en","",20119,], -["features.roomdetails.impl_RoomDetails_7_en","",20119,], -["features.roomdetails.impl_RoomDetails_8_en","",20119,], -["features.roomdetails.impl_RoomDetails_9_en","",20119,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20119,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20119,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20119,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20119,], -["features.roomlist.impl.components_RoomListContentView_Day_0_en","features.roomlist.impl.components_RoomListContentView_Night_0_en",20119,], -["features.roomlist.impl.components_RoomListContentView_Day_1_en","features.roomlist.impl.components_RoomListContentView_Night_1_en",20119,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20140,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20140,], +["features.roomdetails.impl_RoomDetailsDark_0_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_10_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_11_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_12_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_13_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_14_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_15_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_1_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_2_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_3_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_4_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_5_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_6_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_7_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_8_en","",20140,], +["features.roomdetails.impl_RoomDetailsDark_9_en","",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20140,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20140,], +["features.roomdetails.impl_RoomDetails_0_en","",20140,], +["features.roomdetails.impl_RoomDetails_10_en","",20140,], +["features.roomdetails.impl_RoomDetails_11_en","",20140,], +["features.roomdetails.impl_RoomDetails_12_en","",20140,], +["features.roomdetails.impl_RoomDetails_13_en","",20140,], +["features.roomdetails.impl_RoomDetails_14_en","",20140,], +["features.roomdetails.impl_RoomDetails_15_en","",20140,], +["features.roomdetails.impl_RoomDetails_1_en","",20140,], +["features.roomdetails.impl_RoomDetails_2_en","",20140,], +["features.roomdetails.impl_RoomDetails_3_en","",20140,], +["features.roomdetails.impl_RoomDetails_4_en","",20140,], +["features.roomdetails.impl_RoomDetails_5_en","",20140,], +["features.roomdetails.impl_RoomDetails_6_en","",20140,], +["features.roomdetails.impl_RoomDetails_7_en","",20140,], +["features.roomdetails.impl_RoomDetails_8_en","",20140,], +["features.roomdetails.impl_RoomDetails_9_en","",20140,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20140,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20140,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en",20140,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en",20140,], +["features.roomlist.impl.components_RoomListContentView_Day_0_en","features.roomlist.impl.components_RoomListContentView_Night_0_en",20140,], +["features.roomlist.impl.components_RoomListContentView_Day_1_en","features.roomlist.impl.components_RoomListContentView_Night_1_en",20140,], ["features.roomlist.impl.components_RoomListContentView_Day_2_en","features.roomlist.impl.components_RoomListContentView_Night_2_en",0,], -["features.roomlist.impl.components_RoomListContentView_Day_3_en","features.roomlist.impl.components_RoomListContentView_Night_3_en",20119,], -["features.roomlist.impl.components_RoomListContentView_Day_4_en","features.roomlist.impl.components_RoomListContentView_Night_4_en",20119,], -["features.roomlist.impl.components_RoomListContentView_Day_5_en","features.roomlist.impl.components_RoomListContentView_Night_5_en",20119,], -["features.roomlist.impl.filters_RoomListFiltersView_Day_0_en","features.roomlist.impl.filters_RoomListFiltersView_Night_0_en",20119,], -["features.roomlist.impl.filters_RoomListFiltersView_Day_1_en","features.roomlist.impl.filters_RoomListFiltersView_Night_1_en",20119,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en",20119,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en",20119,], -["features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en",20119,], +["features.roomlist.impl.components_RoomListContentView_Day_3_en","features.roomlist.impl.components_RoomListContentView_Night_3_en",20140,], +["features.roomlist.impl.components_RoomListContentView_Day_4_en","features.roomlist.impl.components_RoomListContentView_Night_4_en",20140,], +["features.roomlist.impl.filters_RoomListFiltersView_Day_0_en","features.roomlist.impl.filters_RoomListFiltersView_Night_0_en",20140,], +["features.roomlist.impl.filters_RoomListFiltersView_Day_1_en","features.roomlist.impl.filters_RoomListFiltersView_Night_1_en",20140,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en",20140,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en",20140,], +["features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en","features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en",20140,], ["features.roomlist.impl.search_RoomListSearchContent_Day_0_en","features.roomlist.impl.search_RoomListSearchContent_Night_0_en",0,], -["features.roomlist.impl.search_RoomListSearchContent_Day_1_en","features.roomlist.impl.search_RoomListSearchContent_Night_1_en",20119,], -["features.roomlist.impl.search_RoomListSearchContent_Day_2_en","features.roomlist.impl.search_RoomListSearchContent_Night_2_en",20119,], -["features.roomlist.impl_RoomListView_Day_0_en","features.roomlist.impl_RoomListView_Night_0_en",20119,], -["features.roomlist.impl_RoomListView_Day_10_en","features.roomlist.impl_RoomListView_Night_10_en",20119,], -["features.roomlist.impl_RoomListView_Day_1_en","features.roomlist.impl_RoomListView_Night_1_en",20119,], -["features.roomlist.impl_RoomListView_Day_2_en","features.roomlist.impl_RoomListView_Night_2_en",20119,], -["features.roomlist.impl_RoomListView_Day_3_en","features.roomlist.impl_RoomListView_Night_3_en",20119,], -["features.roomlist.impl_RoomListView_Day_4_en","features.roomlist.impl_RoomListView_Night_4_en",20119,], -["features.roomlist.impl_RoomListView_Day_5_en","features.roomlist.impl_RoomListView_Night_5_en",20119,], -["features.roomlist.impl_RoomListView_Day_6_en","features.roomlist.impl_RoomListView_Night_6_en",20119,], -["features.roomlist.impl_RoomListView_Day_7_en","features.roomlist.impl_RoomListView_Night_7_en",20119,], +["features.roomlist.impl.search_RoomListSearchContent_Day_1_en","features.roomlist.impl.search_RoomListSearchContent_Night_1_en",20140,], +["features.roomlist.impl.search_RoomListSearchContent_Day_2_en","features.roomlist.impl.search_RoomListSearchContent_Night_2_en",20140,], +["features.roomlist.impl_RoomListView_Day_0_en","features.roomlist.impl_RoomListView_Night_0_en",20140,], +["features.roomlist.impl_RoomListView_Day_10_en","features.roomlist.impl_RoomListView_Night_10_en",20140,], +["features.roomlist.impl_RoomListView_Day_1_en","features.roomlist.impl_RoomListView_Night_1_en",20140,], +["features.roomlist.impl_RoomListView_Day_2_en","features.roomlist.impl_RoomListView_Night_2_en",20140,], +["features.roomlist.impl_RoomListView_Day_3_en","features.roomlist.impl_RoomListView_Night_3_en",20140,], +["features.roomlist.impl_RoomListView_Day_4_en","features.roomlist.impl_RoomListView_Night_4_en",20140,], +["features.roomlist.impl_RoomListView_Day_5_en","features.roomlist.impl_RoomListView_Night_5_en",20140,], +["features.roomlist.impl_RoomListView_Day_6_en","features.roomlist.impl_RoomListView_Night_6_en",20140,], +["features.roomlist.impl_RoomListView_Day_7_en","features.roomlist.impl_RoomListView_Night_7_en",20140,], ["features.roomlist.impl_RoomListView_Day_8_en","features.roomlist.impl_RoomListView_Night_8_en",0,], ["features.roomlist.impl_RoomListView_Day_9_en","features.roomlist.impl_RoomListView_Night_9_en",0,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20119,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20119,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20119,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20140,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20140,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20140,], ["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",0,], -["features.roomdetails.impl.members_RoomMemberListView_Day_6_en","features.roomdetails.impl.members_RoomMemberListView_Night_6_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20119,], -["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20119,], +["features.roomdetails.impl.members_RoomMemberListView_Day_6_en","features.roomdetails.impl.members_RoomMemberListView_Night_6_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20140,], +["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20140,], ["libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en","libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en",20119,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en",20119,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en",20119,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_3_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_3_en",20119,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_4_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_4_en",20119,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_0_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_0_en",20140,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en",20140,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en",20140,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_3_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_3_en",20140,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_4_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_4_en",20140,], ["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_5_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_5_en",0,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_6_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_6_en",20119,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_7_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_7_en",20119,], -["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_8_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_8_en",20119,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_6_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_6_en",20140,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_7_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_7_en",20140,], +["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_8_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_8_en",20140,], ["features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_9_en","features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_9_en",0,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20119,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20119,], -["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20119,], -["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20119,], -["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20119,], -["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20119,], -["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20119,], -["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20119,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20140,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20140,], +["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20140,], +["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20140,], +["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20140,], +["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20140,], +["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20140,], +["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20140,], ["features.roomlist.impl.components_RoomSummaryPlaceholderRow_Day_0_en","features.roomlist.impl.components_RoomSummaryPlaceholderRow_Night_0_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_0_en","features.roomlist.impl.components_RoomSummaryRow_Night_0_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_10_en","features.roomlist.impl.components_RoomSummaryRow_Night_10_en",0,], @@ -969,12 +979,12 @@ export const screenshots = [ ["features.roomlist.impl.components_RoomSummaryRow_Day_26_en","features.roomlist.impl.components_RoomSummaryRow_Night_26_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_27_en","features.roomlist.impl.components_RoomSummaryRow_Night_27_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_28_en","features.roomlist.impl.components_RoomSummaryRow_Night_28_en",0,], -["features.roomlist.impl.components_RoomSummaryRow_Day_29_en","features.roomlist.impl.components_RoomSummaryRow_Night_29_en",20119,], -["features.roomlist.impl.components_RoomSummaryRow_Day_2_en","features.roomlist.impl.components_RoomSummaryRow_Night_2_en",20119,], -["features.roomlist.impl.components_RoomSummaryRow_Day_30_en","features.roomlist.impl.components_RoomSummaryRow_Night_30_en",20119,], -["features.roomlist.impl.components_RoomSummaryRow_Day_31_en","features.roomlist.impl.components_RoomSummaryRow_Night_31_en",20119,], -["features.roomlist.impl.components_RoomSummaryRow_Day_32_en","features.roomlist.impl.components_RoomSummaryRow_Night_32_en",20119,], -["features.roomlist.impl.components_RoomSummaryRow_Day_33_en","features.roomlist.impl.components_RoomSummaryRow_Night_33_en",20119,], +["features.roomlist.impl.components_RoomSummaryRow_Day_29_en","features.roomlist.impl.components_RoomSummaryRow_Night_29_en",20140,], +["features.roomlist.impl.components_RoomSummaryRow_Day_2_en","features.roomlist.impl.components_RoomSummaryRow_Night_2_en",20140,], +["features.roomlist.impl.components_RoomSummaryRow_Day_30_en","features.roomlist.impl.components_RoomSummaryRow_Night_30_en",20140,], +["features.roomlist.impl.components_RoomSummaryRow_Day_31_en","features.roomlist.impl.components_RoomSummaryRow_Night_31_en",20140,], +["features.roomlist.impl.components_RoomSummaryRow_Day_32_en","features.roomlist.impl.components_RoomSummaryRow_Night_32_en",20140,], +["features.roomlist.impl.components_RoomSummaryRow_Day_33_en","features.roomlist.impl.components_RoomSummaryRow_Night_33_en",20140,], ["features.roomlist.impl.components_RoomSummaryRow_Day_3_en","features.roomlist.impl.components_RoomSummaryRow_Night_3_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_4_en","features.roomlist.impl.components_RoomSummaryRow_Night_4_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_5_en","features.roomlist.impl.components_RoomSummaryRow_Night_5_en",0,], @@ -982,77 +992,77 @@ export const screenshots = [ ["features.roomlist.impl.components_RoomSummaryRow_Day_7_en","features.roomlist.impl.components_RoomSummaryRow_Night_7_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_8_en","features.roomlist.impl.components_RoomSummaryRow_Night_8_en",0,], ["features.roomlist.impl.components_RoomSummaryRow_Day_9_en","features.roomlist.impl.components_RoomSummaryRow_Night_9_en",0,], -["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20119,], -["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20119,], -["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20119,], +["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20140,], +["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20140,], +["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20140,], ["appicon.element_RoundIcon_en","",0,], ["appicon.enterprise_RoundIcon_en","",0,], ["libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en","libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en",0,], -["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20119,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20119,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20119,], +["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20140,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20140,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20140,], ["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","",20119,], +["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20140,], ["libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en","",0,], ["libraries.designsystem.theme.components_SearchBarInactive_Search_views_en","",0,], -["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20119,], -["features.createroom.impl.components_SearchSingleUserResultItem_en","",20119,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20119,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20119,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20119,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20119,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20119,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20119,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20119,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20119,], -["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20119,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20119,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20122,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20122,], +["features.createroom.impl.components_SearchMultipleUsersResultItem_en","",20140,], +["features.createroom.impl.components_SearchSingleUserResultItem_en","",20140,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20140,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20140,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20140,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20140,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20140,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20140,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20140,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20140,], +["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20140,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20140,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20140,], ["libraries.matrix.ui.components_SelectedRoom_Day_0_en","libraries.matrix.ui.components_SelectedRoom_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoom_Day_1_en","libraries.matrix.ui.components_SelectedRoom_Night_1_en",0,], ["libraries.matrix.ui.components_SelectedRoom_Day_2_en","libraries.matrix.ui.components_SelectedRoom_Night_2_en",0,], @@ -1060,11 +1070,11 @@ export const screenshots = [ ["libraries.matrix.ui.components_SelectedUser_Day_0_en","libraries.matrix.ui.components_SelectedUser_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en","libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en",0,], ["libraries.textcomposer.components_SendButton_Day_0_en","libraries.textcomposer.components_SendButton_Night_0_en",0,], -["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20119,], -["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20119,], -["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20119,], -["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20119,], -["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20119,], +["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20140,], +["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20140,], +["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20140,], +["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20140,], +["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20140,], ["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,], @@ -1074,27 +1084,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",20119,], -["features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20119,], -["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20119,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20119,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20119,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20119,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20119,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20119,], +["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20140,], +["features.roomlist.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.roomlist.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20140,], +["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20140,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20140,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20140,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20140,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20140,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20140,], ["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",20119,], -["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20119,], -["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20119,], -["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20119,], -["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20119,], -["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20119,], -["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20119,], -["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20119,], -["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20119,], -["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20119,], +["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20140,], +["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20140,], +["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20140,], +["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20140,], +["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20140,], +["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20140,], +["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20140,], +["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20140,], +["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20140,], +["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20140,], ["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,], @@ -1103,7 +1113,7 @@ export const screenshots = [ ["libraries.designsystem.components.list_SingleSelectionListItemUnselectedWithSupportingText_Single_selection_List_item_-_no_selection,_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_SingleSelectionListItem_Single_selection_List_item_-_no_selection_List_items_en","",0,], ["libraries.designsystem.theme.components_Sliders_Sliders_en","",0,], -["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20119,], +["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20140,], ["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,], @@ -1113,40 +1123,40 @@ export const screenshots = [ ["libraries.designsystem.modifiers_SquareSizeModifierLargeHeight_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeWidth_en","",0,], ["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",0,], -["features.location.api.internal_StaticMapPlaceholder_Day_1_en","features.location.api.internal_StaticMapPlaceholder_Night_1_en",20119,], +["features.location.api.internal_StaticMapPlaceholder_Day_1_en","features.location.api.internal_StaticMapPlaceholder_Night_1_en",20140,], ["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",20119,], +["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20140,], ["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",20119,], +["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20140,], ["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",20119,], -["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20119,], -["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20119,], -["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20119,], -["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20119,], -["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20119,], -["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20119,], -["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20119,], -["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20119,], -["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20119,], +["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20140,], +["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20140,], +["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20140,], +["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20140,], +["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20140,], +["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20140,], +["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20140,], +["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20140,], +["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20140,], +["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20140,], ["libraries.textcomposer_TextComposerVoice_Day_0_en","libraries.textcomposer_TextComposerVoice_Night_0_en",0,], ["libraries.designsystem.theme.components_TextDark_Text_en","",0,], ["libraries.designsystem.components.list_TextFieldListItemEmpty_Text_field_List_item_-_empty_List_items_en","",0,], @@ -1156,14 +1166,14 @@ export const screenshots = [ ["libraries.designsystem.theme.components_TextFieldsLight_TextFields_en","",0,], ["libraries.textcomposer.components_TextFormatting_Day_0_en","libraries.textcomposer.components_TextFormatting_Night_0_en",0,], ["libraries.designsystem.theme.components_TextLight_Text_en","",0,], -["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20119,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20119,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20119,], +["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20140,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20140,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20140,], ["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",20119,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20119,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20140,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20140,], ["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.event_TimelineImageWithCaptionRow_Day_0_en","features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Night_0_en",0,], @@ -1172,18 +1182,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",20119,], +["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20140,], ["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",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20119,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20140,], ["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,], @@ -1191,17 +1201,17 @@ 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",20119,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20119,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20140,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20140,], ["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_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20119,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20119,], +["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20140,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20140,], ["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",20119,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20119,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20140,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20140,], ["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,], @@ -1210,40 +1220,40 @@ export const screenshots = [ ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20119,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20140,], ["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",20119,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20140,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en",0,], ["features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20119,], +["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20140,], ["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",20119,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20119,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20140,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20140,], ["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",20119,], +["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20140,], ["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",20119,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20119,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20119,], -["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20119,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20140,], +["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20140,], ["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",20119,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20119,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20140,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20140,], ["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",20119,], +["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20140,], ["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,], @@ -1252,22 +1262,24 @@ 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",20119,], -["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20119,], +["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20140,], +["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20140,], ["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,], ["features.messages.impl.timeline.components.event_TimelineItemStickerView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemStickerView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemStickerView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemStickerView_Night_2_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemStickerView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemStickerView_Night_3_en",0,], +["features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrlAndNestedParenthesis_en","",0,], +["features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrl_en","",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_0_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_1_en",0,], ["features.messages.impl.timeline.components.event_TimelineItemTextView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemTextView_Night_2_en",0,], ["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",20119,], -["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20119,], +["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20140,], +["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20140,], ["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,], @@ -1290,84 +1302,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",20119,], -["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20119,], +["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20140,], ["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",20119,], -["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20119,], -["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20119,], -["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20119,], -["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20119,], -["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20119,], -["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20119,], -["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20119,], +["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20140,], +["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20140,], ["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",20119,], +["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20140,], ["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",20119,], +["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20140,], ["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",20119,], +["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20140,], ["features.messages.impl.timeline_TimelineView_Day_9_en","features.messages.impl.timeline_TimelineView_Night_9_en",0,], ["libraries.designsystem.theme.components_TopAppBar_App_Bars_en","",0,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20119,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20119,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20140,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20140,], ["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",20119,], -["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20119,], -["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20119,], -["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20119,], -["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20119,], -["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20119,], +["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20140,], +["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20140,], +["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20140,], +["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20140,], +["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20140,], +["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20140,], ["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","",20119,], +["libraries.matrix.ui.components_UnresolvedUserRow_en","",20140,], ["libraries.matrix.ui.components_UnsavedAvatar_Day_0_en","libraries.matrix.ui.components_UnsavedAvatar_Night_0_en",0,], ["libraries.designsystem.components.avatar_UserAvatarColors_Day_0_en","libraries.designsystem.components.avatar_UserAvatarColors_Night_0_en",0,], -["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20119,], -["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20119,], -["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20119,], -["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20119,], +["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20140,], +["features.createroom.impl.components_UserListView_Day_0_en","features.createroom.impl.components_UserListView_Night_0_en",20140,], +["features.createroom.impl.components_UserListView_Day_1_en","features.createroom.impl.components_UserListView_Night_1_en",20140,], +["features.createroom.impl.components_UserListView_Day_2_en","features.createroom.impl.components_UserListView_Night_2_en",20140,], ["features.createroom.impl.components_UserListView_Day_3_en","features.createroom.impl.components_UserListView_Night_3_en",0,], ["features.createroom.impl.components_UserListView_Day_4_en","features.createroom.impl.components_UserListView_Night_4_en",0,], ["features.createroom.impl.components_UserListView_Day_5_en","features.createroom.impl.components_UserListView_Night_5_en",0,], ["features.createroom.impl.components_UserListView_Day_6_en","features.createroom.impl.components_UserListView_Night_6_en",0,], -["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20119,], +["features.createroom.impl.components_UserListView_Day_7_en","features.createroom.impl.components_UserListView_Night_7_en",20140,], ["features.createroom.impl.components_UserListView_Day_8_en","features.createroom.impl.components_UserListView_Night_8_en",0,], -["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20119,], +["features.createroom.impl.components_UserListView_Day_9_en","features.createroom.impl.components_UserListView_Night_9_en",20140,], ["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_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20119,], -["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20119,], -["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20119,], -["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20119,], -["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20119,], -["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20119,], -["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20119,], -["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20119,], -["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_0_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_0_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_10_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_10_en",20119,], +["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20140,], +["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20140,], +["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20140,], +["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20140,], +["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20140,], +["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20140,], +["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20140,], +["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20140,], +["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20140,], +["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_0_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_0_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_10_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_10_en",20140,], ["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_11_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_11_en",0,], ["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_12_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_12_en",0,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_13_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_13_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_1_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_1_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_2_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_2_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_3_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_3_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_4_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_4_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_5_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_5_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_6_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_6_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_7_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_7_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_8_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_8_en",20119,], -["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_9_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_9_en",20119,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_13_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_13_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_1_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_1_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_2_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_2_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_3_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_3_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_4_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_4_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_5_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_5_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_6_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_6_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_7_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_7_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_8_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_8_en",20140,], +["features.verifysession.impl.outgoing_VerifySelfSessionView_Day_9_en","features.verifysession.impl.outgoing_VerifySelfSessionView_Night_9_en",20140,], ["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,], @@ -1393,6 +1406,6 @@ export const screenshots = [ ["libraries.textcomposer.components_VoiceMessageRecording_Day_0_en","libraries.textcomposer.components_VoiceMessageRecording_Night_0_en",0,], ["libraries.textcomposer.components_VoiceMessage_Day_0_en","libraries.textcomposer.components_VoiceMessage_Night_0_en",0,], ["libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en","libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en",0,], -["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20119,], +["features.ftue.impl.welcome_WelcomeView_Day_0_en","features.ftue.impl.welcome_WelcomeView_Night_0_en",20140,], ["libraries.designsystem.ruler_WithRulers_Day_0_en","libraries.designsystem.ruler_WithRulers_Night_0_en",0,], ]; diff --git a/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/AppForegroundStateService.kt b/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/AppForegroundStateService.kt index 97909a07ca..0455d01a13 100644 --- a/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/AppForegroundStateService.kt +++ b/services/appnavstate/api/src/main/kotlin/io/element/android/services/appnavstate/api/AppForegroundStateService.kt @@ -18,8 +18,28 @@ interface AppForegroundStateService { */ val isInForeground: StateFlow + /** + * Updates to whether the app is in an active call or not will be emitted here. + */ + val isInCall: StateFlow + + /** + * Updates to whether the app is syncing a notification event or not will be emitted here. + */ + val isSyncingNotificationEvent: StateFlow + /** * Start observing the foreground state. */ - fun start() + fun startObservingForeground() + + /** + * Update the in-call state. + */ + fun updateIsInCallState(isInCall: Boolean) + + /** + * Update the active state for the syncing notification event flow. + */ + fun updateIsSyncingNotificationEvent(isSyncingNotificationEvent: Boolean) } diff --git a/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppForegroundStateService.kt b/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppForegroundStateService.kt index 1f9d7d79ad..dcafcc50fb 100644 --- a/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppForegroundStateService.kt +++ b/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppForegroundStateService.kt @@ -12,19 +12,27 @@ import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.ProcessLifecycleOwner import io.element.android.services.appnavstate.api.AppForegroundStateService import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow class DefaultAppForegroundStateService : AppForegroundStateService { - private val state = MutableStateFlow(false) - override val isInForeground: StateFlow = state + override val isInForeground = MutableStateFlow(false) + override val isInCall = MutableStateFlow(false) + override val isSyncingNotificationEvent = MutableStateFlow(false) private val appLifecycle: Lifecycle by lazy { ProcessLifecycleOwner.get().lifecycle } - override fun start() { + override fun startObservingForeground() { appLifecycle.addObserver(lifecycleObserver) } - private val lifecycleObserver = LifecycleEventObserver { _, _ -> state.value = getCurrentState() } + override fun updateIsInCallState(isInCall: Boolean) { + this.isInCall.value = isInCall + } + + override fun updateIsSyncingNotificationEvent(isSyncingNotificationEvent: Boolean) { + this.isSyncingNotificationEvent.value = isSyncingNotificationEvent + } + + private val lifecycleObserver = LifecycleEventObserver { _, _ -> isInForeground.value = getCurrentState() } private fun getCurrentState(): Boolean = appLifecycle.currentState.isAtLeast(Lifecycle.State.STARTED) } 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 d6a1bd735b..f173812fed 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 @@ -48,7 +48,7 @@ class DefaultAppNavigationStateService @Inject constructor( init { coroutineScope.launch { - appForegroundStateService.start() + appForegroundStateService.startObservingForeground() appForegroundStateService.isInForeground.collect { isInForeground -> state.getAndUpdate { it.copy(isInForeground = isInForeground) } } diff --git a/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeAppForegroundStateService.kt b/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeAppForegroundStateService.kt index 627a355f0a..ad39e4b6de 100644 --- a/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeAppForegroundStateService.kt +++ b/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeAppForegroundStateService.kt @@ -9,19 +9,29 @@ package io.element.android.services.appnavstate.test import io.element.android.services.appnavstate.api.AppForegroundStateService import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow class FakeAppForegroundStateService( - initialValue: Boolean = true, + initialForegroundValue: Boolean = true, + initialIsInCallValue: Boolean = false, + initialIsSyncingNotificationEventValue: Boolean = false ) : AppForegroundStateService { - private val state = MutableStateFlow(initialValue) - override val isInForeground: StateFlow = state + override val isInForeground = MutableStateFlow(initialForegroundValue) + override val isInCall = MutableStateFlow(initialIsInCallValue) + override val isSyncingNotificationEvent = MutableStateFlow(initialIsSyncingNotificationEventValue) - override fun start() { + override fun startObservingForeground() { // No-op } fun givenIsInForeground(isInForeground: Boolean) { - state.value = isInForeground + this.isInForeground.value = isInForeground + } + + override fun updateIsInCallState(isInCall: Boolean) { + this.isInCall.value = isInCall + } + + override fun updateIsSyncingNotificationEvent(isSyncingNotificationEvent: Boolean) { + this.isSyncingNotificationEvent.value = isSyncingNotificationEvent } } diff --git a/settings.gradle.kts b/settings.gradle.kts index b1475bb636..d63017992f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,13 +18,6 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { - maven { - url = URI("https://jitpack.io") - content { - includeModule("com.github.sergio-sastre.ComposablePreviewScanner", "android") - includeModule("com.github.sergio-sastre.ComposablePreviewScanner", "core") - } - } // Snapshot versions maven { url = URI("https://s01.oss.sonatype.org/content/repositories/snapshots") diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt index 24b13feb62..9f20f0fcac 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistLicenseTest.kt @@ -7,6 +7,7 @@ package io.element.android.tests.konsist +import com.google.common.truth.Truth.assertThat import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.verify.assertTrue import org.junit.Test @@ -43,10 +44,13 @@ class KonsistLicenseTest { .scopeFromProject() .files .filter { - it.path.contains("/enterprise/features").not() && + it.moduleName.startsWith("enterprise").not() && it.nameWithExtension != "locales.kt" && it.name.startsWith("Template ").not() } + .also { + assertThat(it).isNotEmpty() + } .assertTrue { publicLicense.containsMatchIn(it.text) } @@ -58,7 +62,7 @@ class KonsistLicenseTest { .scopeFromProject() .files .filter { - it.path.contains("/enterprise/features") + it.moduleName.startsWith("enterprise") } .assertTrue { enterpriseLicense.containsMatchIn(it.text) diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureCalledOnce.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureCalledOnce.kt index a794a2851b..15d09e17a9 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureCalledOnce.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureCalledOnce.kt @@ -84,6 +84,27 @@ class EnsureCalledOnceWithTwoParams( } } +class EnsureCalledOnceWithTwoParamsAndResult( + private val expectedParam1: T, + private val expectedParam2: U, + private val result: R, +) : (T, U) -> R { + private var counter = 0 + override fun invoke(p1: T, p2: U): R { + if (p1 != expectedParam1 || p2 != expectedParam2) { + throw AssertionError("Expected to be called with $expectedParam1 and $expectedParam2, but was called with $p1 and $p2") + } + counter++ + return result + } + + fun assertSuccess() { + if (counter != 1) { + throw AssertionError("Expected to be called once, but was called $counter times") + } + } +} + /** * Shortcut for [ ensureCalledOnceWithParam] with Unit result. */ diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureNeverCalled.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureNeverCalled.kt index 28c57e62f6..689a52c792 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureNeverCalled.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/EnsureNeverCalled.kt @@ -32,3 +32,9 @@ class EnsureNeverCalledWithTwoParams : (T, U) -> Unit { lambdaError("Should not be called and is called with $p1 and $p2") } } + +class EnsureNeverCalledWithTwoParamsAndResult : (T, U) -> R { + override fun invoke(p1: T, p2: U): R { + lambdaError("Should not be called and is called with $p1 and $p2") + } +} diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt new file mode 100644 index 0000000000..673fb70bd5 --- /dev/null +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt @@ -0,0 +1,27 @@ +/* + * 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.tests.testutils + +import android.content.res.Configuration +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalContext +import androidx.test.core.app.ApplicationProvider + +@Composable +fun withConfigurationAndContext(content: @Composable () -> Any?): Any? { + var result: Any? = null + CompositionLocalProvider( + LocalConfiguration provides Configuration(), + LocalContext provides ApplicationProvider.getApplicationContext(), + ) { + result = content() + } + return result +} diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/LambdaRecorder.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/LambdaRecorder.kt index 1371384b51..0966dd1cb7 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/LambdaRecorder.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/lambda/LambdaRecorder.kt @@ -83,6 +83,13 @@ inline fun lambdaRecorder( + ensureNeverCalled: Boolean = false, + noinline block: (T1, T2, T3, T4, T5, T6, T7, T8) -> R +): LambdaEightParamsRecorder { + return LambdaEightParamsRecorder(ensureNeverCalled, block) +} + inline fun lambdaAnyRecorder( ensureNeverCalled: Boolean = false, noinline block: (List) -> R diff --git a/tests/uitests/src/test/kotlin/base/ScreenshotTest.kt b/tests/uitests/src/test/kotlin/base/ScreenshotTest.kt index 28b66b70dd..02ffa418a3 100644 --- a/tests/uitests/src/test/kotlin/base/ScreenshotTest.kt +++ b/tests/uitests/src/test/kotlin/base/ScreenshotTest.kt @@ -11,7 +11,6 @@ import android.content.res.Configuration import android.os.LocaleList import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalConfiguration @@ -55,7 +54,7 @@ object ScreenshotTest { ElementTheme { Box( modifier = Modifier - .background(MaterialTheme.colorScheme.background) + .background(ElementTheme.colors.bgCanvasDefault) ) { preview() } diff --git a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png index 3c4c448d47..d6d6a5a13c 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0078ea63dae1b2a879c2b367f096307a7f20c72b3e400284c9bb4fd948a8cbff -size 25116 +oid sha256:4a4b04cdfbed4c67792daea3b5d31cec0f763b2cdf4ecee962ce5652ef01af57 +size 24338 diff --git a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png index a8bce592f9..4c07cc2a0d 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29b448b13c0bd0afb0e7d085f5fc6d137b63dbeae75e1286cd236a8d4bea67b9 -size 23178 +oid sha256:6927236633af4aff987dcb40d16ee7ca3187a7b1841aa82147a41210c65e71e4 +size 22444 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 f5946367a6..3136e8b347 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:846bef7dc54b4d051bc0cd6ea90d66ba406a11d7dda36455dbdf3ee74aab2aae -size 8379 +oid sha256:30efa4ef62ce38f3599c1a6f2a99c9a36e5704a70c99d83670b5f2169a8648f3 +size 8378 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 ff61016e0f..6359c66fe2 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:6baed152f58ed5335d559b7e6bc78867147ddd0b8df63e1881875caf0c10f470 -size 10486 +oid sha256:e3c97dbafc4e1e74be95014f9e4f4e10f9b6516d98e89a149791d61c2e1c5ddf +size 10484 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 caf3fff19f..3e42a56106 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:a9d7f9f3ba4857862530f0f278186dfbaa347d589abca7e2baf5142b2740ede4 -size 7999 +oid sha256:a1a5ca1ae30e3b1c4c2b242b3527a3c09b09acb415ad11333ad4b1f07182cbed +size 8005 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 c0b845825a..5596ef7587 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:813cedb8cb525406a5d475a8b431bc94888f5952009e28f71f983a03198227db -size 10028 +oid sha256:eae95926adb295182d13dbbebcf1650ab1bf816a9d5edeb908cbd8683fec0c66 +size 10031 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 c9efd9275a..e8e0bbf1d8 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:4944bbdf4621ecfef659746bb7f3fa16d2a107269cbb60d057bf91c9360a1894 -size 82388 +oid sha256:255709a0c6b3ffe337e5a3ce657e350539d9278a2a1c7994ac40752a0bffecff +size 82449 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 972e86b298..d794cb4425 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:c76c6454e90e4e23ad7ea92d930eeb47c7a68f81dcc7035b358203cb47639f13 -size 75518 +oid sha256:82812d497f41b7e34d00cf2fadbde22115200539fcb25660dd9f9c9378093f0e +size 75610 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 f89ae4e977..a28414c9d5 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:686ef0bf0a5813e09f1afd7824d5aa909c914bebe553d03955a869673e8f9e16 -size 66270 +oid sha256:2f07a472c171966ad4dd9e8401a634b9c55a303e1ca4ab08cb44c32e17b1a128 +size 66278 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 29b78b707e..f1a359975f 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:c8f9f67b6bd11de3983dfdd76c3a72ceaf8d920daebb5e4e749bb74ab5d95dfa -size 58396 +oid sha256:f5a4097408c093e0919e54bdacfe29f3901fe2db7b0984b72c2003499a6dba11 +size 58400 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_0_en.png index a11e325c3a..5acd82d3ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f15537d0a4cbfb012996f5043f43dc5ea5e769b2404968ac4ea60eda8a522f85 -size 13813 +oid sha256:126046f78f6f5064583c825c581b5ee1bf5173f6f454f6fbdb0bad60a739d76d +size 13626 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_1_en.png index 3fcc111b62..0586942e3e 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c1a4c2d228441f59a2a13064fe2937778a9f3262f6fd843ad03cf09d89e5442 -size 24715 +oid sha256:986a8d145cf65cd2da4f6e670e7aed7e28f3942d9a141eddde5a040f8d035f66 +size 24569 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png index 62e19018c4..ebfe52e698 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:480dcf4628c371f8df8b6a26f73f0a5ed45e9ca89baf9f4ab52bd896ed1cc4d7 -size 77593 +oid sha256:5834fcf87293fd1c8887fceebba0b0e77be27af06843d5dea62a35e4becd2aca +size 77581 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png index b77917a3f0..e4ba410a1c 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:118369cac5ffffbda03faa41c4a3fb26e4014757e86fa9b31871e18dfb312b3e -size 42073 +oid sha256:158eab26fc54518630163066c1a2c4b2321e4f5d5ef78204779ce03c7ca8a3e5 +size 41910 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_0_en.png index 135d85a924..8fee36c1fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f3fe0798aae566b768bbe7090526afdb448a6f73966afa8d9c7ccda0e82f9b7 -size 12995 +oid sha256:c9ac77fcbaf4934ab4514622713e048f270d0775699b34e6292350e069ff798e +size 12867 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_1_en.png index de6b1b1a8a..1e532ffaf1 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f93dfabe9b0e3737c870e710dc10f619959977fb74873bdbb2d9646ef08c593 -size 24914 +oid sha256:e5805f31aef36412e39b5961e41c2b63ddc855a49de8a2ca810662887c15b2b9 +size 24816 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png index 26be59c3da..06be476ce1 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96333cfda74bc44b7f9f95eab383ab26857b07d68ed30255ccb1ef3ae1558a4c -size 78110 +oid sha256:ccae537ee569b5c4450b1e238aaaf4570818d050a228347eb6b09ea10997135c +size 78100 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png index 2f0cd1e72f..ff1b4a807a 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.addpeople_AddPeopleView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a5c2e713849c912004275c4c61256ffdf99388bff9da97b40732090295104e3 -size 42081 +oid sha256:19bf6aca68eba224fd702d6aa327a34e3319389fc4c518dd9ee735f481899576 +size 41977 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png index e916bb1705..5a710e5bff 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchMultipleUsersResultItem_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d783fa26d1b4a891a000f638a3d6b7e3df08390b9f800e3e4d123e76cfc274fd -size 82488 +oid sha256:75eff760370d8cbbd0d2795a049f06e5f9be75030ef064f3a0e6548750e0166e +size 82468 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png index 7f83990532..4dd03182f8 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_SearchSingleUserResultItem_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aabc27a2531ecd79a01de70cbb149ff4c77fb9d37f3cefd5727a083c3edf455 -size 42712 +oid sha256:82d60ec6eaddaa3a9cc4d9d23bf5fe2e6debbf0b441ecafa377e27770d26ecdb +size 42697 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_0_en.png index 09850aa0dc..852c3b3aee 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25c7ea080ca7863a986f2fe7836c47647588a1b0b6a13878eae39e44f1f20e19 -size 9279 +oid sha256:516998b2a77a13b3a131f05d4484c2482c527d6e4992a7ebfd1581c492bb5377 +size 9072 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_1_en.png index 866076f13a..40276b1eb2 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9099e2ab73d1aae490189f4682dd5c215e47085affe750890d0d84f203c403ab -size 20579 +oid sha256:203174a9d2e58f3937f3d7b75c2afcb735c2172e06f9c92c64016bcaa430c050 +size 20380 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_2_en.png index 9cbd2e472b..92d9db2f11 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adb68fcd10b66e37f774560e59991bf6488043d4e1b66e6b1f19a648c90a6333 -size 7572 +oid sha256:d175ae95fed4ac24e9b506678c4ee1e235c3c8405915498f7f97db0764e5470c +size 7571 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_3_en.png index c10cc18a37..fdb10220a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72dbe69b1952d3c2e00509bb1a5e0493baa30c0ef4e444f652f3fd7f81a8eccd +oid sha256:0db80941c8c981d3f66bc6cd9364f0f8fd5b1e7033f81da46cdffe478f97c748 size 6528 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_4_en.png index c10cc18a37..fdb10220a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72dbe69b1952d3c2e00509bb1a5e0493baa30c0ef4e444f652f3fd7f81a8eccd +oid sha256:0db80941c8c981d3f66bc6cd9364f0f8fd5b1e7033f81da46cdffe478f97c748 size 6528 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png index d52aba896f..c562f2cabd 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ae3884c6bfded545fda8dfadfc94cb4c17bf2df9556c4d33a931c3509b8a885 -size 38429 +oid sha256:f49822ac3f9a328dcbc9747e49ab3b3af74de42f81f833640232199d85d8d961 +size 38428 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png index cba838d82c..e0413b796a 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daba14ee51067d64e9098815b1d187a89b405b0f11b22f7fa888106cfb388fa9 +oid sha256:0c2187b3eb917901c6d9fac36ae44c28c7c3946a055cbf156aab3063c8981e4e size 52055 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_7_en.png index 86a85de950..3c8281a03c 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:878d81472018964e1217c36708e31469a62486e1a913da26fc5a209731c4f9a1 -size 11014 +oid sha256:57ee28833b587ec86f93c685d716f0cce94b60e0752de3fc1a1a3d7ac05cbdb6 +size 11013 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_8_en.png index c10cc18a37..fdb10220a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72dbe69b1952d3c2e00509bb1a5e0493baa30c0ef4e444f652f3fd7f81a8eccd +oid sha256:0db80941c8c981d3f66bc6cd9364f0f8fd5b1e7033f81da46cdffe478f97c748 size 6528 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png index 7dcfba5ddc..0038c4a3da 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2699ae8a9f69d336f20d2376012526a36394495027d3d277061c5d55359ba587 -size 37761 +oid sha256:d672f247a616419bac169eb8874b1dbc819e0d31ec5458c6f0e77bdc5076c5dc +size 37586 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_0_en.png index 76c02112ca..74118fd435 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e691ee4e2bf2b251d3261f0aab8b8b5c1e79a60453ea2299f71cb6f68fa963b -size 8687 +oid sha256:27c89db806974c4ce4a88ca18fdfe17c5dcad0b6b6e24e7cf24c92782f00d49a +size 8534 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_1_en.png index 83d7b3c603..7808de2c54 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:759c6edb5f0742fbbb3ed48ac2d88b40e3d5e0c24a396b2250c56392653e6b63 -size 21018 +oid sha256:19c4c14441df64f5ee30607e03d3d7c3d3495c528a07bbc29673e75feada16d7 +size 20895 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_2_en.png index f0f400e37a..0fbe95ff70 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8638e7c07500bddc9c67480685d2548f0b50772977fee7565fb92ae72eaefcb -size 7504 +oid sha256:d174f1f8e77c9cd02506b487e410a7bcbf4d571f048f739d4f10582c72e682d0 +size 7501 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_3_en.png index acb4061713..228b02c0a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:000dbaa58af2f75293be0a3fed993447275582abaa33088b3f9c533ac4e0fec6 -size 6298 +oid sha256:000c36468af4793e4956a4a2a2be1867afefa13140219e2dd8b17b1f7670b6de +size 6299 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_4_en.png index acb4061713..228b02c0a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:000dbaa58af2f75293be0a3fed993447275582abaa33088b3f9c533ac4e0fec6 -size 6298 +oid sha256:000c36468af4793e4956a4a2a2be1867afefa13140219e2dd8b17b1f7670b6de +size 6299 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png index 6e3f7c983b..5ed5ad8a29 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:375315a6a917f013079bfaa0d96bb3b90f72d485c3c4ed7b30c3f86dd9277793 -size 39184 +oid sha256:ed09d7879d10d22bc90bf0757bc649436f90428347cc8df2780c05e4c1c95fe5 +size 39183 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png index 2fa7ccc26b..dd905d53ce 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:618164f424e1b2d334051d7d55dac014d77ea00ac8f15ae0f62fdd0fa77705fe +oid sha256:8cec0dc2a2b0870c7ee43a0329f9e8b67b42e7e4f26f349543e8c5d5841830fd size 53161 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_7_en.png index 605d9d0907..39750c36e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b81f55a04ecf3d4c3f266d5e0b67413be226933816195307e830d081a2bbc286 +oid sha256:5694d2ee8d939aa3cc5107b7601ff251481fc8226981208b603507d407dcb12a size 10637 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_8_en.png index acb4061713..228b02c0a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:000dbaa58af2f75293be0a3fed993447275582abaa33088b3f9c533ac4e0fec6 -size 6298 +oid sha256:000c36468af4793e4956a4a2a2be1867afefa13140219e2dd8b17b1f7670b6de +size 6299 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png index 4811773d17..ddaf40c3db 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.components_UserListView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd6eac503164cafe15fe7d7d668fb0ab82eb81324b2bf1de3b1230e945083830 -size 37892 +oid sha256:d2882db3b3a2fa6298636f5b2970e13d61b2348fcf76deb106c93c393dd24733 +size 37776 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 249dd28649..a2876bd426 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:72855bb6717291b00777e21711c0a5c8a7049e7b09cac7684dee9ae28e5be9f8 -size 29925 +oid sha256:58a0ee838378b313643ce3ebf3ea5c12565ff3da5e4fb1edb16a795f1c1a645e +size 29964 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 1adbbfa52a..5c3b1570b9 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:2fa0cc7a8cfa1e1726d0ec75186cfd99fd67e9d5b168b0c6be669e355af2a1d6 -size 43007 +oid sha256:583665542f91d2a2d4788ff5475e063ac6168a077c75fb675fa8e4f2ae6e9aad +size 43055 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 edb45bb304..5b83f62f82 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:79c69f5ca1c04d4e6544decea4150eb5f43bdde58070d1dfe57d0a4c94022dd5 -size 58850 +oid sha256:22928ada21a391607fbcf349a5e086e98a2acd8bd6b48ed33cc118b8b0fd0747 +size 58898 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 9c82b81785..f41961cb40 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:d99e10bf3d0322ed25d883aa80376b0f1bd92d8174a6623e099272b4002fbfc4 -size 56880 +oid sha256:9333e27748a0699fdec91fcd805373b20776237d0a84c1d9b84b07d24cdc3394 +size 56956 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 3aa9167cfe..c3a2fdcdae 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:e6f28ae60d74769a903228a58ed97f5753ec6e9a054b8e94d39d6c83ecb363d5 -size 58260 +oid sha256:51ddfe120825a6c3d1bd64d4e5711e6499e8c8b99d2e341352669b1c10d21458 +size 58336 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 5382ae80f4..d95dd3dd57 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:2e987390f164dcacfafd455a3ccd3f4ae9af7d8e057d91772670d28c6f6e6310 -size 56056 +oid sha256:19aebb87ad9b9cc7808d63fe2c540428ebde6efef52e871320abd6afe4be0367 +size 56105 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 d3c00e7c2f..688c007cff 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:5b420340d9471294fce2458149f14c55df979060b248dba7cdd8bacfe71a39da -size 30808 +oid sha256:67d05d7bdd0420627263d8bce97c871bcd44904a1652d6f475e9585c61883846 +size 30875 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 234cf0b705..c30864d32b 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:05e71ef5a6fa821961c2a78885bab91eeeb783bac1fdaa495f32fd4173ecc615 -size 43621 +oid sha256:69c5790e896024624698b386b00803eb2d21627cf47024661dcf5cea81e0b6ac +size 43681 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 80d7d0808c..5ae160d954 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:cca307360497a2a298bb9968678c35afb44cdc68e2dd46a350868833bf770464 -size 59968 +oid sha256:5e06262926945b00d5625d85a662c110b1e6ce99689a89230e4c85fddf4009ba +size 60029 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 0f5a5043b9..83ef94e442 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:9426c57dc59d8341087b3800a40847e63b8e6ee3c4e65cfe1712b3f5fa884618 -size 58696 +oid sha256:153dea4f37cf4ff00f61df87a71229704daa4df69d34fc6072ddfcc13ff58606 +size 58777 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 a6393e62c0..45156ac5b3 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:6527ca9d39895038bf0fec9cb9c1426f95db9f4b9460eff699c34bb59d11aaf8 -size 60122 +oid sha256:eedf66a56831cd3eb577abf89c20062caf109abb8c202d7bc925e7d2fa8c2a58 +size 60193 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 9215e348fd..b8f81ad8bd 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:c5d4014d2701847fadd4e163c26e7ba220577c4b1e10ebd35c95b1c6aa81507b -size 57814 +oid sha256:dd57076708a9a9100b0e59df7bae44513fe811ec4091cb9a7b9c5b35d3f2874b +size 57870 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en.png new file mode 100644 index 0000000000..b46d76faa6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddac666d01929c8df834cff1e932eba12dbf377c7954cd4fdf2fa13bbb1e77be +size 16758 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en.png new file mode 100644 index 0000000000..e73def12a8 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae779c152a099185e14a4301ff47825cfd809a81e651e36cb3261fb3371f61e7 +size 17424 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png new file mode 100644 index 0000000000..4c1e8b3315 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32e129c360deb12a615861c12ee2505c6e6250cbee681d4d60e58d3b0dcb492b +size 17022 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en.png new file mode 100644 index 0000000000..bca0bfcc78 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f39dc9170e9e85d1f56b8b7f1b80fbbb7d5acaa762a585a6c52b494c8b25b285 +size 20884 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png new file mode 100644 index 0000000000..9285a3f6a5 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3169e88f2369e5f4d6cc8d5055af99e589c3a91bcd166acc246614a1206afb7b +size 20196 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png new file mode 100644 index 0000000000..62a6ca09ad --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff518448cacd57889acee5c330f251fa20ff7b9261d4538f89818acc217b1c6a +size 20186 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en.png new file mode 100644 index 0000000000..e5781c467d --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4285614e42cec849331dfac0a8d67786cc95f768815d5818a1c06fb97f14530 +size 15599 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en.png new file mode 100644 index 0000000000..6e2fccda25 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9610111f2ad914faf1f890faa1b593ccf04ec42248f04586f403a0f8bfbd5991 +size 16196 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png new file mode 100644 index 0000000000..995457b04a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afd1edb1c5bd6e04ffcfe583697d24be3a18e778da9e4f991f90f3bc2da78e33 +size 15637 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en.png new file mode 100644 index 0000000000..c59ae8781a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca43cfd340541ee672c5b79727f4033fa21a4e5351dbef55cf48999946d3a2c6 +size 19474 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png new file mode 100644 index 0000000000..1183fdc5eb --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a4b7d344da0151ed6b4153ec527d063233b7a6824264afd73c73af9d5a6586 +size 18710 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png new file mode 100644 index 0000000000..41a619f107 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f592e046b694f20261ac2b154b50f766ecf3228dd69525eceae35fde9e7055c +size 18566 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_0_en.png index 68f1966bad..9142f465a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f63a4208682c52a2d141be96c11568c9be922d68e5361bd40105aa93d5e1b0b3 -size 21599 +oid sha256:f7e9fe54b399dde0a7831ff37309c8a9d6acb5a369d54e9583892b4e2dc59c02 +size 25779 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png index 169ee5ef02..ea896a093d 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0838f9b076ed75cb55ea1119aa097401314bf175ead2c34ee84d7cefb65f38c6 -size 19851 +oid sha256:208e9d9f42a929c0bdb280c4442faf0211f43d3d350c48246b20ca3256a11690 +size 19846 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png index 64cd77c9dd..9e06a542c9 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcd340b12fb26fed072d336f68ce6fde749025b0043866be0de0ef507dab49c5 -size 26671 +oid sha256:f9988f9337ef201957b5eaac5277cb3d1243a2396c57bd3df725b692693fa482 +size 26666 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png index 02d2735fb6..dff5583e53 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e8fbff0db3fb8dc996226fcb1b515638be54f7e6fec6de303e86f954037c328 -size 48411 +oid sha256:bfde1df500000d69e1014077b973cfe7c4a5130419184d19d794bd7a975e67bb +size 53080 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_4_en.png new file mode 100644 index 0000000000..53da24ced2 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Day_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0460a8404ecb789ae10223a4d948e7f93567f041342a2398b354aca39143276c +size 41781 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_0_en.png index 8e80f790c9..4f37bb59b5 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4de7af3399a3942ec597b5389414e868b43e54b42c6bac50dbfd4672eb54eb9b -size 20532 +oid sha256:e1f3d513a10202d05a3cbba270e1a5d63bbaceb74bf968d21aef01fb92c9e425 +size 24730 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png index 055b332106..ac30088346 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b96b798e72a139710e318a2eb5203078654a1b39126bc07eb46bc0cf5d65114 -size 18783 +oid sha256:fa26d53e0373f886180c38c7398597737dd808ef98e658a5f98e0fc74f150f36 +size 18764 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png index 8ea80e7155..45af15438b 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a1ce3733e36875756923872eb2f862c9248ad25af5189771ec29ccf3f8d15cd -size 25121 +oid sha256:462c1055336d5cfe8342d87335a3ec89f57c5d1efb4e81da8b928a390acc1a59 +size 25104 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png index 3cd0ea6005..87d38f9bda 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0c79e01df12f6784e85fea66c27e2b454b34742db9c666d7c7e3f14d27229e2 -size 48207 +oid sha256:8deed7312d246c817c33b4c0034f139faa788e43dbfb5152fe613dc07320b2fd +size 52655 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_4_en.png new file mode 100644 index 0000000000..358116454e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.root_CreateRoomRootView_Night_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e08c4b737016219338da25ff1088b433c67af0ea7d74b451a99f496458a38b17 +size 40239 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Day_0_en.png index 316f03246a..6860df8654 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b80198aeffe7bfec1e5747edf031af3bb892797950a98bdbe4063841fcf69da6 -size 269244 +oid sha256:72a54bb0c6c72e992468d81df80d0d1d274bb8b94f6883df1d2891483a855c56 +size 269259 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Night_0_en.png index 6271012c12..c2a050dcd8 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.welcome_WelcomeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5188a7358c698d1a67ee483a5e9277cf1158dbeb98b94933ed71f779918cf1ab -size 345464 +oid sha256:2ea10f84e31b3591596dbfb4b3930fb108ce5d7704bdda108a8dac9b78ccbca3 +size 345504 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 9aab291de0..b0358452a9 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:f27cb5420d3537479d18e03cb7060ee14b1a3fee46fa12a3e1473b358e833d13 -size 92644 +oid sha256:11c79a9b9c4deaa671d8e8b8d9ce4ab0a681edbe53f906110bcf163e22336841 +size 10172 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 6d0ff2554e..21150eb154 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:a9d0338485aabe5296754868ce2fcd5097d914eea28298ec11c16f7161ae2341 -size 111617 +oid sha256:9163c7aaae605af5470506d99eed7ecd19374fa7e719f8b0318e55f1319702a2 +size 43406 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 deabc9b36a..1b43985f3f 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:45040e44ee78a5103ebf1a3963c24f1a201485affa3f24d8f707e4f99be6cafd -size 112406 +oid sha256:634df4b9fab9797663e11293e5894de9854e918184d227e73e47be047bcb9623 +size 50335 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 15fef4a084..210a02addf 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:a6eee1185065c82f90cf53d7b9fd62e6de72d907606099b0536b6305ea9537f2 -size 117250 +oid sha256:a971216d0cfc58f65b3589479420c02f2a04010ac27d79ea2434075dcd6b4f7c +size 51283 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 new file mode 100644 index 0000000000..19aa34ce60 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbdd42f8092b3bf8fc58ea012972a77444bff2200585fc4d9e0765453e98c251 +size 29425 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 new file mode 100644 index 0000000000..9e8e667644 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_14_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:355d17b9e2bab7feb55b7c958f54e1c5e90f2c4ac58575c2868c5e15414eedce +size 29097 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 new file mode 100644 index 0000000000..b34742fa47 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_15_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5bb0724cbb42ffe66a8c54e4301eccfac8e4f2f68621697c6859aa6a230405d +size 36376 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 new file mode 100644 index 0000000000..6b0197002f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_16_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dcb5fb864d2692e62de1161e3420a3c9e9d7a338110b5e3b7791753e7995b7a +size 45863 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 0c9e5f8beb..91315f0056 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:b6319cbc723b9f3cf0b89c4ec5dc6098a7b6a2a2c053ee5bf5afc21830b8d3f6 -size 110855 +oid sha256:2ee424d3f53556823f1bc19a1bf0d742918dff295962f4dda371459c8607fc15 +size 34990 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 5e59459e90..0e31405365 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:57fcd25c0dab243b8ce273d38d0c4f36bb3415ac4488d1c6f4189c368899ca76 -size 98786 +oid sha256:6f19a41fa98afa02f2d913c02cfd8cca6e53d6af164ab1c81d98cc75ae877bbc +size 36305 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 a87a8a56f6..33f9384163 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:420a7c957ef0909cc2bf9cd9461af98cdff20fff21dab5df9e94165034ed0dda -size 110641 +oid sha256:0e527cea5e937b1ab89fcbc0388ab5d81008ceef8e85b25af227f4c8465df268 +size 31504 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 3fcad9605e..9eb729467d 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:3463e70cd08f4d884f8bfafe7d66c5b75ac1fc05bf70cf1478a9f11def071069 -size 111151 +oid sha256:8d3b3f549530f475fd984f839c7b28a7963ad7c8903b5f308d3925a60132991b +size 39468 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 da1fd14667..51e9f08da5 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:70c33e148a040ec24287f9ca48353a76e8167015f24d8249bff405e9cc9f16ff -size 118640 +oid sha256:2604ac285ee6334a46fe348313fe2abe655860bd9b54f237fc92d0f99e38a7be +size 29162 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 aaab740c4f..a2a9f8c3aa 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:9b3e666dc4693d7c096dd5c0168770f72be41c41797a93e7c728a20b587ddaba -size 92658 +oid sha256:9a869730be3df8fdcbaa2bd251968b330a5e82733cfd6efa86e8a4971552a306 +size 26612 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 28403e285e..8ce1dac3bc 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:9af5a8c8a529eb5f8ea40e9c8028ce2c0ca4b352ef80b2778fa5122cc6bfa937 -size 96826 +oid sha256:e97676e6f90749d608c8289137c39668c122228f6660af9ed4b056f4f05d61ca +size 34946 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 8cb6932f43..fdc89929c1 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:084e303ed61e399ddbefda7e54cadb69545eb0db9493185aa48a3db7ba69fb04 -size 112515 +oid sha256:18076ab6a11a67d3a89f0cbdccab96a69f40acd3c473fad28681a5d1901799bc +size 26607 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 d28af79e36..fdc856fe15 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:916516ede645eaff617b40e6cf50acf2ba1e583827d778d22e9a012fe367fe7a -size 106146 +oid sha256:7f4cf59462d6f5ed3de8b398b6ecdb4a6c4842d7d76637a4c97079051412365b +size 33567 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 4ffef60edd..49c7233279 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:61f2ac89dfbf76937344609afe536c1c9ea6af1134ebe41cb3b3608ffe51b0d0 -size 77863 +oid sha256:bd88a9505b7c9c1a76caf35e918f362ab9a96c64f719b9811977fe3031dab557 +size 9984 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 17884e7282..b2f1860543 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:88584b1d4a4876e68e2972f9bbd03156127ee9b552de1ec20a9057d8f6cb1828 -size 101296 +oid sha256:e01e9453b8c72e9a1a55bbb4f14e88836f93d1d9b28af10557aec81eae847d74 +size 43374 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 1f4cc5b616..95227bd819 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:cafbd46dbff04191aeabb2ea403d99728972c1854116022e545b4ca6be7bc675 -size 102209 +oid sha256:90b00f22d1d2d1b22f6260c95ea3fe39851682d258df7012b89c68db2af01601 +size 50133 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 29dcd629aa..4d7d868c64 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:07458d183bae7ecfb7ee61bb6f2e0abb9a4399dd373068002fec3722f575e754 -size 102438 +oid sha256:18d2e25e32b0dc63b72a2c8c32213d2c7d9d499bf568b88addf24709e433ce34 +size 50997 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 new file mode 100644 index 0000000000..656133b3fb --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c35203dccee8ae4c1f7257d54ce84394fcc1b433a1dbd3ca66f8989eb776edf1 +size 28789 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 new file mode 100644 index 0000000000..2f01ebb7a3 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_14_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91fc0e147f5f0d7bde4d33082ae84e962784a55f3f63af9de7fb6ba0ecb8c340 +size 28860 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 new file mode 100644 index 0000000000..c83a9db1b0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_15_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66785e81ea5d103a8ea1aca54e537850d67becb84f3b4cdb463189b7b21afa68 +size 35453 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 new file mode 100644 index 0000000000..b220116942 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_16_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bed222380fcd708584b52aa098622487025598c870ac3ed68694dcf7e900038 +size 45755 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 9c14a8b24a..c9777afe5d 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:59666c1ca888ed089d7cf08fd75cc2f3e993b59c255317ad1af652aadfac8b4e -size 97026 +oid sha256:445c343404fba0ed533ffe07a138ddf74686f67e3e163626963be4e5db17fd7f +size 34479 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 a72228043e..846b7643c0 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:2e9618ede3ef8f718c54b3912fbbdadf69182417c4f7cc714a8301a84deaca2f -size 84239 +oid sha256:2e2489ed1cbbd10709456b0a910b8bbb6607732bbf40c4ea30114306875fe999 +size 36282 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 b1d43106ec..e02296766b 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:55dd6915907ebe7c0d3799a54491640582f3fc08c7d8163fb77cfd7820b95ad3 -size 96938 +oid sha256:5b7b89d817b0d1847828b214a1340fc041e85a44d43fc89dae64e6c56324ac41 +size 31806 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 9d57ee0ac2..a7e826f26c 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:b1e7887e1120c852e5a9086dba35fd8e52485d0e285c2e3724687ffa71babd45 -size 96405 +oid sha256:913a9b7a9abe56116062436d405c97105d87d07ccbb012e65b5a6365974a6d66 +size 38439 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 e0062f755b..8c700b0e52 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:c3d75eca5904d605b91becebca60199f7e60e6f2bec6b9a945ce8d130cfd7e47 -size 104802 +oid sha256:1ce6e3a17d5b092b4f292659cea45834207b4956e273b7cecc69c7a07daa8d51 +size 27255 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 c382416a8b..10fa500eda 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:e97d78225215b0b5e13f369485e7503d020baa7d157cb1c6826d18759d580c6e -size 78221 +oid sha256:7b16b479b55dcdc22e17be7d9a0996de4b7f1c0c708a013c134483369073b316 +size 26237 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 65edf4ebd3..374afdbac5 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:95f818f0426868414b0ef5cb525254ad67811ec777c31a435072fb2236914f22 -size 82448 +oid sha256:d4a30364d8f94b77b7f518107c531f0fe2e1e9e16729777e8d84958e06b198af +size 34270 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 d979aa4f0d..fe70c0a848 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:050785374d848e773941d858848e34f5d1753fcdada4dcef548a98eb5e78c31a -size 99409 +oid sha256:25e8c52cd120b0fde6c15f7a31e35f6952f9e1fd5689b741fe029a91fef2cf33 +size 24775 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 b1833d0459..cd0035f6a1 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:a9f9d59037ba084e60e6324e066736bc08c0b52319664d67eb84779df6806ce4 -size 91377 +oid sha256:7ed31ce5baa82c06abb3e414876c0a9b70c98f2223d0c432d31ad3f01bdb53ca +size 33343 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 2548547d60..fc732f0fea 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:a67bb9ba78ea1d8802ce503e7d6a16be2ff46415df0e435efd7a36f3ee711b0d -size 26453 +oid sha256:4b588d1d5a02e4ccfd2e5d44d3c38723612e5fe4a051c5c582bc81bd250850df +size 26452 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 3c0c73be86..acf052a4dd 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:fe9aa023cb136da6bcb54fb4c371c16c9526d81bbda718ffa61a6a7e758fd64a +oid sha256:e533e9b4a2e10fed24d8379b2f2d96e5a2cc460d9059989f8ad29d535684343f size 42170 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 613fccf45c..9b2f4804f0 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:be2ae50ce1b0e23fec7bcbbe9ca0f0381af4d0f29f1e7498be837d9d53b75542 -size 26003 +oid sha256:fca69fe3a6bcaae65f686e3c26e2b6935de8e33c9080b0e9f3e58ce3448c0573 +size 26004 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 45b83f26b4..50603c16d8 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:dc8f93a9c4ec2437ab05f1f1065d5518719942d8d55550b9911384442346c463 -size 41086 +oid sha256:084ae1a4a101781ef76bf1a3f68bfb1e8c80ca6ab1de773eaddedb92a12265a5 +size 41087 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 a967566289..dcb5fb0de3 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:8f4a7102b45fc1acd7c8cba59282548ae36bf8a3e65acc12c4041990f0cc61c0 -size 30165 +oid sha256:5248793987bd2f6f98e571366e6fcc87085fdba5372a4a31314a52a13efcc78a +size 30160 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 683799c494..bf50b6961e 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:7b16d4f9226d4df9efa9b57a0f6573e9fd6b0301f2e4cde2794de2863cf31ac5 -size 31373 +oid sha256:2d835fa6c041ca10d362e7c0dd77fe784e2f3b903523b9a813e1cd47a04f53df +size 31365 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 ad9bc11f60..af20cfd8a5 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:a5ccee59f5f0fbc79d252886b647003ce9b3e3b7cb8e54f5c154c37221e30c14 -size 29382 +oid sha256:7363ab9655be9350ff4f10eda2278962489b8fd983a7b3f5a91b40f281bbb37f +size 29379 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 a47858aeb1..743e065990 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:7afe56fbb521c23252ca5b375a594824d75bf80d9571f830acc14b0f9230d944 -size 30549 +oid sha256:a4290ae65632bee52d5c7ea6cb34de07e8fb585398edccb1a411d669410d8299 +size 30547 diff --git a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_1_en.png index d46b4da2f5..e366c3f1cb 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a22cacdc5b1c38a3b28e98b4345fa55d7b598fc393d8f31863d5830de9a8497 -size 255334 +oid sha256:a1dab0d4f896e496af650cab32f2b1fd8572ab698b6cbfd84166334216117149 +size 255494 diff --git a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_1_en.png index c918bcc2df..999e631747 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96456bdfe75dbfdefb7a500435901fba66a55581373f5091fb2a8556190ea029 -size 106910 +oid sha256:ace6730f6dc2fe45aa2cb095b59453cf449de62a98508587439d277ff3fd23db +size 107041 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 7ac77ce99b..db910993cf 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:522b94ccb2ff37b449c554890fd21be992d444afd5e5cc95fe11b45bf5401ca1 -size 20166 +oid sha256:e2d9c34ddfcb745a18a26dce9303c1208329f081f4ad1c67fcd394541cdfaca3 +size 20167 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 aa9cafdf6a..d8b285e71d 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:15978b36ce15235dee3fe52da0693797bb206d641043f405b94e9f96c48a49a4 -size 35752 +oid sha256:1f42226557021bcf58eb0049b43427d44067a534d00c9a4a92b4a468e0580997 +size 35756 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 43781cbc30..8d3f26311c 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:f7a39ae309c00c4b1ee4f2777f9a9032e8138414cfc6a8b8c79e18004979d0ad -size 34048 +oid sha256:40b31eaaca9bf16a5ec5564369f0aa787e3c9e946debcce73175a7a9758528ea +size 34050 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 7ac77ce99b..db910993cf 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:522b94ccb2ff37b449c554890fd21be992d444afd5e5cc95fe11b45bf5401ca1 -size 20166 +oid sha256:e2d9c34ddfcb745a18a26dce9303c1208329f081f4ad1c67fcd394541cdfaca3 +size 20167 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 2c1cf66fde..3f1ed0ff94 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:9f6f1cb0d707a79ddddf0b1c5089eeb0e35216560541b85817c902d0b172415a +oid sha256:c97c5feaf589f42a5b183eacdbde8d130cd4bae93daab467d60a1a9c4025386e size 20252 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 c75dd536e9..aa7d556646 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:c2024df21d3b248a8edd6737fcbadf707f7ffdee6ecfe89a4c9eed27aa1b41d4 +oid sha256:892239fde8809ae0e1f8b59f36c934cc43c94d197662364d890585b4f60ef1ad size 19518 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 8e59598a5e..b63dc91528 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:d3b07595b65ddeff6fadaf1468f9fc5526ba7827926e97ec54edf4f59161aa19 -size 33613 +oid sha256:d5b5e4ee6eda67992beacf2f2d497a46a372c95695939488e56ad3a2f5bc6ee0 +size 33614 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 d7b0f6bfd6..e780203e40 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:b9c8f907a1aeaf5300a6b9d3aac5abe1043ea5e2f47b876bddf3582b6b077475 -size 32218 +oid sha256:60f3d5d49b0b6152b2a68aded2bd9634d7b2c9318ca42b0d1c7edfded2c582f4 +size 32219 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 c75dd536e9..aa7d556646 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:c2024df21d3b248a8edd6737fcbadf707f7ffdee6ecfe89a4c9eed27aa1b41d4 +oid sha256:892239fde8809ae0e1f8b59f36c934cc43c94d197662364d890585b4f60ef1ad size 19518 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 9d624f724e..a4a62ba2e7 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:b6490d5ffc0c412a3fc4738b3eaf058d42621b929fd1ccbd9323923c6b2d818a -size 19753 +oid sha256:f5371c68c8f37abcc750807d24172cec499032ba01d3de60b32f5eafd81ff534 +size 19760 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 aafa465d89..d484968f39 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:2f5f9afdf10404a81be8c8c52b6010edd97d99693491d11f0fe0bcc4fe16c7ae -size 12045 +oid sha256:53da1803ba3f47dc835a82a52487ca2e7cec285c4651837430720a3c00274655 +size 12129 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 bc9adb2c36..7c2023b830 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:950f93d7323a7b07fc522bce7cb85f4977434792669a35dbdd0d23f4d21f1534 -size 30416 +oid sha256:88ba6efbc5a752de4c2468e8a957b24bd79ec8594e35bacc5f27a7645a432421 +size 30503 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 006b22ff20..374728ca6a 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:aefb84fb5115bd11701034d3975ae889c347a9bad047cad8b613337be366f74d -size 28782 +oid sha256:41820d7e434e0a5af29dcfc3fcfe118a9d504c5ba1dca32026bd04b5fcda6ffe +size 28863 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 aafa465d89..d484968f39 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:2f5f9afdf10404a81be8c8c52b6010edd97d99693491d11f0fe0bcc4fe16c7ae -size 12045 +oid sha256:53da1803ba3f47dc835a82a52487ca2e7cec285c4651837430720a3c00274655 +size 12129 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 465b12d2eb..65bf4223a3 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:68b91dd3884b78567f2d07a0c95eed16dfba6ed995fb1b32af0d2249f16a1eb7 -size 12243 +oid sha256:7ba3ec0aa2268d2512a95fa9008baa5ca567a29d05376bf91262ff08c0686539 +size 12296 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 a6271b10b9..1deb0e5928 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:3e22f506097d964b21a66508219644f8f4b989ec7bf8ae22aa4f5c44ec337818 -size 15815 +oid sha256:ff515e0da1a57182966e9d46f3a6532c0c84a3f9b50ec31b0489b78ec77ca853 +size 15894 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 0096c63e18..2af1ea1586 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:2867b178672ad79489cbc97977aeffc5ff1575bbf41f42d5b9183abd871df737 -size 24412 +oid sha256:1146c7ceb204d2e45652cb17918196bd29ad75f62d97a58533a2eda076eb999f +size 24489 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 40f21a974a..e9ec889f76 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:937198fe6c7e90e5b55c449eca3d020358c02bc658ae9541702ea4b41e589448 -size 26772 +oid sha256:c5ba5f2f842d786ec30b98651d4adcc8fc5ed24a3754352490a095a78d40dd1e +size 26846 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 69c6ba35d8..8112eb063d 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:e7468007bd3ae791b1d440040ee4479cc9af4377275c115f8f8d78b74eaf62d4 -size 11524 +oid sha256:3d0368a621d6da4d6989f269cefdc5305f474c5275b20cd2b6df6ad6322c9d23 +size 11589 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 0dd28ad2cd..abe7c4fa4c 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:9d7551e2a174aa2d9cd8713c2dd04fec4866a119692e7baca3cea5722873af6d -size 28518 +oid sha256:f320685885792f6f677a97618655565df41b6f574760dc9029af099311ef23b1 +size 28594 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 2f0992bb1c..53f34af2b4 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:10d381a2457cebe7dc77b6d63b1d01f96f5554511fbc76d84034128563d5b7cd -size 27130 +oid sha256:d0ffa8f0d5cd2185ec4ad2a52992ebceb4e5d066f79228a94e530da17cf20ea8 +size 27206 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 69c6ba35d8..8112eb063d 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:e7468007bd3ae791b1d440040ee4479cc9af4377275c115f8f8d78b74eaf62d4 -size 11524 +oid sha256:3d0368a621d6da4d6989f269cefdc5305f474c5275b20cd2b6df6ad6322c9d23 +size 11589 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 33b3884a54..b11d08401e 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:1c3e3e4eba5dc82e22908640e400c57c0a2d01b8adb007ee2aaee4fec175ee1f -size 11706 +oid sha256:8b79aae2fb29e493a66c7c62631d846fff152aa83b41bf8c83cf45f9e74b4af3 +size 11760 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 173c800553..7e344d0218 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:ae22df52afd433d81c2e146cef6b455630de4e1d76eb2b30628ec9b8f87a2522 -size 15011 +oid sha256:7b65884ce154dd3d08589d4a035c710c42610f7b7c3f6d9b830e05e72d166d7c +size 15073 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 fe303acdf1..dc6ce7bf77 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:6663d8bafc3176cfe83d486821ec91ab3204043ee468e689e159ff0af9e9fa5d -size 23411 +oid sha256:bdcf502d7406cc8b92f8600e046691e0b76134f3193dbb16d7e3af06e3ed2e19 +size 23477 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 257576e140..9879343643 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:e763e8bc81c459b36caeb1b8a74ba262109e3c0ee1bbcf8436d944a1737c8601 -size 25920 +oid sha256:a7f86a135e2778eb533f42a228e993203c67106ab62800df03c9e2f0a01eb078 +size 25991 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 1f9643d227..9000d2b4ed 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:68f71efc622decbb6e97f9e2f72e5a0be0a8ef555d26fe608d0400773ccaf3cf -size 29666 +oid sha256:cbf674d0dc11fdbabdce010624c1bc2ec8c61df4f886aa2cb69472d57c410c8b +size 29553 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 117da20335..138ea3df7b 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:d920c3ed177616383d64dc1518d5bdc8784a95967f06d7381234d73c0d54d77a -size 29282 +oid sha256:ad606f70fbe7492f8e5850857acebcddb744effcff020a59b95ea6bae6b930ba +size 29181 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 409412027d..a06cffdc7c 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:1665314b2c4865355fc3ff926d07e5fa4cd963cc4ef0adb95776d60031ebaa14 -size 29158 +oid sha256:37294aaf51ffe1989c5c3b6bbdde6511d3fae68099ec1601d85dba9b33465f02 +size 29053 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 8c157977da..b42341f236 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:4d7d944d8404f9f8dde94309d387e4c6d96dd85d3363fe576626b6c771c4e5af -size 25304 +oid sha256:12935728e54933b0fb2c8bb07430f711e5d097096f175c76b82700b14cb3ccf7 +size 25202 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 aa145aa406..b83636a052 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:f63978bd65a91be9a3c448dc10411a813e6853860460852c74877580e6bb09dc -size 30026 +oid sha256:706b8cb5ef0be1a5c7d4c8b6b78389c19a6ae778d969373efe27c4e66c790b1e +size 29925 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 1ff77934ca..72658168b8 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:fb8020cfd58453ca01acb493d95fb3395d482f590f050bb18ce625220a358c83 -size 29135 +oid sha256:485af9ee0ac675c3d2fc5b6e0b64f6f80fa0daa3a54808b92dbef2f3aa1f3ee5 +size 29029 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 21f1fcc63f..ed5b8702f2 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:59980a74f85d06b67bd743214472c079ec770f3764c552c17b83a2bcb8fa7ac3 -size 28792 +oid sha256:f75a8548e2b2385d96049021652a2c0d7f062ed88158f0d8ad35543d4345bb8f +size 28688 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 e2cab434c2..b3ddb9cd87 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:4668416249c9969e61387674f2a5e5cf4a67907707cb87a956411931fe2292cf -size 28633 +oid sha256:cddeeac1e247ea2c3a53d7a63665d3b4eaff1f6d76b871cb09ade0319034a1da +size 28512 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 b536178092..56a6b69a25 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:0d79a5b879d4f992b563f2f1cc38baf73a618f645a6987603051b93331db3029 -size 23343 +oid sha256:e44870aa5ba012e2863b2f696b43a653755d6d7a8e7b5a6181757c2ee3ea4bf9 +size 23222 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 6a944e9f18..62a5c8e451 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:56db6c793f9e4c381ba20a09ed587402c948afa1265e15ae8a7916ec60078b8e -size 27964 +oid sha256:ed50349ba3d7de68ef1a4068cb0c064d087c58ffce4efc5a56a4552647801c98 +size 27842 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 9b96187e60..df6048a0b0 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:4132ddd836c382f198a5dcfc6c33e232ff55fcad78408b30f03e94cb1977044a -size 20530 +oid sha256:5123604b77467975e45599a7bb35c5b8cbb7311cdb22eb62f910675a96ab79e1 +size 20412 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 23f5acf95b..d298a1071c 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:eb66db4ab6ad3ceecfea21041626e63420d6d761988cb06922b4d010378d22d8 -size 20129 +oid sha256:836f3390fac4cae03b65d36c278e9340b8c322cc1b947a367cbc574c06a00d2a +size 20007 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 0daf504fcb..09f2639d6a 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:3f06e45ae17e3bb230d58bb17d77bbf3d24569cae70c9d7198c04fa64c45ffee -size 21761 +oid sha256:6c265c895d130c2e0054f4e37c052d004bab05d21410df7327ae4acbd20d1c19 +size 21648 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 a3192672d0..cce4311535 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:d44c556a135def1f159c98e8a8b3584213a07d36a47199dc6be9f6f4d0a1c5cb -size 33890 +oid sha256:51a1bb5d86fb72fd3ce72a2dbfb78667b261f2529d8fa9ae470fd7af4fa018fa +size 33779 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 9a1b6c989c..e99d44237d 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:a37cf55bb68e4f354a9ec9c1b9aa70fd6bdc5300120928f65b1e698b165d8949 -size 18111 +oid sha256:35e5daef23743321724044d7b3245c97c0d4f76f888bcdf4ec75beeca1ef9a7f +size 17990 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 8a39b4bbca..abf69d9191 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:03a59450ac7c0bf5ac9b732a7708bf91a9edec0ffa2c2d93bd1783277a816f67 -size 31271 +oid sha256:3e14c15a6bf12aa86589b234716781ab4d4be7ff7f0ddd73d9b820a44993a918 +size 31153 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 96b3163175..492d1a3fd9 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:9b6bfb112e2ecc8e1c552b1525347bccfbb762efb02e57a37e4fdf08310f541a -size 22170 +oid sha256:dbbd954d62ae018def93901dfc727631d80b9640b4238d20ff7fc892996a6c51 +size 22058 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 253066f199..0c7f97710d 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:c218d7d90923ab55b641a1d8f4a63a55e36b3c6fe11bcc353baa2036b03f3f6c -size 23284 +oid sha256:66cfc5eab07a4ddd86bcb205c81ae29a5c39b08b99e51edbf2f615e630081402 +size 23176 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 620594372e..fe3b8210da 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:2a05b1194954c357a486f85d093504c56e9ab47bedd233f977bfb01e315f184e -size 20174 +oid sha256:213e47db7a62eed761521d97aeb06ead72f4c455018814d3e20b8f6d34e2ca66 +size 20053 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 94f0b13aeb..44d9e83ce7 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:1cfddab6c314d679ec1af2c24a1585774273ce74b427858054014b4f65c85501 -size 19857 +oid sha256:d37fbea44ae5b73b5dc5247668906fabec147ef5c3576131a76bf1455ceddcb5 +size 19740 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 8658847acc..7f66fe7a1a 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:fe6540c62d496f99d147f5e35e0f435d072e9f30fd8717561d28da4feb97d846 -size 21280 +oid sha256:d376716f2748e32b7a01aa0e543de6e3dbff021daa3132c55d377e74a9595dc5 +size 21167 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 fb91898079..f665c95cac 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:3f720c7a8a6af9164893590ec1eff48033b24acfeecb32630b7bad629bb8abaa -size 31504 +oid sha256:25bf87088b34a4dcaecc9411adc8f1d8603a91918ef51d6c5ca8bfb5b066623c +size 31382 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 7100b9be84..734cf6ee4e 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:86536abf20dfeb05a7d025fc2ab6a67c1a40fae8d10ce3917343c9a6c7af3670 -size 17856 +oid sha256:84b0bfb6760849cf258706433836246b187245ed6948b331617883a7526e7ae5 +size 17739 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 c70a356bdc..3e61ab8b1c 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:a922b3290e7254b5d13d42c05079064eeec6b18137f17302c127ea86f1fe6861 -size 29167 +oid sha256:d2f22da18c137496f819e2f927c4bc132bdb92a717e843e5482a5e360038ef38 +size 29059 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 c8a152e190..993eb9102d 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:1d4133cd4230d392c41bd7a6463c85b478859ac92e8ad20464c5d1a9b8ddbd69 -size 20756 +oid sha256:08f4ef4a66021c266d2bc10d9c83e9856264729962bcd13943195e780c195686 +size 20640 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 f06cd05b59..4da62f2d29 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:244dfe6d42bc44ee36ba4d354c3157b9bd84248e193a78250078399a5730b361 -size 21162 +oid sha256:47b6d86b5435bf9b14185ff6781db2eb0e010671a0b94d587a188d10fede3717 +size 21042 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 f937c15276..877aa525c6 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:c093352f7b29704afa50fd52741e12390d3e1d73ac65fc2c9e3581262ba409fb -size 36236 +oid sha256:819fb8665b558fd5ce7da1304a105701153725b73d831e61a1542354e6d1f9cc +size 36108 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 d96e86ee38..49105c975a 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:62ff72098bf6cf4e3a48e1d79d986c2239edd17cfbe81e6a378b0383fcb09eeb -size 36641 +oid sha256:434120a02d5dfd32e93d6e6705a595ad9b2bc8a46243b96e9ac7aeef876382aa +size 36515 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 24631cdd16..4a89b9fa82 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:cba4d246b9b5fe25e28c8e5761e400fe2b55cab7d63e7ed7b7180a7bbb948109 -size 37422 +oid sha256:98aba20c980c9a8663a77f53478b13e76cc4eb0c3ad0dba8588ef2f22a6fec64 +size 37299 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 85120433f5..5f8403dfa0 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:fce2f4f2a24faf87037442368209053c0dd12c2baa47474e56fd083e6513f27d -size 40809 +oid sha256:849cc5595d75d4683b99df5577ec006a20e56e9612e8a54a59f8e4052706b9c1 +size 40700 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 2c9edfff65..3a55fcafca 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:033b5688dc7f52fc371d06efb556af1a771dd7c517a6c8d3cf45be81c2e2a81b -size 33909 +oid sha256:04a30051f1e8d3c00817cc118691313d4328a41d2902f77b3b0589f8592a54d6 +size 33781 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 15ed126ace..321f10ce64 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:9273976f5646d761f5841114492fcb8db82104505a5da6b88fe8b6e6c475f0b5 -size 38207 +oid sha256:b1676d8f973c2cb9c5ea733da6745bba95a098b3a4c1f319b67e7a62319ee8e8 +size 38087 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 bb0fbac04c..1d0e1a4873 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:eafe36f938290e0249c3385db3ffac3a8855c9253183a5c799e1378e0fe78442 -size 30291 +oid sha256:599902a48cc3dd35dab65bd0cc6dd0fe936a7faa6d70abb5dac966645db0e786 +size 30180 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 587a2de410..00b5b79b18 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:651bc225128bf611c46b03b32fcb606cdcc3a5eb84fd1ba329806342930d4a12 -size 30469 +oid sha256:321c485e440a4f96ba3e6633201a42e2fa11ebbf63393aefac5b04300dec84bf +size 30360 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 6fa043b408..26fe1147b7 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:eb496814ffeadda18deb9d2484218970be7cfef3cd1af733a536912bb2452b41 -size 35061 +oid sha256:c87a47d282d99d445b3d4915a9d12aa76f8f71df291a06e69f82137446ea35b2 +size 34949 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 d720de42ee..0158d38e63 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:589f2eddcdfa6e44e59e2dfb84d2fb151066c412f91c2be2ea55431f3ab79ef3 -size 35443 +oid sha256:106c37dd124a0c47a14bca7ce4727b0a69775d650996265b6da6c3ea7a47fbdb +size 35336 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 823b11b5da..23df7e68d2 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:a873f196f0af07ab4f3f8573b46b33c36317e003810bb13c5d89f5864c18c8ea -size 36107 +oid sha256:971438a5e41f48ed79c49d2e550561b91994374361b6ea44191b4d6f7ed6da04 +size 36001 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 b4ccfda817..65e36ca793 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:066e0c158a8b2dbbf055d53b32aab0800a7e650b813c6dbf5d4a71a7d6b2be7b -size 37725 +oid sha256:479f91cb4e0ce4296ca78893778645158133fb6ff6bb2cc4ddc96e5bdc1c0551 +size 37619 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 2bbe7bced4..dd57107832 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:c935fd954a2ee2260b2f536b3be867fe344caac4b3e231962dba2aba33fb003e -size 32832 +oid sha256:8ec4693fb4a28e2609ffa9422fb94c171dcd3d032d89cf0dee27823396bca17d +size 32723 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 f25019f5a5..8f560f4342 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:95f50bfbc143f22cd33cf6477c1186f52bfe9fbb6bd497178efcad67ab11e637 -size 35301 +oid sha256:e0ae6263c675dbae60fa122e3140f9bee334c89459c46581ff4e8b5f9a92497a +size 35199 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 2a9231be66..1f64d63b3d 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:09cf2fb5e3f1392aa79fe93d7ac72f62512ee41b2f6669ee7d9140f445560070 -size 27702 +oid sha256:22e1901bdc8443e00f0438a2e0c0aea32ab443924e3827ded9a1ac8bc1d4aac5 +size 27598 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 e1f971aaa2..91247aff19 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:2bdf406b413ea0aceb0e459796e4e28f8f250650b4e9192b0105ebca2661923d -size 27594 +oid sha256:0dd0004b68899c6ed014badf0d1c5603a564e4d79bd84c34608a622799a2c147 +size 27478 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 75f9984454..8ca98d0073 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:f58d92030e4c799b64c93b5c93772c6901cfd0551c2f4bfe009cb5a17ba7190a -size 47394 +oid sha256:3579338105d8e01fdf3f84aabb68e63e9bafd2b7ddabd3995a3be11f3b3672dc +size 47408 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 a9750251d0..b56ea868dc 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:f943e3209743896efce11ca3b429e51c6c94f8937b8db75b1c0d94990a42d944 -size 46508 +oid sha256:292e2308c0bee2f6cde0db70a25014be2ebe68fa2818bf6bbfbb2a4db4ab522f +size 46542 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 1ae7f02292..b233883a8a 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:c7e096cb891c043f72d3745e461f639a8518340b00d4feaab48b4ff87127de3a -size 35344 +oid sha256:304f728ef7c65c66a2d59d28b8e7e84fc62d1087ea033169a8a0b8a9cdde1e94 +size 35560 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 5ee6ccb186..0b5c513fcd 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:cbef81d76295a27716ed6d93779ea9c7bcf0d4523080b22de1853877a718662d -size 37556 +oid sha256:75c63231868e06a65e71b7a37e7a39b4f07b8b5250aa9f5364ccef0be38633ad +size 37823 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 20cdd0f732..bc09c3553b 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:41c923124d9246e7e39a4be068f679e68ab244d6cd094a2015b7167cc46e8e3b -size 39021 +oid sha256:4d5a9efaa811f4af21795f59123f4a5d10c461b9a1ad9c1304c174d8745e63c2 +size 39199 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 b3f25525ac..67d39d6d14 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:e1474e83086bb97b16a593c4e184d55fde289f15240ab1929d6959405b12b3ac -size 34541 +oid sha256:077c904bf23a2372b3e8aba3c7a439efd3df0885bb85fa22d5f24fa74698babd +size 34728 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 c83e63194a..5395ece928 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:67557332f2879b70d45057f40f0433c457c3d118c5f3d91d93ac3d7fc283c343 -size 36399 +oid sha256:6fd45ceb6bc868c8849cf72d1833861552cdf64e80084b64971d0f8324e86604 +size 36582 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 ee3108580c..f34f292b1a 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:3f71dbe257ad51dcc2aa57c699977f9a0082fc45ea8bed6e2356a1035a9dc0c6 -size 36507 +oid sha256:a254756821c5b265a8e1d8688ec8a14f4431173a191ce212634abb57d7c13570 +size 36665 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 cab77008b0..1de4512b08 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:3467e62faad4ad345ce5a7406896f2b4f0f2f36e6f1b66e358cba644e527b934 -size 35240 +oid sha256:7d635b3896aa6d4af2d593ddd48a17433fcb3aae84af1beb47fd51aa44c6bdba +size 35504 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 3194ee4720..dd18b26434 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:2b37e9ba0da4ab5964faa1ae8e3a6deb8fecc1e0d07e003dd8193b75c15b9bb8 -size 36641 +oid sha256:41d808ae1d6ba34546e7e853abde3bb6437d0159bae57cfd9b05c30686643ffe +size 36878 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 0fce5b1140..9232f3efa8 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:5a939e0560716022da2805a39cc38a0bc0de0410cf8794b4bde849771aa94418 -size 27396 +oid sha256:8a1f0000389a72bee08923d441a8f49e6c032706caeb0589751feb1387a2b0d0 +size 27586 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 1411b8d263..db6b29c5b9 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:7e320397d5b6c10de012de93ecfb7cc491653773abea113001a05e0680466964 -size 34147 +oid sha256:522422e51e79e11c80bacc1d1037855f94b42fc54d8000538b81ead7921110fb +size 34358 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 51ab847fa2..03e5461c14 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:7df6365bed2db73bf965550868d0eaa45b54c97e42675054198e3c2d3ef611b9 -size 35270 +oid sha256:27bb7d7bec5fe3b7856cd4ed1455c25971f72f0c4c24dd576b409fec6b187242 +size 35492 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 096b69d722..6dda271b96 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:33704c8f01eaea139534bbcf13f074b37bab5f128f7d319998027d23180c3c9b -size 25381 +oid sha256:ea1d0747c5a7b4ddb1c61b001962a4a613af6bcc9658cc1303df9c752946c87d +size 25578 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 2fb4d86674..4e3b4827e5 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:a139f621872543b69854d5397d8b5c51f44fea6b4909e578ba1c7af8343175ce -size 31995 +oid sha256:c7e2aacd54c311724ab4482bbb61ebaf6114fd6a7d9b18f58c4850c6a7ff841a +size 32029 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 6ee1109e82..aa8ff94402 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:3d724e2fadbdb0a740861ec0ea34f0a6c7f1c3269e79c23d38108adaef5b1c10 -size 31876 +oid sha256:0fe0babaf16d4d2e52b8fa6c5d898a8ff003d210887a0db4d1738a1c2b48b613 +size 31901 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 e0e02f51ea..fe94d672a0 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:ec27983616e9ce41f675f9b19751beb7fa99273b4fff2848c2ade021b2589468 -size 33728 +oid sha256:0d98322268b8557830a443610e121c475a51741f1ef2c226f7ab5fdcd5c5ee45 +size 33755 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 48d745149a..a8babe6585 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:52f729159fe5298ea15d6400dfc13724e673c1cc8c588fcd52642bbb27ad87c1 -size 31312 +oid sha256:fe161156e9d74c030d5f4b4ac6a91710c11010a16412991cb2633dc93b726591 +size 31338 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 2d6850d583..419bc991ba 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:257f325a12c3e19a925930efb0903bd389a66b0afe91312b42028d9d165016db -size 31209 +oid sha256:742252374f295089f0d88572d51e48d08d50711ff5b84549e0b75d69154517ba +size 31235 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 5b66276db4..73049fb03b 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:6b6a1e121a09f5aa614d7971193a26377883c2867a5ad37e999b2ace14a4cd0d -size 33082 +oid sha256:78a9202f7a4d80ceca59ac17abd6917b0dec3fcad8a86ebe6073ad411d3e93fa +size 33105 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 57654729cd..b8bb0e59b8 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:c102a6c2165e33817a6dc9ff502da147fb9bb871bc96f6f13c4d2cd5082214a8 -size 20754 +oid sha256:f1e5d6dc63254ccec69fc48fd0c9a8615c46559cd68ad3bdd9668e327ab81fa3 +size 20775 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 ff81616052..2466d1e1d8 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:a93d12102fe17b46cfc8cfd242793f3ea720cb8baf678463df9c9bcb36ef7c09 -size 18414 +oid sha256:28f2292da30de2b80d1b9a1794ce0eb3a95b6805b65385f37cc3f0507d36982d +size 18430 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 54e93fb090..7558f6c353 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:8d93bc23317adcce615835732b243ef036ffc71b6856f9f8182850f848508083 -size 21727 +oid sha256:56944f3343736052dbd6bd186f9b87a636fc80e8bd50d76d7e99ea9240ee8b21 +size 21743 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 c4c92a4fc6..30df18319a 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:0ec0328e6bc295866e3dc948f3a5a7255885212fd216c37aa33308a98f94c67a -size 33008 +oid sha256:9f7091f771462311ff4f4ad6445fddd03c31de877a2eee4d0865067d776c9fd1 +size 33029 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 676eca6e4f..fbc6b52595 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:13565f986f38ecd5ea944933fac44184ab57ea7d085c736dce2ceb0e5ebea484 -size 66894 +oid sha256:37db3f1216f73e069a7ea4e51b389a713e71b07717cd4b6cf86155015d421bba +size 66908 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 ec0899bed1..0ddd87c634 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:e6cf7f3fbe51b4497fa38309e5efc033362a53bace1cde16429132df384407fd -size 21211 +oid sha256:ed91e958b33d44714d32c135a4554850825844024c2fb623527c9b9bd58d2356 +size 21234 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 03c272b2f0..9ff965c7a8 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:1f538e3ee79fd900d59bfa7d89c9c6ea7a2141a04120735ae55022f84d9ae636 -size 20876 +oid sha256:3390715442c12efce16df6f91fcf36fc46a0262dd4ef6aac49d6493c17493adc +size 20886 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 70f5db5290..2d4d6af26f 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:5db9b8e6fdb2ad5ab4e41ec9361ad39d3e583f4cdbb9b4aded0dd6867e73ebe9 -size 20487 +oid sha256:f0bb1d57bbc586eee2e35cb9441cbd53a5bb8ad6f72aff5e9918838e410ff9cb +size 20482 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 0055a29751..8ecb2900f0 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:89fb5b65f23282a6dd7da2b68265ccd4d2aa9e30b0b7eae6f7504de2f04b017f -size 18229 +oid sha256:666a5fcb07381fc719cfa6a375e4300cc111e53e1c1968b39fe1efbd11f316c8 +size 18225 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 0e13a00cf0..e1bfb826c7 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:45feaa59085a67542d79e1d5705442ecb7a5ab32e30c39045b24ef043bb35589 -size 21446 +oid sha256:ee79a8a207370ff710bfc7a8a6eb704b2940b5d736929cc17b43b4f737f0d05f +size 21440 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 54ec5c9065..b14ae7e0aa 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:3c06f1c27a766c69de87d04ec38223a36ddbdb56654cc46e3f900f8ad6f899cf -size 32384 +oid sha256:1f8b0edad15fabdd9594570b14ff7943b2e2f498fd138c3abb70cb66fd517cc4 +size 32386 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 d4a46becfd..fd084544dc 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:2e52cbbe106c18fc9d33f75ceed31276ab4827e31c420f42b6b3c90f85d8572d -size 65481 +oid sha256:d4e7563132db636fe51d60bada7553d51330867477c7436eee77048ba6a0a47d +size 65480 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 4c86051690..f405db0600 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:af78253550eb58fccb94384360cba55518d0599d4c8c4908f5bd7a53dce914b1 -size 20972 +oid sha256:23c9b41da39eeb6f42719aa54d35f3765c0e844f035ef4b872723ba481a16c61 +size 20969 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 73888b9bb4..2c8d7acb27 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:519f7cb9ee14d6269f1899810a359b527e7a7be6538759eda1cbe82712685580 -size 20601 +oid sha256:d63535229e5fd6f96fe215477825c380bdb7dabaf2458e7e46de4697631f0b7d +size 20595 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 82ce0ef3c6..6dddbd97b0 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:b1b50c558703a1fb83dfd8b4dcc8484fc3aaf019e4ab466f0e515db401f0797d -size 49999 +oid sha256:4e9e20979d0585a13cbe652907a0e1bdb9eb9a6a69b70af51acdf5950b690549 +size 50024 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 a99a39ec08..99ca127a29 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:269e494c1c817d27645aedf555a9004d296c4a86629f294e8e4ff11c2352c5b4 -size 49036 +oid sha256:d98e232766a7161d0f28bc9c41a59d558a2bc7dfec2d7251597da96f87f6d941 +size 49088 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 2f53a21181..d64e0edcca 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:d664509d4d3b3f3124952fd477d1cf990ede82a47bba9ddd0d44644b2a67e4a9 -size 48628 +oid sha256:0f0968c1206960c522fadeb32365fed057f8027d21dde78d62939084643a7e0a +size 48655 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 4ad7d9cf3e..a160d164c8 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:8fe6a4c7c7b5ce9a8298ea6ddec14fa891dfadc374c4443fd3e75bffd2bea98b -size 46542 +oid sha256:fb9e7821af0560357806cd0b379c28e8ea7214494edc0f85efa13a719f023772 +size 46588 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 edcb1f9964..77f7df9ebf 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:900f489028d4af30bffc3fbfe49c377d27bef887b2a376973b9252bf9132da0a -size 14734 +oid sha256:3d98408bf12d027294336036bc931a71e8445ea64fbe24382e28f5c9ab571e2f +size 14771 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 d6082e377c..cd1f9e9d8b 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:27200062b6eac1570c9868989fa4906a7c604d0e62a391d0f7299496f13fa7c9 -size 19832 +oid sha256:fe810ba7c5afd8c6453c0798dfd57dbdb32ef3db486a2346b391616c67384ab7 +size 19865 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 db055e7657..1c308c53d7 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:5952fcc2001ac647fef21bac6b5994648235fd3e721aa810520e5436d298acc7 -size 26351 +oid sha256:d46119857cf8c5ae5f08306e70ff1da7bbf2439f1823cd0d4dae7543ebf117c3 +size 26383 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 a3d5b97bed..15ac598a95 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:b291dc84c70f765eca548262fa352633eab6a43e79ebbd31233b01661adffba5 -size 32512 +oid sha256:e6ff5f8f48d4976f3765816f81b540d7100599cf536613c47e39e00ab5c87cbb +size 32549 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 37f60b9b57..7c5bc9bc71 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:df999d7acb6dac9e991a2e45a896d8c006034b0205cd01cf97a496f3be192790 -size 14024 +oid sha256:d133a357d0de55f21240136477f7e1f878195b77e60aa555f8ffb1c39799a5a3 +size 14055 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 8ff27f9321..987a058c54 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:3ee864b015608e7c54bd206c76d0410033259d0034db9875ec7bd126a1a7a11e -size 18941 +oid sha256:e9c1deea2ce90a44dac812217fa8f49f290bae023146b883dac9ae3040a4242f +size 18969 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 ae81d4fb05..b0a00983e7 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:5b2a4e2925fb9042a9a25edc6f1ba439fd82bd8dac004c1bfb6d4cec7408a785 -size 25216 +oid sha256:daf8aeeb87942d65602cb24d4c58a4165a43cacc7c5c98f8032e28551bb71845 +size 25245 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 ae3eaa710a..6b25807c82 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:51d18d0bcea22da66c5766b1a9ef0b32f72d9ed9c4202e27c7604dc29daa9b2a -size 31178 +oid sha256:35e7dd1dd561f3e2a32b55732d81054036703957a93186a24664423bb7343454 +size 31212 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 5646cfc974..94e2f83e63 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:168ccd4dd8afa84f6e08bd18b29a14a90474d3d05d14a13047ad766186ffafc6 -size 77524 +oid sha256:12c5cb63cd1ec9b826bd11f61bf35cb7416b2b95fccba9a398f583e1da2ae296 +size 77522 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 e4aca60ed6..c66abca93b 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:2fc2fd1c67088e29a3d8e2dc633b411cd8256d821243d5d2f96bcf6b8e5ab6cc -size 75979 +oid sha256:12ea05aeeb9850cd94152494a8eb7e5378ed0bdde76f8966ac691386f90c3b23 +size 75981 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 284b837df6..c10d3965a4 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:b45a5903d4b2ca61940f697076973478739054b74495a6461efddfc9439db067 -size 61736 +oid sha256:33d7730a78fc487511a0af9b0669caf93f4887c654a63766ee6260b512a42a8c +size 61733 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 d9780d03bf..a95e0ac93a 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:e26369765383ad4e9d22dc0c0a2945fc28ebfcdc5f8f387dcebcc3db859de544 -size 55677 +oid sha256:7466d9a726f8de274dc9a50f7bf02fce4a4883765f603cb8882506e655e65f6b +size 55678 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 c0ac4b509f..4b34de7a93 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:125ffdfb5eb8352b8daee1bc17feee0e638d1abc7157804ad547ae936a8a2b53 -size 52971 +oid sha256:4f4312c4b50990a911089f81a8a543bf15139a9b335171889098a4c5922bf728 +size 52968 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 2195039d1f..c0968fc633 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:288f1451dddbb41d0a45b99f8d06f89fcdc87b6f29696af18a6873062675fede -size 75681 +oid sha256:b39a36caf124faaad066971353b2628c9cae517409df6cae5fde36313a14ea33 +size 75689 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 aa553071e2..5f125abf9f 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:1cc6acf5ef063b3bf4d101afe0c65435e2c4a68990ab3e860f57ad0bc18b32ec -size 74073 +oid sha256:2e370ec6ae660e2fe85f39b9da1bb475870feaeaca52cb6827b9a79c02b1b29f +size 74074 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 bf21751e38..b998adbc0d 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:8433b35df49a3fddb810b9397be22bd8815c52d5c136102ca612ff13f439a6cb -size 58228 +oid sha256:405ae68592358e099b1639f9f19ebb4e7734b94588e33ee8c208abdd069b7ad9 +size 58229 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 3e2f5cc07f..523ca96371 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:f32a16cdf84a60cc3d74fb86201355dbcae8ec3dbb4b95c1999e0106752299f9 -size 52817 +oid sha256:b4c8007154f0128fc930aa654278286dae1a075916f67f90d70f3dcc753da2d6 +size 52814 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 287e53ea40..865df34679 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:8440f8da2ceb292fa73716bb23cc234bca2cc524543f96392c39fadaec3a0a17 +oid sha256:97e7b6b0eec29cd8f2805c52543892388403d7bf35125a54e7e683a791e5bdfc size 49675 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 b99d70c810..31bc91b979 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:e241e62bcd807e5b2c423179429dd1ebb9c495355acc81e95ccbb70dd3ab9edf -size 10920 +oid sha256:294a6660a39ca98bbf18600edadc6862bbd4cf9667ca251680a76611c9252fa9 +size 10935 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 4bb4feb912..cdb89e0c5a 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:70b295d68841ea3c484b348473a50eb2b2421dcec556a45325ea1b0a3d077e4e -size 37042 +oid sha256:c8e9bf680eaa007f0b118ce64af8d6fca9e4cd15d33a819e76ef7496ad4818c1 +size 37051 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 3b5eee9cef..4df9d9aca9 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:4251ddc86df66472e9d8a9d0c45e87d68c7684fd2e194cf1c4547dc6d97421d0 -size 27456 +oid sha256:330ffbd4d825fdbd65015aaddda3258630187959032e1b981652ef6df3af3d40 +size 27461 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 4bb4feb912..cdb89e0c5a 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:70b295d68841ea3c484b348473a50eb2b2421dcec556a45325ea1b0a3d077e4e -size 37042 +oid sha256:c8e9bf680eaa007f0b118ce64af8d6fca9e4cd15d33a819e76ef7496ad4818c1 +size 37051 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 538df41e03..126bacdcd0 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:bce941d887e500daa6fba231d1bfb0bb62a45ece7ce42bf14f38b7ff9994a947 -size 24153 +oid sha256:8c6d88498d6f33e5709a8f62730cd7da7d888a2797f30901761e3d6341024834 +size 24143 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 81f60aca41..397da8770e 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:d9c41cf85be13606688bd25e9b522ba47f5c014dfcbf567d2df25c24098ceca9 -size 17184 +oid sha256:02aeceaea7ac55691e89d3709252ebbc5d2caf174d4414c0925b84fadaab9848 +size 17169 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 3fdf7c4ed3..b6212b8b5f 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:fac37eca733ed42a7bff9016a878e11e81c9e55caa2b4e855f9b6f25d0aeae4d -size 22976 +oid sha256:3d604c1621979cf7eeebda1e2b21ecd54b643e9b24fc2616bba54f0e0a16a122 +size 22961 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 266e3482f7..40d0a6cb2c 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:0acd38e69927671b3b4d1c63de34b9764c29ac99220d7c2519244a3108f8de1b -size 35253 +oid sha256:8e704e725980f6a78ea3917af69347ebac52f910c69d29d8afa73a98a4772ee9 +size 35261 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 4901179a11..7c8a48e599 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:b5c00e506855d08de4a803e06fe52dd706e5780accb7e0f3702d7466224e033f -size 33397 +oid sha256:1691d69c3391a86994f883bdc248353e42b41e5548670b0da3698bdfea4eca49 +size 33402 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 9320cf5607..126216ced4 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:762f4b470d14bc375b9536e1435dd9db486e2084f1570bd8cb70a10ce58c7f8a -size 34325 +oid sha256:706bb49312971a3c11d3e47d23c40eb4e3e5678f28e427d6bf247164b414329d +size 34331 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 46384c6b7a..078980f169 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:524d066be2eaebc46250236a68a9cf1ac5e48d40615b69497e61196e394de006 -size 10523 +oid sha256:872e8998206156f35024b1586eac2cdaf20d2fd250227e56d99597191cec5842 +size 10525 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 b33240758d..84eb5b54f6 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:f7242f50a654ae61d66d60d7ef78b0a6308988b4f1c88266ed53877d61afa887 -size 35765 +oid sha256:b05c0229e206d9c18743a1e65107212a4ed383871e4ed68fa254cc86734c3fd3 +size 35766 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 2d6b8c32d9..00205ae669 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:0245baf0dfd48495ab500f1897f405f1827cdc18eb3dc02b1516282f5e94c212 +oid sha256:1fac219396f825debaace2abd3ca00cae6fc7452b4b8f5c5c7e43568a2ded41d size 26494 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 b33240758d..84eb5b54f6 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:f7242f50a654ae61d66d60d7ef78b0a6308988b4f1c88266ed53877d61afa887 -size 35765 +oid sha256:b05c0229e206d9c18743a1e65107212a4ed383871e4ed68fa254cc86734c3fd3 +size 35766 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 6112b7ba4c..b531a2e699 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:841e09aeaad6def513d6fe8f5cc674d81577de30e99667688b625c733e03a93f -size 22043 +oid sha256:b6fc3d53bf76326ebd58df19cfda4c2ed173860d076d3b5a364197ef08175335 +size 22055 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 b25f7270f9..38ccd52273 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:87e527c6091f41f249888fc9b78ed819685ea7f0bebad2287b773e5794a455bb -size 15736 +oid sha256:a15794901869978fd4656e7453875c4cf36857d16aa9346e24a18c499c334a5d +size 15750 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 b8908f1261..bea2337f62 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:aec0f8ca310f3e84cdbceedd3311153a961fac56ab4f852d7086bb9e6c93739a -size 20874 +oid sha256:fe9c6c2e306278e2794787673697e03cd713866019eaf482b8bef04db9e3bf17 +size 20890 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 ed8d136eef..fd225e854f 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:968f51a647d87ec67c75be0a3dc76cfe4bedcef65f0ce0a9077683405bb65162 -size 33955 +oid sha256:0d849146477f01e96d231b3725e8425cb3e50488058e2cf649adaf62fdc3505b +size 33952 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 070eb44dfc..894499baf5 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:75f0edd45ff6208829fb93452518a7eac4d371bf5cfb3c1a01a405f0de535407 -size 32421 +oid sha256:2349f44fd068968d9127e98fbd3e5d2ddceaf4e3038663be0c46af2ab400f70f +size 32429 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 218e8394aa..2a9837fab2 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:340ec2076e4924b111df622bce11aba94434a3ed07b3437bd28649d513634624 -size 33353 +oid sha256:6d6b8e23b0f97f0ccbf7e53f6b7633635bdefb9ae65874b5809cc8301481e7a6 +size 33357 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 3bf8f0bd3d..3f1178a3ce 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:4bcf877df431dfe4cf3c7f19d58c413356cdf77ae26f9dfbc9f9136fea3f5c02 -size 29361 +oid sha256:aa296da3903113375080f73c78eb9546d06d204160ad20b0d633f6d01ac389f5 +size 29368 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 da9d93301b..30979e2d14 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:88d5893c849bfb7945535f1f450e0c8b8975b5b4eb3ca336bff73aa607f2f34d -size 48171 +oid sha256:97304fcb86c07e6571ec5cc41cc1b704b3f478a0ae576e6dff4cb02ff6abe402 +size 48185 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 e0975da1a9..07d5d4bcb4 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:3f0451276061db5c189062b32414fd93c2f174c3e7597ab723c3f1a0abbfae28 -size 49821 +oid sha256:207c305fd9dbb6ff1a2c0afea06b1d997e7fee26ce8e62718bf13af9287b02d1 +size 49847 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 6b36ec5059..28fd4cda37 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:f8ec0f80c44ea01158f58e53c0aeafe6df0586e13ff452a61c8b6a9ffb070702 -size 42824 +oid sha256:e89f7d9d4ef5a020e35602791408fa8510eb075679cd6b27db7d040a7f4d5425 +size 42810 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 fe9b8d0f55..3779c6c75a 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:22aabc7669365a40151e7ecd82a3324a53d0f55a370e0dd803d843a5275b1434 -size 45949 +oid sha256:72d6edf74b360066116d00773aa8543296dda70a2d5ecfa7dab08edc4b68cf22 +size 45934 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 2f90f04914..39d642b18d 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:1a82048429ed60a4b246c37bc1b104e166c8c2402884766a9e487ca98ad45a57 -size 44391 +oid sha256:805fcd53f17e95f8f7f71362ed757df74f772974157bb43cb2d5b847672a92d9 +size 44378 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 70d0754dab..32347a1438 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:b7e8e9782859caf125c6258a612d52532cf005d1d21146e21068882b586f5d1d -size 40788 +oid sha256:e7545ee0afa20fa6930a189f63ea10a52122461847ac3b2d1d344373e1af392a +size 40806 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 8e3e0660c1..e14deab068 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:640a1d04239f041ae395b56eee251a2942764c97dc50db3a8d4c3bfc44225a1a -size 44670 +oid sha256:59152d79ac479e33ace26c422c14393b6eb1a40f5f5bb0b16f26c4d95095fc60 +size 44657 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 d1cba8905f..cf2081510e 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:150a3d6bd18e87b15575f7f452b222f07e6c3ef227032cbfe84a7728d17c491e -size 42088 +oid sha256:18c082a73aeec362d27dc34fff00f749f0b256e2313ebb3083767b84994dcf63 +size 42102 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 cf5c641ec7..12fe6f1798 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:737959115454525aa41c67d3ff47aa1829d78c7d18648b7c14b5e62ff6e44436 -size 44511 +oid sha256:9c9ef4665145527c6b12763c1085784564b2827a6242ecb7a6d61e9701c374ba +size 44505 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 9778b3513b..43271d6f4e 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:dd031f67683678815eb3f4b55f3ee65fb79096035705019770a626bfc5c00794 -size 34009 +oid sha256:37bff48c23205cd1dd6b546c8c2e5db441eb6006826f8f671bed9e3642c4ea44 +size 34011 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 c281247aeb..62b901127e 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:97fbbf4f3b9466a086a8824f9230a1ea5525314d818e19879a2c5340c9495138 -size 28642 +oid sha256:ce30046844ea37838469e740767a15c80b9c6c40ab640a8ffc49f19ede68f581 +size 28666 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 c275736aa0..fd84a78ed0 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:69f31cbb83a84e57e8a9e7bf4ff451d5a192523486c400abdc293a467ca0ffa5 -size 47200 +oid sha256:f7f569f869f34e9bb9555ebc24f71f54fed0902ed33e3d603cd87646e9ce037d +size 47207 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 17714bdf54..52fa96f315 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:410450770889b906c279084668980b41357e432345bc098560d8b06d6e35c86d -size 48841 +oid sha256:c040408ef0ac15820fc70c3ae7cf1a6d2eb228eafa0cdaab576062ad4035a2bf +size 48874 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 674ba67cce..38cd1bb4a2 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:4ce4a7fdb57fd4afae868aa733b013fd5e4daea6aaa736256ed72d9d5eb759e7 -size 41988 +oid sha256:afbb80055f588d4f51a51f7588babe420298fab8c77958f6aeeaecc2de1e9c93 +size 42000 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 faee81cc79..da7c861ea1 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:6721b3503beb8ddfa9efc52a7ab269c6aea9fcefad2c1b1b9ce31b4240d48719 -size 45204 +oid sha256:9aebbe22ced8f43f681c72f21ebe912c7ff0a2ac49b4d66662d8cfbf8ad0a79b +size 45213 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 2e828a0005..8ed1f9beb4 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:ac363ebe575582b39b3ebd7857ff891994f512064f167fee342a9a2b2a35dd1e -size 43572 +oid sha256:9c4f2edc759c82ce3623c9d75cc3eccad468cc936045a2775eca72484d3a71f3 +size 43576 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 084646ff71..a651535d3d 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:3d30a38861e317010616e7b17614803439f345e376f36b32e3e6e832070ada71 -size 40150 +oid sha256:8ca599e234d790894fa3fcef83d706e9c5c4cd1bfe0250b17dfc3268536a28fc +size 40178 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 133a8cbd14..3346833d1d 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:96f4023e2a502fb50dc9c03ad53faa932baf1e316652651e109f21f531adb5de -size 43819 +oid sha256:7098630b753222254f84b0691d51dfbc23c7959f39de3f806c58dbe4805c6c5e +size 43824 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 a6e70d1e6e..bf87573e7f 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:8f52f074d2dbf93c3170c80dd18f4601ad1e2db6c57773d0e10c3f8c29ffdc9f -size 41303 +oid sha256:95f8957db3931bc3083908680f24e368fc3c6e46753f8a2fcdf68faa9ab46a39 +size 41333 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 5d6104964e..8f87725c32 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:504ac65ffbcb0705f3e73d32970cd345d23d19e4f190420f8953e55250056329 -size 43641 +oid sha256:c9e221e2a1aa205bfcbbed20a4c362894271677468a1cf759f1a2d8ef296632f +size 43654 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 720075f007..fc8f3c2c17 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:f72f6ec83324b0b6e3719e1e0f59387cb0376149decbb780970dcb7f219a1551 -size 33053 +oid sha256:04c934cca707c2a32cd94422770011e47d8dea6520def65b9e498824baabc52d +size 33103 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 acdab75b0d..06c416cbdf 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:603ff14c11328797ad3ff07002aa77397d1e9f8c39291f9c762776b591d68ada -size 395102 +oid sha256:75b41d34ae5ecebdeaed2f4cd236c402757535a19befaf39918bbfc70bb467c7 +size 395098 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 acdab75b0d..06c416cbdf 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:603ff14c11328797ad3ff07002aa77397d1e9f8c39291f9c762776b591d68ada -size 395102 +oid sha256:75b41d34ae5ecebdeaed2f4cd236c402757535a19befaf39918bbfc70bb467c7 +size 395098 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 16f3005b0b..6bca47e28f 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:26764da6595dee37219d5bbf3e53bad8db6451d7d39fa7741c61d96c89938bf8 -size 51246 +oid sha256:cb44dad546b898087ef5d98a69a235a04a84330aab05cdd400b5773885feb592 +size 51252 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 acdab75b0d..06c416cbdf 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:603ff14c11328797ad3ff07002aa77397d1e9f8c39291f9c762776b591d68ada -size 395102 +oid sha256:75b41d34ae5ecebdeaed2f4cd236c402757535a19befaf39918bbfc70bb467c7 +size 395098 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 ccfd70d1bc..b10f9ac600 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:b9d5ee3eb77075ca147fc7ed96c83a846dcfcf8e09bc129a24daa5ed19f262a7 -size 51217 +oid sha256:6a571a03f04d9243c1f05b4867f1d117f9e155307fe1520f5f99ea0ca93552d2 +size 51223 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 60abc0e23e..d070b8624d 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:419052ca5383fc2915d09ac2193905bdf69748b683ef0f3be59ba2a75db873e9 -size 89346 +oid sha256:9fcc0bc6b9062dcc25b03470cecfaeeb464a9f9e0335bc1cab2c122400b8efd0 +size 89353 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 acdab75b0d..06c416cbdf 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:603ff14c11328797ad3ff07002aa77397d1e9f8c39291f9c762776b591d68ada -size 395102 +oid sha256:75b41d34ae5ecebdeaed2f4cd236c402757535a19befaf39918bbfc70bb467c7 +size 395098 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en.png index 0219280752..d2e968638a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ffda5a15b4c2a56009940901b0f5b102536efbc77a540c9814c4e644618509e -size 25186 +oid sha256:0bceb89945fbdc84bfd2778d5061b61b5602a147c8c4325f1893b9a2e5dd411e +size 27588 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en.png index 234e7f99d2..aa095fb225 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9370c42c42cbb9878244c4a1318d7e59725afc90ab1bca818a2a2619a41a6479 -size 27931 +oid sha256:b098eebc72bc5388453bc7a8ba46e62fb64b994b5240dda4bf1f59161362e97a +size 29408 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 00407fa4bb..120bb7e6ca 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:b79329ddb864ea2100974330facffd3a50d1cb60935ec6079a56760fbe8f57e7 -size 54972 +oid sha256:b6e745d85860818603552ca994df8cd214533ce97588dc92c67a947fb0b1a553 +size 54985 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 2fea9f6ccd..d37dacfa04 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:33169e5e527c72bceaef87283056841b5cf9553abe18f774ee1b2ad6fadc4a5e -size 65046 +oid sha256:229981835f9ac9137363e5c70d8ed346c9553f4b0ddb673c7d4d42e2ee8732c2 +size 65047 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 73b3cec711..32dd1a0fa4 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:ab8c08410091863015fdf8e9cfeaf4259f470b500d7901d3dffff83483fb53a3 -size 65168 +oid sha256:49d994e3c100153c0cfe39b4ac839409276456ec3ef3d1f23b56d4976ba69110 +size 68309 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 e6322f47bc..86fba55e9a 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:ec81ab9e31dd4a2aad6ff8ac92a1bcabbf7f807c8e6ca8b91873ed6706f8af05 -size 55396 +oid sha256:9b2d33ce0fa59fa4d3b411047cd3d6291deda7e560ddbe58139f84d1319fc2a8 +size 55394 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 106ed7843e..c7c77df34d 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:70a380901f412f68c9b3cdb3b9d157cf5ccf3eb1997110a5037e169b1e592e3c -size 69116 +oid sha256:7abc8d2e9fa899bff932685ab34221b4c2bba50d5decb56df053122b39d003f2 +size 69118 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 6c06c9b772..b4ad30238a 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:ee7cdf903b25290a383c19ffa8f55759449469019f4b387366a0c538d59cc4b8 -size 69210 +oid sha256:a33db712beeead338bd88e964c2319646dcb72bdc3f7dac4d1d2f1e322990ba5 +size 70576 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 8ad64f6d22..7b9540d871 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:b1bf1424ee914c60298255f489b5df011c930112159f8b978152727ab1f7a553 -size 56543 +oid sha256:32ba97013216a7a9be2564780799f7e4baca9c2595665bdfc20c6d9e1a9cd293 +size 56561 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 cbd07418a2..91443600c8 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:650304d70f57fab91df310d61ae5a816d46c7d00c2b0f02887f176ecdeccc8c8 -size 54643 +oid sha256:7c1c4307e35d1b1ca41e3ae5d61eeadc785d2a616a2af3bcbdb62502761fa2e3 +size 54654 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 3720d75672..62df329415 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:4a1bdd84ad99effe4448d089473851431c886c1e79f025eb7bf2b52e5b5bfca0 -size 54851 +oid sha256:10b99246041a9448e325ce2ae23647258131e8ea61b6bfaaccd52e173e51205f +size 54890 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 b0a41c0001..66bfbf3ade 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:4bf367d9a4ab122b34fa4daa0bdcdd2488360f571d51ed503a82472073a31828 -size 52717 +oid sha256:d0bf234bc69d73e65e9ab7d253095cf8b71fa7735ab96ce7e73690adcb2409d2 +size 52719 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 ed2c2a778f..d0a5982a5f 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:71c1c1e0cfc895d0401b65c3c89c9cd497c97d16d9ab6a35abeadb8215295091 -size 23929 +oid sha256:87982943e795eaee2a230a10574a3d7e6d007b3051b98857869bad5405c7e20c +size 23974 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 adcefeaabc..f3b7608da1 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:1c7de63b603441a2f0660a9528181380e15c73d9fba21efa51fd0bac6d934e52 -size 23181 +oid sha256:eaa756639583aa8ac515c631318554d9a33d3e45bec004d21f1a83eef58d0761 +size 23168 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 new file mode 100644 index 0000000000..205952091d --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d866ee561b4109bf1bb4d1cc3b34d32ad0c67ae51f7599088898acd4310f961 +size 6725 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 new file mode 100644 index 0000000000..a5be35d80b --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fcb7d90743e35ebf03f09129e02f4df7d0b3b883c451fb45f57f70669b5d4c5 +size 6382 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 e7d309320e..e6200b266c 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:42c14b676c3290f0b11271b4f7373f622f8791921fd72094fda550401a042d31 -size 8547 +oid sha256:6cd306c65e8c4cfd2d0e2893b842c68093f4f003a5a1ba3528c6bda3a7163ece +size 8552 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 7042cd7091..d8d7724540 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:bd129d55fd69ddea811ed530857c83fdeeb2ebd68da496875a3a35185b97b2fb -size 8197 +oid sha256:5a90c2dbc00c00b9b76c86f321f78fe36c2f2e9e3444c608be7a363fdfeccdb5 +size 8203 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 37713151e1..8bf1f125bc 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:409936daa72c7e70334f2ff5d62e84e41b5b79277fefb064b4a9183bd3925549 -size 16357 +oid sha256:ceb6210817e79599a968157aebb7fd1d4e80ddbb8f3e57aabfb58d8f6066b9d4 +size 19455 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 dc1fac5911..7743b1f55a 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:99c74f986295bd66f52346723a562a8d87b4eca9bda021220e8e916fecc86784 -size 15106 +oid sha256:6394543bdd107f70a09bdcb164163984112a25f90eed93850cb525572dd53045 +size 17888 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 54196b6919..d9867a8626 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:3ad96f741491f692e470d175e43ccafa8daf63db12dff3f3f5c1575c2133e6ba -size 42579 +oid sha256:f26c0bb0e010c6d44df2854537ef625712bfa4a6e3ba73960589fe7c811ce542 +size 42669 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 ea89a40bef..ec76394776 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:f8d25f4a85ad32798451ae898fbfff1d7efab386621f6df01887d876efe348cf -size 41452 +oid sha256:9ab7bda826642ec13184d7d5513924979e9b7534cad4a783f8d7a323be31b85a +size 41571 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 d1e243898f..faac664042 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:94d5c829de7020a80f0ce3a89b731febc4a1636834adb2d831650756f3b12ab2 -size 43728 +oid sha256:8fb068f011864a5045c7bd65ffba67bd4b9234f42f40960c1eba1408328f5b3e +size 43782 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 c555bbb3c2..4c690b2ad6 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:a59f101c511d6b3ce269edf80cf961a7ef637cc14d36879e79a6af46bf0f1fd6 -size 44853 +oid sha256:741ad1b881c9598c42c91603e84166768b5dc5a713ec191dc1c34c05360dbb92 +size 44908 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 f6f120f536..a8c5947ca0 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:43a6fd18c7957df16e71645df99796d922e5f4b530047b366ae9c8d41260d8b7 -size 42445 +oid sha256:0e8cdaa2d979c68923e554754a6b5e5d9b31040988c2d4e6fc8248a28a8aa8dc +size 42409 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 424d924e89..7b65db25b3 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:6f61dc062ae0f2cbbbb1001f6a7dc85c5c1f453a72757ef56e0c931354eb7f56 -size 43785 +oid sha256:ca3973d21ea5575ab0921f78c4443c69c21f1f3f07ca78612c57bfe58b261002 +size 43748 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 91eb069a23..e27e1c9eda 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:971d327ffaf387e7fab5d64787fc37d7bd4aa2d54e34be66685009172c04e36e -size 233849 +oid sha256:e57fb5dd99713d410b16fdb8b90a549216387c9213395f54aff8e48ac843e97c +size 233859 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 442ba06553..815099ca57 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:71e0536389e7f914996b300cb5b53eb3728b8008ef225f7107e7401a5bdab7b3 -size 234021 +oid sha256:8e7f7cb7e70b11d423297ccb40eb25c31f99e7fb6d736faa60891f99d5f679ad +size 234026 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_0_en.png index 8a2d3cde85..316d89d612 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33bb2a79802c96a71f23b0e543d9145f0eb7e879ec229c9b228f20af48c4f75b -size 8650 +oid sha256:9f00d7b0c76b11cf20022688c514194f8a4a2e21cb5b60f306fdae1e246dc784 +size 8743 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_1_en.png index 96a477f922..aa74a60040 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:529a175a4100f820737d840abd5f94422bf2ca8ee15405aa7b818eea87c2046e -size 10894 +oid sha256:2071743ce1a021d1038e0b2623bd400cabb602f4c4297b305c6fdfbae911a0ef +size 10977 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_2_en.png index b0428d53c0..6379d57f23 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1a1fe889724ef16253c5c53d7219e9d551babf386da9154b456f9349fc3de26 -size 21507 +oid sha256:e8dba730bc0ecd6c025ebe9bda083038d9d140d32749afde32cc25df780cce24 +size 21582 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_3_en.png index c54fbf3183..a7bff4679b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d2c41387ac8ac6f06845e584abda8c7cdfdf59c5d969d8611724222d85d061b -size 10746 +oid sha256:a7c1f3c995daf433b45774227dd6564de22b3f7bae87bd1d4660b89b519cbd47 +size 10834 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_4_en.png index 05c8b7f2cd..091590ec41 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08183886dd8ecc5e402ab02cfe798fd23153c5ebed7439563f070d0a84ebed10 -size 21131 +oid sha256:2326f58228a4b4af85355d11cfb7a418670f69a7fbe9160ec16fa84e72232eb6 +size 21217 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_0_en.png index 47ddc7ebce..e9f3597aa0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91b047d8ea5a4b5913c1e7fb67d692a4f32972b990cf9b773523bafcacafba00 -size 8794 +oid sha256:f8a636e7dedb70283f4e98aa3461fa556ac12406b9561ca47bf4863bf34457ee +size 8860 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_1_en.png index c0ffbd2b61..c7b664d176 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f140bbe0fd096841b6b41aa6764af589df4e36db0ad59047b35a57f1ba910092 -size 10953 +oid sha256:81a68bd404eabdb8d27cff3538506e8d313d291376c393b0bd2668a3a4872d2c +size 11023 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_2_en.png index 7bc220d939..bbe6973cab 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1979f07f6e0173f55888474ad7a5866026035ee961645573775ca482757102b6 -size 21000 +oid sha256:9dde4d710f94db9ac5c5e2664abc761aece09520571649123cbb5a08edcde117 +size 21064 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_3_en.png index 8bfb865969..4d953af229 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f96ad2f8c31fed8d0bbd8c4cedd2da39535cd45bb143d6fd10f2e92c470b3b4 -size 10809 +oid sha256:7c238c556521bb3c30662bc83b80523db8cad71361f2550dff2aa7d1ef6ffa4d +size 10876 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_4_en.png index 3675de2ae9..1797b31840 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemAudioView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:151eb0a92ab7769d997bc3a459c67bb5cc04beac48cce5af7ee3867d46cbdbc0 -size 20849 +oid sha256:a44f81bf344bdb7a287a05f059adc47383b0a86bd0caa73007bcbffce23b7410 +size 20911 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 5606ece1f4..e92da8ad49 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:b6ffa596372693d66770886ac7a863c1ff64078e2300104a805c6c358b4c4fc0 -size 10571 +oid sha256:820253943de021dd1313b9cb791c8b1dcf1c2364e82b46c13ab3006de792df12 +size 10572 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 15f41e8462..f10abd1e21 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:cfc3dc1420a58d25b5fd248f0b77c3c336bb03c402c904d0678c35a5abe291f2 -size 10753 +oid sha256:c0cd742e512f9608ad04f6dbc642323f01ed1a836e14a858cd54947ce334018d +size 10755 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 ccf3dd6695..6f2b9d9caf 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:8beabd7aadf0324e9b66278c49fdd896b1451a805fd15e69aa6c4af37cb7c150 -size 9055 +oid sha256:fb0d7447f5305bd1f7ae767503932106bc4360b6d709c22bc97b1c0f22b083db +size 9049 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 ffb879e770..74d2c0a2c1 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:397d76d3fe47c61d112b09355097f103ef3ab38caaa99d838d44498a85969289 -size 12419 +oid sha256:f0ae0e60786dc7d51df1e06292c461aa209c9f0924b93ac63120325a83107243 +size 12446 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 7fec52751b..d6f3eb7615 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:dc3b043dcc28ab54ea0564e355b56d39ff79acd5180c9a34f727cb6e113b2611 -size 14473 +oid sha256:5a0465bed6a57fdcae114dec5a613f4e5ccbe3bb3897b393913edafa5783b43a +size 14476 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 8f51f4d170..8c00c4609f 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:aba63b0f223f8480d40e6c9c48ce44a1ae1a8bdcc3d101030b9a0bd5f1e9ebee -size 23773 +oid sha256:c0bc5e9822b5fbc1d7261e04253dc5ac0f75d8a56795f0659602859ab4f76a30 +size 23776 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 cff8f7e35f..db31c75a0f 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:d5c8494ebb4ceaf3a31b661aec47f8a33afeb7aab1457483b7009099a6b56f86 -size 8960 +oid sha256:8506037019dd437e2fc9042a4920ff77a33cbaade58b0b690bb74ac76f5700ab +size 9116 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 4eb8417b2e..755edd2de1 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:7a840d602bd7cd65d2302627cdf26882318f9c5bf43d5e94897ce8ccfd3ee7a1 -size 10446 +oid sha256:9fd6be47a1c79ea05e47d993b6bbc63b31e6da7944532a316c9be5e2f9e35630 +size 10457 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 ac1b0df756..86618465ba 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:d4d9879eda9ffa9c171c5351d9ef8e7b32cad50996717445c9b87cdad8a3d973 -size 10634 +oid sha256:36bdd499da5bed882904d7b344c9be00144988dca3610914f139eea896a5a69a +size 10643 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 52d602b332..f6df784d7b 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:077f898ad7822b6a5ff54429bc91e4faef377fb06de28a4cea73483e6adc5ffd -size 9025 +oid sha256:cc559d023cc8e79d5a4cd1223406f77e6cdd6ab4ab2b1e847d357233265df9f6 +size 9028 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 3809d0c0d5..225873766c 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:252efa710f80f4ea57c909cfd5cfee2beef982a209367138f10972dd5aa49db2 -size 12264 +oid sha256:c87dfe169200962e8bb69555bd0f4f59235f2538f2790250f79459c30efc8f24 +size 12268 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 3ab5d1cac8..fcdc314446 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:c857b7836bc9369cfc950b774479dafcb717d6acc40cf7d8b9b34b99974573db -size 14377 +oid sha256:f255871b94468ba97cbaf0a0490a246ab7d97ea9f4d2fa8ade6b6e296adfa374 +size 14386 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 8561e18151..d168bae591 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:5d0a687a259fafe830560b762a915e478d680dd7c34a295d72e82fc7c427a815 -size 23403 +oid sha256:075b7ab751958221a6aa1df8a691911e45995dce2e054e13b12798a8032e2a4c +size 23406 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 a851ce84e5..325771f2a7 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:dda55a19381d9f51a270afa644894f909d8c479be0a5e57b977393c9f1253683 -size 8960 +oid sha256:71eedd04585ea965eaf48c7344d53749b1ecb3ece08e3fdce6b1163e94769960 +size 9110 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 d1f947e8ba..15d2e64a76 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:4e6af20c51f9641a04b372f2a7af591204d1e6042445b1d8f67eb305fe8ad31b -size 8065 +oid sha256:22447debcfe5de53996985d2e4517dfdb669d221914dbe651cef8dfaf9fb0a57 +size 8078 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 9bf45e3681..f7f45bf6cf 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:4290fb93be02f761288cd1452729766ac0f22a8dfce4ba06ee93e8cd2da7a853 -size 10352 +oid sha256:00b0a66559b2f77f6dfd4054b47dfa13ceb6757f351da60717564c6e3e1a27de +size 10358 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 4c80d9632c..2699bddeec 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:727085653ecf863579d7fc952bf1d09aab8a41548e087435c1dd7b2b82350910 -size 21484 +oid sha256:6b24689a7262ed4ecf2a4016b5c0f58b5ee80a72a2cd55efcc110db043529889 +size 21482 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 b3e9b8f871..1f83b62e48 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:8989d1bd6505db4067a8438963deb6bc8858d2a4b6c5d669df036ebca60e539f -size 10163 +oid sha256:3c7f6fd93ca20449ec82de037aa761e225add666b5b8e8c1b9d539082f6c56c3 +size 10176 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 299ad8ac2f..8288b1a3d3 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:518c57dfe5e6f5be40e32922808bb3eabd17f6aed525a5e62206dfee8bb14b13 -size 20576 +oid sha256:868703b973e96966638741c5f41c004a803ae5b4b00771fee2dfd16d9bc66213 +size 20587 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 5e15420394..cf7c2e7b1c 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:faadcf4bfce3abe68b993a4829bbef4527bcc833b3799b4053f05ace1f10a53e -size 8100 +oid sha256:f2f998c65c9315d93aa86b79b8bca23685eaad44740f9495201f55b043d47f3b +size 8119 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 6b14975f4a..2eccc54d19 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:5b5d4739a47726471244a9848ca8a650ebff3027d85d569c781973cddddbbfbe -size 10330 +oid sha256:7d9087cffc5c634728f0b2c57996192f9a36d6da685729e8590fc210c9a9bbe3 +size 10339 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 5f7f2f5d51..aebc6bb1f7 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:3cfd7c3d4fa0a2a289a15438092cb272d57be91ea221d73865a04b5ddf58b5ed -size 20996 +oid sha256:c8d05da65549c834dd58baf98bf63a1e51a2ea2bc89147fe4b40e967bee8f479 +size 21002 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 90ce08f533..d5200500ac 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:5745d06abd77e48b77fc192b911bcc60ed124af423d87c213fad67733bbb2943 -size 10113 +oid sha256:a6753ad0b100f59e3fa116c8a3efe58ee42c2cee64af7abeaee9651c60dd14f0 +size 10135 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 e446ff389d..10d6d2fd8a 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:905386dfc27904f4cf36d26346e7a3dcafbf426ef4a1ac80717a45d1da0dd7d7 -size 20174 +oid sha256:6bf410f8cd99508ee0004b513d0cdf2fdf3cd15d7798417336d59544eb76286b +size 20192 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 daebff6da9..f30e124c46 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:c64b4669cfc542d79501b91fbbc6f90f223671d8cf033285d568c5d257dfbd8e -size 4874 +oid sha256:a483e181d208c2b05117a1ece9e1c8df6c4e07b7b101adba37b66743c70443a9 +size 4869 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 709aa7a2ad..8917bfebfb 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:85d73903746bde241daeecc74e1a7ffc51b79c7e263c03975e0533af1839c6b5 -size 4828 +oid sha256:9059ca91b3e87c2decc696bc585cac1dc51783f180d149f17e09e3bd2a5f8014 +size 4831 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 96a9770836..29bb0fdbcf 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:d0e53ece51bf03c62b187ae05bc4fdd71d9f30dcc9b4c18a50cfcb4619419091 -size 12673 +oid sha256:9171394ed6b0633e7da0bf00fa238c64f71b6ed489245480a88b6014ac01702d +size 12680 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 a2c8680640..d10b236648 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:f1bbb9c0beb334a94920f3f9f7f6458fa2ea164661a5d78cebb71470368f98ee -size 12565 +oid sha256:926c43d2bbb27ab14b97e7460d259ba219459f093676157ab4f8c5aa2281aa56 +size 12564 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 47722c0807..0bc90a7a37 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:0db7953caa01f68e2e9b182b58cdd4d02bdf6912ddae64a36fec0636092575b6 -size 46825 +oid sha256:ed44c850f2c85d219c6fc10d9f180f49edd14f1c44a8010a8f192607284d8ce9 +size 46854 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 2655007ace..639eb9e69e 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:01606eff6666f83cef3290e0d986453a6b2b22061a90a60e8db675438ff1eb03 -size 49037 +oid sha256:86cfc57d9caa424c1b5e4984d2ffe6060f5e142168c6a120616f3163ebe8353f +size 49061 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 2d0a6aa749..c2e19a6265 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:37695b5ff4b53d50c0d2b278f9a41f961a98a2e9fed25ed239914963c3387314 -size 49142 +oid sha256:974d9d4a1af970fc64da8a9aa6dfec69b407fd4855eb643dd6b7a5c11b9d4be5 +size 49164 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 7fbae24358..303dff0b35 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:2b9fb692a5035151c4e2c4975f07c1b51b366065bf8c4a4f25a678bbeb832035 -size 49209 +oid sha256:63284e61186a4233cfb14f969821454b4923a2453350ed58d10fa07210541969 +size 49229 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 94e34de7a1..dc5707034c 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:ba9520116a974c22c709fec9b90f7053664a4938e6a96f3b21fe340717c33a54 -size 45692 +oid sha256:e10183cfe96bd34339c29a1709a16b9a38f72235d484415b9f1c172d4456c798 +size 45704 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 1f62dcf570..8bc1bf8e42 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:249df92cc411ad26af2700546e2fca7c0621ff4e6aa9747edb1ba6e2e47d52fa -size 47889 +oid sha256:3ce5b2231af4331fb8d2d6b99778245b8d2972239a35fbdce6c35d7d6e53c1cd +size 47896 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 11cfce1e3b..a3f97b45e5 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:7f2e4dd94801ee28848ed04bf3c4846631359873e150e433a397c305b0a33dde -size 47887 +oid sha256:09d954a08c15111f23012f37e9e8c7e2978660fb21c9bb4e1bb765086203725c +size 47898 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 2a903d5c0c..572a3dcc1f 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:e9a67a0384cb8af35f0154d2f3ec9099a792b6b9ca9c5abc17e1653dfc643016 -size 47967 +oid sha256:fa163abb68b57d6e123e5e58aacb1df194ded7f84ad56f813275d4ecd16ce131 +size 47979 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 dc5b30809f..5ad0a26fc9 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:25fa73b168ff01f7478d936fa71aa2d06ee5885e8f3b68723f5824846da55bfc -size 7418 +oid sha256:8205ad34aebb10223b92a1c76ae55a0237be9c0654ae41c970731ccd28efd8f1 +size 7420 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 1d31720c32..12644a0f51 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:d01d38ca441da42301ea6368dd7859eab1c120889396c335feaf65e88677a9b3 -size 7393 +oid sha256:82c0772496a351ce54967db22475f83e36156fa4322f364df9bc96c15e190ac4 +size 7392 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrlAndNestedParenthesis_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrlAndNestedParenthesis_en.png new file mode 100644 index 0000000000..0395a85610 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrlAndNestedParenthesis_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1569b8df58c7d50962135f71feb063b5109a255a263276f24803429c5c90bd6 +size 20034 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrl_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrl_en.png new file mode 100644 index 0000000000..5e324a4410 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemTextViewWithLinkifiedUrl_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8950a95d4e484041d4ccd90dd942ef1671b9b06f63e295610d600bab81b093f +size 19282 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 c54ae5d659..0cb199692f 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:ad8cb9863545cd2a5040990aca918d9ec956a07545d2d249696fb0f788ca1960 -size 7568 +oid sha256:5d4bc2844e37773804f17f664f116cb5e308372a0c9190b249f4eb621353fe96 +size 7571 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 224ffe0485..1b77c3e0ed 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:181dea8404461e4504e18e34ecac7bd7bbd74861c8187f89cca1bcca5be0f0f2 -size 7576 +oid sha256:3af89e5335fc87ccd58c1a44d2e307a0c1e6fe9658e6bfb1e72975021698739a +size 7575 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 d47114aa04..ccb1f6c8df 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:ac30ad57539970ac0162ca54847acf1aca069d692a6400043419c9f67abb8e19 -size 112134 +oid sha256:47f988423418affc0c1ad48ed1f2780d10ae81288dab0d189e16f66afc418973 +size 112121 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 063dff301d..eeb9b4e2bd 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:516b6f1840f7712c2551ce84e3b9f928b15236ac2bd5fc3fccbc9d108253f078 -size 166963 +oid sha256:346a951c1331a6a98196d8be8892e7ca3191d4981f63886ab28ce9dc4143f6d4 +size 167017 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 5970115840..5e6a13c1e9 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:be389bb29fd43a600a38b7f6cd265fcc02e128f6c27d3e9aa07daaf8b2a81f42 -size 121848 +oid sha256:6b088123524aa44acd5f35877a0e78cfc1d9677fdd6b2af82dd1514a7e44a208 +size 121910 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 a1719dd0a5..5cfbd329ca 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:351b2b559fbe17a1de36c51e63171230b6807702c6b56233ba584ca65ff5eff9 -size 5015 +oid sha256:1938d0dd95bde157aae53a7aa665ebcbb3d3d99f90b75307e6970f1aa00b10ce +size 5067 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 ae28737062..d9baf1b197 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:5a2d415770201b30648585d8a7512dd4851fa9dd41fad576945b9d00b321742a -size 112348 +oid sha256:eab9dbc99ba34b653b1899eb486ed3401cd6090f3c56e5d06c143eda06bef008 +size 112357 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 cabac7a737..8adf6a36bc 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:c407338795b3c2f438f4c78e9e3dbeca9881dfbdd6f415a253fc4010c6378872 -size 166970 +oid sha256:5485bbd279eef694c1d9f3582e47e35e2a45f3799162027bdb3ae108e421d1ec +size 167000 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 4eb66f78b8..9533ef9c85 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:9a9a400077aade28bb806185ae3f3c1a7aaa10ef68fcb550583b8af0e3349c06 -size 122248 +oid sha256:da705cf7a08d5bd94cd9772767bcf66d2375aeb4e0604dd3319ea2c90670066e +size 122303 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 03bc461c8c..e8d89691dd 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:13e417d71098d8c863e72753263dfa27f7b398ed5ecb6461f7dde7081fd622fa -size 4801 +oid sha256:269720ee1d20c09a1c455c6f6b11f7f65772090ac3a0e936294612fd89c88061 +size 4864 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 56489451bb..c9967047f0 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:2be7690996fccc6133a3d61114228a0d53dd14bc15018e968d7e9720b151e50e -size 233146 +oid sha256:19c15a177a821d705e0b05f0ad028a705a6e62634029ed2233ffc00eee452fda +size 233207 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 22320f7644..f8cab0b55e 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:b7f8e6bd1eec91e55f1b0ea7fb6c591e5ddcb5f06fd1fc2e00994d657da9477e -size 234646 +oid sha256:83fdfce1407b27d24b941397e764120db1e5e371e1a0cda706cd51c2aba5ab54 +size 234714 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 a055cd2980..19a5a35f10 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:8f3310074905bb66f2dc7bbc667933ecf85a6ce95eca77cb40b3755832051532 -size 24017 +oid sha256:2a66661fdc5bcecd40403481bb6e0af1a6939177366d67ebefb5e0bb37d80187 +size 24024 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 beb37d84ab..d6ec743912 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:ce83c58642f9b6784432c8fb7a317650d2ec63d6e8ec92d132ded5827a3f1f0b -size 23690 +oid sha256:d3f2ac3184f1f301ab1fd140f17f855230347793a6f1d65b06e094b08ca67095 +size 23692 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 a0e14b3b7e..f2ee8b92ce 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:58876112b3ebe320f85ae814f17b1167a4ae81855302cf30ef3b4b2fef536c78 -size 4594 +oid sha256:9480ef97ddc3c073834c376a65467e1a640c4d16b9f911f3cd3ad2ecec50a3ba +size 4596 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 36fe671fa5..55967b6570 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:c08f8f356c6223e1473766744451a294bebdf3a57a65ae8439143a15bf5ee56b -size 4436 +oid sha256:6a3ea4f485f82086cf0d8fa927f8816041a37fbb29c3d78da09f4684657db310 +size 4435 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 a0e14b3b7e..f2ee8b92ce 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:58876112b3ebe320f85ae814f17b1167a4ae81855302cf30ef3b4b2fef536c78 -size 4594 +oid sha256:9480ef97ddc3c073834c376a65467e1a640c4d16b9f911f3cd3ad2ecec50a3ba +size 4596 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 7b268d666b..159aa2df69 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:b74b282cd8014565b890c567b0bacc0b353277500d88e9f67471c712b187a656 -size 4581 +oid sha256:a6488f4506a6591935dea9a0deaf6e580492dcad691f076de96d216dd58f220b +size 4591 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 70a8d14c74..5da86bf6ed 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:8a7e31ff4f1aa8c1c66bc362165f3bcde66fee701afa48f95616002b505b498d -size 4425 +oid sha256:bc329e6823a36356b9a794675e37f9e8a64a0da7e89bd82bb1be22afd7b93854 +size 4431 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 7b268d666b..159aa2df69 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:b74b282cd8014565b890c567b0bacc0b353277500d88e9f67471c712b187a656 -size 4581 +oid sha256:a6488f4506a6591935dea9a0deaf6e580492dcad691f076de96d216dd58f220b +size 4591 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 4a3994d148..b078dca532 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:df2ef6fe59cddc72475c85750cf76384056152c8271bc480748fde31e7d2ef13 -size 36201 +oid sha256:4c389d128a7f89f8351b31c6043e9b6870af2c71e5e6e7eefbf3c632e6209f8b +size 36218 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 d60d1bd163..28871cc02f 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:a1ed76be54d00c0290b315b2322288d5bce83834c8b382b11b83bc4f82bb9cdc -size 35103 +oid sha256:260b0e20954785563d6abc1a66fbc8823efecf2c8125802fe13b30aa1ab21786 +size 35104 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 77d0ec8505..f6390b1c5f 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:cfb30e1058f704ae5f44ee4e66342f9baedd6e2b16df1f190cf822da6c595731 -size 5042 +oid sha256:c326b7454f6962e156cf043ac8492120e2065ae2e9cc46948e458052fbc3179f +size 5041 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 2c097237e2..d850efb749 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:993f6a463c77ec57573db206f31813b9e977dc533ebb7d447acad29a4cc56abe -size 5186 +oid sha256:9d922ef07c2f6b1d8de8435969633402d9130fbe057582c54d2fda04a09f2837 +size 5184 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 8b2f180453..3372fe9a31 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:e924c2fc2dc6b66146364d999b77874c883fae2abac9390a1a48c90f61ebf3f7 -size 4928 +oid sha256:a0faf9fe9bfb693677702c674e7888ad35c95457a2931283710df25b63f825b4 +size 4925 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 2d422864fa..4e3ed79281 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:8a4dd7d2d6607135bb9e18f684a34df17e0ef1fd2b48fb85bbc6ba82b82e09c5 -size 6213 +oid sha256:0c3c0729ba11de1dee2e8cac49a67d3e7d4625e4130ad6948401af7ca77e9e4d +size 6212 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 3585275158..2a089de001 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:5f45afae6e96d3cddb50eda9acac94ba7b556e480eccf56e5f7c4c17a7a5bfb7 -size 5009 +oid sha256:68da96bcbc36a9ebecda5e83d9d0ceae45d8b69d844633903f58e9915a18af52 +size 5012 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 f703f2dd98..85b52b4946 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:3ee2232b7d0feb4c7310a695f3b1e58ddb466970a8cef4051e35f7d83dbb1629 -size 4863 +oid sha256:04f2470a98af964ca1ab6abd62ec6aafe339f86ad6035eb4a8caf1cea42000d2 +size 4852 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 37f721d4c4..5357f627bb 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:bfa1209e3c4c97dffe0f633643a8e4da3509d57998cb047651a7e18daeddb566 -size 6080 +oid sha256:1a3b363b2764e32fef338debbfadf5a4711bb6e8f4ef799375f2fbcfaf127069 +size 6084 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 d5a4f8dde6..5e7915a578 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:7e07f82770e48bcd04bf5532dd353d0f84d6128911e692a8e728f1b768d0b947 -size 4988 +oid sha256:30468b30d88386850da0be274531dd7fc708e5c49bb91ee81fdd4f0fc2e90d2a +size 4986 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png index 53b231bc1d..9401edfd5d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cf7e89fac181c1a0829e14d4ade4f236267e4e19a3aa2aa5c216f7f86e6aa87 -size 169050 +oid sha256:6a1e901fdbfdbf5621ad6446dec6f83b922ffcac40c649981306037776a288a7 +size 169049 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png index 6a79ccf27f..ecf9f575fe 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowDisambiguated_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20ff9eca2a1ce793143485d886416503fef228e967ee606595dcd726a85c9832 -size 168179 +oid sha256:a5dcb2ba2bfa0560f69ef6c7dd6a9f34c2a864d502d9401626666f263931f8a1 +size 168173 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 8899d3f936..84d59c2700 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:c9cedb56721217846e99cdb8b61d00b8cd58ea69d4a3048b252999a36d27684f +oid sha256:5b8c226a0d0e1026093f1a9b173b7b5c1228e2679ecd01d3da16b3b1ef8dc5d0 size 167010 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 f1f2ffd49a..5987ffb7c1 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:832f4f74800d327961b252bf8b147d8f6065aba82209e1000894602a2085f226 -size 166144 +oid sha256:2bb2568dc80f1aaaad1c425d42476f102876e9103569b38cf2ee5b5c87aee71a +size 166148 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 b0d8acccdd..cf4d2e1da5 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:5ca49a36674d994decb5710a0b969458928f003a0f39b701c1c60afade4f1ae2 -size 15776 +oid sha256:85536b4f83b45d7688fdd367b9f8766a6febf55a35e033357116664f253ed7de +size 15779 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 46a51ca8b3..5a2dfccf70 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:f65633c60060d3763aecc775e1195ec20d61ecab22cb142d91a4b8ac2ed73976 -size 152510 +oid sha256:31beb2238023043f5b2f7cd2e86ba66f3a24062ea3183b4e9d22025cf2bbc570 +size 152506 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 d11d0b0568..9d3f43358c 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:969a525cc24bce27af53ec127d9e8c97c53c3f136da8b21e0e7c4947112f4311 -size 151776 +oid sha256:b539c68c246e5b60a5f0c0cfffa94cf51710ec26e6d5b533790d09dfc9f0bc8e +size 151766 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 9cb993276e..7150b21f46 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:bcf77a1ddc786a985e4e1e56e553a17c456b8d8d0a13bfa70914ab39a8bd52ef -size 31114 +oid sha256:48be34a388856f526ab23f35203cc07939b6bdbfd5b9f3a4163117301411828a +size 31148 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 4d0dbd931d..248ed805a9 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:93f6343aa0e76535d28717b12271b8d3b123852d9294b060f766ae0989febbd8 -size 30271 +oid sha256:a3c8e90e16e566d2252f67ba727ac7b52dd77bbe139c06d365f298bc40bb531e +size 30263 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 1e01e697ae..37cb67763d 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:a2751b08b35dda3d7b897cc0618964935aa968dc5cf1738e852286e8149c69a2 -size 33958 +oid sha256:e77fd59aa1658b10257b03df34b08120b001515b23ee476789327575588d29e4 +size 33966 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 26a6d1ebcc..15266c43a7 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:23cb761e3dd47d763d046d53ccc1a1b76b3bc3c53dee6038f2654bc5bd75b111 -size 30571 +oid sha256:f941e6251118c39749ef6a7d2357c1feb0789c80bd0086e0faba89e35768c7a0 +size 30577 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 de7dca8600..c50e6fddb9 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:09ba6ac814cd860273d25b4cb47e891e18cea86db33f3a96619c742c6ccd2ae3 -size 31768 +oid sha256:2bbc4e17b8c1965df0dcc01fd7b95e5eb16589822d3212199cf6402d44a2496c +size 31814 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 7e8efb7399..0eabe29425 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:67163c484e2a0bce436c6ba04b9201a4d258ef38727c127b65ced0999d2fb579 -size 30575 +oid sha256:1072540b8301f94898c031591bc34b3dbd80de0e297d08fe70ad6beaca4d796b +size 30581 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 27ac7d39df..afc9b879a9 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:0748ada58c8868cbd971cc5dd97408ee272c9c6638391fe9c47190facbbd0e76 -size 33894 +oid sha256:8b51df4b986ff3ffcd15d2eebbac571ac9591fede464429d7d4eddc459f4b63c +size 33905 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 feec1017f4..868cfa4cba 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:9e4a33d0f86354eb3930c3227f96d4012606cd81609eae76ddfd5d9f7f216ceb +oid sha256:c51a2fde76e7df75648b352068500488eed55128177be165e560737d6b1735a4 size 30893 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 e847cd3292..cb10e1ec0d 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:f1c226a36c42d4aa725a941ed58036dc5e75c9547720e00b75c64c7fe33491af -size 31647 +oid sha256:a90b1f3d717803218570324453d44ee3349bbeb2e5d04b2ca39595bf103c776a +size 31654 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 562bcf09f2..5bcf824e54 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:47afdecd896bef06623b81ca53e0b60a0deeb01014903906fbd3fbf15ea4a5f6 -size 30592 +oid sha256:835214c91c3b3d301e0980eb251c2e3b525d040f320444fe5eb02855e88b8b6c +size 30596 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 348a85cc4a..272335c611 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:8a5525a54573e55affde093f036e9d9dcf9313fb545306bb367e3f92cf20b48d -size 80132 +oid sha256:f9a29a07c7336014004203fef64b0eb429fb29f4a03b9ea3df7386dfae384345 +size 80140 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 7492e5284a..a23340aa4b 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:e3ba6d9e751b63bc92bbf5198e430f4f5503441de822b669f72c20aec9412e79 -size 80522 +oid sha256:0764beebe1397ea7382768f676f330c1ccbdf2f326199053c5165b41816d8650 +size 80523 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 5e74e308e2..3647b9f040 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:7b958e710dbe02df0227d8e911133c2fe1a976f8b473d11d0ff538f26315b756 -size 25544 +oid sha256:8fc8a84a49d10311e340f42271618c8046d30430d7e246453d646488120e687b +size 25554 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 0e52bb6071..2840251a80 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:4b0a963f8dc72feca1f87ddc504e41b9d7d1d40242f9ead03a82ada4ce41bbea -size 25012 +oid sha256:b1999b03d5fb6d2bee51438dd7f4cb3f088ac4f9bc4f6378931ad5cd7166d0d4 +size 25020 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 461a8e18b6..afa0ff2a9d 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:ef17d8523647d65cf4ffec14af068d5fec1185e3c6864b45ba66f0fed21860c2 -size 25105 +oid sha256:73e30666a17ecb9fd9a1d9673e9fa96f3fc5457b6e8b13c27faae34ca7e507be +size 25111 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 bc80a4a665..77964f5f22 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:62ea3fd76c03b02cdc2367faf1b4ff20f5cb88568cabd2da50b37b004afa92ba -size 24552 +oid sha256:6fd66c7ffe0afbdb4d2f89ebf9340ddccfed0418bc6d6cb4d98a9925e2d1a762 +size 24558 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 2e06388c92..71b8c10e02 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:c86e8244db3e63a63c173c554a419eab63445b4c4bcfe0f69a4900fe19faf6d3 -size 151392 +oid sha256:aa52e189e42c448cd680f45fd8a20893be726feb2fa61f8ad8c2199712ecf431 +size 151398 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 8c00dc6f7c..f7eed329d5 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:8400bc01f801b6d6c32dd5d4f6792fa8f89b831e10228f7875e8f7e89146d1f4 -size 156895 +oid sha256:1aa1a281092b29a8b0b4be292e11a46ae520e09783fcafb1a75c7912ec71878c +size 156896 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 145494bf10..9635d7b007 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:77817ceca6ab94dfd5ec239f281e15a0fd4be7a0e0a7e036f825710d5cdfe53d -size 151421 +oid sha256:c72e79524b0f37dca8cca7863c5a5d5e3d77f7845bd65b5f7bdf8ef47121cc94 +size 151435 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 cc7b9b4548..1965d77e3e 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:e9365f8bbf8aca62b6e76a0492dd7c9b28481d14e16ff89f44d4ab57f000a991 -size 156559 +oid sha256:ad1f8892740d499197491a7826f1bcbb0d762624519b5cb693487a458c86dbb8 +size 156552 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_0_en.png index 9d71a5386a..fe302aa676 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45553883378459e04d228dd13f5e835c81718b1dd07db10f1800dd93afc32ee9 -size 142634 +oid sha256:24d90b69aa2b3732a0fb775de48fc5e65de6bfe2070742d7e2bba12b527745c0 +size 142636 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_1_en.png index 0db679cf2d..a48730c8a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc0da74b89149a4d0fd136bf56e2aab545229c01fd83a72cd4fd4fb9d8fa84d9 -size 151647 +oid sha256:941f51630b9f3340ac375b8c187325b22c346378573fbc65144859025193eda2 +size 151650 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_0_en.png index 81cff9aa70..24a2bcc0e8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:545647e1c8c03e1517c5cb6fac8caca4eb293775714f5d8ba3c44b15e9191a5e -size 141956 +oid sha256:66ab5535bb3d797997da1882e1969638e6d2accfdce2061f09d083e35fb2bbea +size 141958 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_1_en.png index d3d6501ab3..5145845083 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyOther_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5ee904904ca3a9167174a61f5ceaec59d3ba67fc783639bae168959f078647a +oid sha256:e821cfffe6245425acd88c490c3a35ae8a9ef9f2751ad3e1e387d31c6702ac8f size 150760 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_0_en.png index 33c722995d..87095f8b42 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c54d751ee267a696c0dcf591636ee00080db05208692fa4c7eda444396727dc +oid sha256:473aad560929e4c863a58a564574132b1cb60aa3e657a2f143d37db97360fc22 size 156265 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_10_en.png index 468fdd6071..2103bacdcf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90e38333fd30ac4714249ab8709a30621c4fc1f2e0ebe753df0a114678df019a +oid sha256:77b8e7f4397137570ccb8050d0041fe528eb3a34133ce1c7457f3a028b34e6b3 size 142215 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 30e8d2501a..e2d97b2d50 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:48fe571432922b2ee2891a582dfb52fd535ca8c2515df98ed44016d2533c27db -size 154251 +oid sha256:413a50188e94cf2d804c7a90cf0c794c9e7723fd0018249a790a6fa931a7a28a +size 154292 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en.png index badbd682e8..500e753b79 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f9e3ed9354b363106baeaea5002a85bc1e030e5cde5581a823ae996fc0346a6 -size 163443 +oid sha256:73a339a0b4e5a552407abdd12a45bf9d3fde492c18aeefb08e77d15b04f37920 +size 163444 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 d8e7d37068..ba1c365c84 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:f8b4b1a0b5778fd07679a866d00306c9068fc9c72a1512704f87ef071446f772 +oid sha256:6d452c2f1e21aa37099ef351755b770abbe2e641f9933f5b246b0918153333d4 size 144974 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en.png index e773d290b3..e0e04317dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e8566e74889b763b3843c3f1d98e6dd002ddadd67e26a6de7b91dff2bd57932 -size 143450 +oid sha256:7f5c37cb34374f3feab75e86c39a8aa476efeeb3b85348294fc41a680e70e56b +size 144192 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 13d7642a55..e31d919fb0 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:08caf86f4b7242139a1e53a0b8d0736782be02496b858b1af9a1aa6209ec33d3 +oid sha256:ac7adfc6578c399c6648f695c7f45b9156f8f5486be58c2c575c8eee30a749de size 150903 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_5_en.png index ed5b5e3b38..45f1446d0e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6be795f587d11a9bcb8ffffb097ff6cf2bda119fafda15ea48421d4b4af05e0 -size 142574 +oid sha256:d200afbce60c5502d4404d3f741b36f9f88c01e644466672eececa66bb17277c +size 142576 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_6_en.png index e92235eb7c..41b04f5bc5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d31b4335075205b9332baf8e04daed8e57e8a5d4b8c145cad91498acaa5f9cf6 +oid sha256:035b6cb7a1878f6e8d8fd9087c69ddc2a35430e7f903aecca4d5e9e783653e30 size 143373 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 2db6bea09b..40449b178a 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:74d7af64a2c2736f16e7f367116d0be0c6512d89bd1fff859f4a99207b9894ee -size 145167 +oid sha256:7d4c7d7352bc253cba98e7963abca47fbbabca3840de1c5262a0abb2a54cb38f +size 145192 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en.png index 633c7ceebe..d859cb2a4f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:104b43c0106da2234ceb27250c632e17e9acdb5351cd4768e0a345ac5143f340 +oid sha256:7f346340dbdbc929ddf2ace6ed94bab6b51f8a522b2462db961ca4026805c6a8 size 151442 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en.png index 597638f245..e3ace67a98 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6aceaaa2ca90fc3fb6ab3b1af31e8fab8676f737574617a700119a1dbc4bc48 +oid sha256:d03e00b1103f211d889b7b416a2fb954ccaf25577742bd8d0d2bab81dbdc567b size 142845 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_0_en.png index db8b4f61c5..e08a2850ff 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aee3dba6d86d7a042649a39757df61f27ec23fa957ffe8a5cd0c77fac6a3925e -size 156135 +oid sha256:a2cf5970c363f1e04dcf10b13021a710f93b7c1544499fae4a458a3542dffac3 +size 156131 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_10_en.png index 1fa64f4708..2368d2578e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c29dc6c1af653d70969e73cf1f67c9787a5156b336d7832993d4323ba5505bfe -size 141996 +oid sha256:f74a52283d616bccaabfe95ebfc332ebb43e227cbff405070c4b20cd09cf3a5d +size 141989 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 e66ad5870d..f37205999d 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:9adeb033047491e9eff08f087bd4aa3bb1a3cedca4587d0f04935a10548126be -size 154279 +oid sha256:81cbeefdd7a39e66232d244ce171320c2f31b19f23b36f4ad5b0f7fb71825c64 +size 154346 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en.png index 23b32cf68d..4ba6dcd649 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad72a84a11b175855cf80c608a0b22fbd3f582b25d511dea35a91e7d860a59f4 -size 162172 +oid sha256:7ccf01c26425a89cf3633eb3da28f255f4c5caf2d158ba370364b1800c5eab61 +size 162173 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 beb4e13cb5..3e78a54ec7 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:8bf85afb864f47b9d11ddf00be361e9b60be7f6c92072ffbbbd0c0a75d4d2d9f -size 144907 +oid sha256:9a31e9ff73e0faa07adf24f1b6f26b527d45bda1981eac7ad81bd1e5484b96a8 +size 144899 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en.png index f1af7350c4..c39860160c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb600b890d2823da01ba95f7a5e1a44c71cf7c87c00dd4178a9939ababa66971 -size 143402 +oid sha256:73b81643e2d85e81e001395c1439fef6f5813a6122bcc668a45880a0ba7d0548 +size 144181 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 40069060f8..ff10bc35cb 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:e0e9dad1c0d8cd9ef6a59a05f6d10806c499bae39502c8bacb4655a9c99517f8 -size 150857 +oid sha256:287690a6799dfc57fe721f075172281bdb78bc03e315e7db8ff9720a80fd7cc5 +size 150854 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_5_en.png index 56ce701944..684475c1a7 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf9232176cb465087624f5e26a7d03cbcff0287000767fc328f71c8e7397a6c5 -size 142471 +oid sha256:c94ebaca53436da29b6e40b9fef74f5dbaf9f225dcaddcfe76b4f69f76afbcf5 +size 142469 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_6_en.png index 2d67fad738..0cbe47a50b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7b29247d5f3d9a6e598b661542fba680e849352c6fe8bc77f8d206d89ecf49f -size 143071 +oid sha256:5bea334b823553c48a781767952d98d1094ee12ded915abeb3c482b59b0b57b1 +size 143067 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 658dce9da0..a337569074 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:9cfdfc3db13e98e93653e71ed8030eae544a74ce4bacc7d9fcb18165a69d9484 -size 145144 +oid sha256:b101259000fd210bfbf52f19884098af35508621cc3164bd253d71d58a41fd3f +size 145155 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en.png index a0f31948d3..61cc6f7241 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2138f335a2e17ba9beaf9f9e30f3a02517bf3a3841d48ab9287621f7954fca8e -size 151370 +oid sha256:7020e4940f15e2d6f6640234d9fa750b2ec925eacaa056b38c1c52faed19350d +size 151365 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en.png index d341c7c055..6304cfc827 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1e0c669adf450d9720df45424dd59c51f2d2a5d867bd166a56f9e7e3cbe0483 -size 142607 +oid sha256:09e1993041f35d8e0aa4848107cb2d568d4ed31f9bde45bfc4174e517d06bf88 +size 142602 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 c5c0261879..30fc48cd91 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:e8595ddd19afc9ba533038fede1d22f4b2f73c339dbcdcfd180039f49ada24b0 -size 184211 +oid sha256:6ce42095c640d50f242818eb3ce5c057f972cc28240918b1cc448f414157fe9f +size 184207 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 5f38409082..d6c3523f51 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:843f2ba8f9c4ce1ba229d4e4fc517ee18ed599cdc6b03a165b738eb774e0ba74 -size 183572 +oid sha256:28196c87c21d65272148af11e134ae6abf7fdfc361cf43abfc90209ec785e335 +size 183568 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 e384e2f1c5..e765b7dcd1 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:5846bf42b05878c92d080a75ddb5f6285f74f23acd8676dd7937f60729eeb775 -size 52521 +oid sha256:214eb8ecb72e331e79637a28df9bff3938ff8b2dcb8f55ce8ffb248db2941763 +size 52425 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 601699d461..e511ae721f 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:c40ba76a333adde1f32b628ef3d58278a928d3469528c74f4a65218bb9044027 -size 7707 +oid sha256:9e0bd3d7e5374f17cc08ec05e8a0ee0df873093afd7192b0ffdbcc9f8d336691 +size 7711 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 4af432ab1e..05c4d92b69 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:3e6348ac9e1b74900165063cf0abf55b174799dfc4939424b193933e7d72d2e1 -size 7857 +oid sha256:e6584ecab4a1edce29cc737473f83f31f00ae76ea006bc755193fb923b1bf9f3 +size 7855 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 2213b2413d..1c611df6f1 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:37d73e9663a9cfa1d3a69892f159ab27a8bc480bf24b64529ca978349d9e2842 -size 16823 +oid sha256:bf32ecc91206e24bca38616066b94d6d451f69b1d274dff63e30b73f9b0b5fe2 +size 16822 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 2d8226e1c1..74699799d5 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:24184c76715671c2485dac6d6ad0a2caa88bb9881bf2ae256d6c298efeac3846 -size 16876 +oid sha256:0d791d1c3a79e409a43fc5fa3aa368ead2c8aa7167f86e50d477aca6341482f6 +size 16877 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 138d43c7c8..2657113f0a 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:10294b87b703183236c057fe5fef7dbec0ed663a03722496a1d5bfc689ea8cb2 -size 24915 +oid sha256:8f3d8c59fab8106fabb9ef38ea08274dbd6eec1138ff5fdc1a5cafcd58f6a38b +size 24918 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 8bd4c370ec..af6e871b74 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:a73bda9b33c533d00f6c54dba4d6669589c8d0d95f71642908f2f6e05ffa5d24 -size 25932 +oid sha256:e739c2791ef4530fe2ed107f187ad9c92c83e5b49d8f1e4ea7381a0259abda0f +size 25935 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 6e5e7be55f..d9ab5b6e9c 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:44d84d8124913424f6b0f2b7685801a735ddb0888d99e7f87e04497c871f6b8b -size 10458 +oid sha256:2fce12d74225547cecff2e235597daa20438fd9f7808992c2d9e2e283e191011 +size 10460 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 57b66567e4..304ba0849a 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:3ac9b242d7dc0c5bc15db85937de3e76197ef7775344cfb52a1efbeedc4d9dab -size 11038 +oid sha256:ba5ed576050c76ecb850e186e1a8d015d5548fadc0c4a02c8e8f24483c246a70 +size 11041 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 ed062db32f..0188d606a6 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:eb18da560195c672833e45663803c6b3c65c206eb4b4de79a32cd1b91ac3f67f -size 24066 +oid sha256:0002edabe1450333860f6f4fc09a4f4875202f32bf62fb13a4b08793fe3116fd +size 24065 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 9bbeba41d8..34a8f34140 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:c98454537185e32d9368fd68b3421789f03e5a3ed8ceba21428326c8313c6bef -size 25036 +oid sha256:7f22d13894b5d7b460f1d1496ef1ac2af7674b3ebfe8e642f70f445458f8984d +size 25035 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 d383d5067d..bae0139967 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:60e866fcdeaa07dfedf98a5c4b43da4047ab859c8681679a7baec03349e6c92a -size 23979 +oid sha256:6d351c5483fe233198ca58aba11193a75e38fff2ee9ac4df6e8c3329b1fed6a7 +size 23983 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 3ac9fa53d4..6fbecaadcf 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:207f625a67e1be1b4b186b7b3215ebc1c7f73c37faf2df987631486e967d6828 -size 24822 +oid sha256:24eabd49efe1b6b4ee36e99571bb454af1e99ce5902d9b291df861cd08d33541 +size 24823 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 56b0706c3c..70f29587fb 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:d902ca9a9fead6c3717aedcff0fab9e65d2d27cb320ae4e88a642e9c49b93564 -size 6241 +oid sha256:6eee476d812c9840b2a53ae938f9f79446c252705e329ff66999fcbc96d3face +size 6245 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 74d1f6d15c..5f8cc0c251 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:bd159b959458a2273da7bb0e03cc92f7496987b364329601efd893ddae864df7 -size 6622 +oid sha256:df0fe66ce8a3874805aae2775d3af7531d63dbe7033a041c7dd8e335d1b20cf1 +size 6623 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 3f23320fe8..7a7a4d7028 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:956ef0189107838716b55278cecb81bdced1cf769930d7649dfaa04a100fe4bf -size 32902 +oid sha256:0ecaa69aebfd037e4b58db4dcbfb41d29ffb973a88dde1f79b60574bc65e84ab +size 32909 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 fa9be61ea3..f5388ea42e 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:35e77fbf0ce9b4888dc8470a478b4ad3d8b329ff44006b3ed6095fd4d0a90e98 -size 31300 +oid sha256:bf60d51e707192d0ec421a53a30fb97af9c09cb19a94efaa4222e1a5b5b78bf4 +size 31304 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 0664c186fb..297aaff834 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:5ad5b8ae4808e02018d3508a8d5525e6d6a50a1bb2b3c269e7aff493bf7a9181 -size 37397 +oid sha256:21961806f7a938791b5211f5f3c93a6da64e3668ccf887956c7dc73ef6701a9b +size 37393 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 f2807d4ad6..ef1dbb71e5 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:4365177e203ed78cac635259ce8a7e32bf71316e45839a29acc07ca8540331f3 -size 35248 +oid sha256:40dfdc9821c98db913757e45663f5da494bce02a0882a260cf365697c804c9a4 +size 35249 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 a22e03550f..fa6c9958e9 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:36f98cfbf710150976311cfad03d28f1a6f4cecfac417fa6b562f6acb5b32a69 -size 50144 +oid sha256:8d98bf24d1bbc36422ad69a74e554a9f7441961077b8a07f1d8123905345db41 +size 50167 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 603946dc27..c00b560a88 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:88e93741ed388372d2c2fbf0acdae2e0d40cee76f955d73166009e557eebdbcf -size 331229 +oid sha256:a78bdd930bc853c4adde525d48f8477e3731cb3e76fc6802ada6350f73e209ce +size 331247 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 cc3728a12d..e73f8c4cce 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:de798b2e9c58ec6a2b3ca4addc0a1c1ee0d42ad8ea4cc4cfe148a68c55dec76c -size 85203 +oid sha256:6eeeacf0a4282d7fd5bc8ef3b67680d72d254c51a8ebd009c9c197180a9a6f0b +size 85092 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 d7e78df0f5..e3e7fb615e 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:1519dc4ee64be29dbe82c552ac843031fb5f01df8ee17dbb1ccb6b5e924178f7 -size 51630 +oid sha256:f6ca0ac33e28cff8479880eadc8a72134203ce0451de2365127b7478835115bb +size 51641 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 b19d991f9b..0bd1535480 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:ca067c9ebf1c44c761dc60736987170e458dd04aa7c00d9cbacb89856a93d03c -size 63388 +oid sha256:ff442a3e3571f5ce0ceaba707882841ec2d13c45da05dfa361876705bc121f36 +size 63403 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 58da9219b4..fcf1f465cf 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:6a9101972099ef39d05896261e00a6fdfb35aa8792c4c2f18dec7b8c9cbb7cbb -size 48006 +oid sha256:ae4cf8e28e956d3b0707763bccf6e02d123459cd0a137f023f3e964f85bf6072 +size 48014 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 a20fc1db15..b836e4bf29 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:f7d84338cdffb77eb42badccc37d9e21b2bbd4b25cb0256944ad60d525724f24 -size 64455 +oid sha256:92e7ed569e467326fbc2a0e278663494a237cb3c2198fa543b48f0a8825abccd +size 64487 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 45f88fe612..1def9b255c 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:bf2215400c0a91cac40b5eb9e4e350443858654c2eca2bc098cd6a05a1807a97 -size 55197 +oid sha256:1b1c78fb676f2f7bff622a874626154d1b65c826ee3f071dab0a0d78a9d25bca +size 55207 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 4da3e6185d..69c034bb53 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:9604363c3bcf9818ca6946e3682bbcaee0220a557c3e481e92fc67be68cb4671 -size 64236 +oid sha256:d017482df08cddd32e0dca6a8fc72b5c92c20fd6a2087c4940bf57171faa4b7e +size 64235 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 5c4336be5d..1d9116096d 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:e5c4849fb5125781a2caf190a8f3340035e755cebd4b97d235d26ce54f227ab9 -size 71139 +oid sha256:290d8f2a5b9977a674fe6d4c7059f4aac7ad76b0ce4d58ee1b1fe437551c8812 +size 71131 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 93a042ec5c..c50d921761 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:9c0531cdcc5d6af2d51e3cea9fea6fb23dd8fcf957a525470c27db5ebf740f04 -size 200824 +oid sha256:51c236ea63de8215a9a21107555e0b27902af004e5fef98f304dd1bbde3d9b03 +size 200828 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 33d5dcf9b2..78de68a59e 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:ba729e8bbd503e7fe73c3562f57c234ff2b02e56399b0e40e58ff5f30ae6e81b -size 201867 +oid sha256:01ad764325f9362613584c51247d523fa51724be613084a4d3e59a7355df14f0 +size 201982 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 4cbc5eb7c7..1773908a26 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:1df19b2aa5d3544efdef608585e0ad6305c81fbd3e0ad8017ae950c14f58a1e3 -size 70255 +oid sha256:c186f2119f530e2c977a5c3ae896bb4bfabdea8b1af21e8fc1e11b5e1535e19c +size 70282 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 a0b6ec2605..cbfdc44964 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:c2fe80dd136456c6b8a091165d6bba33631a994c014da4248f59efbb51a736e5 -size 84989 +oid sha256:38ae00eabc393ea0b780cd9ec69828c4c63c0b29d249ba8b748d837022c214fb +size 85007 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 60428c55e3..9cc34ef87f 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:a105bbd340c597da31876ddacb89bc90ba8e7d5454813755edf5a6252ea6f985 -size 72749 +oid sha256:06baade2dbfbcbf2413f25a5c8041e6bfd88a957781dc0d73a9dd264a1467a5f +size 73356 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 733f835563..8a40214c69 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:d61791b1bc4d3ae255a63029b772644e39befa5a2fc4022e5c8753a4178522e5 -size 103041 +oid sha256:c32edfec150a76a7c55b5beb8b1da3731df42e4c4ea7b4d4391066e28a191968 +size 103515 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 8738868568..99d4002da7 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:84a743de111a89828996968d5a7812a075faaab73e637cc9714c256a39771654 -size 53116 +oid sha256:2e1505ac2d2b1a3a824d05016551ee544f3fde640443b8b95650b640c4a8939e +size 53111 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 63a6bb4892..746b23606a 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:f2080039781871927f6afcaefc6e8fd5df6a4155138d1c78244663bae4a964d0 -size 374223 +oid sha256:d49b09108150b2c53d6a54c8c2e8f417d6454099ad37ce0c95a23685825533fe +size 374231 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 3373710f31..239afa198c 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:59b63153b6f88ccc39529a73311c5e7459764e5a10208c98ae5217ad4e391daf -size 49214 +oid sha256:ea044803be4517bcfd9920bc2f7192f3346823fa1bf2757f168e0556b3fec9c6 +size 49207 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 d913158c67..74e21a4625 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:583ece5dcbbf4769cb9254ade84a7ff99854295e2e9102f248191f062db16c5d -size 148661 +oid sha256:b62bf46257ee066163663c8c86a717d320146f50be88a3957e747fa512cb025e +size 148673 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 ba97caf3c8..2099de329d 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:0850c06b9ae1240e7c9fffbbf9a1168197c5a87ee04607054844bd38fd2cf2b1 -size 86334 +oid sha256:1c042981fb21b1bfd7e7f4f7857f1a84dce3e42e827f665e8d4faa7f1abec547 +size 86337 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 636ec36c91..04c6f6c009 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:7b4867382de313aaeec90be3a3bf2ce86fd136044deeab681793434ad5bfc4bd -size 50862 +oid sha256:a7e9f0d885e2d56955d4054f97f0a18bd8c947677f982091f0ab75b1b64840fa +size 50849 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 bc8c73c290..f0752ed4c7 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:f38974847a9d279b7c15403923a24525f75700eacee4b0eddb147231c03c121a -size 61904 +oid sha256:809988a1560c381fb910657d05f2e2e710a77c9545dcbe30657c1ab8df169c22 +size 61917 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 dbc4a992e4..5460d50f9a 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:51dc16c48ae9cd10bed51bec32b0d99b4367dad0da8fcc1816d0fb32d651dc00 -size 47162 +oid sha256:4f0452fd9541274543670bbb49d97319e481710d59e6ad67125d96ad8991f172 +size 47144 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 ceb9d679d5..aa888749f6 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:c570b3c97adff92acbbf4f4c9e9bdab4b0bb7a7612e69a4c715bb9e0d19abd6d -size 62861 +oid sha256:f664b1d17a081ad4c71c19a1510ed62d9c0d02a2cb261fbbe631be73e5e66c8a +size 62916 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 431d4e0ddc..69e820ccf7 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:83e76acb9e992577c499e316a679f6c1567afa07d6dc1d097488ab6cd115f8ee -size 53915 +oid sha256:fdfe8f427cec521d02992d2fe00d34eb3520103b361523deaceacd50a402b959 +size 53919 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 eed3a30a42..5a1480e478 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:b3e6be9ea405183bdd747c788e21f0928f6cabcb10a3f1eb471797ee8728e792 -size 64275 +oid sha256:3ee39a6785005f95d9ef3236af0efd95c99a61186b115e7cfe6305b4c8051d71 +size 64293 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 ae95a98bf7..19a0e1fa9d 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:3c948c4b9eccedde55d53da19f6cd1c8cd5d6a6e16ba909edf796b5535e1d079 -size 69346 +oid sha256:a9a43633816c9dbd383bd95c7ee45b3f6feabc3b31a19b5bdd3b0bfc7e8694c5 +size 69358 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 07a1027631..eb30365370 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:c0a18c96105384799acc08205fe1f132a4432942b0fb9b58a2d5e2617bc6590e -size 199675 +oid sha256:0108d54a2d6f2d5454c94fae5bba903d2dfcae495ae74b7644e429f75a70d3c2 +size 199672 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 0c145e25b0..16ece4cc8c 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:0c84d0ddc031112b9838dc15fafa12951bdb26ed3af3c1b94ced43d313251b25 -size 200421 +oid sha256:e67ca0306edf3469dbb74ae10e75b69512524169b38d72463408f0b15d8babfa +size 200518 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 b396066ff9..84567cd635 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:642cbd2fad7a9b7cffdb531f5de021a137f2379c2415b5dc25b818ad232df54c -size 68795 +oid sha256:82ce4919096f27d68be421b24926046b5ee740cc449a85b4ebdf8ab72dbf34a5 +size 68796 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 0ec2e46dd5..65ae8ac61f 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:d87b25d58faca74f0caf580370e7ea218b315b8533071e9fdae5058b8b028f7f -size 82915 +oid sha256:8deea1411eb0b21dc352338ce54e46206773067a9d3c46dc2ff6e78f25c6628e +size 82894 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 de3c35303e..c1770fa443 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:319e3a13d378e4c29621f374d96f33790162d944dc033cddc68c4c9a5027f53a -size 71682 +oid sha256:9cec981969cfd44c916feadce445b3e7a8c642faa2895add3a9efd13048adc4b +size 72167 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 070ad9b1f9..35e735cb4c 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:0560cb1813e06b78f421dc08859bc396adf2e8d348f0439cc9ca82c507c8bea0 -size 100866 +oid sha256:ce5f4a48ca592b37844f874ff3eff6da8b966d7c11eb205c08ca5db1209b6d08 +size 101198 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 b8d2ce8869..2ecc108318 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:3cbbbff4861ffdc4b75b9b435e898349c86d0e72167d1ff512a4ef88089eecff -size 52758 +oid sha256:7580ef7fcfaa3ab091e41ee949e01fb69bf8be346028dd01deab54fd234f4705 +size 52760 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 852bfc233f..e7f2974ae0 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:798082e7d988202f48413d76c0ae5c286fce2d3c22cd182a69f30aab0d6fbe47 +oid sha256:08770904e7962ceeb239a3f01965879be825fb03e91b1f64d04c05da82f09005 size 153199 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 4cdade6e95..53a292a66a 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:d3f2c9de8eeafe23994d98605942b910135e5be357cf16fe61adcac88d5f25a8 -size 57402 +oid sha256:7f055dc169ef143d1523069f7cae31f2b28f5d035499ad2cf8d857151e8d7654 +size 57412 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 5c905c60be..9025611a91 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:fc48b63a1e4e91a7d91e19fae3a7f1d419117b94b330b1f1ca2ec0761840fb99 -size 57430 +oid sha256:30b7fb609452de559ba40ab246e3edcd6f72a8bdfa1c5c9916cbac54ed89f618 +size 57444 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_11_en.png index c2b9c93351..5e90ff8c85 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f749ce126bafb5f3a3027cc1ce06897faddb6a052175956d3e6c7459c2222ed -size 60503 +oid sha256:b947a19d33a1ad68bb58f7a62b67b76085b1f3a544be763eddac8b8d72528a2b +size 60516 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 fcdbb89b2b..4fdb2a2e8d 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:109e604b9584e18f1955f9824c43673cef227aba704fdc98b86e2798ca29dabc -size 56561 +oid sha256:b956526349bacf951cfa7e5f5a74afce0c80d17bec5d7692d8c86ec92737947e +size 56578 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 9444673709..363b1f1c5e 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:dca6dfd32a2128fe68de26e03156742cbbfd3cb858f82871c940a693516ce223 -size 39171 +oid sha256:b3b712c21975f5950fb792375b8c89e2bf843a92447ca5333535bcb56b11910b +size 39238 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 9cb1f42f41..4a8bad0105 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:1521e7abc43b6cee8d783e395f9ab67295bfab09acfaa26f271f6583a6c008e2 -size 59831 +oid sha256:410e8ca3c14ee859b82ca1b2776d60090e776a0c6fa217219932495e39cbf670 +size 59839 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 c57fe9e758..a1fb441a3e 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:62dcc6e1b334cc706ce1520c08c4cfc730e112a9991283834b225ce0548f9e7b -size 55221 +oid sha256:021e70a6ef7da9dfff9666080872d899f53126a3277b06bd579fe2fe6e7a2538 +size 55214 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 9cfd8d77af..1d0595e4cb 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:bc1755d89b6ee527e81aab0fba75f7642f5b0932be2d61b0202bd6bcd5f60d5a -size 55193 +oid sha256:9356b6770498704389f5a065f6aaea842312dd878b6f05bb9789c56a01efd5a5 +size 55206 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 922d09a430..60c1b9256f 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:a90aeb879d3819506f3899d822f5f70e29728b9650f22aebbd307477f7d95f41 -size 54179 +oid sha256:3ab021225aab0cc36b9cb01370784bb1b81828f37f5d13a847a711159f407dc0 +size 54191 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 3e6af82589..a05435ebe6 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:392dcd73f5f4996b0f6780114e3ed4ed6ab408e7a694c17c9636b2a082daa6ae -size 58352 +oid sha256:ae5df6d7be531f90da25c7cad53a3532ef4765f071cd54c6eb3d14c0ef575358 +size 58340 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 01c7b438a6..c5e6959c93 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:d89ff85dd7a99faf50ddc167514c15f9f86f8c083e5acbf602183c01bf42db07 -size 58982 +oid sha256:7b435e31a9a5a28c0e725223e3140080c24437ff557d61dd03f3e9cc39d3e34a +size 58993 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 49a60f8466..cfc2b72c1f 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:0ad3a8bfdd7eea2b3ff9b24ded91f46fb3f9d9d5e2d169b99ccff42fee8d460f -size 48905 +oid sha256:15fe33b3c1d811213346b13aab230a9a52e0f173c8ea6b788cf3f692ceffb530 +size 48898 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 164a23e861..f60b28337d 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:5ca213558819b9265e82d3b22703bf1ea798e7bd8064b7d8694f4ee56ba40d0d -size 57020 +oid sha256:e1c3aea7221eaecc0ff7473bd0b8576b63a322a0a05d3b2aca6b26e16dcdc318 +size 57018 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 db0b54c574..2ec4fbb987 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:2c58e77b63f813bae7784a29bdedc19bb067b2f736b1c228bb146ca8e8f46756 -size 57068 +oid sha256:94835988bdfbbefe3fd60cdc616259e1b81d160a5506dd1308f7d47e6bff2113 +size 57067 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_11_en.png index 330b0f5317..068a91e6cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f4319d951caafd65c7f8bb574e450465e87a55d5fcf2c4f42177cc1494f8b92 -size 59771 +oid sha256:deb926f0dbe9b5fea3c3d764b3786d43c3b7d55bc801102e9bd70b1a4c760de2 +size 59769 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 51b4ed5c88..d89aa791ff 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:dbc4b083658c24dd574bafd3e66ed9298622f6c5ad0ee726c24c1bca6294217f -size 55881 +oid sha256:2e2e0a5bedc5ab474af492546271b8cbe3d691bc24aab8e213cd2fc222e62507 +size 55890 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 515b536adb..6eca2d3098 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:b4d9f0142ed6d83339bfadd1736a1f832bffed776f31f7995f0afdace690a2c3 -size 37300 +oid sha256:8289d23929280efa5cd5e688c64a8bdac5ef966e0cbbe331b9946a51c2703cfa +size 37320 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 5c69f0e415..c408525d58 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:9dcf745eec6b0cdf29be48bd1d7e637fbd7fb4d70a42f0c55f0fd53ad5d70106 -size 59235 +oid sha256:06dde04630aae068e327d053cfe918d92f99a2f72ec32d744f87846070ba362e +size 58950 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 26099d557b..2232efc8f6 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:b0a321dfdac5d5b966c223972b9452ecb8eea34d36be8f57bd03801399678f2b -size 51218 +oid sha256:12fb29dd5958796433b3ac43abc06fa490a53ecd725f4f29e8745636dfbee278 +size 51221 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 b377553a6d..f09c2c0e83 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:1e29e68366a29aab72a9e5e79e20e1a02e5869974cc63cfe99365bdf31e413f1 -size 54784 +oid sha256:4be592eb9fc9a7654b4282f230c0189883b2b08f4c5fd4a0304951a779ba9463 +size 54783 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 e1b9edef18..341042da55 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:45df1ecf99266ef43891a1dcf3b3d3b99c57d1b51179028589b74f83e942126e -size 53739 +oid sha256:131e25f6aa90e145176f4c1a04ac3e68af8ba0bbe88fe0762e4003560ed5f187 +size 53704 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 c53e05731d..e7d8813b34 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:ef712d64b0ef08669a3b6e87045711ac223155229f39ca0a915ab86a3a58d694 -size 54141 +oid sha256:769d3000c80c15ce0db6dac1156b7edf7d9aed79eb63e07fc05532c88f1642a3 +size 54143 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 1fa6a1784d..f38119993b 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:38ee3e41f6258befb1970113c5f638353b3f9c67a34fba581108cf92b5151e65 -size 58500 +oid sha256:2c885c63fcb4b29a22ed5db3cc8b8f8165bd3cd7856c6bf6ab431fc71b3d792e +size 58501 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 46f84f01a1..d46df8f4de 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:d3403d72f765aecaab595503edaa8959c2eeca65c2d2a23ca5b222a80b70c51d +oid sha256:e6e92b9bdadcda3ed66462f32519fee772a084dd9e331fb3138e1144d3921969 size 44767 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 789520675b..4586de39f0 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:b62c398c035a386bdaba180f3090e122b78131c741cd6fdb97ad533137b6a15e -size 5531 +oid sha256:289da5d5bd60210d50d3e398b4b930d9255eab079137fa8245fe3a4cd5c382d0 +size 5530 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 7eff425d13..b25e098519 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:2e55da84c46cd5d7f211f7323425f561b234c50144b8477c348015828b5656be -size 5386 +oid sha256:dbc78ee3adc4780bfdc8bac8192a7414092cc6412ecf18e3d24753769dbad868 +size 5388 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 new file mode 100644 index 0000000000..4586de39f0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:289da5d5bd60210d50d3e398b4b930d9255eab079137fa8245fe3a4cd5c382d0 +size 5530 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 new file mode 100644 index 0000000000..b25e098519 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbc78ee3adc4780bfdc8bac8192a7414092cc6412ecf18e3d24753769dbad868 +size 5388 diff --git a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_1_en.png index d712c96ce3..52b4aa94c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bd68fbd9f16f6d20d9fd8caffc1c766ec98c80cd60e33a31ba262241104e8a0 -size 306554 +oid sha256:c7b714d78970f7bfc32c0bb8a226b2896681134a6eb329c871c0270511e8e81f +size 306543 diff --git a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_3_en.png index 202144a2d8..5adfb27ab3 100644 --- a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b833e535b35cb63190900aed69d7b7e0e34a4499fde6a3cbbb93980d7d79bccd -size 304787 +oid sha256:171e41e96dbb6495c667a57047cf66e5059a19b8dba7d56e799113cd5a8690e4 +size 304775 diff --git a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_1_en.png index 06aa397de0..0f4c0c9b0d 100644 --- a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c37df776d96b70e3c1dcb8818022f04e08fde2dab52b731f4c3b5f690d925de7 -size 380243 +oid sha256:12691cbb9890570cb2081921224b13529e256feff1171d24e77cae11afc676e8 +size 380258 diff --git a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_3_en.png index 076ebc920d..89393180f4 100644 --- a/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.onboarding.impl_OnBoardingView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f59fc12655ab0696f8af05a725f817bad80b71f1b8f004e20ce40b963208e07c -size 365118 +oid sha256:ee7b3e5bb14da106ecedbe4827cded220d7222b68837c3c63ae3dfacd66ec2f2 +size 365133 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 2209424357..44d30ecf58 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:ca67b2bf4a3e0d654d4ed3186e5d70dbe82448ee2028b7a30b9c780e5332b294 -size 21622 +oid sha256:b7cc2cea4d546d18bd4fa7c327f6b5ca42d6021c01b3e699547c47eb3e00ede3 +size 21658 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 31937d60bb..ce00de709c 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:6e359f9178a033fea29952aad2892e3416ef6b4b7924ca085963140d35ff4d22 -size 21268 +oid sha256:2d96dff442cb398bdfbb12b597e368076d6ae1f0a45f0a581512d674d2affcf9 +size 21284 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 054061a5c8..f965bf20da 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:fc6bc3a1bed25b08233701dc3931a9c5057c17fd811b36ebcb8fcbe78f89fec7 -size 21466 +oid sha256:2ecd903f3d127c0bc14de833e0724cb9942a246677382aa69e9d113b2ff6704d +size 21395 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 58d00585e9..43c4d31bce 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:7c5581a46a24bfd40fb4284cf6c77c1955c74830d134d379caf863704e3654e7 -size 21018 +oid sha256:0a118fd6de3fec202a39728e2861272eabb72222f112dd4eac90733e2d265e51 +size 20983 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 59eed4a5cc..32abb7dcdc 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:8a2a1910e21509ebbaf5117e2abdef0dee6bb301afeeae821d0240a72e5ef721 -size 21538 +oid sha256:00e6514bef617ab044917486aa8d54e9422ece062fd956dfcaa6b52493d150fa +size 21492 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 9afe1b7630..34bfda7b5a 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:4051a95ba6a727fe0f688bd56e14739ddc617b9b3466b80c6bc60c90f91f4a4b -size 21123 +oid sha256:43a6f9ce99a7f261697b566f1d6876a01803661648d0e7493169aae851bf8af0 +size 21048 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 f3372cda75..382ddd43c5 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:c6775a6973259a21d6fa47666bbe134786795c4518b55ca2a7bd8aa84348258c -size 21870 +oid sha256:8e6d21979af7d84a43854f203712c4fa7cb49411e238dff803d90bc1a4d98376 +size 21917 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 c5ccdf3def..0f53144064 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:3fec8262afb8861cb2d8f00417171553335cbe12bfae9f78c022c29f44efba08 -size 21235 +oid sha256:eb84f215f779043c280cdef6af4976cc45483b2b1bb58d4da644c638dbb4cf1a +size 21258 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 0a39b8d197..fd20864e91 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:bacadedeeba30f2cbe00a85071ae5d8ea1e29dcbf6f4173b916d86cf5a7b0054 -size 21837 +oid sha256:d75ed3ea29e666aec482f6d22c49fae85a22b1957c8764cdb250ebd232ec6fef +size 21798 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 57c802e70f..f63e5a99f6 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:4149eaded704dad502586c1677d4ec8ad69741877a26d41e6b9c92e0ccaac938 -size 21209 +oid sha256:7b74dfae753ea2d0e130ebac6dcd437db38f167a595e4d744ed6e9f5a11c0436 +size 21139 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 b36cb7af61..d6bc845571 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:a46dfd4eee3d73afdd565295fedb75e5ff9be6b382120dae867218d54d95a382 -size 19623 +oid sha256:a9e2f28fa40bb703cac5a8375e6bcba2a175de8195816bf74710a23435d5a4dd +size 19654 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 70c00ed688..580fc18b9f 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:227c4abaff48d7c9eb6c5d3c6bef5eafd743a28a824cba0579ea3943e8bb4c04 -size 19326 +oid sha256:843cae615c1bba130f6a233b1872ec4eac93bbab796679f0f4925569b2a4f0bd +size 19348 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 3a41810850..40bb4ae7d2 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:0252970cedc7df470d12e7458d2bf2428e2e843124696e644542d7ac409005aa -size 19454 +oid sha256:079aafb2a1a4f6ed0e99a09694d515c419f9fb4e736dd2dbe4d245b00769305e +size 19392 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 0d02eff715..d700b3bbd4 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:e402c49b2434f244bf36b5f09b5a550e20280d18627b9624eca135d5288b6d4b -size 19093 +oid sha256:be12911fb0a0a129c5bd4b67c2130f244afca930bba4c882ef5953866b70b632 +size 19048 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 7519dc652e..3f242b4a96 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:758747be120863a6f2f88b257ee277c83d7445a41d71ed664a6d7920cfb011f3 -size 49252 +oid sha256:00b4b67348946d5568a47d435fb884984fcc53514a254c3e852f817f2a0c3d03 +size 49285 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 0322c5b34d..d9fa2df078 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:7d60ccff326a07c50e60e28f1158ea701226b92663befc25a68cac27e9e394be -size 47947 +oid sha256:cc3ce0418bf1ca1f0ee70cd972b2bda2ee1a4d30e3b8402311776e39906d7d10 +size 47968 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 374113b566..d7db9cb138 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:7d4d192e27e8f705f1049e63e6cd9759830526e43132502033fd198d9216346a -size 47244 +oid sha256:5b9e14dcdaac0e2250796a7049488b9b88282b3b3867ab6f442fe3c601c88d2d +size 47274 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 53fea58d96..829f4dec4b 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:58b7377a27c180c531168e48819e903554f1d85525626ab4b6d79dab7f322c43 -size 45889 +oid sha256:27dc8abf63b27ab118dd866eba21d18f7a6d81c6bfa61ceea10805f62d84e42b +size 45892 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 2d0a6aa749..c2e19a6265 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:37695b5ff4b53d50c0d2b278f9a41f961a98a2e9fed25ed239914963c3387314 -size 49142 +oid sha256:974d9d4a1af970fc64da8a9aa6dfec69b407fd4855eb643dd6b7a5c11b9d4be5 +size 49164 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 11cfce1e3b..a3f97b45e5 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:7f2e4dd94801ee28848ed04bf3c4846631359873e150e433a397c305b0a33dde -size 47887 +oid sha256:09d954a08c15111f23012f37e9e8c7e2978660fb21c9bb4e1bb765086203725c +size 47898 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 47722c0807..0bc90a7a37 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:0db7953caa01f68e2e9b182b58cdd4d02bdf6912ddae64a36fec0636092575b6 -size 46825 +oid sha256:ed44c850f2c85d219c6fc10d9f180f49edd14f1c44a8010a8f192607284d8ce9 +size 46854 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 94e34de7a1..dc5707034c 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:ba9520116a974c22c709fec9b90f7053664a4938e6a96f3b21fe340717c33a54 -size 45692 +oid sha256:e10183cfe96bd34339c29a1709a16b9a38f72235d484415b9f1c172d4456c798 +size 45704 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 374113b566..d7db9cb138 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:7d4d192e27e8f705f1049e63e6cd9759830526e43132502033fd198d9216346a -size 47244 +oid sha256:5b9e14dcdaac0e2250796a7049488b9b88282b3b3867ab6f442fe3c601c88d2d +size 47274 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 53fea58d96..829f4dec4b 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:58b7377a27c180c531168e48819e903554f1d85525626ab4b6d79dab7f322c43 -size 45889 +oid sha256:27dc8abf63b27ab118dd866eba21d18f7a6d81c6bfa61ceea10805f62d84e42b +size 45892 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 b3845a0dff..0fe8ad0b3f 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:87f388477415d917cbba86ad6c9a4439f75b129fd8586e81362f14a1d5270337 -size 44705 +oid sha256:28b14624d7237a5e4fc2fc1d8bd9515cf81d7cd6ab5dfbaa2685a6d6c11cc80d +size 44727 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 dc2b993507..63f6c4696d 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:a5fff6d8fc2f673d9a8de5f93dcabb84249c9db6badaff560f3ee2d74195981a -size 43239 +oid sha256:0fa1f068afa5135a9c91abd89ce843e5467fa40fe10347432b853b97050afac7 +size 43255 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 a2e90f7926..f4121d22f8 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:73d64e6f6fd0f979c1929f3f1118d26890e55c301031dd3ca0f64647429dd42c -size 9358 +oid sha256:a17ec9b8d9e1a2825ec34ba4ad803d3220adb462fde29555fef9fe069a427d31 +size 9380 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 dac28412c2..10ce9acb1a 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:e5b23e028c2df95e19ee96b0715b3da7f32ea15d7b50a6bd6068add0263c0c2a +oid sha256:ebf6ea8e1eb03c5449e9e787d97f5430a017fef821603b9be89e431bef0a5fa8 size 9081 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 6e1625ccf9..ef1c0476e3 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:b85dc08c15c268ae04b6a89d630587a600d1f32cd2fffe72902ac1ab3f7d398f -size 32057 +oid sha256:a88662a12237fa77efc629606c88e05b34a747461746787e82a76e3e8abdab91 +size 32125 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 e2c022d9f5..31217114f3 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:d1d455bd313f90002307e23823e14189bf53ebd0f0b1cfa4478514d2bb8ab7d0 -size 36440 +oid sha256:949f66c9744ce2416707e295552bd84c8d935a0c74c337e3e206be2abdde8d22 +size 36503 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 b3fa4a1e62..580d7c2a7a 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:ccff9b92e8cc76e5a5eb470ec16903911eabe26a9c42b4ba74a99fd81bfc8d88 -size 39237 +oid sha256:1f918cbb3c4e89c9d65387727e358255efa65d2bd60ec2f0bd2f4a14fa6ec5e0 +size 39236 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 5ad1a9fa71..8ac419c5e6 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:cc85c3e76d57bc1b46a427ecee9ca64c238c419a346a43cd52d3a6e9f4199ed4 -size 43958 +oid sha256:f2af79b972de4a3d5416a10fc95664b22f75c5c55631303fe53db51483602b01 +size 44030 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 1f5b915481..d2fa697858 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:3399b98bd9f8d3ba2175125656db8871ba14ec98f80595d7be95bf8438a33219 -size 26803 +oid sha256:4eddac17671b040b5574db6d141b95a077c1718e84f7df051bd36f383baa3cb3 +size 26840 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 011fcd4c77..0e8908a682 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:d59fb94b1c8430065b7e40b413d250e631511acfac88cb01c24cf63e3d354cc1 -size 117561 +oid sha256:b1b9862cf63a868854e5cd8977512a61dabbdd3e118eb3f7ef1675774764bb88 +size 117568 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 6cae2b6c8b..01b0349b79 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:23ccb6cb1ea3bc23c062760488e7ee2d6bb46a6f706702d11f910428b02a1b71 -size 32714 +oid sha256:6f435f53a1a4216623e749ece9d70dd569dfc78176e70f378cc850119cc96f2a +size 32782 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 fe5a48ed57..d9a763a45e 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:bc72e6d2bcd13e67155293b4d1312e75edc6f8a7143d820e4cb0c839f4fdfb34 -size 33753 +oid sha256:425576337845a3cf2b9a629c5831879d3327a1aa645f7f38ea9e50a9df38fcbd +size 33770 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 1a643f3ed9..40cf19f6f5 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:3f12091a5467d727b48926ab2182ae7def5f1a7820044613d0a15fbd4bbd622c -size 30976 +oid sha256:ab4b4a8c0e065efc757b4578ecca4ce6d97ab186533103ccb6dacf673dc6ee4b +size 31040 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 66ddd34ffd..ab358ef961 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:921d30810d6e1b6abfbd24bc7cef4b90916db0b41dccfd7de2298f81882fb5c7 -size 35224 +oid sha256:37f205328faf3a821e351f2d0b1d75b81fbdde0c86380a0efc5b58695f0c666b +size 35291 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 e92a4d5832..132808dc95 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:31810b258665042df6c5475d03c1697b846bb63fea2ee5378d482977a909e99e -size 36611 +oid sha256:a1248e0f2da02d865e810058d139699f4085d8566f90f0663fb1b6a9ca3967ef +size 36613 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 1026132862..39dd143416 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:fe35cfe537168054a634faeb6c10519b2d13b694d532b152728df588c2f3649a -size 42636 +oid sha256:324acdad67b430fe4d32b3e6483b16ae46144790f679c564ef2724f48a2ec841 +size 42712 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 b3ea2e859a..30ecbf7dd6 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:58a98bf2a38cb65d90f8e6181b70b673078830182d9f506598df5bda75cfdfd7 -size 26089 +oid sha256:d3acde55065227df4ca120e6990b3c559091136ec78e8853b7fdea37ed83b9f9 +size 26127 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 8034eed4c2..8b01be28df 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:4af7eec8cb1d89c71a9b2fe1efb28dbb956bac465e215ba7414432d7a37c272f -size 113942 +oid sha256:45badad3af021a1deca850ea74e6bfcd7531afff1f4af6c8e7dc38ed9a196991 +size 113946 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 fa4924465e..8b477e5fa3 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:6e66b8b86ecd2f3febc7121384357db22a0d0cd5ca5b6155bb2c02dc9fc43180 -size 31627 +oid sha256:1e4d8ce391d24a54898350c8e1b9a46f3d460f6ebe5e32b7448c958b5f4ccae5 +size 31692 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 f744930b7d..f69ea63f52 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:60f6dbfe226ffb43913052ba9c061733ab1690997425bd18ea3117d88983df92 -size 31132 +oid sha256:24ebc637d44904de055c0450d21661034b17ffcb514eab758cc163c632b1114d +size 31149 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 ac5893ce75..b03c95c661 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:da5c63531826c6f691b5d305cfef633421d6a8ca1dd112876c0e731e7989f20b -size 57145 +oid sha256:7f22dc77b9ce968a369254ed0e901790e6b921f5e4cd2a0b32d45500ad29d51e +size 57086 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 533591f3d0..bf2df79279 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:9946e1797e8470c7ad2525d64c696231b9a2eff203a92da77f395ebf47265b98 -size 60975 +oid sha256:c88afe41f0ce8e26eb7c4c8b46b6f31fea6a16eb211b0119e6445064780d3787 +size 60913 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 cd0cb25645..1baad77d32 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:8796b64a1159a5dab48640eb431a81324e3cfbe3ec16530e3e011ef3d1e66297 -size 55447 +oid sha256:1a04877f742eb3d0f4b19e8eec981910252c15abfa4cb35afb3abbee416b18d8 +size 55383 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 ccdf930f43..cbc653bb77 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:33a2ce240c280320741fab065d97bf5d04f70143c0c3b0515711685258f75ea9 -size 59221 +oid sha256:ad165e733d9fe9b74c5f3fe3d91a2162a0c7e972390b683b025460843b2d94d7 +size 59167 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 c410722f8e..3c0f9ab6ba 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:16d1a40f1236f2b0070c05851cfb5f1e73e420361d62aafb8ac5776e20b94db4 -size 42127 +oid sha256:f96978e1ea1f0ccf62d977e5d41e7036523304b6b42b27b82281756fb5546b39 +size 45057 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 441eca9105..c410722f8e 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:a56d884dacc6f73de25255dc4c0960e15968a6b9b89cfab858571d5f6c5a16e6 -size 59133 +oid sha256:16d1a40f1236f2b0070c05851cfb5f1e73e420361d62aafb8ac5776e20b94db4 +size 42127 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 3d8dee8430..8bc1cbaf70 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:c7317fdf96ff21fe516286aca2720c89390eab57c15336a4fa82afd5473d29ec -size 15296 +oid sha256:87c022f59c9a89829bea26a112445f829dc65025279a90f20e76ee884d23f072 +size 59131 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 new file mode 100644 index 0000000000..3d8dee8430 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_13_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7317fdf96ff21fe516286aca2720c89390eab57c15336a4fa82afd5473d29ec +size 15296 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 7374e09542..bdb44e43f5 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:afafd3155ea2199c3e0d566797337a1bb5c88ffdf8beac3274d91829ef91d44d -size 43807 +oid sha256:796869e88b376df6e40b6ee51d471cbb9ba19f308a5353a818eb182b6d7fbe47 +size 44214 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 3c0f9ab6ba..7374e09542 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:f96978e1ea1f0ccf62d977e5d41e7036523304b6b42b27b82281756fb5546b39 -size 45057 +oid sha256:afafd3155ea2199c3e0d566797337a1bb5c88ffdf8beac3274d91829ef91d44d +size 43807 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 5c76e11e08..43ceee5310 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:8dd44e2127936e2e01d99933a2f18e50ca760f614f6a3e1c3162e3387d4931ee -size 39759 +oid sha256:4f22b7825bfa438f55514a3d09696de34450c16f9d4481c4892be9c8dcb45191 +size 42486 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 121db75d13..5c76e11e08 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:399efdebf67b1c042dc105d6538ea4fb622314c883fd6d3899eebcedd3ff357e -size 57540 +oid sha256:8dd44e2127936e2e01d99933a2f18e50ca760f614f6a3e1c3162e3387d4931ee +size 39759 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 8e428f123f..9417e25f90 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:0c484008012b2d569c6d313823b4ea8c96521fb6a172d37ee1db11f6794dce62 -size 14806 +oid sha256:68eb8dbf6e7378bb088dd0063952b42fbf067e798ccf040fb4dc25e96f26cf40 +size 57537 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 new file mode 100644 index 0000000000..8e428f123f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_13_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c484008012b2d569c6d313823b4ea8c96521fb6a172d37ee1db11f6794dce62 +size 14806 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 5d2b2341f4..bc098d1661 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:8ddfa90c2eaf6b493ebc9c2c5164888716918c7b453c49d7653a0cd4dd69af81 -size 42092 +oid sha256:bc77d365ea38cd50d5fac90efb15a610b52a069cbb799b8bf0d9924ea650ab79 +size 41408 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 43ceee5310..5d2b2341f4 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:4f22b7825bfa438f55514a3d09696de34450c16f9d4481c4892be9c8dcb45191 -size 42486 +oid sha256:8ddfa90c2eaf6b493ebc9c2c5164888716918c7b453c49d7653a0cd4dd69af81 +size 42092 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 c13d3cb3ba..088d79a9dd 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:4a6a54efb3bb7eeb97cfa06995a199eb83a7e630fb1b631d7992b464e0b04d20 -size 37954 +oid sha256:e8a11e39f0d7d4c01aebed10642b2550079a673c3dea3cf192f44830b17e9650 +size 38061 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 ef6e64aa89..4a9df6a7d4 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:d35962150a8dc5b7d774af160a994182afbe2d5538e204b2545c02287897cd99 -size 37711 +oid sha256:59c09d903e8b914bb6c93da8948772b87b2c345b3455beca22cf2918bcef12bc +size 37814 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 4e534c9041..f3e157ca48 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:a3711fb587d635b28a398bb5b475bee16d4abdbf691d494348fe11e270e0624d -size 38774 +oid sha256:c7627a4b3aacdcec50cb60fd7b630f03e24b10ff11fb0adf31612d6c38ea72de +size 38855 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 8d27190ccb..3534b465c9 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:41b91c8a1805bb24453c6f85091704e609a01f83a86ca17979d97de4c20e4cbe -size 38800 +oid sha256:e22c2a0519c8c0d0051d94f21324eb019bb76ac1e31a599f1c74f26c9c84182c +size 38870 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 139444ef1d..4f17fe2903 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:d964de0d0cc6b2210690c99f77bfd70d41173f71893a2c072565101a84982583 -size 66203 +oid sha256:dcdda50ce353819cfcd87063e2b7232d9b6da727f2d4cabb59868ac70037c5d3 +size 66381 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 05e252015c..879a8e10c7 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:65a1d68b5cf2dc6ef6278f6bc2f420df0e53975f6e00492c924620c52e168dc9 -size 49507 +oid sha256:17e2ce7912116302ebfaf207172d40c28aa1bd38400c35aaa2738372c8032185 +size 49508 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 d9d0bab7bc..58f7bfe9b0 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:de1bc2159d3c9fe8ddfa2b1c078b66a40a839e45f9c33f8744aeaec58f5a238e -size 63800 +oid sha256:ee6b493921182340691ef43e5f4a8783831fb3bcd0daf4ca565458e46c8c914c +size 63884 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 0c38b343ad..462111649b 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:c0e182aba02a600b3be8d252efb3c3dbd31c9c607c8728d4bf6319b783d2d790 -size 46245 +oid sha256:4b21ccf4150c3b91ee3b3cb07e010438a978b7c8138fba56343a0b14208b5652 +size 46250 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 8ea6e41b0d..6bc15b8ef5 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:ad8e8e1de0e7c4b39760a7ad1336a520b87b2afec6c6919878345c9c369a9cd2 -size 97788 +oid sha256:14475290253a3a5adffc38bf1358d6398aee90b512dd9e444af88c71700a108a +size 8513 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 a636de0ff9..fdc89929c1 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:a25327e6d4bd3075391e6786ada6dfee82de05e6941cc3eb840438b29cc21bd8 -size 99409 +oid sha256:18076ab6a11a67d3a89f0cbdccab96a69f40acd3c473fad28681a5d1901799bc +size 26607 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 71266e3b18..41288de965 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:d80e95603b9172d239d3f1bce0a9aa579728b95002ff6b0f5e2f47495aeb1b51 -size 97433 +oid sha256:8ed1e4fc0de314df634235c21afcc6050fed9c3c473b1f2fedf365ce9e07bc38 +size 23436 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 a26c9f04fe..cb4c370495 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:7e61f1e76d573f850f3699c893e884a48ca3e9ff79e061c7723c5a66074180e5 -size 82773 +oid sha256:ea910fb367e278a2a88c99f048639e84629564e4e9186d631aafa49920acdeca +size 8353 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 b0dd49b0eb..fe70c0a848 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:fec53729278f19bc00c336919a71daa1ee64a3061191d3cb52a2929d7bef1c11 -size 84440 +oid sha256:25e8c52cd120b0fde6c15f7a31e35f6952f9e1fd5689b741fe029a91fef2cf33 +size 24775 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 06afd056e3..7769e911c1 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:8913b014d8f07a02b532e7a6d50270363f60c9f3cb59963ffa0c809a29eb4523 -size 83105 +oid sha256:51e05f6ead16d567da4c6b4f7e302696bd47e65705bfa0a3be16dc44ae15284b +size 21464 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 ecd64c1463..b8802ba76d 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:2a7470dbb61f069a133fbfd0de8eb1909f7c71d88cc26e42358d91c9cdde456f -size 13891 +oid sha256:dd65bc84aa624b3af6b055f07cac49b5779ac643602176be052770a85d1bf041 +size 13703 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 30d890117a..cc04b1b682 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:3a44efc28c8872981747255f8538e6bb60a804426e85d372a3b3bc17ad73937b -size 24688 +oid sha256:013e0f812dfa9dbb8114e06a502f244a02f5301e445ce39c9ab0d059c52f8af7 +size 24541 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 87e561ebdb..e45a56abe0 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:130f2892cfebfc0b679669e8eab88706aa7fa35bf9e24d88c62448625aaf0904 +oid sha256:96292b1a98c2d9a7f034cbde25d03a4c1ee0debf6e8a7b5114eccf0d6c7b68bb size 11125 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 06c93027e3..8b05387403 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:d58405ce69b7823d7f5c2da021b3f9cffc39335e1beabe543452e606179f9a8b -size 22409 +oid sha256:73cf6be0bd55e6c83888708176af33b9975fbe0721c4cce86799c547b9118593 +size 22408 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en.png index 47362fb9c9..67a16d35b5 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e339b7d5286e4793b781a6edf8e7b1059d0b90d3998314057eaf0b40d9a7149 +oid sha256:be4cf1bfbe051f838a3469309bc2bbf29d7c3b07be92d52c7b77f94268a02c3c size 13060 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png index 117efe3950..a54a62e2ae 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53b649b6aa79b687aa1a57d564e0fb7c2786dc62e5854a8cbba1e8a60704008c +oid sha256:2bd2bfdc6c1c597d6f9963eb657ab66f0d9c0ea42dc7d48cbb93d21b2933a8b0 size 42451 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png index d53f6a1ee4..d88d38f976 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53ad1edda2a1b0f3355f471a87a92ed9e4490af30a7f927d6b88d1bf54e8e4dd -size 37509 +oid sha256:a64c0a77ae970769a9ff0c1592fa291ebae3601eeb2adcf1059abf1fa8710f3c +size 37508 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en.png index 3d00319245..06f0038280 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dff355ad91d6e7d81dbd3a11822e57b28aca8dd87db79ad76e18d2295f9b7a7d -size 29660 +oid sha256:ac7b1872526ac55a505e3fa4ebf90922a56fb0bd9d4311dcd1077927935911d3 +size 29655 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 727decb1b6..22cd26e406 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:eb74a50f50a99ef9142cde77604a2b9a80b466fc0b9079b4e2591cf7c3896165 -size 13046 +oid sha256:a28b2dd77b83951727f520bba1f551d271c0ae89217453614bd0ca652b41d762 +size 12919 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 a118a76eac..ed2c359eb0 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:3eadf6c716c78a8913f36fa003e19ab863ec3413741e91212bad67b876aad9e1 -size 24906 +oid sha256:e2be3a7769ed5df69427b33025db1097ce9dd7ccf58fa1ca3d4eb7997543f824 +size 24812 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 80e14e8129..b47b425017 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:c18aa05e130d7e5d2d33ea3eb78a096656dd8625719a2f16bb39406c5319ee76 +oid sha256:ff9a4ca8777f52c24fe86979790c7f2fedf8becce0c0a5c6d896bfef926a33f4 size 10745 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 7813ea21b8..38e0cf9d7a 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:f886766fdefc45c8738658d3851b973bc12f703576dd213c717e3990a7fedc9c -size 22832 +oid sha256:f3ea5702dbc2487125dd3ce6c382a10cd67dff580240cc81f510a4bc7d06bfbb +size 22833 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en.png index ec5bce7d58..54824070cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93deeff0e991b3384f582e65e5729856b7bed4195a5a0329535c616bc5c15b9f -size 12665 +oid sha256:3ca09d0870d394875ec86e3e9b1077e64408cc86310ff50dc8943ff31762d9b8 +size 12666 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png index bdcd76b709..4070ccfd7f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e815198898cfd091260650f301121e26a70d3943abc4ef2cc0bc95394395c2e2 +oid sha256:693bc737b9fcc36a745cb816bfbedfd1fc69793bbd45a1bbd8a4fcf4ca9080cf size 43080 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png index 0aa06f43bd..e13d5c0981 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0da7a01de4fd1623c4acfd771f74e4a01b38e8227dffbe2c0076c56d617c0916 -size 37447 +oid sha256:89a681f309feb86724956b546a81c3fd2f8eaaebe4feed2b5a9ac64b2225ac4b +size 37446 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en.png index 87ec7712b6..dbfeb1c0e9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec72db9bd920c237d4919fa9c09245efe02019a789d4c3c7cf1c9d3a9a76aa5b -size 29028 +oid sha256:7e536a9f3a30c6fc440073cc5f05f4af55ce2d3e68f00295cd8a7d1302c8ca17 +size 29029 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png index d9479c2777..d6fe83da04 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4cf5881fe38c4d666a7c61d64d58ecc22fb82e50931857a79370c14301af444 -size 21293 +oid sha256:0bc95dfed8f189a439912eec63cc7eb0fbf729ce7757dbe4b7ef06e37c21d7c1 +size 21312 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png index 0ad86e2683..2fbd7c43cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a61566b38636c7f66d4443ddf42330b2123eb4dbe5829df561e18c85a13dc59 -size 26245 +oid sha256:c9fe1784c75aeb10c35fbd582c80ab0f389b6a61ef49060dde7d976107961baa +size 26307 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png index 81b4f49cb3..b59e43d03d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:822fe5f5e803509db19834d72fe7d1960cf0c8e0d53255f1b25bdae590277fd3 -size 19991 +oid sha256:4a06eb4f5c23cbf7b7a5da18074ba1aaafd83d09117982fbf54d809f2ce7ff4c +size 20019 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png index dac29e6155..802bdd3122 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members.moderation_RoomMembersModerationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae41bb5c48e710ad31e37c78a1db6c928028ac52ac2d0a8e4574ebc75497f5b3 -size 24743 +oid sha256:f4f7ee111d8966421ad7d2794a644150c197f0c089fcdb628828373273f5e1b8 +size 24781 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 bdaefd7b5f..7d81d8d062 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:57c93d6c2373777214b59717831ae6d4198eb50d904c6f22332c631b7025e259 -size 32736 +oid sha256:42c0b3ad98e83591ac2defcd17a17e4250d00b5704fbb9e3fde425e2990b4613 +size 32545 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 0c9549e7ec..e07d1a7cd9 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:726bf0c0beae74cfecd3c813335de763687642baf87c77d81d93ed9c9e536f0a -size 33028 +oid sha256:a60abe6da2ae9b7e2a6eb6ae3a8057d1476a8f76d867288436cfbd7a063002c8 +size 32840 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 4fc5b7cc03..77d18480f4 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:9ae24aafcfa7302be6403c1f3a9df6d996b7800c77ab0a011333e77ea7f277f7 -size 22231 +oid sha256:69fb66dd35d7cccf07e97135defc0dc46b9ff29ec33c6ed6b9ff3b6b0be5d873 +size 22036 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 1fdf12a4c2..a182629276 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:5a54b853c55e0fc1fa3cb9f037b02dad50ed50c9897ca2caa03dedfab34051a9 -size 31965 +oid sha256:daba36e47b9f2d685a7450265dba8abc687b8256df10d9c1445202c80345c52c +size 31877 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 c05799f818..1e228e66c5 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:d71db0947e09666739ca5e3c01a7c6b711a430d2a40e00cb55cd474cb42535c9 -size 32417 +oid sha256:fbf5e7155b878f39e3cc561c50b89323ac9fcef9dbc7364e62cf95cc0ad91e81 +size 32321 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 5e90a88365..61ce9c07e3 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:1df67dd253e71fe912c82fb3d7d5d6e4be3efd2dd510cdbed410671c5272ddeb -size 21072 +oid sha256:78370686e4fa83ed1f2951a7d71738531b09b3808c66729bf6544d5b2b9a6c12 +size 20944 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 9e8807670a..4ecdbcf85d 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:bf7912cd69d2ad680d885462e19544ee56452bd5d538a8019a39199dbf93f124 -size 44374 +oid sha256:2fb84f6f240041ba3af8b90e32b308f68e715c813362f2cb9143fa745a0e1b32 +size 44214 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 64ecba6dde..9627b16e6c 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:9f01dff35fb317a29f898879c6a7bda6b23ecc2daaaebe80abfc089b448f99a1 -size 11891 +oid sha256:2350a560fcc78a3d1b22cd235746ac03b46eee2912184dbbe62683540dfee2b4 +size 11704 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 64c0627f63..507709b1b4 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:a5197977035f27da4e4fb4d732ac52006d72b517261567d2efd6738a39270f22 -size 12849 +oid sha256:b730a39ec0ac14e8557e738dd13847b5bb1291713b0d013cf50563a1e0904f7c +size 12660 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 64ecba6dde..9627b16e6c 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:9f01dff35fb317a29f898879c6a7bda6b23ecc2daaaebe80abfc089b448f99a1 -size 11891 +oid sha256:2350a560fcc78a3d1b22cd235746ac03b46eee2912184dbbe62683540dfee2b4 +size 11704 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 9cbd2e472b..92d9db2f11 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:adb68fcd10b66e37f774560e59991bf6488043d4e1b66e6b1f19a648c90a6333 -size 7572 +oid sha256:d175ae95fed4ac24e9b506678c4ee1e235c3c8405915498f7f97db0764e5470c +size 7571 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 c10cc18a37..fdb10220a2 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:72dbe69b1952d3c2e00509bb1a5e0493baa30c0ef4e444f652f3fd7f81a8eccd +oid sha256:0db80941c8c981d3f66bc6cd9364f0f8fd5b1e7033f81da46cdffe478f97c748 size 6528 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 06aa5f723f..942808435a 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:6c2c9f8dc95c5ccf4836621ea4546fdad30091495b00d8207db8aeed9d0f5a1f +oid sha256:ddb463eff5c3174663e6543726671708cef04bb11c9194b20373435e1441323a size 24543 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 86a85de950..3c8281a03c 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:878d81472018964e1217c36708e31469a62486e1a913da26fc5a209731c4f9a1 -size 11014 +oid sha256:57ee28833b587ec86f93c685d716f0cce94b60e0752de3fc1a1a3d7ac05cbdb6 +size 11013 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 3dafa23bb0..abe89bd9a2 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:cd04abc2eec057ef2dbd02e06c3f0ecd8e66fed3f760f293af4bb86c91e031f6 -size 18284 +oid sha256:bcc0479100b1fba092a109696b548da7a1da26583304ab7273bd454def8046b2 +size 18091 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 17d7af8e53..bfa9afbfe9 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:b15475fbe36b0255b21a7492195e516dbf24298f6d3e40e164ba73897da24b10 -size 44429 +oid sha256:56e080464834b1d5e9cd8357e57cfaa78e38718b1d71e36310453d14af460e91 +size 44317 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 fddbe32336..46b47ed015 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:0a0aedac7a6fb0ed7d178e98bbe546a7176c111953f8d02c107e92d4fbdb6a9b -size 11179 +oid sha256:9bee4a7a63485b54555a203b8e4fc557e504b3efacb91d1c7c082647848c8c45 +size 11051 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 7073c1fb27..dddb67bec9 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:6138ec110a891f52f492d3377825708a7151d42d1f391a996ddc10a7f2624806 -size 12065 +oid sha256:871c608b761d8df820122d9d245ac037f71d227e7bc23f7fbe3402662ff05536 +size 11938 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 fddbe32336..46b47ed015 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:0a0aedac7a6fb0ed7d178e98bbe546a7176c111953f8d02c107e92d4fbdb6a9b -size 11179 +oid sha256:9bee4a7a63485b54555a203b8e4fc557e504b3efacb91d1c7c082647848c8c45 +size 11051 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 f0f400e37a..0fbe95ff70 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:e8638e7c07500bddc9c67480685d2548f0b50772977fee7565fb92ae72eaefcb -size 7504 +oid sha256:d174f1f8e77c9cd02506b487e410a7bcbf4d571f048f739d4f10582c72e682d0 +size 7501 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 acb4061713..228b02c0a9 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:000dbaa58af2f75293be0a3fed993447275582abaa33088b3f9c533ac4e0fec6 -size 6298 +oid sha256:000c36468af4793e4956a4a2a2be1867afefa13140219e2dd8b17b1f7670b6de +size 6299 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 ab59f1d629..3473f077b5 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:cfcb60ce2e343530c5344d9dfb70a6a562fe2fae942054afa033e9052de998fa -size 24485 +oid sha256:a6bb04b4dc4dfb43adb8ae45670f20232e8a3ba50c409c50a86feb96dfb00d56 +size 24486 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 605d9d0907..39750c36e6 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:b81f55a04ecf3d4c3f266d5e0b67413be226933816195307e830d081a2bbc286 +oid sha256:5694d2ee8d939aa3cc5107b7601ff251481fc8226981208b603507d407dcb12a size 10637 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 516705b7ee..c01e5b8a0a 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:93cd01b7fe046a90b49a20311941bb3a07e8d2bd71eb9335343f2c15713ce73e -size 17222 +oid sha256:e4b01a055e3e8f64b18d045717ee2d6c9795ef1cf2a923c0fe3c5ac26f6e9a62 +size 17091 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en.png index 333cfc97ce..3ece1582c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c8157834cb3fb5b9ab3d525e0a77c804bda007b72772caeb34be53a62095c6c -size 13539 +oid sha256:121f177c3f1d0318a81507e799af7a47d2ad88639165a5a5bcdc960e99aff201 +size 13359 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png index 2d0248d8c2..f0d82f9d09 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:984a56a04997ae8461dc43e8b7d6abb68016838264815aa5b91c1f8f1e3a9faa -size 49952 +oid sha256:e5c71623f182b0e2aac51c276d3b61f039997c3dadf6c7bd9de6c4f2dfa352b8 +size 49837 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png index c2637ff6c9..9c9ce4e803 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5375d20c8ae75f0c79ec5ff836eea360ed3af4ada1cd5f30db7bfabc3d696667 -size 66628 +oid sha256:326e774bb0420b4d55cca0014bcb8aac69f2351e58e756c7d63de3905f5bb6d0 +size 66470 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png index 7235f790ec..39c11d95e7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0d492629413bd4ff619cf46c291cb4597ededc825bfa9ddac09171b2a954d8e -size 60909 +oid sha256:ba30b7ffc1096fd5190fbf7e1881217dce20a5e0865800d49b26d82fd0aac0dd +size 60733 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png index 3721c262b7..402673d64c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:594a74012b30e9f1dafe04bf8bdbfe4a9db301920be692f0c6d5b151638ea568 -size 60847 +oid sha256:0fa5719b287ebb77a79900ffdec8793d9a86f2a07920f32c50924872609b09d5 +size 60682 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png index ed65ead313..35975f0208 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d083a4774130153cce24a64c1ea4bd3b9cbb918d486de0973eb62479f1e2612 -size 55770 +oid sha256:46cd3b9a7be00e4f41fbaab11e1cb6aa6528d6db578a84512f7abedf5d4b5492 +size 55610 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png index 8cf65f96b1..85bd84bb10 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d40487761c37e8ffd1e9ab268f27c15db6b9f3e60e4e419e561d22ee2af49e91 +oid sha256:13c8b71ef7331e86d15200b8b1979688b21337237bcccd309ce70d866f9304f4 size 12932 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png index ff2a810a70..71757e0f8d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30d46002f26d76684d6c14eebebcf27247ea53e6adcaf7ecfdcac0072760c011 -size 57638 +oid sha256:2d992de8f70372d03ca2e701310ab261c1f5ddb5864810071a84f6b17ce5f6a4 +size 57531 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png index e103bccbf2..901af608dd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8b59e43f446c86f6aa78e1a327ee1de84410a2cfb8db6504e5b0995a71589bd -size 60056 +oid sha256:0b34ca16979d6e496ec13cec78250eace85e17616cfa162d131d2c8f797c6b1f +size 59946 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png index 5b62c02b76..4ada35a715 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dd9cdc2340bebd48275cd0f9ef5abcfdcdd99f55586d7356be0d7b240813462 -size 51774 +oid sha256:3dbd48f7c11b0b5881eedf939654e50b37bfc349c28c3c0e93d5ca5bda0717da +size 51691 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png index abb4e70edf..023f5af795 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35e233bddf6480d217ff63ce7af4d37433e6cb1bee90a26428ed2e57adfc1432 -size 64668 +oid sha256:83a9e031d5b928895778ac073d4374863a5e8a6b0ac9d99fee0a95879a0421e9 +size 64502 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en.png index 24eb44ee45..e9fc088f1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28367b3884a7eeaba27b42ad23db9205a3ab656b87fc0c88f5fb4b6efbb73c41 -size 12796 +oid sha256:064f8dc06e6a027bb643ab0f050800f510deaf6a2624f35b4847384c68903394 +size 12663 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png index 73009c3a60..1b3fa517d2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eac5047f2c1fdc06aa104f494b36a6a1b1cb3194b5f8f3ebf85b7b270e8bc06 -size 48432 +oid sha256:9a00224f7aea8db03d01c0dbf244b90eb5d2d3f4289ced45cda874dc655fbac9 +size 48320 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png index 80d1a233db..f5c9bf6755 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1e8f0c5245fb38612fe136c7f5e81b2171d9fc4cadc90170eaa70a6e13f7b64 -size 67238 +oid sha256:bbca019f7bb7555bcfea4645ad3ec00445ec55a54cc98611b1e0d7f99bebeea4 +size 67131 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png index 2d45057f5a..06adaeeaa3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c99600fc43dc54482914609441c5e6f2ebf3df3a22c93c95ec025d0df8cefee -size 61572 +oid sha256:aa22afe652bae97bbe9e3504610f520e6fd7337f2757f79c39e9e0f6115902fe +size 61461 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png index 894bc933f3..0d8b2edc9a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb8bd336ce57bf8906d7c30142e3f7e1823ed53c197125ffcbc9675ff635601d -size 61454 +oid sha256:bbb5c63809d556bcc60b11b9c23940e26bfac377ed4a5a0d97971e060365c6f3 +size 61346 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png index 7c138fda44..4daeb638d8 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c16447c9bef2aedc1a0164313c8d0fa4719a63797ca0946bc4eabfddc6eb457c -size 56071 +oid sha256:17a15796338eaa5a8b7a5c7e5252fe2d9c392f2d0dd78ce9e0976dfd68fa6ad5 +size 55975 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png index 0e2092abb6..31bb7dad85 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41801b45373848016f408b2a91a4261bc5af86f5c53c97a6932bb9393e9754f9 +oid sha256:562dc9be79006376346ab1b2635890615eecc381e82c15b16a9ebf1855741e24 size 12817 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png index 87391fb700..8ae4205f0d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ef1ce4c3617f44e0c601b7fcfa9e2967c37383b9d6729defebf543a421970ef -size 55914 +oid sha256:2023b53d3a7099f55bc36a738506c6fab2910f3c83ca24a1647b6ba35c29f351 +size 55807 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png index 214c794cf2..796180be45 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5ce938a9ae304dc845cfd790a6d56ec862342b79ec23a38986eb3057b25201f -size 58271 +oid sha256:41c3b6a09bf3899a0a28ac6b9fc96b773687adeb40a4b11ab0f80dadc1139e1e +size 58176 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png index d3990081dc..1509868c15 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e5baea91836057ecffa0f1414ce08418a955ce4c1fd77e6c284779192af65b4 -size 51051 +oid sha256:24389189d4955f584fb1ed4b390e6ec829622d457ee7f3205b0104f2bcd90bdd +size 50948 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png index 74fe5848e7..c5fdad0d7d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.changeroles_ChangeRolesView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f8427c6786075496146988aaa114639cca599d6a6d7c8c6efc753378eaddcbf -size 64348 +oid sha256:971a027f6aaaa21b7d62af3f08b50eb7cf8369199076226ea92e1b4b30f74342 +size 64234 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 434dfd6e1d..300fd84fb5 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:7c6338a05bdb3cdd5f9bf9c394836cc23786b9e22b21359de8d6da84c6411a08 -size 39993 +oid sha256:397a452d16ac3e7b6b330d43997d0e187a0560653678c9d8a2a869ef1a5031ab +size 39990 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 e166379cad..db5ca16200 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:023265d1589b636d203b74a0700ab222990537b23a57547da2da6b17e1df4726 -size 36229 +oid sha256:c3c7680af60804efeb1322173b388ea0035d2c302083d6a8703f456f780c14c7 +size 36226 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 2d0ff397ee..098d1a5f26 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:e13e690ce2552b88b7f9d4cedb6aba7b5570eec7945748550c47e4271ef8fef8 -size 46691 +oid sha256:2f29f42ca6bc511fda1b9f28714a72ececd7dfddbd5e095599c50d2731e5f8d8 +size 46689 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 111068fdde..993acdaf6f 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:a4fef72516624bbdcaeb338b0cf30c756754b2a3fbbd7bfdda4602e50aa004af -size 39872 +oid sha256:458432a863e836a4ba372a55195a361445f1b40343de35f73d6b9c046e559a09 +size 39869 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 15e12b1108..a45ad15064 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:460176a43c2bc6fe210e1ff560a79e0986f1f5f6c5c23d5c8c63c03f2d4b84d1 -size 36258 +oid sha256:d7f447f78ef722067bba12b38c11eb11375da44f1f89b23841244bdc5978e888 +size 36256 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 2dbd76f5a5..73087c8d5b 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:e0df7c623da749f59347b46ffe9297d7398740e95382e2bcdb9c0f3826050da6 -size 37129 +oid sha256:50810036f7f7bd45d885a8b7698f2ec36d9fff5ed05a9535d9816db2b058c1fd +size 37127 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 ae78cc5e7c..8a259ed040 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:eac83791261e74129a8c4edfa11eb1c0be653bae7dbca8603d2c20b20ba8f42a -size 44237 +oid sha256:cd25f197a4c9b55de3d2b7a2c1d980bce15411fdc7e2baa0981aeec5974dec6e +size 44234 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 820a77980a..72dbcd7e09 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:1e6bcbd0e53134bba8a2bbcc39bf870f3c6319b549983a952f50ed7713c90bfc -size 38779 +oid sha256:1012d38abcd0f6fbf786394015a2dbb838254db50787c2bfe1f7a323b2fea5f5 +size 38783 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 72a7b9cb93..97cc6c3d80 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:da3ae47e1e6922c1a251e85b1ca89fe57d10493d3c90b94089bcd61e507c118c -size 35113 +oid sha256:f5552d1f31c61ed051cda154d34702bd0820295658227b4dfb90d0a8dab2ec5a +size 35119 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 4c30a4ea12..a74fc67a3b 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:5f2d0bedefa832506abd130b32ee55a49a50ef201fd800eab93149ee06673315 -size 45091 +oid sha256:16f5ddab43cfedde191c0e1d0f8960a64cf35df5451b0eff3f0f0d997ca1f2d9 +size 45093 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 3285d110ae..2352dd636c 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:5bbca59a14d847310716804ff82e21ed82e271730f128674deb3a57300a59be3 -size 38597 +oid sha256:3922657bf1a4e1a968adf7d81859f815fdf5c3f96ef2665b0bc1ff2517f2381d +size 38603 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 f76340a610..416bdffd89 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:d16c36a9afe44e84fd960b01e5e5c73f7b905092753c35a47cd8681e88c21df3 -size 35073 +oid sha256:ed64b87eb0d1d55feba1ba53999758c5bf0c36159ec394041b2502b1d8155614 +size 35079 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 74ec8b77ec..f7595ec90a 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:aeb6939c0f6a79e23ee8107273ea9ff8d6938daed979da6b4c83ba8c64678d6e -size 35350 +oid sha256:2ef251f40075ce6aff45df130925a6614490f1b112ab9319673f4f88b7947b6e +size 35356 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 c07a586edd..2ad93a6ff5 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:67bf22a9478e488c607cb29fcfd8669cf7ecaf4d11ddf973c4ee80013c7f3cba -size 42152 +oid sha256:9ac928ebabd4928553db085b3f7b21ba5474e13e1dddb02c5f7b961002135cdb +size 42158 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 9d3238f0a9..0fc1a60d56 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:53023f46260a8ce65cb13fc22022b48d8730234c68ab270969d3df5ea3792595 -size 40759 +oid sha256:261830dfcddf53a1961b4751c283ab0c9a484fa76b7a837c593c7b166f3bab67 +size 40807 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 00cf1f20b9..b72bfc066b 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:a8077f68c48890297ae599d97b6f813e01b7be492a9c927503d056f9818f6c77 -size 40491 +oid sha256:202520b34d9cd7901f8dbb9cf3565798b6eb4f36ffa82e59291cfd6bddfafb75 +size 40554 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 c1ac92f83a..62c7eb8945 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:6ba118648bb2587492b8381417b2ea7d125e715a1a047ae46feceb28f257af5c -size 56973 +oid sha256:0d2b0531644641798cce4f3bdebd26f5db1ed88509e8ac32d4b069330cea7105 +size 56986 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 d01d523dd7..aa2e3edae9 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:9d4218aae68741cf79d5a82cfa507ae3b32b41d489fe2b857124b86da22ec2b2 -size 37658 +oid sha256:ded39713ed9cd61bc41ea15cd68cdc86bfa9f0d1a465ba01ed638600917e59fc +size 37685 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 ae8039074a..46260b152e 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:524260d6f2607404731478d238ddee0bfc478665ac368806c7f5c79e77575b48 -size 36256 +oid sha256:2dc502805f80bd9b5a7b53ab6fb363ae79872088de84a697cba359459a96f8e7 +size 36283 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 b75f7f7440..87954de95c 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:03d18008c9821362f0e3cb4528dd4edcb05abb340102c3792cf82d58dbcdbdbc -size 46527 +oid sha256:0ad867132c7983b6c834cc346d3b3550ce8cd524dfdcfc79b55abfb6f429e315 +size 46566 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 d01d523dd7..aa2e3edae9 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:9d4218aae68741cf79d5a82cfa507ae3b32b41d489fe2b857124b86da22ec2b2 -size 37658 +oid sha256:ded39713ed9cd61bc41ea15cd68cdc86bfa9f0d1a465ba01ed638600917e59fc +size 37685 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 b3cadbd101..d17ca65dc2 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:e7ea383d4b4601916dd6c91ef851e8caaa5f60c61da12acdc84696cc06b6b3b6 -size 36651 +oid sha256:41771246d759e509dff4592c2f02365f6b707a9d7dd90bc6970e4a19c871c220 +size 36678 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 2bb840bb1f..dd992a83d5 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:436f788ed2ad56a71e9dfa07b148124a50f5cd2433ec0bb29ec78f7878b87150 -size 39388 +oid sha256:c4685e5469677c5dcb98aa56fb24406f6d6200981a6dae2c554dbbfbcb5fce11 +size 39472 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 0c8da7db9f..6e41300970 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:22d27b6b968014623823134af13e6ad472239f5ccbcef70d7161e14a6338c16d -size 39133 +oid sha256:58f7bc6b1a91a406aaa4d0c3d201a13c04ba8e95e96535f0020e8a3b27018529 +size 39218 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 7cdf882032..1aab51af91 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:ca1abbdb9f265f6372e172a23024c667df4ee16897dcf5ba3d86891dae255dcd -size 54515 +oid sha256:290a0f3713257fe54a5343f53d6cb57316465f99a7efe6a3ed1be30aacc97f48 +size 54560 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 47b3cd02d5..2c1604c339 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:dd1b4e134aa359718b9020f2574f3f196d765c6d270a1bd66abf161559d6e44d -size 35720 +oid sha256:5066fa74fba74868b7ffbe440cc2844e35b2010d09f61755f230fcb5451f2d01 +size 35777 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 590a83c514..e5564ed4fe 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:959f935d5ca63b0787a31a0d266aeffe6ceb843626020292a3d4712894ee4bf7 -size 33781 +oid sha256:c5a2b01f493f02b323fba0972099a7398f980d9fe847907bd7c6b88d9c39686e +size 33841 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 575908f128..482885fc9d 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:9115b730d9fa662ef734e2504e01363dc11fa3bde23a383f9f739b0d31a4d836 -size 43408 +oid sha256:d2260fdea7e0001bb15f59ca1d55fa276e1792b8bb3a6daf8ea0e39fda688808 +size 43463 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 47b3cd02d5..2c1604c339 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:dd1b4e134aa359718b9020f2574f3f196d765c6d270a1bd66abf161559d6e44d -size 35720 +oid sha256:5066fa74fba74868b7ffbe440cc2844e35b2010d09f61755f230fcb5451f2d01 +size 35777 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 d35a7e6de0..a6749d7fea 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:b513c43ded972345fa14d766c1d2ef380a8acc498e42d7322545d831c744625f -size 34273 +oid sha256:ac340eb0c846f9e1383db47af0d608f4aec7e5d64d9f1b88bed537adf377b9d8 +size 34335 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 9054ab5852..b271223fbb 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:d0d5f98545b38207b0b61cc055112524b2b87c9969b41246a90d46554143905e -size 28628 +oid sha256:baa049800f4e7b6ee28c7a29d509c629fe3a18119add2fe7d3bc21d259e196c4 +size 28627 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 ea9fcab7f4..318f2a8d04 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:c963f28503909ff8f965910922cefd82d4873904cee34bbbf4189b3a29b2fddb -size 30877 +oid sha256:9ee8ec155e26c40f305012f32adc07bb9698e21ec174c2bcba307376d56b0c0a +size 30893 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 bd707d64d3..95724fd002 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:8073fcc88a65c07810373c176f790ebc1f41953294a36b44a6d21bd102482d4c -size 28075 +oid sha256:ecc533896a45756b21e14302488735640dfd3c05c695153bf196f7c15779ac8a +size 28079 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 1b4e23cb3b..1133a655e9 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:3f3e187b8590ec247fa2640db033fb34b8f8eb8c5bfee6a4598514049cf87da9 -size 29909 +oid sha256:9091edee5c475dec3a1e8c4d43df4502a194b226156a333eabe73a2a66dba6f2 +size 29913 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 fe561de9db..7d93456f15 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:f883df9f8dd09fe8ac29cdeb0358e1b1f82fd0bf4f3b00778dcf2a436dc332a3 -size 42513 +oid sha256:ef3963ba34268049e7789da66537d6665f96eb21b457b43a8efe0e891091e6c2 +size 42558 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 2d1351f34b..45060526e5 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:ec59f34715f2bdcc1dc1ca9718f05366aebf7973a027b261633934680f85d9b4 -size 41133 +oid sha256:9e74736e0b74aa439b6b9c1f30a6c1113c006b43fae4e37d1ab4fcbdfe9c8d8d +size 41178 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 5da528088f..0eb4dae55b 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:6cb196faae29f31e36f7e5a2f711e71755dbd76b0d7b2126cb79575628bef1f2 -size 40103 +oid sha256:ef7f2914fa93578d9d6728218ca96717830a8c834fe02a1a951edf26b8e1b620 +size 40147 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 81da08c8eb..b5b52ace64 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:d17ebd1e51a73a8e213f792dc220125c77bc9143c9327bce9d25cb5573b63d89 -size 43278 +oid sha256:d11fe60d6a61d82fc9cc260c3e7c3cb111a9de39077be3d8931a27ed56790a15 +size 43324 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 a61f6a87bd..5cf485cdad 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:bc0c8d01736a19447d3e0c810fe594578b3cbacd5de063a7e314df8da3b81cb6 -size 41415 +oid sha256:c581feea23c6354d449bc490ea7e4176199ac23d0fd01c8f46c63a172cb704b8 +size 41462 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 e7bb5b3e8b..8a9c9f8cba 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:0c36a541e25043a7c85d2aeab088005afeb84b36354e8231ac10dcbe95c9c278 -size 42216 +oid sha256:12e6a06ee9844b563f161b5b63fc0324f4ae0f36021c5356b18d1816be951ffc +size 42255 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 a9ae3fc4b4..5219c4fd6a 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:afc35cdc58f53f14f4584dbed43744435aacfa6d3ddb0b3b5f0e0ab7e9a7cc16 -size 42799 +oid sha256:f931a31185cda248ad108ea34dc194e92fef210de4ffdf4af87226ecdeaeb386 +size 42838 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 142b78cefc..a1c75392d4 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:79061fd2609f0e61df7af26919d68f22b78864ce031a6fa2f397af419601c367 -size 32253 +oid sha256:19e8a08a8f08ebdc0112d0d0ce71c4ad437e8cb68b3edabc771fda0240a1a331 +size 32298 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 5d7829db3c..c69e15386a 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:879817d4155151a61cdf642b91ccc344f38bfb1edbf75129302fd0a115fc16d6 -size 34378 +oid sha256:d44d3943052aa85c32f8a2c9992cefd6d88387cdba30522dddf4372ee08bca85 +size 34452 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 228ea7493f..31e5c679d3 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:984798b0b880ee29f4f328e25ad531d56cd992f3fd3771b46d94fcbe1c1b9d8e -size 41626 +oid sha256:9a00ca851a4929d633a7954773a6cbeda0f9c9759ad5caa079650f4ba8906bfd +size 41669 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 56a3c5e8b6..dd28afa5d0 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:fec1fc0c0932de4f00d7146120708380b64358123b97a227458bfba5117ef40b -size 40488 +oid sha256:727ef08512afda965b6b683e17dfd8c961db5b42627d188592321e15136193fb +size 40526 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 28dac2ec2c..8999dc57cd 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:4a8c62eb5deae233cce822d39d85f2faad5152b84469c84ace57c042499d4f51 -size 38727 +oid sha256:7c30a2a0da0d843b5a5a71898b1e50e80b3cc34ee4c51d46750ea9d3c862a2cb +size 38776 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 cb1c1afa9e..7fc3c8f14b 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:6fc7dc287c5da18ee2a7f8fdadf91285f6e9ed7a8328515cbfd6f90b21642794 -size 42190 +oid sha256:4c93a313a86c53955ae1e984cba66a665cd33a69ef614fe8f3b2d056d72d1ddf +size 42230 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 434fb525f3..a297ea3ef6 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:58349ebc2291b8fe7daefd39db44983b6b10712b6d56984745cee8b4e1fbe96e -size 42429 +oid sha256:cce7b1931c362d56b3f83eaee9c65adb365fb78874b6ebbb2fa45ef5583394ec +size 42515 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 c530fc7ff0..34d0a8ab7f 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:9c8ed00bd704382cdb1b12507f54c7fb258b0b15f95cd376a816a457dda95d40 -size 41413 +oid sha256:ae99f8cdd835b2815593fd3cd1bf43e6832bbedc0b1da54b6915554bbaf00df7 +size 41459 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 f4788aff68..047a305f89 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:a04aa114cb44b5aecfb9a5520bb1ba88d068c3722ba074858f0e1102f2d38766 -size 41436 +oid sha256:ee68539a125af30437f037ab80ef079d0ecac30166634b73354f9b7a9aface01 +size 41502 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 b83dad80c2..33af1d3aff 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:67ca921d06a4017b701ebcd3703eb58e7032a54a6e1b19fc02808fbaf3285a00 -size 43501 +oid sha256:83fdc0011dd5a27018ac3c9c3ccf5ad50279203a2b1d97420cfc98c34af2bf2b +size 43530 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 eb62c634e1..acfd6b90f7 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:34237556029910293162d2ea98eeb9bf55f8393f2439d152d0afb7a7e40e511e -size 42032 +oid sha256:d422f8a5d9615d881de18fee77234d7313190bfbd973254ea2d0ac60bdada0ad +size 42051 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 3a8e618495..05e60d141c 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:ad2042b9223b191b36cde6e0bfb1be25babcc24566ff80b3c23acdcfd5906385 -size 41016 +oid sha256:2d5396974b5a8e478405d08035c40786590a6efb135c1bcf4ec0199575c0137a +size 41037 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 f55cfdaba4..58ea3faf04 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:4d1ea80b3990d355b42356ea6ed8419705a4d8174851869742b1372f5d815648 -size 43868 +oid sha256:70726bc196658a63526fc149c70d5f7c78d704b9b8cb53c074b30b77a9ce9295 +size 43888 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 e9f7c3b7e1..a02ee8bec9 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:3ca66de9f5bbedce4f33c86710cc6c63b96ff872ecf8514cf7dd39043fb6ba0c -size 42379 +oid sha256:05b3c1f4a25dd83be44d7aee93a1db533c61073dafa8e206ed4cb6c82544a2db +size 42408 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 8916044198..10c1f45b5a 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:5bf22a62baea13b14d736ec6166401c73f9f8704f8436ba9ca631ba05e3425a6 -size 43179 +oid sha256:284014bb1d4387f44357b63cd2b04d7b897eff6139b9e2605ee08bd6479d07b2 +size 43205 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 f03fe00b2c..8e08c96318 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:1627c9920140b37b99dd482ce8bca5ee12882cb90ff1968f66daf60837b7cf53 -size 43790 +oid sha256:d84d206905b8c0c644cdf983d9c3bc4be94fd940eea8761b5821f054b466b998 +size 43814 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 90569a9e7e..3c68a50c60 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:47954db34506ba2560550d94cbe2cb1278866ab2843e34f92f8e1ae535bbd173 -size 33090 +oid sha256:b0b836a02b653de096fdb8d28c979fb54c87f96b3de467d29799566ad621f197 +size 33103 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 35db528295..201eab5abb 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:30aa5d530772b143947ef620736128832dd47c8a2692a7bfbaee74ef66107f02 -size 35273 +oid sha256:3778b13a40fc4316ac6c577a18bce57cf9ac25f278799f7ba21f556866b4d000 +size 35331 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 4e678941ef..9df0038481 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:82670330ea89664b305e223c23489e2746f645c5cbcdc33da8f2c629aeb9739f -size 42505 +oid sha256:7c1b80e6dcf863e6767feda0c3b6f95e4a82d9d8b65dfd9da8fb6bed14b29047 +size 42513 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 bf9d831f5e..421de4eaba 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:15c1291fd3c6547285a9f62b5c6c8516fbe714fd79392c9738531cbcf1d97997 -size 41450 +oid sha256:e3606411efc8e32d105407a4fa64c8064d504a4351f7345d6da6a2c3aba34407 +size 41468 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 e177fad5e2..74b2639d6d 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:a4882133a2dd3460a7567e01de5803d502199c2b79b72d6f66b1a8c6df3021f6 -size 39498 +oid sha256:009bcd58fefa935298c1a6709262f3ba92de0be347ba6b8b85a8a543643573cd +size 39528 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 42ea2bca5c..40a5a042f5 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:787945a9d09f405aa8ae2efe88b40cf61b07e21b402e6d842723378ff7d0a001 -size 43242 +oid sha256:8c166932412c42dfb0375bdab7bf0c19ee29fd8a6776efd4f341a4782cc66de4 +size 43270 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 99bbb99d55..ceddf674a4 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:1e3b4b5ab82004736abf58e29ba4db7f628e25c8344a782263cada5544ae3748 -size 43528 +oid sha256:5093c5bb88bda55b2f8031f2097bd6e94846fe9663ed897209d06e92186dd51e +size 43584 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 8e8cef64da..d9cbfcb864 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:6edfe665ed9121e32914884f32fb0801918b26574e04c2ddb07a0f2e66bef567 -size 42449 +oid sha256:93eae9734e0a31a6cf8bce137a88339596b683e9ae67ea2c57205fec509e2a68 +size 42478 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 39b22edf33..64202f3dbe 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:35a491ed5aba0d99f1db99019f3f22d09c74a4dce7693e95e1a356a0353df626 -size 42405 +oid sha256:4e8f2b4fc5d872014032d7e30878ccebc283609ad21f3142bed2487151d3c93e +size 42453 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png index b8d5aef04a..a35b0147a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6edb0ed0841360dcc889b874c890e4871e6f3081dca788b96a83e7f308675a0e -size 41437 +oid sha256:62a7e346397466a3a98bdd2e3dfcad43d65471017d40aa719c00ac2032ff9509 +size 41231 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png index a93b056ebd..398a201bdc 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:266d8de099eeb551bc287647611ffa3a9cccfc98f0db70dfd4b1edb9a658857f -size 49761 +oid sha256:abe3d11ea9f0088529da6651526650a1bd2fe34335da31f043cfc8b1fb945597 +size 49428 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en.png index 53b2660d98..f3954c778c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9300cc18f5c3dd823760571d95e807d0305ba7989269ba42d2382c6e9f83f023 -size 41147 +oid sha256:d079c9142b483482b12e2e55253bb02cf9ff1f37b95d455b1887d54dbfbbb9b0 +size 40941 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en.png index 14111764aa..3bcc64f947 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_DefaultRoomListTopBar_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2be7c170ab82578255aa92658dda00449ae4987dee552ce5ebdd1b1bb62394ea -size 49422 +oid sha256:09c215a680812b95b07501aba343331932c53e8988d13b43e8f3296d84664f63 +size 49089 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en.png deleted file mode 100644 index 575c6f033d..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd29991ad9e550e5f1e997bffd89bd26d68a97a11213819e6f646c594deb0a32 -size 37054 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en.png deleted file mode 100644 index c34aca9a8c..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0abbd15a76d2b3b6a4d66e2ed7df83f1cff94ca03c38b7b2e4ca1e4075229ce -size 35731 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_3_en.png index afb4d8677d..45eac04de3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2e1602992580c5336ae1bab2789a0eca4d3a05a50299830278443e9d4140639 -size 18065 +oid sha256:8cb7674ebc4568690f73f34f0db69a0a796ed743b4ccab4d44ddf72bb73a97ab +size 18054 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_4_en.png index 95d69eece5..44466ff3f5 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b00197e010e15b647faba1d6db9cf7e8a1bf7177814e25b07d7207554810107 -size 47084 +oid sha256:e4f4a4b6f6f577d8e6c7f71dc73615d806ec605579bd4dc845aef0e9dbd38b0c +size 47073 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_5_en.png deleted file mode 100644 index 333bc47ff9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1f630cfee64876a7143dff8720de4166248607d2c1247c857ed35290d08ab07 -size 73216 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_3_en.png index ff857e8b98..4a05033e4f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d00a6257b8cccad2668952edd6f6646fc8ed21ce7514ef41e7fff4c14a40da25 -size 17672 +oid sha256:df52d536c1cccf61d5aef17fb4781ebef1482138a633480713df3324b1449d34 +size 17684 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_4_en.png index 3728c0cf7b..291da5b229 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c20373e670c4066fef2ca3980ef3d4080a34992a8735bef9a3a87ea095309852 -size 45540 +oid sha256:d1ebc9ff9d939f9ac1dadb7c2dc187df3de32d0537cb989729c0facddb99f2ca +size 45552 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_5_en.png deleted file mode 100644 index d6d3773dd5..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8dfdf6bf277bee38b0e63dc4da4c28c7cff394419486681c4ddf8cff20bfb34 -size 71739 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Day_0_en.png index 7124ad7d50..a261ac0f14 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37dd70368b6ab4bdef8ee33adbf6c662bd887e46ab1e959d70d583478707ea56 -size 14531 +oid sha256:327d939634c2a2f19de767687b82bc24db3b421dcf75b5cc8560eb36bf2e693d +size 14362 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Night_0_en.png index 0fc636b2ee..cc3a974e2c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.filters_RoomListFiltersView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77d7a204d2ad405bc620578d3670948e610757d43eafc5609b2d2bd7165dd449 -size 14302 +oid sha256:14d141f1501984a71449239951e63c34fff21c1a4187e5044b846efd6b817052 +size 14050 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Day_1_en.png index 164a9bec81..c5b1ad5f52 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d268304343069be162f6b42b9824d4396ed4de57441713c504d16a1b973e390 +oid sha256:b78675518441fb2bc8ca97c6dced09559b0c36bc13ae7d2764bb6ac6f75fd59b size 19161 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Night_1_en.png index 237e0d111f..87b09db862 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.search_RoomListSearchContent_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3164a91cb3a713f86c6d758faba231f75081acaac23a2768820b283ed367e4e -size 19286 +oid sha256:00ee9795be1d55cf8411f8092e8b97e703bb0d0ed01e32dd9ed97b7c54a2e581 +size 19277 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en.png index 84abc8eb8d..f329086404 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcca776ead6fb79cdbab438c3c1f0267dd4560f04db2f0c02891dfcfa4cb744a -size 18967 +oid sha256:e12a4d0611f4cd286afe1fecba2e8998995fbad463caaa05dce9475b298d040e +size 18973 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en.png index e40f7db29e..9c33ba1ce0 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07df8414f35edbe82325919ae607253bf5b26642f2640bea71e4c8c7cad9d8ac -size 20767 +oid sha256:902990e5b54b9e53dd1b8ebf8a3739e0772411c34027b0297c8e363e75dce138 +size 20772 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en.png index 5e01c6aa35..c65254de68 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1db476cdd2e0dece3e490c44e245a16fc0fd0f4ef1c7fc8ea798542fac3c6cf0 -size 21026 +oid sha256:6361b17cacbb8e41211a385cbb3e66b5bfa7ba8b5710b76b21eb679357cf8a08 +size 21029 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en.png index fb612df2a9..4be348ef79 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d345c2b76a5ffe15aa4d793c9e27d0ab6935ee10cb27acabb2d94929b10544c -size 18259 +oid sha256:749b47983c45b07ad9a1ce72ae31371d39c66435cb1168d3e1ea4c551f9516fa +size 18258 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en.png index 69c9fbf012..c51578a597 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f6801f1ae3432f24b013f8e3d8bc002fc23223e49471ae1bb22f30c9468cc9f -size 19976 +oid sha256:3b922fea887898cb032ee881bb397b0897a8e5618eedfc5263bb8c6df5abf290 +size 19975 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en.png index ac1cf4eed3..29e86e956e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListModalBottomSheetContent_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8349c065e9141738cb4b737ca0d67b3dbd91ee94935c249907c520e9303dafc5 -size 20177 +oid sha256:cea937451ef247ba0e2bcd4bde84bff258f620682df315a6f1c2c4bb975ccd3a +size 20175 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_0_en.png index 845f5acd9e..b3dfe3db1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09b8dcff40d9231cbd5b81db4836081046dba2bab37d9b4e7bae49abf7debd22 -size 82933 +oid sha256:a7b0dc90002ec59917ed0c64dae785088117c5aca61961c3d71dc7c05d2fa72b +size 82238 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_10_en.png index e7e953fd68..ca0f363c49 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edb52d5fc252ee719f6aec12faf98b8976eb9a61992dba510c06386999975ed2 -size 105988 +oid sha256:20e6d5a1c7218304ede990c1906ec628593acbe57a6496b98a2c1fe9c87d1ae3 +size 105294 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_1_en.png index 845f5acd9e..b3dfe3db1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09b8dcff40d9231cbd5b81db4836081046dba2bab37d9b4e7bae49abf7debd22 -size 82933 +oid sha256:a7b0dc90002ec59917ed0c64dae785088117c5aca61961c3d71dc7c05d2fa72b +size 82238 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_2_en.png index d165a8c1f7..ca51b8eef3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e398afce8d17e333d7f33ed134dbc1de6651e525f72dff0980827df2609b5273 -size 83578 +oid sha256:765619612593a9821c31afb6268259890d9374099f5e26ae9897aca09abf06e9 +size 82801 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_3_en.png index 60e909443d..a4e5a18c5c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cd473c052b15a6e24b9b6739533cde3df2a32a43b35a4336ae3c8c1f6ec424b -size 62223 +oid sha256:4e5a824bd3d89bb853630704d5033404a093c830c3230a918ecbb13ca8c3bc8c +size 62048 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_4_en.png index fb2fffde1d..e7a86d5b09 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fae50917d9eefd54f29b79e8ccebba27dd5aee4058e0bcf54aef98faeb5a5ef -size 61973 +oid sha256:e1ded2f89fe73b0f695b097b47a2461dbaaa76ad15f4d359a8c2f47173913af7 +size 61795 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_5_en.png index 79c31a0f5e..43b441d3f8 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25a9019442b40f99ad0085c97bf20e30fdcd43e1b4ac64ffc7f59ae13c81f785 -size 60217 +oid sha256:4a0eb6c87e9d565c7a21d6a9ec136274f5e75dfc467010935a8a5cc63933c672 +size 60038 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_6_en.png index 96cd13c035..114ba675ce 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85925c39a59d3ceca4da5234084a3218a33670a9e3fbd3121ef601e06fb93297 -size 100367 +oid sha256:63f8198b96e49f9a29dad22ef2249503d1528aec874599d9daab3f8634d662d7 +size 99704 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_7_en.png index 95582e918b..2bc640fe3a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0762f1f181107fad31c233bb1013cf82c6de2b94500e592609fdcc43e53a5807 -size 46550 +oid sha256:660e96d8c627d8f24bbfbc150a3e2b7e74f6819e7fbaa581c5872f544ed9685e +size 46034 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_8_en.png index a22032f937..6e0088ee14 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3fef8280fdce4608a30e24063699ab99bcb55865b2df51b070e2dc0eafce23a6 -size 41271 +oid sha256:f65131302fab3b0ba710528947376b57230a74731aa6549473998c30f4e07f6e +size 40681 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_0_en.png index 5dc5152a67..92d58a36cd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc64620fffb86bb5bcbb175795ebde2b84c18e6989f99528046b1ab14f3c9005 -size 89396 +oid sha256:ca1e0f43d447faf770ee7aa4f443f3a310f520c9437cbd5baca9ac7ce36d2aae +size 88613 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_10_en.png index 3bb6183058..19375d3ec5 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ee1b7d094db4cd00af34d1ef79c6e71ed61cec585612c538a0bc870c64b9966 -size 111814 +oid sha256:4c93289bc30c3b590360f916a55a86a5cc98028bd2201cb410f329de85ed615c +size 111059 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_1_en.png index 5dc5152a67..92d58a36cd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc64620fffb86bb5bcbb175795ebde2b84c18e6989f99528046b1ab14f3c9005 -size 89396 +oid sha256:ca1e0f43d447faf770ee7aa4f443f3a310f520c9437cbd5baca9ac7ce36d2aae +size 88613 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_2_en.png index defce1a22e..f7edb97045 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28ba0acc4ef26efdb4bc2f18c1643a82a180cfa429302da9df3ebce73f3f6552 -size 89287 +oid sha256:d7f9c804e0f2b75c84a99081d33d12c46ef2aed62aaf044ec1f957f728f586b1 +size 88564 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_3_en.png index f60bb7648d..c685c4fc18 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73adc32cbb8a372ff22cb7bc864ad09371deae3bd655081ca184aa6647e43943 -size 70656 +oid sha256:874fab965a108478a8049c93d3ade9d7eac5d2fff44adc91f06eebffd99d7e7e +size 70380 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_4_en.png index 37bbd14e58..f3274bfcaa 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9388d2a63d46c890b462135a524a2bf7821e0dcbd2814de4523925ef6225fe60 -size 70413 +oid sha256:182892a050673f4cdc4be1562d2b05ace0c9d6fe6f4598942e218879b667d9dd +size 70137 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_5_en.png index bcb954969e..c05ce5235e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cb135e79b92c2c6ad8e5b7a2beb4819cfc1e01d3000da6d400b7312205b7c7f -size 68644 +oid sha256:de8dd98f70665a8e556e4403df748e52518091bf08b9b18e5f65b2d7926f3d05 +size 68343 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_6_en.png index 3543bb4fb2..48835abda6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49097acd61396b5190aa1820c61d826b04738dd56acb4cdfb5df5b04c486e961 -size 106227 +oid sha256:8d9f42109a12e450a13d1166f7d7790913e1dd847cd44f00a2c881d825cad9b4 +size 105496 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_7_en.png index 6ab0b8da39..81c7db17ae 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e339f50db6e8b06bdf5a26559827f92f5a9fd2f20bce4a45d4edf5d45e071b9 -size 53790 +oid sha256:6be30df0d8f5ba0a57c720bcc16eefc3a5b7dacfc8115a8d47a42edab3e63e82 +size 53250 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_8_en.png index fefb0a3731..66309e8b71 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomlist.impl_RoomListView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9496a4dd417cb64c20a1d53fb27f9f567f0eefc8c0ad428a9c6c4041f66eddb0 -size 47845 +oid sha256:1c6dc3c0c72d1ea8a980f393d7cfe2c9e0392016c8fc25b901817dd077d8526c +size 47265 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 7366550a77..d02c579fdb 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:2159965425d13676b20c72d1fb1578a708a79b6386ea4ccfc8b8773885f24d40 -size 66188 +oid sha256:2e965d5398acd512547749bfdf62dd4fb7d0b5057e97e132583bb35884072260 +size 66205 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 7366550a77..d02c579fdb 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:2159965425d13676b20c72d1fb1578a708a79b6386ea4ccfc8b8773885f24d40 -size 66188 +oid sha256:2e965d5398acd512547749bfdf62dd4fb7d0b5057e97e132583bb35884072260 +size 66205 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 13ea28e242..a80baddcba 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:8fadd7226eeb9132a6848635011dd31057e5f9fafc959476500efa4fbe2e907b -size 66699 +oid sha256:b4876d94e3425249746c7d2e313160e23161f6d97fa7cefdb9cdc067098ef16a +size 66715 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 f70930fbe9..140ccb8cd3 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:960b59b8ef1c33887e58b367333e5e02d8db33eefc9a4d4919cee81ebfb75dca -size 40032 +oid sha256:cf7efc840872b727a6eb7226f2d1133b16eb7edbbaf5be52a3da942b718c6cc1 +size 40051 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 170a627919..bcf2df6cfc 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:a9d9919426c607a37e2c42c9c1f11fca097c40accfe2e6b909eb583684aa973b +oid sha256:7a643cb467b7387849458ccd6f84c7c800aac6b1054ae53b751782b4ecd148d5 size 63709 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 170a627919..bcf2df6cfc 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:a9d9919426c607a37e2c42c9c1f11fca097c40accfe2e6b909eb583684aa973b +oid sha256:7a643cb467b7387849458ccd6f84c7c800aac6b1054ae53b751782b4ecd148d5 size 63709 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 fa16bd9643..8879a9b5db 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:1af579d0d2544971386704109c6332febdf4bc4e6fba79ebb17a7b8b3b0ebc83 -size 64253 +oid sha256:3396b3b1e11fabf41f6fb193e2620763f88f1ea8a3364df20b4b185661feae4b +size 64251 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 f6e6d6966d..6fe7d9c74a 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:b84100531df03f407833672b6ae71f0532925e5c9e65e282417c3af1fab8b390 -size 37412 +oid sha256:9a268e7609ddb0cd23b41d5931af896373ed82f2dabb6ef34841428ad7cb558d +size 37436 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 a99b9983d4..524da3cf89 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:a45c0e66b8d59b6de1098c045bbfb569f2b89cac7adcdeaf047f0e86bb59fc78 -size 31000 +oid sha256:a59b21a075f8fe8c3752c92c91741c19024555c5a691b4449e82113f43abb33a +size 31009 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 ba8b461617..461df5677c 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:f0c54496802024e69121e25c1cd3511d75b1075311f1c423cd3af104f07b96af -size 41809 +oid sha256:cdbbc2b01bd3101a37d9a03d3004c5da061302bffb6daf9d8163440ad039f64f +size 41817 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 b8b51abc53..1ab3444ddc 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:8da1db7454b4c44e819b11843463efba938742e978ed8766a0f21be6b98e5457 -size 41982 +oid sha256:aa9fb2c97f38fc051ffdfe16d1a396a1ed124505718eea4129c37287146ab764 +size 41994 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 e692a54220..e15894514a 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:23880297a428a6f8e1a9159ca6303e7de95a2ab977c4c81545dd9451c3b1c446 -size 34954 +oid sha256:9519aa6a3f40251e0731fd493f5b5da576d6f5c728df1e9467810ecc252b8af8 +size 34941 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 4d0bc5abb7..152fed673d 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:4bd36481fb2c487f4f133ffc07327400a18a40c8bdd38faf123f7b68f7486148 -size 30168 +oid sha256:00c8ff5a2adebc3c09c675eb1d98844a4f6f6825c2a4b8b7dda44349d531d063 +size 30171 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 98f6f11dc1..03a3e243ee 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:090e8fde4c17b3373b2263ef3971926f512ccc3e7106c50c6c6530d442f83c0e -size 40676 +oid sha256:1dd9e4cff5ac7956d5d252f05c7705192ebb2c5b7a3a51b8f6f7e93cf3b2b6ea +size 40678 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 f8935973c7..da98ed73af 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:fdd1b95451a1665f67510f85f719d331cd860af37aa715f099eff6e7eb4bd50a -size 40551 +oid sha256:9df69deb26c63a8adb3f974c09694c2211558e504801b7a1050ba06a37a56758 +size 40552 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 793c619c48..788e7eab99 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:99af78be552d9e5a676bc24235f83357d53210d2c312f60435c8b28cd89b3827 -size 32532 +oid sha256:90508bcb26e46c02968956c1e5dd28e9cd36f29c165ba9855df36602482335c9 +size 32544 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 9320e7331f..51f0a43fd9 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:89135aa932f161844b79ef452bb27e2f5bcd19aa9e7cb19224c719ab948798f5 -size 27769 +oid sha256:b638c18d6b0ec1a98611628702711ae6fba5e159096c2d6c47c7449f4a7b1765 +size 27789 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 0f0176fae1..be22dd4721 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:c02ce7bd87c240ab7cbcabcee98c6ac16db46351185ea97a032d52b09b479e59 -size 27095 +oid sha256:f01961ffbddfee0ee9835e423846130120ef12fd9efbf41d1545f7d29a5e5f09 +size 27100 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 0f0176fae1..be22dd4721 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:c02ce7bd87c240ab7cbcabcee98c6ac16db46351185ea97a032d52b09b479e59 -size 27095 +oid sha256:f01961ffbddfee0ee9835e423846130120ef12fd9efbf41d1545f7d29a5e5f09 +size 27100 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 93c6c2bcce..31770ad19e 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:65b6d9fdfdc3adb0b0ce567e1561c677f6562043a6e9e2a3b74fd7318b02ec0f -size 39500 +oid sha256:6243c5048c83b61c19ad23710488a18a6fb5c6f101e141ff411c5544b5ac8c64 +size 39529 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 e433e7f7fa..99c296d0ab 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:e7f56cc2df34363c65ad46025d2a22189fbf050183c29ae76b30120f879a1a62 -size 26855 +oid sha256:d2c88a36bf2b4dcfae0ab02961c28cf5db55780bc4b68bcd7088e20493068d81 +size 26893 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 9f24d1adcf..f3772fdf7f 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:379cd0a7132bdbb92a6a17962da378b7b44113be9530fe75304be3318ea2c129 +oid sha256:a50c384d6d09f425be559157b8adf40da17103a19d98162cea9b4d59c4d820bd size 25128 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 9f24d1adcf..f3772fdf7f 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:379cd0a7132bdbb92a6a17962da378b7b44113be9530fe75304be3318ea2c129 +oid sha256:a50c384d6d09f425be559157b8adf40da17103a19d98162cea9b4d59c4d820bd size 25128 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 b8253e844c..6fee730ed0 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:41d1e2bcc7baf2b813a6cce22d238afe8f68976b3d2c57388aa5b8e4f02de59e -size 37733 +oid sha256:c7f8676894fd8d662c92ad01a6ac5998ef2197f489a04f7a7a42400a22a52025 +size 37780 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 dac97071cf..c68f98b47d 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:c1a55b39ae7912929b064dc31b62368a38db30a9c1d4dcc3cafde7291c54d501 -size 69035 +oid sha256:9416ca672e6c8c7717cc7605163ac3770b54341acbe93a8d78b26a6a73d73fef +size 69049 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 42ae3b31d3..8514956582 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:eeefa70fdedbe04a2ff87608885296d1feac62d00127c55d4560b33be2b1fddd -size 58606 +oid sha256:edec074dae0baeaeaafe0e64a8dcfcca24a1151faa9667dbedba97a022c277ae +size 58627 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 bbb93822e3..57411bfcbb 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:41d5780c17995aa5016187671d7bd75060a243437d31828657fc9bb3724046d6 -size 68019 +oid sha256:05d35e9dead958735e5bb8974560bd688258491074eed2262a9aec22669efaed +size 68014 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 097e3bd596..5e7b562a93 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:95760704db8f3a289dabf59d7b63edcc60ff7d558c74228d055cff17cabe6e8a -size 56742 +oid sha256:ebe663ca2ead6eb6a196ceeb99eadc9434eef40aeb2718b4ec6e5945c4ea08e5 +size 56768 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 ec2a773363..b47f61ffd2 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:2299427647ef9673a68b5235bc3503007874d0570324a17d3c3ee40a5e581af6 -size 42671 +oid sha256:0529088a7a492c6b89cc847b9b94758d5a7e2bad1f3c4957357f127682c24c3e +size 42678 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 7e94c40141..dc86dd34da 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:0a011821df73e73ac3ec15caef2c6cff228cf0e5567271164b655aedbd4755bf -size 40228 +oid sha256:0bed0b9a8c3f871af609ecf20d775104b4712ba944be9641f442e3f2228359d3 +size 40235 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 7cbb9c3fbe..985895ddcd 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:b71e77d68b21262c0dc0731a4bd4a62053ab94f5ae3ef7ac27b29154cfe7556e -size 56493 +oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe +size 56501 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 7cbb9c3fbe..985895ddcd 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:b71e77d68b21262c0dc0731a4bd4a62053ab94f5ae3ef7ac27b29154cfe7556e -size 56493 +oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe +size 56501 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 968c091193..8ca4fafeb2 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:0e8a2209d43ad778815d02edbcec99b3ced0acd0a672d792ce862e57d8284cba -size 50309 +oid sha256:eeb6b4d6b8ae5e34c9621302dc04bde9086d3857f1928d360d16f64c24e8bb3e +size 50287 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 01d621ac7f..67adf637d4 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:1220f0136cf5dd3558dcd08ff7f820fac4395b4b35fd5b144faa65ecf01ff620 -size 41305 +oid sha256:63a4ef5dd8981a98a5f22acc6bd14324421fb1f8653a95ba5d6b61cc18f70556 +size 41307 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 e69ddadd5a..09e0036644 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:b538d064bf3efda30bc981e24390e65918e3ae570f13b1329bcc17e55e4216c7 -size 39020 +oid sha256:8b88199e33cddbead264420a0d311cac735d3413a44f5da2596fbcfbcd0f5343 +size 39022 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 cceb41304b..3bf6a1df65 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:52cc26ca7c7db86be00075dcdd39ac364339c0b462edc529c21f17187fb878c2 -size 54642 +oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 +size 54646 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 cceb41304b..3bf6a1df65 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:52cc26ca7c7db86be00075dcdd39ac364339c0b462edc529c21f17187fb878c2 -size 54642 +oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 +size 54646 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 329f84b0d4..b10498328a 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:5b44778596d0bc20352464b19d8ac13c1da3af8ba3bd139afb8559080e73d98a -size 47561 +oid sha256:24fa75a0c3fcdc535bc96a3bce8dc2edd9fbcfd9cb3663f7b454394611bef94b +size 47571 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 3b466b3aa0..02c00e06d4 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:86dcedd7d1fb23ba10eb8b3e1c5d7f71331334cb98fb88bfa2a1fef0fffb3783 -size 44053 +oid sha256:6490f8a55b9e942384537441004193e483e48a30d8b0973273e7ece2cbaa5338 +size 44061 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 5d0f2b097c..b3ed7af9f7 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:bcdb036e2a7581e69d3b658d16bb26e98aa27156fbafd17e9da15fd103158299 -size 41819 +oid sha256:718353933652ec30a06b023798ba255bfca64f35562dd0412811ce68cb75bcd6 +size 41827 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 7cbb9c3fbe..985895ddcd 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:b71e77d68b21262c0dc0731a4bd4a62053ab94f5ae3ef7ac27b29154cfe7556e -size 56493 +oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe +size 56501 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 7cbb9c3fbe..985895ddcd 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:b71e77d68b21262c0dc0731a4bd4a62053ab94f5ae3ef7ac27b29154cfe7556e -size 56493 +oid sha256:6cdf434a3f63224c6d164f6e153d846b26644b270a63df01808ac9577883d7fe +size 56501 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 968c091193..8ca4fafeb2 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:0e8a2209d43ad778815d02edbcec99b3ced0acd0a672d792ce862e57d8284cba -size 50309 +oid sha256:eeb6b4d6b8ae5e34c9621302dc04bde9086d3857f1928d360d16f64c24e8bb3e +size 50287 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 cd6dda7370..d9c031190c 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:64777bafec80f98b0b1f9b7e05ede31036032b97808d52911ddd9045d83dae58 -size 42794 +oid sha256:51bd324f466cdba9316c90aa5dfbcc9225af4e139c5adc808671fb65e370e0c9 +size 42797 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 d6a004275e..b10a2c87fc 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:0d98ab21d3ae8099bd4f458c6422cf8d91a7405b45b1a41cc91fef78ccaf9475 -size 40658 +oid sha256:de5132949c86834c08fb49e8124b3326e64827297abe8ad9befb5073e2f06ab0 +size 40661 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 cceb41304b..3bf6a1df65 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:52cc26ca7c7db86be00075dcdd39ac364339c0b462edc529c21f17187fb878c2 -size 54642 +oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 +size 54646 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 cceb41304b..3bf6a1df65 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:52cc26ca7c7db86be00075dcdd39ac364339c0b462edc529c21f17187fb878c2 -size 54642 +oid sha256:05e2c93413dfef1dfbad559ea4a7321ce3cec076d05d448e28474bde66e3fff4 +size 54646 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 329f84b0d4..b10498328a 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:5b44778596d0bc20352464b19d8ac13c1da3af8ba3bd139afb8559080e73d98a -size 47561 +oid sha256:24fa75a0c3fcdc535bc96a3bce8dc2edd9fbcfd9cb3663f7b454394611bef94b +size 47571 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 c023c84990..4cddd8f758 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:8e74c751eff5f2b168503e6f47bdab6fd57d9e88deabd469e1c39507734955d7 -size 55945 +oid sha256:ec003b496dd46394a0d7e261ca7d1f29c67539bb342ffc63c70f29429a4c9383 +size 56106 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 0b421d7058..508765ed60 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:4330b8ebfff0bff2e5bbcbb358141040bd6b786a07eeb821dc2ba2ff24e0dbd3 -size 54974 +oid sha256:04e95499c071791b6abe8f22c29ec81f21f92b913ae24965f6455c8bcff3ac86 +size 55164 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 7abc6e9d3f..1296c86341 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:6312b78386b2fef7ba615af754688053c3ab9abcdb441fbb824307694e8af99f -size 28945 +oid sha256:f41090fceca5845f88dbbc6b983e6330ecd3b86d2056ba4584f1fca26305bb0a +size 28943 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 35fec3118e..bceae72d32 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:3cc6276ebb7179bfd9c8fe56716f286d57967c1e4d75e7265bef04e990ad32fa -size 26945 +oid sha256:0516c0355081b7b2d745ec46fd160fd566be224ef7d350849c9990a8c6320563 +size 27018 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 3d1c83858c..359cca7a84 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:6697aa15bb8f4c8381c018a167947464b3153f98e0a3a0a3763c1ef87b6444d4 -size 24247 +oid sha256:7e9d94a7be97f1953a119a933084cadacd7dc6a049b334ec74e85a5bfe1bdc65 +size 24291 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 d736101794..630ea68a0b 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:ecdb50791124422670f3ddcf18143379b42a6e14e72bd8eb7625e2c54452c7c2 -size 36472 +oid sha256:f20c32a85bf93f25c51c18b79adc0f8237173dc9fe0705570634adbcc94b1350 +size 36484 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 184bca3fdc..623baa9c2f 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:f970162cb615188c0d4f9841d521ff8e8190d8f3343c96715b6ed311669e803b -size 30433 +oid sha256:5cc7bdca7fe74fe0b16ab23eb4866b3af5245ed762c74a1edba087070cfe32b8 +size 30448 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 fdb53559c8..9d8367f230 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:503932aeb8ee7ad412e7fa87e0794597aa6564998f280b88f66257431ab8550c -size 22473 +oid sha256:7d4a1c91d475f54974a3c1dd8748522995fccaa03236b35f1bcf9f94ac24ce14 +size 22500 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 4203c40a0b..ab96c44623 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:4ff5e674b594c87a4ac6c1d1f296a1225d251e8a5882521ec02880dced28981a -size 26545 +oid sha256:dfc7c5d99c0d1e5e0194a5961aac43efea94ae100fca0249f6b00e20b47cbb09 +size 26565 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 6d59710436..7ed764b198 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:cd5a1deaa6f393b9cced7404a4a6ead9ffc346e8a08428fb9ae76a1a3244d400 -size 29916 +oid sha256:e2f9d02116554413601c8b11fb75581f30ebb6ce5b8ade2a5a62a0aa4ce04705 +size 29914 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 new file mode 100644 index 0000000000..8543427ea2 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d2af5b466c79a8ab9243308dfc036c81c4c6e32a1ff4479702835a9259fcd1 +size 34961 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 20083453f5..96061cad5e 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:da14f6bed942b8a6e464e07ec6d29891749ca8093f5cda20cc7e304205cfce26 -size 28022 +oid sha256:f86dd19d8056f16ae1a5337c49f35d420f2b83baafb29360c8c07c3347d5a93f +size 28074 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 1306d4e00b..50419932b1 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:a066ee27ec789680aca81ae3e43a67e7d96d6320f59da9b5e131d07ccc7b3dd3 -size 26046 +oid sha256:46d3c77fff43081041fb952fe9c8ea733c5ec164ca9aca548924d3cbefb52369 +size 26131 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 ea22c51e8d..4e6aeaef61 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:e9642867b66bdb1005802a5314e03ea33dd859aed63a882a974f71a3491fadb2 -size 23329 +oid sha256:63f75139c00eb5da98254c176fc8b4ed291cbb3c1b2581b869071cd6b435439d +size 23374 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 cac048bfc0..db4d01fbfb 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:de705fbfc801cb60742ae5fb2369e21904745e6bfb1b1c4cdb991383a03dc6bf -size 33684 +oid sha256:7fdbd16b4e78f890f60668fccfbe7af6c6a4f5ba22af26e9f3735dafb13e9d8f +size 33700 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 b7c9931727..28ea8e7526 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:707670f3d2b717f8e5426a7f01baed95fa659e865e7b811a38ff4e03d184fdf2 -size 27884 +oid sha256:79f2c2bb7772dd91b37351e4d1e658155f341d83cb6d496eded65b0b543fa2b1 +size 27898 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 06f67e89cc..e5a8848f0f 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:d5493e7c638101253d4a43b957a5b96975ab99baa76bca5eecb65332d3c0b801 -size 21830 +oid sha256:9bad99fce2875f6ac00fee3d09434c501964519ae6bb2a6ae24864e496cfc25d +size 21886 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 467ddef32c..2e9d6040cb 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:66be60cf12dc3ee2f5eb8c7341759504ed890058d93d2085c9df87ae04cf5f20 -size 24357 +oid sha256:4acb962472308c94998b3bc67d71a6a69b9bad0294461df374f7e74dcf703328 +size 24379 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 5234341ca3..14bbcdb78f 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:138b17fb048934acb059487edc542ef007fbd4c80bcc958dddf1f933b66340b9 -size 28892 +oid sha256:a409716052c9c12c963668098943b8f286e41d6a10f5639d11b7b464cb9d0c3d +size 28909 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 new file mode 100644 index 0000000000..c7762a331d --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2938cbc17fb7fbd45f5b455a76e18a5ed812e779d622add70bdf84c46f17c93 +size 33487 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 06fb695f99..e3185fcbb6 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:f18cc4f6c04a59e1a5d51a091efe66bfa7525e2fe229302174fe40fefa00cc28 -size 14026 +oid sha256:35c925ad33a54942643d723ccf8f8f258688c91779f2dac6141102cc11d0e48e +size 14022 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 eaa3b34f51..d3bd7850df 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:d82fea268b5a9271497a3b6518a88c757e6ba6f62f4a8990491351509383858a -size 13974 +oid sha256:8e697173ada83d646673ca72c3731ae73267766828842d90b627d9efb4e0c59a +size 13973 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 8928f95830..6e3fdb2bd3 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:f781e977784d8bfb1bd84947519f31e28106cdc036c6dedc406be92fdbbc0c54 -size 40077 +oid sha256:1da0edef645c5abc391f0425e3a1f8719c1f061f66517b131a81cdd59d2bd04a +size 40105 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 f55850de1d..47148f4301 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:bea78fb1bb813bedce30e5b13257892bcc23a7d6eb1a404d24e764337568d6cd -size 41596 +oid sha256:2473606524b856b4afd81e4a32b29c7456788746078387fff280f3c8eb577396 +size 41622 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 3161e69ab7..c12e74814b 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:c238637a0a3107cfcd98230ac52fad7779d8c260b0b97bf30d231cd5493a944a -size 46453 +oid sha256:6a8c359687b3ec5f038602b9022ef3967af12c6632a59c56bd10fecf7d92233c +size 46457 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 21f135beca..fbae9acd3c 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:5d8163be5e84aa851df9666822a4d9bc7a40d3a99d6fa8498243c256b729d58f -size 44724 +oid sha256:b6576c0b77984df1930f0115e1ea90e6720f0fb5f500e186c591f0fd2eb771b6 +size 44729 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 7e3f0d4fb7..683805307f 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:a25f85925a38d02a65af4fb342949e9545d3e5e19012885f2c3aee4caa8b8f7d -size 31535 +oid sha256:90c8e131e639b6638a75468d41a3ff0107822e3450c6edbcc4d9eccdd180f6ae +size 31537 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 77fe855b76..28a80f269d 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:81c559a9661b3fdccc8deb444b897f9a45b33de0d4d58367ff021f92202a17b6 -size 21883 +oid sha256:3fc2ecdf5b8880b67e9ee9eacba9636819396236325f6ce28f0bf5755fa5ae5e +size 21892 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 1c316959ed..376d2f7449 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:d3340a2d29e6c1d86f5ec5664179cae9501fcc95381311174d7d6b45b15af326 -size 24123 +oid sha256:8371da870ec795fbced08edd199c6e6c53b1557b648686fe89c278def41e425b +size 24134 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 1c316959ed..376d2f7449 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:d3340a2d29e6c1d86f5ec5664179cae9501fcc95381311174d7d6b45b15af326 -size 24123 +oid sha256:8371da870ec795fbced08edd199c6e6c53b1557b648686fe89c278def41e425b +size 24134 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 22a0da4353..848a72bbd5 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:68b70ae5220e244acdfa3f1a2e36089c1994e8f05eeb6c344b4734858540e55c -size 38942 +oid sha256:4087f776842690767225ab62c5c1d7717cf039f4ec53494f834cbed9d1cc21c5 +size 38971 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 4731f5a297..d9bfdf1991 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:db8b048d11f766a8e3db28bac99f3e8dea34e6f37fba1eacd9e6f98f6127462b -size 40383 +oid sha256:6948418922ae7fc3fe1ec3475635cb8c53b15fa49128897e24b39f9b2dfc02f0 +size 40413 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 21dbb7d45d..924aa9fc28 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:fc4cbb2bea7749bda9f6c5647ff178717711bad5b1ee25621155bccb1e5f2328 -size 45528 +oid sha256:f385489dab05d85ad04be5324e2b6d0ca4333f46671aee69ac11a9feb04f966b +size 45526 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 4a519862f3..fc0ad477da 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:c1098ef994ad9552aca2f9ad9efe7b1239133544e561e73eced6fa96d08eaa3b -size 43785 +oid sha256:e7792bff8e012d42e7dea995152f5c0674f1c4a24e333cbfcb52d4ad4fc58ec2 +size 43783 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 9768e763ee..c34fdec657 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:9ff1487c8c63a476a570d271f7a0b00c8990e1f90d49a2cae5056a9cc7e51e0e -size 30765 +oid sha256:744f66b5f395a854dce1f9abc8dbb43fbbee5de1d18b6c18d82a614eb2d32096 +size 30762 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 77082fb4bd..e359daa223 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:8565e90948aa18f04e1b868467a007d68fe3d18d534289d5c4d59d4b38915585 -size 21190 +oid sha256:a3a1ef5cbd6ec289fe3b9a48811b77b37f71e53fa2be4e34d16a27fae8189fba +size 21226 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 1c46f8eb53..a585374439 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:c6c7e8cdf40bdf018931635565ac649fed518140a047a71cf70cf63e9edf54d3 -size 23932 +oid sha256:23dff654bad158f522929fdb6fb6911f4c511eb688bb28995f2d2a56bd747758 +size 23930 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 1c46f8eb53..a585374439 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:c6c7e8cdf40bdf018931635565ac649fed518140a047a71cf70cf63e9edf54d3 -size 23932 +oid sha256:23dff654bad158f522929fdb6fb6911f4c511eb688bb28995f2d2a56bd747758 +size 23930 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_0_en.png index b8a509c4ac..7e53aff661 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4945b44bec1854dd46110f4b5763c76bd194c37291c16a56f3c6781459c41f66 -size 34319 +oid sha256:d1504a5137b90bf6c03ae8d3a90946ae1a9b528013f9c3898a0e91e4d073d159 +size 34347 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_10_en.png index 538c7a315c..6d93a90b6c 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae818c5880f0dcd878be8f7a6b231754175e765a40d3b29152f86e2a669294b3 -size 33692 +oid sha256:a0aba8429b1c853012d17fab62350edab5c91721560978b9024ed436d99f7ebe +size 33694 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_13_en.png index c13d05d4b3..55f09c6d9d 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:104d1d386398aac789420babf33755e03d163f40ae596cd8d24f35da0363fac6 -size 30952 +oid sha256:54904239d5e4789b82299ec5fe2d68386a7a77aea9045bde2956c648e68bcb8a +size 30965 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_1_en.png index 2f77b586a2..cd629687fb 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:145c85570217621cc576f305ed72e27205381c438e434205e07b7363cfd67f04 -size 30069 +oid sha256:67f61b340f5ebfbec1147f7ef37f31054cd37b32abf88058bdb18970bbf7d3fa +size 30082 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_2_en.png index 3161e69ab7..c12e74814b 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c238637a0a3107cfcd98230ac52fad7779d8c260b0b97bf30d231cd5493a944a -size 46453 +oid sha256:6a8c359687b3ec5f038602b9022ef3967af12c6632a59c56bd10fecf7d92233c +size 46457 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_3_en.png index 21f135beca..fbae9acd3c 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d8163be5e84aa851df9666822a4d9bc7a40d3a99d6fa8498243c256b729d58f -size 44724 +oid sha256:b6576c0b77984df1930f0115e1ea90e6720f0fb5f500e186c591f0fd2eb771b6 +size 44729 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_4_en.png index 6a6ac768f0..af703a33cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:781d869dff205f99d5a9bc9986abbe489bef24551e6fb695280541741895a508 -size 24238 +oid sha256:4bed9db1d0c920e48dd564d76494e09876c948b2fbdadccb8c4d23b49d28d3d9 +size 24255 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_5_en.png index 1227b0b07c..9afd661315 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cc2e51b4c09de738bc8380977541b9af379f0e21e06c4f1dd923fd36382e6bd -size 19247 +oid sha256:f5b1f18748888c5f20d663f3c6f21fe577915f0b55e7e963be3ccf7e88cda07a +size 19250 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_6_en.png index 7e3f0d4fb7..683805307f 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a25f85925a38d02a65af4fb342949e9545d3e5e19012885f2c3aee4caa8b8f7d -size 31535 +oid sha256:90c8e131e639b6638a75468d41a3ff0107822e3450c6edbcc4d9eccdd180f6ae +size 31537 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_7_en.png index b8a509c4ac..7e53aff661 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4945b44bec1854dd46110f4b5763c76bd194c37291c16a56f3c6781459c41f66 -size 34319 +oid sha256:d1504a5137b90bf6c03ae8d3a90946ae1a9b528013f9c3898a0e91e4d073d159 +size 34347 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_8_en.png index d69f43432c..2dd4cdac47 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6c4f45cf28006db62e03512ecf936439c109d5aad556f8e57d9fdda1c11158b -size 29507 +oid sha256:470cb7c851af9d91cc44d52d502b50764136b079b600ca58ae2512e7ff12e34b +size 29534 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_9_en.png index 4479a39460..878c05c7f4 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd68268fbc334f92f66413c8f63d9013468f6fa95d5b6264fdfe52e50637399e -size 26627 +oid sha256:b07e8c136c56d3e23fe3180e791b414c249865e0d7fa5132393bbf7aa09a72bf +size 26631 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_0_en.png index 673f2c3900..7a11690369 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ea8c46e3f364d562680ad78ac20e0f2f143ad6663d6996c4a68888c927ebcef -size 33275 +oid sha256:14770fdc3e68b250b5f7dad6bb6fb1bf387c66774287276ab4b505c144007b33 +size 33299 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_10_en.png index 64da5c6715..71b604907c 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69f8bbc627a85c5bb4f385f54345a7b9bec8d4f8cae4174c337ec3e6600bbf64 -size 32074 +oid sha256:c428e8289390624b3e4f606404ac54acc19cbe0a6df666661f309b7cc0a88031 +size 32082 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_13_en.png index 36c7cdb859..7360143942 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85b92d23ab2f690c3c15ded7f14c513371cd36482fbeda1478f62c82650f1829 -size 30274 +oid sha256:1011caa6960fb64acf48f5d6c2933c9826f66afcdb80280d8509123fb507ab53 +size 30283 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_1_en.png index 49a47a746b..43a7fe5af4 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b848d50320f1494c9d0edbc21bddcc773de0cf9b1c36ce034235fd3fbbd77cf1 -size 29210 +oid sha256:ce120b819be555167e5c6200e068bca8c1f3a1245b5a6c7939fb012c793a4a57 +size 29220 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_2_en.png index 21dbb7d45d..924aa9fc28 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc4cbb2bea7749bda9f6c5647ff178717711bad5b1ee25621155bccb1e5f2328 -size 45528 +oid sha256:f385489dab05d85ad04be5324e2b6d0ca4333f46671aee69ac11a9feb04f966b +size 45526 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_3_en.png index 4a519862f3..fc0ad477da 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1098ef994ad9552aca2f9ad9efe7b1239133544e561e73eced6fa96d08eaa3b -size 43785 +oid sha256:e7792bff8e012d42e7dea995152f5c0674f1c4a24e333cbfcb52d4ad4fc58ec2 +size 43783 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_4_en.png index 7ff37748ea..5883152c3e 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5931dfac0337cf856282d9c62983aa185fe208f2926868097238d5b95e222fe6 -size 23953 +oid sha256:2542e7ad670ba57f203c3c07d9f6dcd654100fd7c7681846fdf3657436f261f4 +size 23951 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_5_en.png index 0a3366f74a..f3ea2ba2cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68af84c43882c7512d1bb162820f9bbe23c80a3e6d11bc964c945b27dfe25688 -size 18699 +oid sha256:41fa05234a46873d525a7414191e110e157d8226dc5e034bf9ddbbbbd33cde37 +size 18696 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_6_en.png index 9768e763ee..c34fdec657 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ff1487c8c63a476a570d271f7a0b00c8990e1f90d49a2cae5056a9cc7e51e0e -size 30765 +oid sha256:744f66b5f395a854dce1f9abc8dbb43fbbee5de1d18b6c18d82a614eb2d32096 +size 30762 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_7_en.png index 673f2c3900..7a11690369 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ea8c46e3f364d562680ad78ac20e0f2f143ad6663d6996c4a68888c927ebcef -size 33275 +oid sha256:14770fdc3e68b250b5f7dad6bb6fb1bf387c66774287276ab4b505c144007b33 +size 33299 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_8_en.png index f3174f0bb9..c6692886f4 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:965ae432e1a931f5e93311415a7cbd9103aa763326ad8ad4811a9aa28ce08e9e -size 28612 +oid sha256:9dba1ef09211361216ee035c64ee50d62ab1df5191d365ef26f5a4f741477867 +size 28635 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_9_en.png index 89268c76ed..4c3a6af338 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_VerifySelfSessionView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee39cc4f450e906a2e11ddb13ce4913ca442fa9bca8c95a7a50a9e51fbe2b3f6 -size 25981 +oid sha256:0601e1c9d553113eb16d89e888e23320585ea139a6653d2b56e830834ae4fe68 +size 26011 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 8d1adda551..b5c96b8b9e 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:0c4ac3560405d81ef71d6f7760a20a97c1ec72b94368bd9483140214286c8abf -size 8690 +oid sha256:36e770c5541901f71bc1ab36b8f5834eb5c153bd04a425f3bd66602b01127999 +size 8696 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 8d1adda551..b5c96b8b9e 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:0c4ac3560405d81ef71d6f7760a20a97c1ec72b94368bd9483140214286c8abf -size 8690 +oid sha256:36e770c5541901f71bc1ab36b8f5834eb5c153bd04a425f3bd66602b01127999 +size 8696 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 5b48d235ee..8afc50222c 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:d35b0ceda263f3464de9dc0ece9513a3a99315c340ad6135882d394bcbf1408d -size 8752 +oid sha256:275a93f0e159a25edcdeaed39ade77625e49362576f390a29755bde3cc2aabcc +size 8756 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 1f6e30f11b..a3f9596e64 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:d1af55c651012be63341d343182328fed1469ece044ccb856e1a0bb0592e7bee -size 8838 +oid sha256:26530260df099d67a2e83eb6bd0a2a8721fd8b351332bed5732d03434e2b2ff8 +size 8844 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 522b66ba16..3394dfdfd7 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:6f9a34a83de4070df4843b840fc1965336c9aeea5bc5bb38ee711858c8862c9d -size 67586 +oid sha256:786a9213e15ce5f22c9fdb40bf965950ba49fc49cccd276795418d5fea3a1de0 +size 67588 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 334543384a..aa98c8b9b5 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:9b637778795940cf95d95815bd603654f90e64d189e1a28310482a6186f1c074 -size 62442 +oid sha256:52e8f53b21042763ed8d70ea64e2c62ba91d77b8cdce93f8ab98aa55907e25cd +size 62450 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 ce61707708..8f12c0d3be 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:bd93e06fa2bf8830f949c4ec8ba0e9f8517631c296458b1844e3e63316ceca34 -size 8450 +oid sha256:535741bad671da1f9e40450929de940dac571c61476598a2a18846f3706303dd +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 ce61707708..8f12c0d3be 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:bd93e06fa2bf8830f949c4ec8ba0e9f8517631c296458b1844e3e63316ceca34 -size 8450 +oid sha256:535741bad671da1f9e40450929de940dac571c61476598a2a18846f3706303dd +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 e10d219861..6098021d9c 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:9f060da4dc65cf19efca327c9cb0abd1492ffc3400c40d3bfd119f88de415f77 -size 8488 +oid sha256:f5d1255a7153721ee534b0835427314550b25f8ada24b1c980be728b510953a1 +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 2936de38a7..f8e156e0cc 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:67b6eba0661ba9430c6f10e7b80b9e85cfd8e54d8ad81429afe16fa5c093a663 -size 8563 +oid sha256:0829175ad954b648a5ae8e0ab6e8a278d36238e61a9b9c9b33f25049883fe0b7 +size 8559 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 aea8cc8092..2c136ac034 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:e69c2178527ed63fcbfe8e4b26489cc7a503516c45febff8be2ca69fb060a5c8 -size 68685 +oid sha256:214d0520c2e4368c0168683c7bc4f79833292dd2613673196ce7fe6eb3eb5272 +size 68686 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 2213edbb3f..8672740a76 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:e9fa814e0d1b4c204f495d85a50f7cfea3b7f269127fa1978a9275a2cc17918a -size 62460 +oid sha256:06ab6982439f0e450b421ab4866a4282c76732a0f6b20d15fa76163d5a181b3b +size 62462 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 8761e14e80..e6ef5f15cd 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:8dc926ba5eb40d3eac7b25ff1aaecbe253625bd4088150feeb2f27aab0ab823c -size 9455 +oid sha256:1e8f2ff9b7fd9a5fb95d6da0d2ba2b91d04c5cf2021f901b6049eee625ca7524 +size 9559 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 bd55857b04..d98bc7646f 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:f55b0a9d592a6c6270fe7464a4be4c75d50142f9261d5e54bd4334dad6dd8d5f -size 9237 +oid sha256:54531425b79cf376af9fef364f7569c2811617cd508a958595d87aabd12a7052 +size 9344 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 9d132c42ab..af747bd8ca 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:9117e79573ac322172166be26d38c19640e93e4969da1b674d24f0b0311fa605 -size 6408 +oid sha256:60d8a652022f45141e8c1f0e0c93f6b748c863300947af218475010daba1c4ff +size 6413 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 8b62cfa34a..fd2c53c422 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:b58b59809e44d16777dd743b62ea751198651e2ff3eb9364cfc78385d1df61cf -size 6451 +oid sha256:e35828ef24ee2aa6aea5446026dd933ff130c2a2fa03d20dea30306f9a22a688 +size 6474 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 b3b844d2aa..663b853291 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:396c5d4c0bbeefa607f84305333b7893365f419c64e40b82f02d06f535a174ee -size 6465 +oid sha256:d00a43e53ca9720e51aa6571249669e1fd27f84ae8b8d0d8ba5b08a894952698 +size 6476 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 9e319bc452..36393d3de0 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:c26925681bd888998c5dafac638c163541fa2de4ced757d0535a86583447c91f -size 6432 +oid sha256:285b12c0c5695dbb6477564d60afa099300e35e32f29abbb3fa33c03e7c9e60a +size 6431 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 46213fb6b5..1184ddff0b 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:67ff7c9588cc49baa0ffeb2620ac5c5b430db14b9f141cb91464c07d469e36f7 -size 4989 +oid sha256:49b57e4a662e7ef8a4add3d3559a10cc479d1a7438c208ee48507fc7a48d4383 +size 4967 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 6f3db77354..d20e3bc8ec 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:3c8fec3cfb705c222d102f241653bf6b2f8727946bce1595dc2aa7ac97473e9a -size 5107 +oid sha256:ccb6628c5e4279eab88ed59e4f290635c29f0c3435ae773986c10fbc25e4777b +size 5097 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en.png index efa4a70bf3..157f3e59e2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:267bd9c09da1732222fc833e302b06c2107a2964524e8f98f5fdd7d2884543a5 -size 20808 +oid sha256:ff4fbcc142dac5a501eabb228009663eed497a2d30d8e29e0fe68b462a82997d +size 20369 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en.png index 311ce5e56b..5338f9a2de 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35499aea0d8741002ee546553ac0ec8fee64abeb93db8913e585804ed28539fc -size 23451 +oid sha256:570d33be676b5a603f13c1beb364d41e8c19a6d1c501c3082cc197cd26344d4e +size 22546 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 dcf1fee93e..6d68f88fbe 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:9a294fb3b53fe70fcb467e4fce0eca65cac7f4cd5d4d2b716a29640657a742fb -size 8012 +oid sha256:abf9eb7d942bd3dc77bc66fa3c4146b4d6d6d37a01175b3ba66e499492f9bd94 +size 8043 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 db61fa9c4f..f0e7d1071d 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:9b4046958f40f92f1f98feeb638cec8d13f0c3cc1378c6983ae982a15a404845 -size 7957 +oid sha256:865fb15b9fa2b2d65204301a049eb508619b62932059f5adb54ba9dcfc5eb9c7 +size 7986 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 515255346d..051fb4663a 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:7647c37f89ad8c258bb655777817e6db501a95c2a03354bee54d4728b7977e08 -size 17300 +oid sha256:0a1ad0dcf6187838d37d7a6f9362e6fed44af4687b0494404a5343bc2de24723 +size 17311 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 c8d51382ff..d660788789 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:2fa12ea5b9ed4c01758712e46812462ab54c1621eaa1b7f0e03dbaf9f577fd81 -size 16677 +oid sha256:8dfb1d166afbd78aa6807be751cd98cb4f5f704dafa46a7b9c98e9376c9f7f1c +size 16678 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en.png index ebbb0394e4..b0dfbeac58 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14340ba4aa7dc363800268c0ee149e6e296df72dedbd88d52da98cd7afe89d41 -size 11191 +oid sha256:e1a914e347b12af99ecc4783f03bee4491574d3475f9f7485f1055d84965f762 +size 11182 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en.png index 65805965a5..8a008409a4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_RoomMembersCountMolecule_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93682f1dec9f6d53b7fed92c3048968737bd6b9e42a58bad57cb04ceafc28af3 -size 10950 +oid sha256:c4a445ccc0c6e580eb0a2edf5f1c98b91d222e1dc3fa6d3d00088cf0114368f3 +size 10946 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 da19681c0e..71ad38ec42 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:273c0d2074133acfe00f08a5a9ac4ebfc9c0303fc482508b79884f8875d88415 -size 15516 +oid sha256:fe7673f9923f190509d7beaac799dab5f40a18aa6272efb15b568a1f61384d69 +size 15553 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 c18a0244ab..97bc5e0f6c 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:2a284db87dc2404a8f2d99d829b9cd9882eb46a2ec49e3d26a9323355279d96c -size 15100 +oid sha256:f38933d81b950a4e38fb8bb137cc9d7c16d23f774d2994c70e1e5899facbd19d +size 15128 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_87_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_87_en.png new file mode 100644 index 0000000000..1f283638d5 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_87_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1104fc4c6acc07da2aa9fcc7e15a95a3ba1263f7bf976040af068724ec7caee6 +size 20708 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_88_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_88_en.png new file mode 100644 index 0000000000..562db54d92 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_88_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2249dc7c9627f50d8895208c79e22760aa2bc484939bfc648f2fbcffc20bbca +size 19239 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_89_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_89_en.png new file mode 100644 index 0000000000..62aa6aff31 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.avatar_Avatar_Avatars_89_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fd50a626209cc9b66c8e4847a0ba4e96e39ed2638235fc6e50b56b0d239961b +size 24405 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 31b2ae723a..d0fe56b36a 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:48b55e3d045eff0f2129394ea64bb5bc4962278a8feeb13323f5eed09d95596f -size 22300 +oid sha256:18a7b8395fe7791689d7cc028bd1b73d5b0a90bbcd10f5f8cc8e7542e36ba0bd +size 22136 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png index 782e3296fa..930b5fd40e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce590684f178ab35d9a6d7ef36d98b39411b4ad9665d8367d527a6dbeee25191 -size 28806 +oid sha256:b9a08f45b5ba55ec977b37c70764e2a7d43a484d803f413236ac8fc59c271875 +size 28856 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCheckbox_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCheckbox_Preferences_en.png index 51871d2096..bf4fec1755 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCheckbox_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCheckbox_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc52445bf4196bb91d137b43e01d1ba547191a15ea4f61b09e2b7cbb323821df -size 64870 +oid sha256:9aec79c842bea8e2bff03d39ccc08b8e022c66947679257359a922a531183ece +size 65623 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 71960c0346..be7c10a3d4 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:8db18d040380375d1f5e4b55990354c04d8a9be00775111aecfe32d09160925b -size 26318 +oid sha256:67f2f19d1761c95566e9647d1527a506f183ee45279962285ad4e579f6173dea +size 26361 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 b1b6a52951..c17b35db6f 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:24521601a033d7cf9ff165af3452b037db6bd7bb877c78adbc66a31ff81d24e9 -size 25486 +oid sha256:9d3049344e7e15f21e5f9e34a5f684c08d0933f2242e5292ea05d7f32c087f58 +size 25510 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 7e76795ad0..b97648cbd5 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:a035426d751113cfad1cb77522ad9c7cad37caccb310b013ebe6d9bf95e23ccd -size 23779 +oid sha256:340ec2aa44dc923babe24937c3e084ee38d3ce5248ec9d69a0726f3f1a06d26e +size 23769 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSwitch_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSwitch_Preferences_en.png index a6ae052e1a..ae95fe00d6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSwitch_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSwitch_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13e77179a17c1ae2587fd9a109787dd7ebea58837c318aeeed00bbeb28a70dca -size 36610 +oid sha256:4679de706ba1c71ba3203d32f25d5e2246428f8ba6adb6627df96678838b6214 +size 35989 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png index e4c9c82c3c..6b5176a5a8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6432b9d7e491fd647898a8c1adfe65dff5141494ceb6801ca17dfd3c908f262 -size 34450 +oid sha256:47c676332b00840a596ce43e10c4f8ace84a5bc6875b8c9f2bc271d671900dfe +size 34871 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png index dd33b70f5d..1781d25d40 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53a1978d02b8229ba18a75b0c8e05d9a9aa4934815a82b0da865100fd38bfb10 -size 34934 +oid sha256:5d76aee2a8c93e95cacec9b5db338cfb47a443ddac3fa1ff9483352af876f5fa +size 35308 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png index e591a037b4..92c2a5e62e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d072307f919575d403399dfe8b31ee13a9821495565bd9450768411cd837408 -size 36943 +oid sha256:1bb4ec697fe34f04ec35e531ea68f67329d83cc2a8adbe8db22ae70e28124d4c +size 37347 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png index 84e35bc145..13af877c10 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7832924770983aecd3a81d01569ef74c6d3d2f92fb19efb23449ebf619152ad9 -size 37057 +oid sha256:952c4398f1b4b2bfaff280e342320f86db8956f73dd3faeaac5c73086f86a88b +size 37417 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 343694057f..cd8b8fa392 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:297a71fec7335294de0cdd9100e64454102711ff76e1df7a5f1e32e719310ad4 -size 27062 +oid sha256:c9f0bb344018e468ba59e29d355e5e5ff292e4bbf4198f0fdcf0e993ffd6cd51 +size 27057 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 87012bc30e..b5681c3aab 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:1c986e1494b1c09606b12cf68270c54bda48034caea60dd911cac6cd976f4dc5 -size 26082 +oid sha256:a72cd475113e46f030a18413ec0973ae9357f54b40ac5508fa6edff1125d0466 +size 26094 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Day_0_en.png index abe90d96b7..7c3b23587d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:203f7ee722f1dcc9b16d0bf242d7ffb68fbbd1e850e38d09c759dd45b1baeb71 -size 8565 +oid sha256:6940c5b62364ff8a41b9600af5de950888d4050642a175d0bb13867e332fd360 +size 8573 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Night_0_en.png index 7c8925a175..53be504da6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigCheckmark_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd5f27868d2eb8740fc84e1be39ed511fb89278adfd6232789a8abfcd7d6f40c -size 7214 +oid sha256:5e71365efdbcbc0f0ad59e4be7d806a46ca72469f6b7f73a7c5d698405f637da +size 7217 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 0d92b4ca6d..af2614df6b 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:6bed157ced6cb695c6c92f15bc8b31b124fb943f86db580c9ab2db33d423b731 -size 12408 +oid sha256:6ec29adc030f96aae3952c785b71b2e712d9f4a6cc6cced5f4ac139f5ba4f3a7 +size 12393 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 36f2db136e..82c063087b 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:211c37c03a828d65c2d28622ebb7eee49d39941f80aca809698561c55ae12135 -size 12521 +oid sha256:4aa2203ef22231bf8368849fcf1b17feb08292e116e5e33ed67c3f29ff138d25 +size 12535 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_1_en.png index cd257db234..345e8ca643 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1de76205c501b936eb87d2fae6dad8b4a1f89581ae912505cb877efd8be9ffa -size 12309 +oid sha256:56aabf6f359235c77b7bffa3d7e2c4ebf7b2c688eaf9e2d8a67da9a00433ebcb +size 12350 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_2_en.png index 81234de260..110210ee92 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6f0733b08b3abf440efb9fe78b7ade728cc65ffc97697761b612b8fca017cf8 -size 12897 +oid sha256:058f539d2f7652342394adb681084147dcc2d4a1e24f9c8efd47781a0def4c33 +size 12925 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_4_en.png index d51d509823..6e54ed1bff 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0ae9f53b675f2f754f7cb3ebf3fbe45ae7eae0c63bc8628425e0bf21ff95bcb -size 12485 +oid sha256:eb1c80dfc5926f3aa29ab5118f8c5a6a62ab13a1247e198e32f00509723cd4e3 +size 12550 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_5_en.png index b7c3ab2d68..54ac4972d6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a9d956826399b4a700a4f5d05eed66412f76f59a21a0995a85c69b3c528803a -size 13124 +oid sha256:61c83e013e73d55a6b3504f34dcdb0111744499172839a71c35ada67cece1184 +size 13162 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_1_en.png index 7246bfbf85..1517ba7210 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2408b8d5d390737c5bf7a8410d609c727aaee6addaaa4d9e5b8fc85858835978 -size 12151 +oid sha256:316d70aa6507a9b0c5ab9833d750033df44f8197ca3f25d7f6acbfc496b68d59 +size 12184 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_2_en.png index 6ef037c10d..b3ac22f394 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cea402df09e13b10c31cf57149197af2b5bc36a1bb41a09f66d3bb2cd3617fb -size 12996 +oid sha256:d07c5029da082dcce7b86a202ea611e089ddb1e379d2511395f75dfabdedd5d3 +size 13034 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_4_en.png index 316ef83354..aeeae19771 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8debba5d7b2f5866dafbb553732d5f99e3ecade1e3da873abdf2a82856f6b835 -size 12249 +oid sha256:d4871583b442845d3ae8e3dd98f4099fb7906f2ccccf25b61aad59efb8112c62 +size 12259 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_5_en.png index 0f1ab6cc74..3b86fa73ad 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconFull_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe20c0a4b18c1844df6d962e147a5e939cf0cba70657a67f3286c013942dd010 -size 13068 +oid sha256:0d2d9b68cff6f00bf12eed5df4123af7da908ae3e25e710e5ce305f36b404382 +size 13101 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en.png index db9da7ae83..0f0769d977 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c6bee86d5d0d45869a3c0737a74c03e82803f45c5e1604295c84d2cfe0b3ccf -size 7507 +oid sha256:a1638d8805c8029573b8cae9a71c3c2dddf569d5154969f49085def60ec74ec8 +size 7545 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en.png index dd637dbe45..756c1aca44 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_PageTitleWithIconMinimal_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a90445d97819e255969aa9bf071321f4152f18875ba6cbd5e6b4532ca9c9f4c -size 7523 +oid sha256:19c89df3b96fad54d28fdd608cec70d2d8c71fb20901746abacd9bcc26fd5332 +size 7579 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 b3f9dda381..dc6e722df7 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:174958b24ca5c9d1cb465444d8b869e03252c24d203d308b5bdb0681908d86cb -size 67766 +oid sha256:982b22e61e982d30ddf05f2f7e7df0de6f653e9563d8697d8d958deb272dbed1 +size 67002 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 9f7de0cccc..290b2c8ba5 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:378e2d8a4f8bacbd1b7937ffaf54078c95213d867d7a0ddb85c3ca2a367e06c5 -size 62938 +oid sha256:157aeb4a1d97133db7034252e5a3ecea2f0c0732f826a63ce6c37edc4c3c3f73 +size 67544 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 447f7390bd..91ad1bf4eb 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:81ae404a24a37d8b86e61b1341d9fc4666d87dec99be6553a18037a22c3f8179 -size 72732 +oid sha256:af91b96c2163cbbbf01111f4d875dcb9662c07369cdb3c456cd86178e0173e6c +size 72302 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 37fafa3eba..90932cbd1c 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:c87f241efd4cdc2c983674dd19fecc368b1aacc70f65360b69df7d7442341eba -size 74310 +oid sha256:5f5b7435cfcf0955e39ce197efaac36e6ff379777c969165aed5a069926a1d2f +size 73134 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 c9a507344e..613b2d48fb 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:7f4b8fcee15f760864f66375a77dabf79150dabf2b7e589e2f855d94241fe4ac -size 79002 +oid sha256:c76d53e450b677ada343897ed16250b9cbb6a8e8add1b659db154dc6d954a613 +size 74765 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 cfb421873e..06ce9e261f 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:91e9736a94f3ee5c82b7bef2a939503e878910abff0c930e0edc2d6f61631e19 -size 22134 +oid sha256:1b3edbf7ec81d79bf7201f32b3e8af53922dc060ebade16d5292c6fde766046f +size 42861 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 3fee6d2856..465ac95d7c 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:fb59beed103cd60897d2b837d09c441d9a7eab44daa3061863274556619e7b1e -size 64862 +oid sha256:c3893d921c761fe7c2b5df25e319d59f50e6fc621395906b6fe712521a436eae +size 64098 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 0199f2ebf0..04b76daf14 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:55f3de8981fc43f7c674200304a0da0b30ea0562c6bebf9ce2997b50fe680d1c -size 60295 +oid sha256:83811b6295d5714633e33bd5627e5001eded8306dfdc0e460f1f95cf2f30e1cb +size 64613 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 399f07d303..a63c57dc8a 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:f935a0511a16dba0b2aa974334f84a50ceed06a82ecb13b911c8419aca4407fb -size 69558 +oid sha256:be70c02875df9a7cd94eaaa7d34ac2de72ebca1214515dda9725dcb923be8a69 +size 69369 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 064d35c1b1..8f21415787 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:e0be6bcfe4f8b6df47a314c82411c1625c71605f257f5bc4cfb1ccfbf638f445 -size 71267 +oid sha256:edc05f93374f0b7a95b132f2f892dc193d514ff2c6de32846eee6e55210075f4 +size 70461 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 9a76db8606..a0063834c8 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:2a3732d0ed75d211bf0827f5433acdaf64c3915b96c03343c76018fff7f88dc6 -size 76111 +oid sha256:1ee05334852ae63186189e2705d59c8732405b3f042e47a0146729f2bc000000 +size 71966 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 627bb3b7aa..84d8ce1f85 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:bc64e2dd35081ef8dbec7bbeb0a904e2556fa2dcd753acf73c16af06e55b77a6 -size 21524 +oid sha256:d9b068e03c1a383d98e71baef9759e33d4fe22b3cf8a664202b463b8b7be1d39 +size 40886 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en.png index d5639c42b1..01e6f56033 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0171a8269216d3d1d43e9f78d9616473e357127db7d1452f29aed8b2614ca350 -size 33478 +oid sha256:134b6c98eb0fa9513a50d1c272901b2881a7b1b1b4303b299f36d6dff832e9dd +size 33504 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en.png index 2206653e60..f528f58de4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15e3d8f6a686349045f5101490b18b9323ce114a9b2ffba492495c88e50d9be4 -size 24415 +oid sha256:a78c77da5eb9c5706bbaf306fba85e311757990b81ad5d5714a4a8ccf72adc92 +size 24411 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en.png index 74503b2706..2dc142ad75 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c12fbe16c8103e201ed682eb3dd01c680ce2c97fa2166dbd04ceb1627db08fda -size 23957 +oid sha256:0328504a77a8d9c1f5500b2d2b8f9504352c238cdded9fc82f6bac2c995293df +size 23940 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 7f7f322c3a..7f13d187d3 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:abc6e2350ebc5ecfff7534b1febcf2cd58d37a2d90e7c594be91a595a95fbdca -size 23832 +oid sha256:0f806f3b279ec62dea1a9179a035953eab59f648fb3a5b278bf17011b2d90e03 +size 23943 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 9e1b6c5638..857de41abd 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:0e18c366b09ccb25e0d8a00f43ecbf5afef9d2ba5ab6b3e406c945ff75a2e666 -size 11055 +oid sha256:9b4dd0b39488e2a13f7efb8c3369f81abd8b5d77093d4ecacfa14bdadc31987b +size 10983 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 d517ece48d..78b2174e58 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:0a69f4b7add1abaadd967c96693d14dfff62f73705a9edeb3d1a9c32b68a01ce +oid sha256:5117f03b47d430e9a9373ad0fd90534288010745500e21e007b5b3836f10df49 size 7500 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 4ede7b2351..9d79031705 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:18d0edd9ffe6749b524a454bfb74373bbef52b1d0fe6e503b73523f2b84f8bea -size 23704 +oid sha256:40416d4e67f10d0399af1de88e8a4785a645475021c97c51e4888ec51746bd76 +size 23707 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 2b0f5e477d..0b416da9f6 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:e37ec1481f04822c9784f3610444e36f9e2189c41aad878bb83b4570a033ac07 -size 9107 +oid sha256:25390b86c8ee47707f99e43bf566ca91a289781be2969e2aaf8b5e1ad0f36c96 +size 9113 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 16509084c8..d78df1fa15 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:014273f9262a31f01596e883dd8779b2bf8ac4ac2f609abbe582814b8eabe07b -size 6837 +oid sha256:342c3d1af1d44b912e7516de3a6aa4a25affb25bc02d0c36d0c93c90f97a96b8 +size 6839 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 b4a50169ec..05f6e3ac88 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:584f8c7eaf99a6b9bf3ff6faf65a188d23b27ce2f1888fb4c78ab166b77dddd5 -size 7169 +oid sha256:da44fbadab421c9a055fd835ccc1ec67966ec3e52940b00b5ab607f85d050684 +size 7173 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 80de661481..e26e65980a 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:db6ec7c40c6178cf8b4170dc369f14524453cd2c8101f21b70bdc80dc9aa3e34 -size 13711 +oid sha256:a1cb2f4f264b98879819fc05ad09e93fe144a9d4ff8afc546c1d6856e581e129 +size 13438 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 f0177c8a61..c0c139308d 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:165bbcda11115c490250a86ac45d84277362a8c0fc0931473f1dc729b5eaa70d -size 42804 +oid sha256:56ad29105d2d04531a1f230a4285a624cec4bdae5fce56a032f481ce69c760c2 +size 43296 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 806bbe951c..3811bfcaab 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:86b121d1b8c7ea4b2401ca6ea36897b630f41b5fa9961c5bcb8746a142b8c26f -size 44373 +oid sha256:e9ab677aabb026f6719f75c907897f8c7c50d284f5337ac4b4b228fb585b8e56 +size 45003 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_4_en.png index 76f86a3a7e..bddcae2a04 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87c6e31b7c3b722eaa9415db45cfbe09811ff14329585e96277357a5317dd00d -size 3810 +oid sha256:b6d0b5186415672f3c7ac110f20718de8824b9fedc77ddc515d4d91f980fa7e2 +size 4023 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 203c4073ce..8853c499e8 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:90be97208ca18b76aaf61fe840ead88f58a9aaa44e60fe8e66f2e43ea54cd0cf -size 5050 +oid sha256:2a8500db17f25995f8714d748e83eef38d7dbce6495b14d76317e827f62be550 +size 5054 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 cec4fbb036..ba54b5d1c3 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:6dba4dab7966a7a9e2b21661b4e2600411b18f3380d1560c90c6b493c10a9c42 -size 4139 +oid sha256:7db58a299efd465cbae02cece5acdc0746389513fa2498cd09a3be7068eb6713 +size 4142 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_4_en.png index 910431eb61..0b9fdd3679 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:087ef9cc26ca086e794cc61acf4afb27b52448913fb2100891a37cb4ba0cdc21 -size 3878 +oid sha256:282cc41554c3626a2fb678b6ecbb66ac3c15700635c0dbbf1005db9d318a25f2 +size 4093 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 a2f56d47a8..2972357335 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:f43bd2190c64eb273303df7204e6289203247482f726e345f401a985ab527f91 +oid sha256:f56b4b05cba27ead484779b3f266ceeec0abcf26f104ccb08e068d3603fe7d9b size 4962 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 c56e2e01c1..c7efa50728 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:7afd6955b08824f772d4de165bb131933a5e928706bff46929cd9bd4b33412ce -size 4192 +oid sha256:cc03e1c417f898871289f8b7972b4b2ef4ae0c59b57c2fffbdbc4bae65a68d91 +size 4200 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 63108d9433..6c684f1ec5 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:1c3f8d8596a343d874f047bdad91e52206308066b6837271a3083b31f139ef49 -size 13526 +oid sha256:81e5612049a59be0e4792c7e6ae3683505e12161d3a01c4fb4a54ea2d8eb6c09 +size 13543 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 90de328262..9305d875f7 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:a86e5acab8589a935f1368134181edd47046096ed04a53c2d81e2ced733af0a9 -size 12116 +oid sha256:72611586e6f1a469436bbff5bcad36766b6b163b4199beb0d928c0a1aaa67d8b +size 12113 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 a9f0fcbacb..e932cf8d47 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:20fa65558d90a4f9a893586fa8abff69dd2b55d37b6f7841f6c0d850e05bdb67 -size 112162 +oid sha256:8ab12d48e310e5d725deabbee73eef00cabb0ca8a13b08ba5d8536740c53bfee +size 112159 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 new file mode 100644 index 0000000000..d302243c6a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c12017903de87b23d0d07470b5e0c6defa98fd31dceb90c97bef5332ecb844c0 +size 26141 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 new file mode 100644 index 0000000000..ea589f6379 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:719910b555845f680fd691797d9c1d455868031b86a1b720857fb2a58fa0db6e +size 24321 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 new file mode 100644 index 0000000000..0545fe37ec --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09f47e482b73dc913e6bf432a97609c6b998613b235aee699ca5a71d46a362b4 +size 25045 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 new file mode 100644 index 0000000000..dda1da4e98 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80137719fadb06ff5fe6f28f8cc9f86af243de0f57e6b00cb28758f5ea4adc28 +size 23296 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 397c031443..e8b27fb6c5 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:936ed4d3c244fbe9a96fe050ae3bdf723e8147b889b8b6a6382f3eeaec565c1b -size 30432 +oid sha256:582ddce1d2b4e5eeb748e82ae7e42bcae50137ccf0caa974eb183f6ba5e1bc82 +size 30431 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 25c49f963d..be54b6e25d 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:73919b99c5a5699aeede26b8e9e14fae8a23ccbf0f7933158a215a0f96de8a25 -size 9742 +oid sha256:d59be1ddffb1e12e2e722dddb093b4e996742dd54023cf140377976ba3a2729a +size 9777 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_3_en.png index ee46744a0b..491bd5f7b0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:795a462bf0f34c66d9bfc87ca70b5efa2df6c20f73525f2320f61d0c08978056 -size 6499 +oid sha256:6cd50e8b230af275047116327b0df459bf0f1b2a40538c948962a076cb804a15 +size 6683 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 bdc3bb3f7e..42783c850d 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:4cdac36229c6f622d7acfa3e2131b6610a70fdf929cfc164143232df06015ef0 -size 6906 +oid sha256:95098a1e7897c4ec5c495128619e53aadf92f8963a9afdf9e9b858f5e5c8be39 +size 6908 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 2b7662775c..eb074db442 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:58776fc7227c819dff17d7f2857381e022d9926906024b8102efd1b0f82029bd -size 9579 +oid sha256:6992d0760944b9bb5dc05081e8aad27b0cc9aa7cbc3452e5b3344e57d94cf5a0 +size 9604 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_3_en.png index 92f9513558..5ff2a11386 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de0c54d3b8ba37a84f2bf75d2a413a34ec7904501fad7115fdcb35518caf4bc7 -size 6456 +oid sha256:090e715462d0aff317071a8004f22b2506acdd2082f037682fed347d5fc17f77 +size 6630 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 5cfb9081c2..24c08fb94c 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:23d4b7d2feef85f66b8772c7722918abad562d6673b657357e19fb094f5d04d2 -size 6853 +oid sha256:4b51baee2fc5ba9fa48eb9185a2cd9e9c895ea65da7e1fe310dca27a40bbac35 +size 6860 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 137a7d8afe..1081fef24d 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:8070f1089c8d151b74558046ca70d3c92525d80109dcc082ac05be5678b7b6e0 -size 31230 +oid sha256:4566bd5cbc9ce35873cf227cb67801982ee3271837aaaf36972c15d0e5af3379 +size 31297 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 7a2ce52d92..d28c5e9f4f 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:2dc3ac99e6894376a01f3f9cdbe8efcfd43233ada646944634489620535d326e -size 29603 +oid sha256:db1ea9cc19e29c68aa2227e28f6f0b3ea70e468ca1a18d767f101b99f6790561 +size 29652 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 be45c32ec9..7fc75a1ee5 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:4cded4f64be360fbd6ba607f9303e17154da24220712cf2e8da2d495b50bda26 -size 38103 +oid sha256:77c5e15dc1fab1d33b966ec656064629f3b79a2539f770149525d3918b9a6d28 +size 38116 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 440c3309cf..7ef2e4121f 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:de4cec2f60dda00375c6583fb2926cc0fdfa02d4673bd3d99bbe0ca3a2193952 -size 36454 +oid sha256:28555a9e4ad68098acd694b40bc9e071641bbf8cba8ef1da6d7d91f10b5d0d07 +size 36475 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_0_en.png index 02a746e1d8..b6ed5508ce 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b2613f0382fcc71f248e92a2ab007c20b88178f10f20e91a98f9112ac5dd3b2 -size 8226 +oid sha256:c2fb56957eb5a9273f37c3f9b973feaa5fa439eac92ee9b0f9398d6afb2cdd81 +size 8373 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_1_en.png index 9ccb8d78d2..28851d43a2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfc1ae0e3cb25ee9e6092c2eda4b5e8d03ec3fae37e8d4d4d591e3d697042201 -size 12845 +oid sha256:a144c54d3a135763f6ffa6c8779e99d4051756cad37fe3dadae6a7007e44964a +size 12984 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_2_en.png index aea3483115..87c031fc16 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51c50604b17ac864c548a33141aba6bf9c1c791790a11fe692493a9fd3d91fda -size 35598 +oid sha256:0e0d844ba1da660a17a341aac67cced91a4c6f46fcd895df0e5a8d260299a1cc +size 35740 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_0_en.png index d79c6a8d25..732cb7c319 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37f2c5ddc5dbf12e9006865a8e0348949e8811e9e3031721d67dcc0b878d00ba -size 8011 +oid sha256:729a3e601744721ecefeb6ecc7cca8df59ab29a81d03df775f4abb08c7546fa2 +size 8142 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_1_en.png index 04df2c1c11..1716664651 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9e21c6ef5aeb835cee91a073ccd23a9fae1f3a1e6bc5c5dfdbe80ce9da62c51 -size 12496 +oid sha256:3a44ec2a88fa4d43320e279e4ef00c6c3fbe7641ff619a6589a60b1651d49915 +size 12603 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_2_en.png index 11c187832f..a254714f66 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_AudioItemView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04c3a63bd1d6b1c217946fd3ac359ebbedd33d39da663b489397a4a81744c75d -size 34365 +oid sha256:e1d45184a3bed370b47f3b559b2a9927a108ef26c595a98d1b567a57539966be +size 34492 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 56d561434c..936ecc3ee0 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:9fe856f45857f420a42562f0618473857eccd3f9a16c75df43157b881d473fd4 -size 8892 +oid sha256:2d48c56c30f1c1043c398849fcc9e66ae3184f186a89b6eb446f107ec5c60727 +size 8901 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 7c0ae7e7de..d2b3e9262a 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:fc84a1980024331be4906d1df8702ba16cfee553d18c3556d6c08597cc5c1a05 -size 13243 +oid sha256:e997992ed8a574e9a15df43292514a285441a11da994b32002046d2508c3bbec +size 13251 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 60abaf54cf..b0271d9d74 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:538d13a4aba7f8d7e503852eed6ae2fe35c1a54002c33abe7ef763052d4c7ab8 -size 36254 +oid sha256:661cdb45ccec5bc9c7cd7e5d185fe38abe7911f6010552270bc0c34dbfc068ae +size 36260 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 412d151f90..c51247b864 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:674d480011c737b98adc471bca330182efc6eb31b1671e6bdd6aa54bfeaada9d -size 8616 +oid sha256:84c93351d1c0ff82ccbb5a566f644bd0483c836081f888cc370880bb55cdd576 +size 8638 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 89ea4bcb8b..463d5b9d17 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:3ffaef3911f91499e4905e0d041c8ff31a6343c2b71ea79f0b4ab6d6c89800d5 -size 12795 +oid sha256:f36e420501a83e7b1292c139c4bb694d1d42ead1f2d8cbf52fe48c1753c8e25c +size 12816 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 31cbcbc59b..1db3b737b2 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:b2f88af6da9f62f2fe0fb17883387574eaeca5d1f65f651d970e13c22ca8079b -size 34947 +oid sha256:5f727a995d7863b68675c2daf4cabb988b75c440bf063b1d77765daaa4f502f1 +size 34976 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 07edef2141..4d065a5716 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:cbcf086763463eaa1dbf9cb52620c430f7a7982f01d3abcd039ebd307544f8e7 -size 72986 +oid sha256:c1a7fb899410f0fc591994dfcfda047d2bdacd120658793bcc142be60eb39324 +size 73010 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 ca39d4ccea..c1cf365450 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:ff96b22724d7f82b3003a73a560da0a34c9c196757b4336706b5823bbfa32589 -size 32398 +oid sha256:9e06c4fdecb6b6965f974d7f424e4fe2cb1b0d338dded694fddd8526f5d6d1b9 +size 32544 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 cc888a4d57..4d767762f2 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:492b5ae698dc52672d8d0a4599c9cd9a5b6f414e8a0a6f42c91e765e5a5b221d -size 40921 +oid sha256:1bb913c523ce939db43f4ca48855bbb74bb5f68f0bfbc4389153d63fe8b515ff +size 40934 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 700079a0db..10bc833804 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:267cc528f2fdaba66bfad4f8c8622087b76c2e3409f5fda8ce25009039278a22 -size 64356 +oid sha256:71036d96190e9ecc73c92ad26d93d99d6bb2b13606996a40804e738249d8df1e +size 64387 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 2149a46ba7..19185a8e59 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:7f5831741183467f1d05517097f2617aee405a9d6752cdf8a8e193e5851376a3 -size 30904 +oid sha256:2c8ea57ab755298a5c7f8d2c78bcf7e9b059e5509dbd3ab6ef198f94d1007df4 +size 31013 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 158c181240..2bcfa031f6 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:de98370531bc9342539bbf98b6f3534b72e327a94e34b1c6d827e2330291340c -size 39235 +oid sha256:8c8de4a38149e730572b49a99e296e57a307c5f48bf2d97cccede39fc0199424 +size 39256 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 10f75384f6..de9c746ea0 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:8d8842663702441ce586c7e2141c0cdf47032a26b6015e592abb5682e3cd2c60 -size 25152 +oid sha256:280c717aaea92a570a45de4fdb7310952946a9b7c8c52011899445a1563131cc +size 25462 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 876fab066d..7f09771c8c 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:6520b0faf9c22ee1d9b1a088b29fc07e3d8004db5a342cd3bff189d844aace6e -size 24649 +oid sha256:05067a9993096d7d779182b117b87cccbef0ce0992d8123bb5184d35f22de1bf +size 24933 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 50f49e2d0b..b074f41687 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:2907ba5f75a40e30a37ad4d302797cea4e3d2b77cb1c66a9432319242b8f1995 -size 12188 +oid sha256:2953eb53475bec7b2e840c53d8c7805e55cf3ef906e56b5814636c27900571f4 +size 12185 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 37bc205626..581e458c98 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:59e981e51595a368745c92f355793b2c0301a9e4929430733876a02f3ac75e2e -size 11881 +oid sha256:ca2e22b393029a9255bc07c6e417ee70d3209c2773928dbbf20282e77c627e09 +size 11870 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 c497a8cb26..d2c7fc2e40 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:ddb495eaf8113f0be1ba572697083bd5b8ccd4c308780478b6c4691dd0f8d922 -size 8019 +oid sha256:5af95c3019b00ac54031978e4b1be995ce03f652723846863771c6850488d4a8 +size 8022 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 257beda294..ce39d18a07 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:22e4744300d62e550a9c545420621fe6aa8db1674a876731be31a12fbc426cbc -size 7320 +oid sha256:24b74dd10a9c73adbd32725f7c5f32ea5c8790fc5c492f318d284c2b499049ec +size 7321 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 d6bb46d5c2..5c9644ad80 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:773785bb234c0719c0f27ee91a970c63d7f971518dc0c83298a4b6adb9acc4cf -size 8066 +oid sha256:b3d9df5a468c4a1d93c91e940ff6195dedc97257fe13870e4632faf11f3ca2fa +size 8069 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 64ec4ae5d4..e84e7c9d86 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:5424e7ce4a5259aab297a7911741352f0fba01e5fdac972768441db9edf41171 -size 7675 +oid sha256:5cea70146259c8be492873dedb297077dfac1df155d527666955abc05b8744c4 +size 7684 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 4bd792bedf..b55294cf85 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:b3599a3a6fb43f98d928ce71c3ef7a8b8102d558c31ea1f735a948e337738f95 -size 13533 +oid sha256:0ed1979a1216e09690e6ac3fc826d018d7d70ec86cfdf7300226a4ec0989667d +size 13532 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 48a87ab6ae..bbbecb9fdb 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:412476e819f688b5314651fd3d59439fc0e4f53ee777e3a070b82fd19d51700e -size 13272 +oid sha256:5a77a6032c61758c55c26f916ea0351800115210d38bdc3040827cc5b7f977e1 +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 0ab3d99837..7dbb416bdc 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:1e4ef6ed6fe4c858ac4c67bf2bc5d428f4d4734cf8b01244a3bc963a815a540a -size 389328 +oid sha256:69e9c9327893e0d8823fbbdcf4c8491fddfebfff2ebc7a8b1d286c1e08393525 +size 389330 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 81afb4ea1c..4a6573b425 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:67ca752577251e9e57e7680ae1bbdef3324c84ec6a1037aa9f7c228bb8206f4c -size 388634 +oid sha256:5662ae11a7256dc5531b4788e878e1c398c44798bcd94400b30396139a7b4089 +size 388663 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 b66dd0d506..8cb39b9087 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:96941aab9596583187e4a089bd448252be551e3ef6b2fb7550c3bad5c7ba60fb -size 37905 +oid sha256:4a76e053e9c965a5196a12af5ec5328b5b5c2f4d628deb680c2060feff828749 +size 37922 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 2b16d56f04..f796a81199 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:add442c1cabc79cde42e65775b22413c92918bba93d96bb72a9ff214b9ae7fac -size 31126 +oid sha256:70efa4c5843b1da2ac887475599be75a700aee16469fb5fb2c222a37a3b821e0 +size 31165 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 a227321f6b..dca6c37dac 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:0c288f75fcccb93e074afd8178219887ce8a541d8e444df18ca041647114d340 +oid sha256:3ff3f1976405db6abc9b7a1bb0119006bcf1b464c88b3f9e09188528e9e5608e size 24491 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 73e4bde51e..b6987ac675 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:248ad0bbfc8c8a56975c2fc6ddfa5275ff4f3ad39b9a76126c8d4bdd0c566e88 -size 389354 +oid sha256:09be544b2b4f1128557da415f075ecc88a3db42458006558c8fd716f533b1dc5 +size 389357 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 ef7f299a26..a1521a7b1b 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:ecdd1219635a61be5473773464d3796ea6a8f17ac2c384e131265e9557dadf42 -size 95129 +oid sha256:7124b7a6e17de6ac3772b43d25407db7ff7a0124ddf9263d091c2016a66b9198 +size 95143 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 adf626696d..b1d677139a 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:c89d437ccf40ac25227d19d1b775ae0992cad7970784e29586438a60f6bf950b -size 396206 +oid sha256:273a842e3821d4467c1c03aa5510b2680e6fe4ab82f19b41fab577e972fbba5e +size 396189 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 cf56e5a13b..1d94cf34b4 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:9ac33be436135d5022024108ec403ea3e53995d8e42dcc52bbd3d8041e5e2975 -size 25053 +oid sha256:759b0ce50cfebd8d4b06cf8d61eacfd5c2603d0916e0ec399afb35b3d06e9d36 +size 25074 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 75b5e2302f..c91d06c0f3 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:4d0288375c9e746d4cbb9b270c1c7f5e97633d76027186bd9568555edeaf8700 -size 5411 +oid sha256:74a1a871d7bee0818b8154f8d7dba9e30c776d97137d7cbe3e8d445adbd726ad +size 5409 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 2bfbd92c3b..81c7520fe2 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:c756b50710b1ed10eea01d8f97d8cca79a3b3440c559e1f593c790b55e5f6556 -size 14194 +oid sha256:605740d70c27cf6575f81fc5a68218b80c7207c4a90704ec5d7534ddaf4df0ad +size 14181 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 be7ed165cf..288dac72db 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:2c5a6e30127fe88d1d55da6daebff64981e88bbf7a37c712c99f831849e56172 -size 14374 +oid sha256:d994a11e59b06122a5ad7c254b5a3c27f9d032b1c0a050dffc7e867c34deb050 +size 14361 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 654e1d891e..cf576c41d8 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:1ddd7d087dac24b5f2861b59c946eb89046b9bcb1a709dca423b8893f55a81f9 -size 26217 +oid sha256:ee1b8cbedf1d52a2c76d497ac100bb578f6d86ed33b4bb5f4b60f35cc5f208d2 +size 26437 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 f230ae125e..0abb098fec 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:8a0e84ee0e17fa30222ffb5fe58f353ca847b251a8da7088a58faa467f1f6742 -size 26258 +oid sha256:7d61c3c521e0a380ee9ac33e4bebdfc98e91b23a47dd9f7c06bcbb299279ae2d +size 26487 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 10adfc8400..a6ef6d7db5 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:3ac4a8ce6b6f7d9179be2d51c44c766ab71bbb7a8e9e9fcdb4d62b1c9f660dda -size 13292 +oid sha256:910a2b442c7a083381629718738edd84614e059f14f7639f1d23e740dedf2717 +size 13152 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 cc1f51b3c9..79539cc2ba 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:05712f7aee243827568680e2e911640bb058f2a3b5500740054d72eb47bb97c1 +oid sha256:e8fbaa10be1d09931f7e74502a7badc15f331040da89d4dbdce97211ac7bbba1 size 11085 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 0e22f34d88..c29a8568fa 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:0db3f0cdb53eb761bf3742ce94f925472a7e1b48b306d2cd81baa2c42bee6a14 -size 31142 +oid sha256:ab0c3b105b12305c073989fb7686f4e012a33651928219d2c6300f5fc165d420 +size 30981 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 1eb2ec85b4..6d265d0892 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:c6139f1037a5c09425121ddddac37ab0d006f3441467329715fd53dd3d27f24b -size 29200 +oid sha256:d1a17ed95a976a813b541eb373e2eb1f50388f6a994da7b65a586d31be8e0d23 +size 29199 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 f0656f971f..734ee090db 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:1034df9a9d3404f00658b1bb0e4f939f5e9cb00d8966761d9089bb3cb9bab86a +oid sha256:6a6a80bd4372c69ee97a857bf2a03bd90fe011b3703649b171bbc168f08c92be size 33643 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 6411138939..e8bfc990c6 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:5aa120484502f3ed14e33a7460b19bd090ac421bbb383e75127bbdf3f54f5ca3 -size 28818 +oid sha256:d1c2ae860a7453897346416f0a55363a121c899dcb16756e525d9f82b5aea7cd +size 28667 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 321d4b94ef..2e88d12fc0 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:415665f1025fddf1141d9b46292b4e9f05c14bec32371e32b8fdadde5fd0d183 -size 12598 +oid sha256:39cf02b9ba4e1b4272fd70fce37f927d5b8c99e0ba8f61cde2ffb312ef42abeb +size 12500 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 55763a2741..187f6011a1 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:f41a72ee1adb7fb72720c2c4323a1049b5a2c77e88372aec4b51c1e32251f6f3 -size 10796 +oid sha256:f99464f3f16b7304ed1a6a99b864a30ad874d4ada5d9960ef41dc8557c9f4061 +size 10794 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 451df5a6bd..02d2f734a1 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:646bf7110d66643fda586c2ecd54b78f09111d0e74a531a7c1fa08e968b1abc3 -size 30217 +oid sha256:3fb42641a724ad82ed94660327179c7a6782073ca39d9904a1133dd9462397a4 +size 30124 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 7a29490bb0..4ef4a97357 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:a479ad5ccdfd947730465010cf21503c0e7a22857537cd7d8f727a45beec58cd +oid sha256:594841dd922deceeee60da8bdd7228f9c685f2aa700a2ccbe0dd03bd4b9e4b98 size 28739 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 a1820a3132..5ce058ef3e 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:df25628681cdf2bee33230069ae84210c3dda185d1e009fe646cb1cd30bf1ed5 +oid sha256:79224876e9c3e44f30f08c1e1d4050d8c909d8f290c4267f29eea15ae4f7f2d2 size 33186 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 f19ea6f743..1f53e949ea 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:8c44fadbdeb27169f88a2678ab8b6db9ac7a9f6b21871a436d14728eec398daf -size 27883 +oid sha256:be403e61390a076aa830470dee1095888f05990a5ae6bb99a2498af121656828 +size 27789 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 1e799d259d..1a330b0484 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:f38013c0ddfdd236760df2a0d52e9755459b69ca6a68f7dca660f3809a83e93d -size 5166 +oid sha256:995c805c496e4acfd98f28971b17fdc13374a5beb9669bff745311cd739b054c +size 5169 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 09728a23db..3ca8dd84f4 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:63b7ca45ea1b3857edbcffa207f15ccf51bebd54df2ceda37a0b7907e6a18df7 -size 5103 +oid sha256:1f11d84c6abb51261bc8d2763f52901605ed72cb336b9d42a265e11eaa85fc8f +size 5111 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 92093d1e75..7d6e57a4c9 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:78251d1ca6ebd636376dc200e06d3b033b5d9e9df3e32e452f9882663d06ffec -size 8676 +oid sha256:6642e9af74b4b404e89d08e68ace09cbbfe91b21173989c8c7921a033ff53c4d +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 afebd5ed8f..5118946d2f 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:c8e2a46f08630a184d0b6e182e31712aa959f2976b348b7d4b4a8f50f22bf2ae -size 8473 +oid sha256:66393493e210dd6726b31ff4d32cf5ee4a54b24a268f2105e49ea10bad35d689 +size 8464 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 afbd86cd82..3a8e796364 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:a0a6b1d4996735e79f05074f20103243d803cc502bae1635432a1eea52cfe57d -size 5925 +oid sha256:eb92edfcd06dab3a516cd0ab35e92ce4db50306ef121a1b9aa76d9b7c8b1276f +size 5933 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 6794c17352..6fa23c3094 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:87da38c6b739dfd8d407ae950bf9328a7b54a6872144ac914ef54166c5db5fda -size 5773 +oid sha256:926a3ebbf2eca735988c8bb24f93361e9c03335b5f40d0d15a9f3470a336e1b5 +size 5772 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 8068aa9779..48127f148f 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:b09cd6f506ee333f96b7b86f73996cf822702a9fd27f05dbb39fedf802199920 -size 4294 +oid sha256:fb679142bb81b37a49d030b5268018cef90f6a537711871cfd1de437e90332c9 +size 4313 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 ec7839d4a3..7643b87f9b 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:de72f81a640935c1d396195131ddb3c49da0ab0d5a116681c2cd2bacb2ccec85 -size 4253 +oid sha256:a52ae5c2c8a8de0b92eb3f1655aacf9fbf5d6ed2dead662580a34cb60fd5ecb3 +size 4269 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 c8aedb734a..4d12b16d6a 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:9bcb98d543eba3d43a58b9d17f753c65ccbae2df6f6ebf444c2eccae482a7466 -size 18474 +oid sha256:90218dca0be48c641761178aba13fc46f54cdecd7e050146416e9a49afa439da +size 18504 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 2053e6fa75..806455861a 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:e77770bc5d582ad53fc1ad7d3d86b8df85e2c0f8fb997145a1c695ca14cf1e93 -size 17258 +oid sha256:3ca61ffc0ee37f992c11b9039adb22aac23ff7af6b4f796a0bc7d87a23ab98da +size 17297 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 8268a75735..429f278ced 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:7d4d42730ec3015b56f13fcce98c4be694133b2101272e8f9173a5f938aef5ec +oid sha256:16816388aa16f525b69ed1d4254cd91294bb60281a2b67df095e1ac4fad8c544 size 5455 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 6ebfe7bf20..67c6d2862f 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:2a7f8b640efe8ff0fb996883593ec89fe65c34a12ee500475633e58c344d5668 +oid sha256:7dcd6a858d13ddbd22b6bdfa47aee0c0a98af75d3840eff9767e52a144268539 size 5307 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 f6f752ccf9..63b8304a5c 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:6e78e412582b829f3504227b4f3b8d0180ea1f9f71ded30213e0c1153ba4e20c +oid sha256:37b6772ad2ccdd8f3f7536a4dbd036223380d98964cfca299ad04d06f46a33d8 size 52481 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 049fd8c1ff..8a1d75158b 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:ff436720455e8951c96578613fab9980de42459334fa1d578c20a4c633c9f6a5 -size 50909 +oid sha256:5f354e23e0869ea9f0b9d9f04a3ed70a7c4220c4f3bf65aace7ea367cec52167 +size 50905 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 d2b38ae3df..28edbe090b 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:3f5eef2eb386333da113037b088fdd0a565b0816bee70f2f7decca88893a3164 -size 53457 +oid sha256:7decfd16d70668e4f2c7951726b0b0df3d0ce740e8aae9b4ab03f3002daf10bf +size 53441 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 3ebb4b2f18..d4b2f67f57 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:5d1aeebf8addea8474ae7e97fa1fa064d7b5f416aab2ba385135b12ddd44b5d5 -size 51767 +oid sha256:44f01f033eb5f18a350a5bd8ec094c7a4fc33fc4773ad74e186ce7dbc0036a38 +size 51765 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 c575f5f5bc..36b4bcfa98 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:1aca6febd470707f5fd0c6919f4ad55cf7b0b7b9afe5c34db63f0acfa059120d -size 47506 +oid sha256:07d327321baf7b5bfc5b9e635a42438b67cd7750de746665c2a49dbf90a86385 +size 47512 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 af28c0055f..f88b73c64d 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:c908b06d3d00253a8d2fd0231bbdd6bb5b0a7574c4599814356ab3bef42192cb -size 45974 +oid sha256:b8173c9c25b203c9ef009c2433cd8e4dc9b61ed914e885b6770254b1649d6e02 +size 45976 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 a3a8fad8b2..67a07734ea 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:149e24482adb4b4ddf1e54fe39ab56315e73598f0dfec4acff479c89509070f9 +oid sha256:ce2d7c9518c89e18cbdeefbd19a1a4821006aedc5e94a72951e76b98ea593e4f size 52144 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 cd34c866fb..1c9e15c0dc 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:e9fb48855ec77da81d4cba8f428fbfa69039020a81b6ccea764413e42210abb2 -size 50860 +oid sha256:fb92895bc75caf350a6027a34e770b67456c7fb2865fefbcf1a089b38440a4c9 +size 50858 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 f6f752ccf9..63b8304a5c 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:6e78e412582b829f3504227b4f3b8d0180ea1f9f71ded30213e0c1153ba4e20c +oid sha256:37b6772ad2ccdd8f3f7536a4dbd036223380d98964cfca299ad04d06f46a33d8 size 52481 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 049fd8c1ff..8a1d75158b 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:ff436720455e8951c96578613fab9980de42459334fa1d578c20a4c633c9f6a5 -size 50909 +oid sha256:5f354e23e0869ea9f0b9d9f04a3ed70a7c4220c4f3bf65aace7ea367cec52167 +size 50905 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 f2a7b25e4f..75bce92af2 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:fc2b0061acf3b93e9c27f14f27c5422b034f1d82a579e31b34ce6c09cc255751 -size 53468 +oid sha256:ea9e3504ed08cad61dc583f760b38743457770ada95b4cec544bc4b6804e062f +size 53519 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 b8ed083d9f..1a6eaebb4a 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:a5438d8a7c75ebb8b90bc7cb0086c64399546163393752ec0ef96796903cb391 -size 50962 +oid sha256:8b83cf8c99cdda65aadb0a4ce8d6521945b3d87e304cfbf0f10f63e360391e3f +size 50978 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 6afb4ba7c2..504e2bfb35 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:0fac85629625d4e47c266e54105dde49b28036726718afde8e5dff7cb4505b3c -size 74264 +oid sha256:807de7ee3bd5c8b1fceca0b9149c316ea84ea9bb8415b7b0b72840204e770af2 +size 74336 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 733a723c6a..820d5adb77 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:58eaadc8d90b16008dd83040c4bf6d3bfc9fc8eb6bcb272bedf47317977dd14b -size 60814 +oid sha256:dd1e1126ac54b07692153a928e3e4b1c555115738416f510220cef4834b52870 +size 61633 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 48b8b9f461..72c517aeb6 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:590a064309be74697bd0ec036c2112be286d16fbb944246f9091b3ffce93dc8e -size 62766 +oid sha256:f7cf0f8421c9b23a99450da474d3fe99a7453472801acaaecd34868a64060dcc +size 62775 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 ac0672cc0b..a7d0ebeed5 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:6ce61ea0b2c06cdd7b1ea0cf3dade22cc56c8434908d540b35752b3af6a6eaed -size 71709 +oid sha256:b3edef0741d8f431ecaa4fcb5e649101916af004f6adf6315f01d657adb90d0f +size 71777 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 40c7888405..9a0bd6db46 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:f7b23306044dec23152302ab6ffa9f32d5d4eee6e95cdfb28453e04007e4906d -size 58692 +oid sha256:9cf437b56de3187e70e1e0486a98bc9e18ba8ab8645a6e19c6e042d82f721426 +size 59467 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 242e5b0c0f..dab4a85d7d 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:76de82231ffb2d5f39bd5e393159495b1c0f84710c84d69fe678a7831cc383bd -size 60615 +oid sha256:97dd413b09a117bf03f31ea21c62d774618698c44223601667283d17d8af4f08 +size 60632 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 be6cdff935..30e5b2e048 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:884c4844e2b54a83fbc78cb81262fac15d99d3c45cc51888ec8666bb0bd8bf38 -size 26260 +oid sha256:6e5f5c7c160e7fe9601557fc905a531be00021d17d335ecf7db9a8b95fcb2b98 +size 26268 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 ba7be13749..7cb9f86b2c 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:64411c282cfe9c9100df5dc4b503a9c7544252286ccf17ec9c64af73e1b0616b -size 25275 +oid sha256:bf689c57710d63ddd8960be390de08f47081164fc50822b3428a357873544754 +size 25287 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 ffbcbc631b..1b2f5bc089 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:26942a8b605cecdf4d02a6586ced4741e4abcfa68a83dd79795ec2ff9fbd8f13 +oid sha256:d5188b829b027af8be3c1a002bfd3e849fde220e23a3619f238d2dad5d705fb0 size 20051 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 f4536a9c5c..cca6f78beb 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:ac685e19b0eed69e921113624641a913936c6741fb44f23c5310d14e8842b51e -size 30329 +oid sha256:112cfc55da3e9bf9337d4f92c2326d136891672792cdc2b32de1bbc4242d7dc1 +size 30330 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 e0064fbb34..82cf7f9f3b 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:35407f64be6239445cf89fb4596bfe16c55559f11772b50a4eaf5ba10e9d93f6 -size 24254 +oid sha256:d866f9ae09c07e9127479bc795040be34e52051eddef10dc87eec295febfa5f1 +size 24252 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 c1301573b8..1e266033ae 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:bedfc7fd98f62bfab69924e52f8efb30ce8864ed20bfeb428bc2b9db8a3727cc -size 36145 +oid sha256:cca8e1694334f4362b65c3fb0747ef4eb9e5c5541ea885ac2e4c968286b63947 +size 36149 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 c285d5aac9..5c6df6d650 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:2dad58a351e183d22ab5134aea812272e8668d28189c9e708e3cb695b226ec5a -size 25343 +oid sha256:e777d7db936fd5cf029b4a0792a1883fdbcb65c755d63305e40802fd979b8859 +size 25345 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 51c23db4c0..faddf60fe3 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:9d6c785b7d8895df8e3afa9638a9077746329c13744a8908e5b8267d194f2cf3 +oid sha256:5cd3833e9d8f467762d92578da1eb6f9fafe0d698c52123cd110c52150b6fd6f size 19481 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 6c6ebc7e81..89d3b79481 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:31835ace76d50a148c93278f333cb87454d552cd4e048673b4e19e6253384cb3 +oid sha256:22bc0a665144ce8a324acac65eddc61e01830583a55489a4de8289d17554ce62 size 29360 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 06249f4a34..4771961e25 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:7ff92f4fe39b40c7b9f8d4b2ac192152777afc76584fec1db28dc9b6dc1438d0 -size 23553 +oid sha256:1ad6a1ed15e86cdea1a6279ed9a2855a24b0f9f5c138102f9dafb831a238a386 +size 23540 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 2c7a0e96c3..c6e57b8709 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:e0170fa8112b811db35c86322058586e2e705a610ae9daa95736b3d67d6d6752 -size 34756 +oid sha256:157c4724e207389c2384f26b9d43f43ec1976288513637d9f38a7ed4e040a68c +size 34757 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 4a9873522d..cc988c17ce 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:be6920f335a793069223714c25aec71c530310200bbddb148f0f578987544122 -size 24500 +oid sha256:c1d4a43b869b5355107ba0fe2a601a66a3ce3cfa5931c8ebdacb88476cedf79d +size 24499 diff --git a/tools/localazy/config.json b/tools/localazy/config.json index b75c0380ff..20a53fdcf0 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -4,7 +4,8 @@ "name" : ":appnav", "includeRegex" : [ "banner\\.migrate_to_native_sliding_sync\\.force_logout.title", - "banner\\.migrate_to_native_sliding_sync\\.action" + "banner\\.migrate_to_native_sliding_sync\\.action", + "banner\\.migrate_to_native_sliding_sync\\.app_force_logout\\.title" ] }, { @@ -36,7 +37,8 @@ { "name" : ":features:roomaliasresolver:impl", "includeRegex" : [ - "screen_room_alias_resolver_.*" + "screen_room_alias_resolver_.*", + "screen.join_room.loading_alert_title" ] }, { @@ -62,7 +64,8 @@ "includeRegex" : [ "screen_create_room_.*", "screen\\.create_room\\..*", - "screen_start_chat_.*" + "screen_start_chat_.*", + "screen\\.start_chat\\..*" ] }, { @@ -167,7 +170,6 @@ "session_verification_banner_.*", "confirm_recovery_key_banner_.*", "banner\\.set_up_recovery\\..*", - "banner\\.migrate_to_native_sliding_sync\\..*", "full_screen_intent_banner_.*", "screen_migration_.*", "screen_invites_.*", @@ -273,7 +275,8 @@ { "name" : ":libraries:matrixui", "includeRegex" : [ - "screen_invites_invited_you" + "screen_invites_invited_you", + "screen\\.bottom_sheet\\.create_dm\\..*" ] }, { diff --git a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.2.kt b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.2.kt index 0080f8d905..c4f3b1b5b2 100644 --- a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.2.kt +++ b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.2.kt @@ -1,12 +1,12 @@ #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}#end import androidx.compose.foundation.layout.Box -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text @@ -19,7 +19,7 @@ fun ${NAME}View( Box(modifier, contentAlignment = Alignment.Center) { Text( "${NAME} feature view", - color = MaterialTheme.colorScheme.primary, + color = ElementTheme.colors.textPrimary, ) } }