From f94d2b6c60d69a73e4587feb9ee8e70d7a3e6bca Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Tue, 21 Mar 2023 09:34:14 +0100 Subject: [PATCH] Handle 'invalid server' error in server selection screen properly. (#214) * Handle 'invalid server' error in server selection screen properly. * Use `action_learn_more` for composing the server location footer action. --- changelog.d/210.bugfix | 1 + .../impl/changeserver/ChangeServerError.kt | 38 +++++++++ .../changeserver/ChangeServerPresenter.kt | 7 +- .../impl/changeserver/ChangeServerState.kt | 2 +- .../changeserver/ChangeServerStateProvider.kt | 7 +- .../impl/changeserver/ChangeServerView.kt | 82 +++++++++---------- .../login/impl/error/ErrorFormatter.kt | 10 --- .../changeserver/ChangeServerPresenterTest.kt | 8 +- .../login/impl/error/ErrorFormatterTests.kt | 40 --------- .../android/libraries/architecture/Async.kt | 4 +- .../components/dialogs/ErrorDialog.kt | 10 ++- .../src/main/res/values/strings_eax.xml | 4 +- ...ewDarkPreview_0_null_0,NEXUS_5,1.0,en].png | 4 +- ...ewDarkPreview_0_null_1,NEXUS_5,1.0,en].png | 4 +- ...ewDarkPreview_0_null_2,NEXUS_5,1.0,en].png | 4 +- ...ewDarkPreview_0_null_3,NEXUS_5,1.0,en].png | 4 +- ...ewDarkPreview_0_null_4,NEXUS_5,1.0,en].png | 4 +- ...ewDarkPreview_0_null_5,NEXUS_5,1.0,en].png | 3 + ...wLightPreview_0_null_0,NEXUS_5,1.0,en].png | 4 +- ...wLightPreview_0_null_1,NEXUS_5,1.0,en].png | 4 +- ...wLightPreview_0_null_2,NEXUS_5,1.0,en].png | 4 +- ...wLightPreview_0_null_3,NEXUS_5,1.0,en].png | 4 +- ...wLightPreview_0_null_4,NEXUS_5,1.0,en].png | 4 +- ...wLightPreview_0_null_5,NEXUS_5,1.0,en].png | 3 + 24 files changed, 132 insertions(+), 127 deletions(-) create mode 100644 changelog.d/210.bugfix create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerError.kt create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_5,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_5,NEXUS_5,1.0,en].png diff --git a/changelog.d/210.bugfix b/changelog.d/210.bugfix new file mode 100644 index 0000000000..f082c18004 --- /dev/null +++ b/changelog.d/210.bugfix @@ -0,0 +1 @@ +Handle 'invalid server' error in server selection screen properly. diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerError.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerError.kt new file mode 100644 index 0000000000..c3882cdf12 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerError.kt @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.features.login.impl.changeserver + +import androidx.annotation.StringRes +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import io.element.android.libraries.matrix.api.auth.AuthenticationException +import io.element.android.libraries.ui.strings.R + +sealed class ChangeServerError : Throwable() { + data class InlineErrorMessage(@StringRes val messageId: Int) : ChangeServerError() { + @Composable + fun message(): String = stringResource(messageId) + } + object SlidingSyncAlert : ChangeServerError() + + companion object { + fun from(error: Throwable): ChangeServerError = when (error) { + is AuthenticationException.SlidingSyncNotAvailable -> SlidingSyncAlert + else -> InlineErrorMessage(R.string.server_selection_invalid_homeserver_error) + } + } +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index 19a95db3bf..db284e0910 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -48,7 +48,10 @@ class ChangeServerPresenter @Inject constructor(private val authenticationServic fun handleEvents(event: ChangeServerEvents) { when (event) { - is ChangeServerEvents.SetServer -> homeserver.value = event.server + is ChangeServerEvents.SetServer -> { + homeserver.value = event.server + handleEvents(ChangeServerEvents.ClearError) + } ChangeServerEvents.Submit -> { localCoroutineScope.submit(homeserver, changeServerAction) } @@ -68,6 +71,6 @@ class ChangeServerPresenter @Inject constructor(private val authenticationServic val domain = tryOrNull { URL(homeserverUrl.value) }?.host ?: homeserverUrl.value authenticationService.setHomeserver(domain) homeserverUrl.value = domain - }.execute(changeServerAction) + }.execute(changeServerAction, errorMapping = ChangeServerError::from) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerState.kt index e65d7df5f9..a69e58aaf7 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerState.kt @@ -23,5 +23,5 @@ data class ChangeServerState( val changeServerAction: Async, val eventSink: (ChangeServerEvents) -> Unit, ) { - val submitEnabled = homeserver.isNotEmpty() && changeServerAction !is Async.Loading + val submitEnabled = homeserver.isNotEmpty() && changeServerAction is Async.Uninitialized } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt index cb2672ef8e..8f6341b5de 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt @@ -17,6 +17,7 @@ package io.element.android.features.login.impl.changeserver import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.ui.strings.R import io.element.android.libraries.architecture.Async open class ChangeServerStateProvider : PreviewParameterProvider { @@ -25,7 +26,11 @@ open class ChangeServerStateProvider : PreviewParameterProvider Unit) { +internal fun ChangeServerErrorDialog(title: String, message: String, onDismiss: () -> Unit) { ErrorDialog( - content = stringResource(changeServerError(error)), + title = title, + content = message, onDismiss = onDismiss ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ErrorFormatter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ErrorFormatter.kt index 6c652a29c1..ea8dcac8e7 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ErrorFormatter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ErrorFormatter.kt @@ -31,13 +31,3 @@ fun loginError( AuthErrorCode.UNKNOWN -> StringR.unknown_error } } - -fun changeServerError( - throwable: Throwable -): Int { - val authException = throwable as? AuthenticationException ?: return StringR.unknown_error - return when (authException) { - is AuthenticationException.InvalidServerName -> StringR.login_error_homeserver_not_found - else -> StringR.unknown_error - } -} 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 da717f85cd..a47a7977b4 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 @@ -95,7 +95,7 @@ class ChangeServerPresenterTest { assertThat(loadingState.submitEnabled).isFalse() assertThat(loadingState.changeServerAction).isInstanceOf(Async.Loading::class.java) val successState = awaitItem() - assertThat(successState.submitEnabled).isTrue() + assertThat(successState.submitEnabled).isFalse() assertThat(successState.changeServerAction).isInstanceOf(Async.Success::class.java) } } @@ -118,7 +118,7 @@ class ChangeServerPresenterTest { assertThat(loadingState.changeServerAction).isInstanceOf(Async.Loading::class.java) awaitItem() // Skip changing the url to the parsed domain val successState = awaitItem() - assertThat(successState.submitEnabled).isTrue() + assertThat(successState.submitEnabled).isFalse() assertThat(successState.changeServerAction).isInstanceOf(Async.Success::class.java) assertThat(successState.homeserver).isEqualTo("matrix.org") } @@ -135,7 +135,7 @@ class ChangeServerPresenterTest { authServer.givenChangeServerError(Throwable()) initialState.eventSink.invoke(ChangeServerEvents.Submit) val failureState = awaitItem() - assertThat(failureState.submitEnabled).isTrue() + assertThat(failureState.submitEnabled).isFalse() assertThat(failureState.changeServerAction).isInstanceOf(Async.Failure::class.java) } } @@ -157,7 +157,7 @@ class ChangeServerPresenterTest { // Check an error was returned val submittedState = awaitItem() - assertThat(submittedState.changeServerAction).isEqualTo(Async.Failure(A_THROWABLE)) + assertThat(submittedState.changeServerAction).isInstanceOf(Async.Failure::class.java) // Assert the error is then cleared submittedState.eventSink(ChangeServerEvents.ClearError) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt index 25d3707f68..d0e1c0010c 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt @@ -55,44 +55,4 @@ class ErrorFormatterTests { } // endregion loginError - - // region changeServerError - - @Test - fun `changeServerError - invalid unknown error returns unknown error message`() { - val error = Throwable("Some unknown error") - assertThat(changeServerError(error)).isEqualTo(R.string.unknown_error) - } - - @Test - fun `changeServerError - invalid auth error returns unknown error message`() { - val error = AuthenticationException.SlidingSyncNotAvailable("Some message. Also contains M_FORBIDDEN, but won't be parsed") - assertThat(changeServerError(error)).isEqualTo(R.string.unknown_error) - } - - @Test - fun `changeServerError - unknown error returns unknown error message`() { - val error = AuthenticationException.Generic("M_UNKNOWN") - assertThat(changeServerError(error)).isEqualTo(R.string.unknown_error) - } - - @Test - fun `changeServerError - forbidden error returns unknown error message`() { - val error = AuthenticationException.Generic("M_FORBIDDEN") - assertThat(changeServerError(error)).isEqualTo(R.string.unknown_error) - } - - @Test - fun `changeServerError - user_deactivated error returns unknown error message`() { - val error = AuthenticationException.Generic("M_USER_DEACTIVATED") - assertThat(changeServerError(error)).isEqualTo(R.string.unknown_error) - } - - @Test - fun `changeServerError - invalid server name error returns invalid server name error message`() { - val error = AuthenticationException.InvalidServerName("Server is not valid") - assertThat(changeServerError(error)).isEqualTo(R.string.login_error_homeserver_not_found) - } - - // endregion changeServerError } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt index d3ed18bee2..236ead4b0c 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt @@ -36,13 +36,13 @@ sealed interface Async { } } -suspend fun (suspend () -> T).execute(state: MutableState>) { +suspend fun (suspend () -> T).execute(state: MutableState>, errorMapping: ((Throwable) -> Throwable)? = null) { try { state.value = Async.Loading() val result = this() state.value = Async.Success(result) } catch (error: Throwable) { - state.value = Async.Failure(error) + state.value = Async.Failure(errorMapping?.invoke(error) ?: error) } } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt index 05bb29ab66..f4cace2739 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt @@ -18,7 +18,6 @@ package io.element.android.libraries.designsystem.components.dialogs import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialogDefaults -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -36,8 +35,8 @@ import io.element.android.libraries.ui.strings.R as StringR fun ErrorDialog( content: String, modifier: Modifier = Modifier, - title: String = stringResource(id = StringR.string.dialog_title_error), - submitText: String = stringResource(id = StringR.string.ok), + title: String = ErrorDialogDefaults.title, + submitText: String = ErrorDialogDefaults.submitText, onDismiss: () -> Unit = {}, shape: Shape = AlertDialogDefaults.shape, containerColor: Color = AlertDialogDefaults.containerColor, @@ -69,6 +68,11 @@ fun ErrorDialog( ) } +object ErrorDialogDefaults { + val title: String @Composable get() = stringResource(id = StringR.string.dialog_title_error) + val submitText: String @Composable get() = stringResource(id = StringR.string.ok) +} + @Preview @Composable internal fun ErrorDialogLightPreview() = ElementPreviewLight { ContentToPreview() } diff --git a/libraries/ui-strings/src/main/res/values/strings_eax.xml b/libraries/ui-strings/src/main/res/values/strings_eax.xml index 5f0c0baf7c..40563c0a3b 100644 --- a/libraries/ui-strings/src/main/res/values/strings_eax.xml +++ b/libraries/ui-strings/src/main/res/values/strings_eax.xml @@ -12,12 +12,13 @@ Hide password What is the address of your server? You can only connect to an existing server that supports sliding sync. Your homeserver admin will need to configure it. - Learn more Server not supported This server currently doesn\'t support sliding sync. + We couldn\'t reach this homeserver. Please check that you have entered the homeserver URL correctly. If the URL is correct, contact your homeserver administrator for further help. Search for someone New room + You accepted the invite %1$s accepted the invite @@ -58,5 +59,4 @@ Continue Verification complete - diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png index 055e9a2e6a..82668021bf 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5ec4955c5bd390d8f4681f709adcb7152de690bb9033827a9167bb0a4afeed3 -size 41337 +oid sha256:47cc4075122ec2d0a1420e6c3c8765f6d28b521927034067a1ff1c877bf069fb +size 41214 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png index 769318decd..35f655bf97 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad203c77d755606febd055a852a7288a670abab4bd6d281df1262a4cd02b8bff -size 44823 +oid sha256:b8d776746230925c8b35bb688ae51d3b3eca0ebee6beb9e716dabcbf4ae57361 +size 44563 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png index dcf2e6aa72..2a6549e79c 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db98ec6bb8890f95367fb81bb61b592a883f113c92211b69f7d71431af00975a -size 44135 +oid sha256:c22ea865154e6c55cdc04acd4a96c3d0c87e1918c29604d72d37d1b29466ff46 +size 43877 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png index cd77a018d6..1f72911953 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:545df3870e1a6034180b6ebb23366a5855105df09ac741fe7a2e8c97e3df5086 -size 44870 +oid sha256:95a4f4ce5871c6c65dfd732bde01ea3a80c47fd97a83e306642b4b3821b23b65 +size 48597 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png index 769318decd..82fee58c8c 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad203c77d755606febd055a852a7288a670abab4bd6d281df1262a4cd02b8bff -size 44823 +oid sha256:74483873056b7dab096936e09e07249b84ffebe42619f20a829e9994b3b01ced +size 43840 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_5,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_5,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..c92686807a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewDarkPreview_0_null_5,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c2700fd98861f5bb34ee48b24c7ddceea57971fbe9e9b0aa0d5b24edc90cc6a +size 43809 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_0,NEXUS_5,1.0,en].png index 06d3ac8096..18419dcadb 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e0939baaec56f1be550ab960cd66c6e4541060ed36ec487b487d4ffa1c6911a -size 38103 +oid sha256:86c3bc2523fd194a87d062bb122a8d84d412db419c0a9e2f0c6e51ccd338119a +size 37809 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_1,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_1,NEXUS_5,1.0,en].png index e93d780f82..c32968c45e 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_1,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_1,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0baf660665cdce26b9e0716f1492f007cdf2d09d0989ae400b8677aafee80533 -size 41924 +oid sha256:9e0c3a87fb5fc5c3e8c31df3c071bf69b956e0dcfc35f5168452253c9e55b6fd +size 41535 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_2,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_2,NEXUS_5,1.0,en].png index 6c2089586d..f54f15bda4 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_2,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_2,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28c94b5d7d5caf5e5b00b1060c4538422dd50c6f1d8168d2948d9a4b8634f658 -size 40818 +oid sha256:f841b8076376b61a21c517e93627992a179ef1042566133367229c4926322279 +size 40436 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_3,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_3,NEXUS_5,1.0,en].png index 4f5507fe90..23d5346e68 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_3,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_3,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de060d43920f967c80f9795a28e7c84467f86b559ef1e434d605ec4c61f0400e -size 41954 +oid sha256:091e106c67c1a503c98c36a0ed58a3cb08461840643cd2fe2ffc7e1f46ab3774 +size 47711 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_4,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_4,NEXUS_5,1.0,en].png index e93d780f82..494a6e911d 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_4,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_4,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0baf660665cdce26b9e0716f1492f007cdf2d09d0989ae400b8677aafee80533 -size 41924 +oid sha256:9496dd89a284f77cb01295a69dcf60ccdb566224560139d13f926e38a0bd226c +size 40436 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_5,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_5,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..af47554d4f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.changeserver_null_DefaultGroup_ChangeServerViewLightPreview_0_null_5,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be6c0687f8ac84831db038a9846aefba81c4a6af08237d89b2cdba5676f31142 +size 40419