From 41e722cba45be18f03b35788c53194e23226737e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Jul 2023 15:56:51 +0200 Subject: [PATCH 01/10] Move string `screen_waitlist_` to module login. --- tools/localazy/config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/localazy/config.json b/tools/localazy/config.json index a7317af0db..3feadf7a7a 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -76,7 +76,8 @@ "screen_server_confirmation_.*", "screen_change_server_.*", "screen_change_account_provider_.*", - "screen_account_provider_.*" + "screen_account_provider_.*", + "screen_waitlist_.*" ] }, { From dabd38e1b542734ca8c51b4c154af64300a35629 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Jul 2023 15:58:35 +0200 Subject: [PATCH 02/10] Sync strings. --- features/login/impl/src/main/res/values-cs/translations.xml | 6 ++++++ features/login/impl/src/main/res/values-de/translations.xml | 6 ++++++ features/login/impl/src/main/res/values-ro/translations.xml | 6 ++++++ features/login/impl/src/main/res/values-sk/translations.xml | 6 ++++++ features/login/impl/src/main/res/values/localazy.xml | 6 ++++++ .../ui-strings/src/main/res/values-cs/translations.xml | 6 ------ .../ui-strings/src/main/res/values-de/translations.xml | 6 ------ .../ui-strings/src/main/res/values-ro/translations.xml | 6 ------ .../ui-strings/src/main/res/values-sk/translations.xml | 6 ------ libraries/ui-strings/src/main/res/values/localazy.xml | 6 ------ 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/features/login/impl/src/main/res/values-cs/translations.xml b/features/login/impl/src/main/res/values-cs/translations.xml index 300d851693..199b2a0b5c 100644 --- a/features/login/impl/src/main/res/values-cs/translations.xml +++ b/features/login/impl/src/main/res/values-cs/translations.xml @@ -33,6 +33,12 @@ "Zde budou uloženy vaše konverzace - podobně jako u poskytovatele e-mailových služeb uchováváte své e-maily." "Chystáte se přihlásit do služby %1$s" "Chystáte se vytvořit účet na %1$s" + "Na %2$s je momentálně vysoká poptávka po %1$s. Vraťte se do aplikace za pár dní a zkuste to znovu. + +Díky za trpělivost!" + "Vítá vás %1$s" + "Jste v pořadníku!" + "Jdete do toho!" "Pokračovat" "Vyberte svůj server" "Heslo" diff --git a/features/login/impl/src/main/res/values-de/translations.xml b/features/login/impl/src/main/res/values-de/translations.xml index a79ddd1c08..5bedf6e5d4 100644 --- a/features/login/impl/src/main/res/values-de/translations.xml +++ b/features/login/impl/src/main/res/values-de/translations.xml @@ -33,6 +33,12 @@ "Hier werden deine Konversationen stattfinden — genau so wie du einen E-Mail-Anbieter verwenden würdest, um deine E-Mails aufzubewahren." "Du bist dabei dich bei %1$s anzumelden" "Du bist dabei einen Account auf %1$s zu erstellen" + "Im Moment besteht eine hohe Nachfrage nach %1$s auf %2$s. Besuche die App in ein paar Tagen wieder und versuche es erneut. + +Vielen Dank für deine Geduld!" + "Willkommen bei %1$s!" + "Du hast es fast geschafft!" + "Du bist dabei." "Weiter" "Wählen deinen Server" "Passwort" diff --git a/features/login/impl/src/main/res/values-ro/translations.xml b/features/login/impl/src/main/res/values-ro/translations.xml index 70651bc53b..08008772b8 100644 --- a/features/login/impl/src/main/res/values-ro/translations.xml +++ b/features/login/impl/src/main/res/values-ro/translations.xml @@ -33,6 +33,12 @@ "Aici vor trăi conversațiile dvs. - la fel cum ați folosi un furnizor de e-mail pentru a vă păstra e-mailurile." "Sunteți pe cale să vă conectați la %1$s" "Sunteți pe cale să creați un cont pe %1$s" + "Există o cerere mare pentru %1$s pentru %2$s în acest moment. Reveniți la aplicație în câteva zile și încercați din nou. + +Vă mulțumim pentru răbdare!" + "Bun venit la %1$s" + "Sunteți pe lista de așteptare" + "Sunteți conectat!" "Continuați" "Selectați serverul" "Parola" diff --git a/features/login/impl/src/main/res/values-sk/translations.xml b/features/login/impl/src/main/res/values-sk/translations.xml index c593e1df54..e90df39d51 100644 --- a/features/login/impl/src/main/res/values-sk/translations.xml +++ b/features/login/impl/src/main/res/values-sk/translations.xml @@ -33,6 +33,12 @@ "Tu budú žiť vaše konverzácie - podobne ako používate poskytovateľa e-mailových služieb na uchovávanie e-mailov." "Chystáte sa prihlásiť do %1$s" "Chystáte sa vytvoriť účet na %1$s" + "Momentálne je veľký dopyt po %1$s na %2$s. Vráťte sa do aplikácie za pár dní a skúste to znova. + +Ďakujeme za trpezlivosť!" + "Vitajte v %1$s" + "Ste na čakanej listine!" + "Ste dnu!" "Pokračovať" "Vyberte svoj server" "Heslo" diff --git a/features/login/impl/src/main/res/values/localazy.xml b/features/login/impl/src/main/res/values/localazy.xml index 55324613ed..b7b2c2a1eb 100644 --- a/features/login/impl/src/main/res/values/localazy.xml +++ b/features/login/impl/src/main/res/values/localazy.xml @@ -33,6 +33,12 @@ "This is where your conversations will live — just like you would use an email provider to keep your emails." "You’re about to sign in to %1$s" "You’re about to create an account on %1$s" + "There\'s a high demand for %1$s on %2$s at the moment. Come back to the app in a few days and try again. + +Thanks for your patience!" + "Welcome to %1$s!" + "You’re almost there." + "You\'re in." "Continue" "Select your server" "Password" 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 161acdff38..9d897db9d8 100644 --- a/libraries/ui-strings/src/main/res/values-cs/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cs/translations.xml @@ -175,12 +175,6 @@ "Otevřít v OpenStreetMap" "Sdílet tuto polohu" "Poloha" - "Na %2$s je momentálně vysoká poptávka po %1$s. Vraťte se do aplikace za pár dní a zkuste to znovu. - -Díky za trpělivost!" - "Vítá vás %1$s" - "Jste v pořadníku!" - "Jdete do toho!" "Rageshake" "Práh detekce" "Obecné" 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 be70035c99..bb469ad0b1 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -174,12 +174,6 @@ "In OpenStreetMap öffnen" "Diesen Ort teilen" "Standort" - "Im Moment besteht eine hohe Nachfrage nach %1$s auf %2$s. Besuche die App in ein paar Tagen wieder und versuche es erneut. - -Vielen Dank für deine Geduld!" - "Willkommen bei %1$s!" - "Du hast es fast geschafft!" - "Du bist dabei." "Rageshake" "Erkennungsschwelle" "Allgemein" 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 e0e700720c..d90a7a6cfc 100644 --- a/libraries/ui-strings/src/main/res/values-ro/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ro/translations.xml @@ -170,12 +170,6 @@ "Distribuiți locația mea" "Distribuiți această locație" "Locație" - "Există o cerere mare pentru %1$s pentru %2$s în acest moment. Reveniți la aplicație în câteva zile și încercați din nou. - -Vă mulțumim pentru răbdare!" - "Bun venit la %1$s" - "Sunteți pe lista de așteptare" - "Sunteți conectat!" "Rageshake" "Prag de detecție" "General" 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 607b3aeca9..707032b237 100644 --- a/libraries/ui-strings/src/main/res/values-sk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml @@ -175,12 +175,6 @@ "Otvoriť v OpenStreetMap" "Zdieľajte túto polohu" "Poloha" - "Momentálne je veľký dopyt po %1$s na %2$s. Vráťte sa do aplikácie za pár dní a skúste to znova. - -Ďakujeme za trpezlivosť!" - "Vitajte v %1$s" - "Ste na čakanej listine!" - "Ste dnu!" "Zúrivé potrasenie" "Prahová hodnota detekcie" "Všeobecné" diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index 1a48a00c5a..7558bd30b3 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -174,12 +174,6 @@ "Open in OpenStreetMap" "Share this location" "Location" - "There\'s a high demand for %1$s on %2$s at the moment. Come back to the app in a few days and try again. - -Thanks for your patience!" - "Welcome to %1$s!" - "You’re almost there." - "You\'re in." "Rageshake" "Detection threshold" "General" From 8f6d35105478912f23ebb6f1e19da9a7162562fb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Jul 2023 15:57:35 +0200 Subject: [PATCH 03/10] Waitlist screen --- .../features/login/impl/LoginFlowNode.kt | 25 +- .../login/impl/error/WaitListError.kt | 23 ++ .../loginpassword/LoginPasswordNode.kt | 12 +- .../loginpassword/LoginPasswordView.kt | 24 +- .../screens/waitlistscreen/WaitListEvents.kt | 22 ++ .../screens/waitlistscreen/WaitListNode.kt | 62 +++++ .../waitlistscreen/WaitListPresenter.kt | 93 +++++++ .../screens/waitlistscreen/WaitListState.kt | 28 +++ .../waitlistscreen/WaitListStateProvider.kt | 43 ++++ .../screens/waitlistscreen/WaitListView.kt | 231 ++++++++++++++++++ .../impl/src/main/res/drawable/light_dark.png | Bin 0 -> 106703 bytes .../waitlistscreen/WaitListPresenterTest.kt | 107 ++++++++ .../android/samples/minimal/LoginScreen.kt | 1 + 13 files changed, 662 insertions(+), 9 deletions(-) create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/WaitListError.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListState.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt create mode 100644 features/login/impl/src/main/res/drawable/light_dark.png create mode 100644 features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt 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 f8d965ec6d..0ed5848240 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt @@ -18,7 +18,6 @@ package io.element.android.features.login.impl import android.app.Activity import android.os.Parcelable -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.Modifier @@ -28,6 +27,7 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import com.bumble.appyx.navmodel.backstack.BackStack +import com.bumble.appyx.navmodel.backstack.operation.newRoot import com.bumble.appyx.navmodel.backstack.operation.push import com.bumble.appyx.navmodel.backstack.operation.singleTop import dagger.assisted.Assisted @@ -39,8 +39,10 @@ import io.element.android.features.login.impl.oidc.customtab.CustomTabHandler import io.element.android.features.login.impl.oidc.webview.OidcNode import io.element.android.features.login.impl.screens.changeaccountprovider.ChangeAccountProviderNode import io.element.android.features.login.impl.screens.confirmaccountprovider.ConfirmAccountProviderNode +import io.element.android.features.login.impl.screens.loginpassword.LoginFormState import io.element.android.features.login.impl.screens.loginpassword.LoginPasswordNode import io.element.android.features.login.impl.screens.searchaccountprovider.SearchAccountProviderNode +import io.element.android.features.login.impl.screens.waitlistscreen.WaitListNode import io.element.android.libraries.architecture.BackstackNode import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler @@ -88,6 +90,9 @@ class LoginFlowNode @AssistedInject constructor( @Parcelize object LoginPassword : NavTarget + @Parcelize + data class WaitList(val loginFormState: LoginFormState) : NavTarget + @Parcelize data class OidcView(val oidcDetails: OidcDetails) : NavTarget } @@ -144,12 +149,28 @@ class LoginFlowNode @AssistedInject constructor( createNode(buildContext, plugins = listOf(callback)) } NavTarget.LoginPassword -> { - createNode(buildContext, plugins = listOf()) + val callback = object : LoginPasswordNode.Callback { + override fun onWaitListError(loginFormState: LoginFormState) { + backstack.newRoot(NavTarget.WaitList(loginFormState)) + } + } + createNode(buildContext, plugins = listOf(callback)) } is NavTarget.OidcView -> { val input = OidcNode.Inputs(navTarget.oidcDetails) createNode(buildContext, plugins = listOf(input)) } + is NavTarget.WaitList -> { + val inputs = WaitListNode.Inputs( + loginFormState = navTarget.loginFormState, + ) + val callback = object : WaitListNode.Callback { + override fun onCancelClicked() { + navigateUp() + } + } + createNode(buildContext, plugins = listOf(callback, inputs)) + } } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/WaitListError.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/WaitListError.kt new file mode 100644 index 0000000000..99060f3464 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/WaitListError.kt @@ -0,0 +1,23 @@ +/* + * 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.error + +import io.element.android.libraries.core.bool.orFalse + +fun Throwable.isWaitListError(): Boolean { + return message?.contains("IO_ELEMENT_X_WAIT_LIST").orFalse() +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt index 630b08570c..cb5542d2eb 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt @@ -21,6 +21,7 @@ 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 @@ -33,13 +34,22 @@ class LoginPasswordNode @AssistedInject constructor( private val presenter: LoginPasswordPresenter, ) : Node(buildContext, plugins = plugins) { + interface Callback : Plugin { + fun onWaitListError(loginFormState: LoginFormState) + } + + private fun onWaitListError(loginFormState: LoginFormState) { + plugins().forEach { it.onWaitListError(loginFormState) } + } + @Composable override fun View(modifier: Modifier) { val state = presenter.present() LoginPasswordView( state = state, modifier = modifier, - onBackPressed = ::navigateUp + onBackPressed = ::navigateUp, + onWaitListError = ::onWaitListError, ) } } 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 9d6fe7d1ea..e209a9af55 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 @@ -56,6 +56,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.features.login.impl.R +import io.element.android.features.login.impl.error.isWaitListError import io.element.android.features.login.impl.error.loginError import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.ElementTextStyles @@ -82,8 +83,9 @@ import io.element.android.libraries.ui.strings.CommonStrings @Composable fun LoginPasswordView( state: LoginPasswordState, - modifier: Modifier = Modifier, onBackPressed: () -> Unit, + onWaitListError: (LoginFormState) -> Unit, + modifier: Modifier = Modifier, ) { val isLoading by remember(state.loginAction) { derivedStateOf { @@ -133,7 +135,8 @@ fun LoginPasswordView( subTitle = stringResource(id = R.string.screen_login_form_header) ) Spacer(Modifier.height(32.dp)) - LoginForm(state = state, + LoginForm( + state = state, isLoading = isLoading, onSubmit = ::submit ) @@ -152,9 +155,16 @@ fun LoginPasswordView( } if (state.loginAction is Async.Failure) { - LoginErrorDialog(error = state.loginAction.error, onDismiss = { - state.eventSink(LoginPasswordEvents.ClearError) - }) + when { + state.loginAction.error.isWaitListError() -> { + onWaitListError(state.formState) + } + else -> { + LoginErrorDialog(error = state.loginAction.error, onDismiss = { + state.eventSink(LoginPasswordEvents.ClearError) + }) + } + } } } } @@ -269,6 +279,7 @@ internal fun LoginForm( @Composable internal fun LoginErrorDialog(error: Throwable, onDismiss: () -> Unit) { ErrorDialog( + title = stringResource(id = CommonStrings.dialog_title_error), content = stringResource(loginError(error)), onDismiss = onDismiss ) @@ -288,6 +299,7 @@ internal fun LoginPasswordViewDarkPreview(@PreviewParameter(LoginPasswordStatePr private fun ContentToPreview(state: LoginPasswordState) { LoginPasswordView( state = state, - onBackPressed = {} + onBackPressed = {}, + onWaitListError = {}, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt new file mode 100644 index 0000000000..5604789f55 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt @@ -0,0 +1,22 @@ +/* + * 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.screens.waitlistscreen + +sealed interface WaitListEvents { + object AttemptLogin : WaitListEvents + object ClearError : WaitListEvents +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt new file mode 100644 index 0000000000..24b5f271a0 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt @@ -0,0 +1,62 @@ +/* + * 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.screens.waitlistscreen + +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.login.impl.screens.loginpassword.LoginFormState +import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.inputs +import io.element.android.libraries.di.AppScope + +@ContributesNode(AppScope::class) +class WaitListNode @AssistedInject constructor( + @Assisted buildContext: BuildContext, + @Assisted plugins: List, + presenterFactory: WaitListPresenter.Factory, +) : Node(buildContext, plugins = plugins) { + + data class Inputs(val loginFormState: LoginFormState) : NodeInputs + + private val inputs: Inputs = inputs() + private val presenter = presenterFactory.create(inputs.loginFormState) + + interface Callback : Plugin { + fun onCancelClicked() + } + + private fun onCancelClicked() { + plugins().forEach { it.onCancelClicked() } + } + + @Composable + override fun View(modifier: Modifier) { + val state = presenter.present() + WaitListView( + state = state, + onCancelClicked = ::onCancelClicked, + modifier = modifier + ) + } +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt new file mode 100644 index 0000000000..061872839b --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt @@ -0,0 +1,93 @@ +/* + * 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.screens.waitlistscreen + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import io.element.android.features.login.impl.screens.loginpassword.LoginFormState +import io.element.android.libraries.architecture.Async +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.meta.BuildMeta +import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService +import io.element.android.libraries.matrix.api.core.SessionId +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch +import timber.log.Timber + +class WaitListPresenter @AssistedInject constructor( + @Assisted private val formState: LoginFormState, + private val buildMeta: BuildMeta, + private val authenticationService: MatrixAuthenticationService, +) : Presenter { + + @AssistedFactory + interface Factory { + fun create(loginFormState: LoginFormState): WaitListPresenter + } + + @Composable + override fun present(): WaitListState { + val coroutineScope = rememberCoroutineScope() + val homeserverUrl = remember { + authenticationService.getHomeserverDetails().value?.url ?: "server" + } + + val loginAction: MutableState> = remember { + mutableStateOf(Async.Uninitialized) + } + + val attemptNumber: MutableState = remember { mutableStateOf(0) } + + fun handleEvents(event: WaitListEvents) { + when (event) { + WaitListEvents.AttemptLogin -> { + // Do not attempt to login on first resume of the View. + attemptNumber.value++ + if (attemptNumber.value > 1) { + coroutineScope.loginAttempt(formState, loginAction) + } + } + WaitListEvents.ClearError -> loginAction.value = Async.Uninitialized + } + } + + return WaitListState( + appName = buildMeta.applicationName, + serverName = homeserverUrl, + loginAction = loginAction.value, + eventSink = ::handleEvents + ) + } + + private fun CoroutineScope.loginAttempt(formState: LoginFormState, loggedInState: MutableState>) = launch { + Timber.w("Attempt to login...") + loggedInState.value = Async.Loading() + authenticationService.login(formState.login.trim(), formState.password) + .onSuccess { sessionId -> + loggedInState.value = Async.Success(sessionId) + } + .onFailure { failure -> + loggedInState.value = Async.Failure(failure) + } + } +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListState.kt new file mode 100644 index 0000000000..f50de7e194 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListState.kt @@ -0,0 +1,28 @@ +/* + * 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.screens.waitlistscreen + +import io.element.android.libraries.architecture.Async +import io.element.android.libraries.matrix.api.core.SessionId + +// Do not use default value, so no member get forgotten in the presenters. +data class WaitListState( + val appName: String, + val serverName: String, + val loginAction: Async, + val eventSink: (WaitListEvents) -> Unit +) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt new file mode 100644 index 0000000000..f7cd26209c --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt @@ -0,0 +1,43 @@ +/* + * 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.screens.waitlistscreen + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.architecture.Async +import io.element.android.libraries.matrix.api.core.SessionId + +open class WaitListStateProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + aWaitListState(loginAction = Async.Uninitialized), + aWaitListState(loginAction = Async.Loading()), + aWaitListState(loginAction = Async.Failure(Throwable())), + aWaitListState(loginAction = Async.Failure(Throwable(message = "IO_ELEMENT_X_WAIT_LIST"))), + // Add other state here + ) +} + +fun aWaitListState( + appName: String = "Element", + serverName: String = "server.org", + loginAction: Async = Async.Uninitialized, +) = WaitListState( + appName = appName, + serverName = serverName, + loginAction = loginAction, + eventSink = {} +) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt new file mode 100644 index 0000000000..f611c5ef20 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt @@ -0,0 +1,231 @@ +/* + * 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.screens.waitlistscreen + +import androidx.annotation.StringRes +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +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.systemBarsPadding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.ButtonDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.BiasAbsoluteAlignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp +import androidx.lifecycle.Lifecycle +import io.element.android.features.login.impl.R +import io.element.android.features.login.impl.error.isWaitListError +import io.element.android.features.login.impl.error.loginError +import io.element.android.libraries.designsystem.components.dialogs.RetryDialog +import io.element.android.libraries.designsystem.preview.ElementPreviewDark +import io.element.android.libraries.designsystem.preview.ElementPreviewLight +import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator +import io.element.android.libraries.designsystem.theme.components.Text +import io.element.android.libraries.designsystem.theme.components.TextButton +import io.element.android.libraries.designsystem.utils.OnLifecycleEvent +import io.element.android.libraries.theme.ElementTheme +import io.element.android.libraries.ui.strings.CommonStrings + +// Ref: https://www.figma.com/file/0MMNu7cTOzLOlWb7ctTkv3/Element-X?type=design&node-id=6761-148425 +// Only the first screen can be displayed, since once logged in, this Node will be remove by the RootNode. +@Composable +fun WaitListView( + state: WaitListState, + onCancelClicked: () -> Unit, + modifier: Modifier = Modifier, +) { + OnLifecycleEvent { _, event -> + when (event) { + Lifecycle.Event.ON_RESUME -> state.eventSink.invoke(WaitListEvents.AttemptLogin) + else -> Unit + } + } + + Box(modifier = modifier) { + WaitListBackground() + WaitListContent(state, onCancelClicked) + WaitListError(state) + } +} + +@Composable +private fun WaitListError(state: WaitListState) { + // Display a dialog for error other than the waitlist error + state.loginAction.errorOrNull()?.let { error -> + if (error.isWaitListError().not()) { + RetryDialog( + content = stringResource(id = loginError(error)), + onRetry = { + state.eventSink.invoke(WaitListEvents.AttemptLogin) + }, + onDismiss = { + state.eventSink.invoke(WaitListEvents.ClearError) + } + ) + } + } +} + +@Composable +private fun WaitListBackground( + modifier: Modifier = Modifier, +) { + Column(modifier = modifier.fillMaxSize()) { + Box( + modifier = Modifier + .fillMaxWidth() + .weight(0.3f) + .background(Color.White) + ) + Image( + modifier = Modifier + .fillMaxWidth(), + painter = painterResource(id = R.drawable.light_dark), + contentScale = ContentScale.Crop, + contentDescription = null, + ) + Box( + modifier = Modifier + .fillMaxWidth() + .weight(0.7f) + .background(Color(0xFF121418)) + ) + } +} + +@Composable +private fun WaitListContent( + state: WaitListState, + onCancelClicked: () -> Unit, + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier + .fillMaxSize() + .systemBarsPadding() + .padding(horizontal = 16.dp, vertical = 16.dp) + ) { + TextButton( + onClick = onCancelClicked, + colors = ButtonDefaults.buttonColors( + containerColor = Color.White, + contentColor = Color.Black, + disabledContainerColor = Color.White, + disabledContentColor = Color.Black, + ), + ) { + Text( + text = stringResource(CommonStrings.action_cancel), + style = ElementTheme.typography.fontBodyLgMedium, + ) + } + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = BiasAbsoluteAlignment( + horizontalBias = 0f, + verticalBias = -0.05f + ) + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally + ) { + if (state.loginAction.isLoading()) { + CircularProgressIndicator( + modifier = Modifier.size(24.dp), + strokeWidth = 2.dp, + color = Color.White + ) + } else { + Spacer(modifier = Modifier.height(24.dp)) + } + Spacer(modifier = Modifier.height(18.dp)) + Text( + text = withColoredPeriod(R.string.screen_waitlist_title), + style = ElementTheme.typography.fontHeadingXlBold, + textAlign = TextAlign.Center, + color = Color.White, + ) + Spacer(modifier = Modifier.height(8.dp)) + Text( + modifier = Modifier.widthIn(max = 360.dp), + text = stringResource( + id = R.string.screen_waitlist_message, + state.appName, + state.serverName, + ), + style = ElementTheme.typography.fontBodyLgRegular, + textAlign = TextAlign.Center, + color = Color.White, + ) + } + } + } +} + +@Composable +private fun withColoredPeriod( + @StringRes textRes: Int, +) = buildAnnotatedString { + val text = stringResource(textRes) + append(text) + if (text.endsWith(".")) { + addStyle( + style = SpanStyle( + // Light.colorGreen700 + color = Color(0xff0bc491), + ), + start = text.length - 1, + end = text.length, + ) + } +} + +@Preview +@Composable +internal fun WaitListViewLightPreview(@PreviewParameter(WaitListStateProvider::class) state: WaitListState) = + ElementPreviewLight { ContentToPreview(state) } + +@Preview +@Composable +internal fun WaitListViewDarkPreview(@PreviewParameter(WaitListStateProvider::class) state: WaitListState) = + ElementPreviewDark { ContentToPreview(state) } + +@Composable +private fun ContentToPreview(state: WaitListState) { + WaitListView( + state = state, + onCancelClicked = {}, + ) +} diff --git a/features/login/impl/src/main/res/drawable/light_dark.png b/features/login/impl/src/main/res/drawable/light_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8572310364f666ab52e187c897105b24532d7075 GIT binary patch literal 106703 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 literal 0 HcmV?d00001 diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt new file mode 100644 index 0000000000..f997399e04 --- /dev/null +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt @@ -0,0 +1,107 @@ +/* + * 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.screens.waitlistscreen + +import app.cash.molecule.RecompositionClock +import app.cash.molecule.moleculeFlow +import app.cash.turbine.test +import com.google.common.truth.Truth.assertThat +import io.element.android.features.login.impl.screens.loginpassword.LoginFormState +import io.element.android.libraries.architecture.Async +import io.element.android.libraries.matrix.api.core.SessionId +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.A_THROWABLE +import io.element.android.libraries.matrix.test.A_USER_ID +import io.element.android.libraries.matrix.test.auth.FakeAuthenticationService +import io.element.android.libraries.matrix.test.core.aBuildMeta +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class WaitListPresenterTest { + @Test + fun `present - initial state`() = runTest { + val authenticationService = FakeAuthenticationService().apply { + givenHomeserver(A_HOMESERVER) + } + val presenter = WaitListPresenter( + LoginFormState.Default, + aBuildMeta(applicationName = "Application Name"), + authenticationService, + ) + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.appName).isEqualTo("Application Name") + assertThat(initialState.serverName).isEqualTo(A_HOMESERVER_URL) + assertThat(initialState.loginAction).isEqualTo(Async.Uninitialized) + } + } + + @Test + fun `present - attempt login with error`() = runTest { + val authenticationService = FakeAuthenticationService().apply { + givenLoginError(A_THROWABLE) + } + val presenter = WaitListPresenter( + LoginFormState.Default, + aBuildMeta(), + authenticationService, + ) + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + // First usage of AttemptLogin, nothing should happen + initialState.eventSink.invoke(WaitListEvents.AttemptLogin) + expectNoEvents() + initialState.eventSink.invoke(WaitListEvents.AttemptLogin) + val submitState = awaitItem() + assertThat(submitState.loginAction).isInstanceOf(Async.Loading::class.java) + val errorState = awaitItem() + assertThat(errorState.loginAction).isEqualTo(Async.Failure(A_THROWABLE)) + // Assert the error can be cleared + errorState.eventSink(WaitListEvents.ClearError) + val clearedState = awaitItem() + assertThat(clearedState.loginAction).isEqualTo(Async.Uninitialized) + } + } + + @Test + fun `present - attempt login with success`() = runTest { + val authenticationService = FakeAuthenticationService() + val presenter = WaitListPresenter( + LoginFormState.Default, + aBuildMeta(), + authenticationService, + ) + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + // First usage of AttemptLogin, nothing should happen + initialState.eventSink.invoke(WaitListEvents.AttemptLogin) + expectNoEvents() + initialState.eventSink.invoke(WaitListEvents.AttemptLogin) + val submitState = awaitItem() + assertThat(submitState.loginAction).isInstanceOf(Async.Loading::class.java) + val successState = awaitItem() + assertThat(successState.loginAction).isEqualTo(Async.Success(A_USER_ID)) + } + } +} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt index 54bef4652b..663e92fa04 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt @@ -46,6 +46,7 @@ class LoginScreen(private val authenticationService: MatrixAuthenticationService state = state, modifier = modifier, onBackPressed = {}, + onWaitListError = {}, ) } } From 23d1c0ef44c7258ba7e14078ecfd385ae13ab06a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Jul 2023 11:10:19 +0200 Subject: [PATCH 04/10] Iterate on this image, the rendering was not perfect. --- .../impl/src/main/res/drawable/light_dark.png | Bin 106703 -> 106351 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/features/login/impl/src/main/res/drawable/light_dark.png b/features/login/impl/src/main/res/drawable/light_dark.png index 8572310364f666ab52e187c897105b24532d7075..2ff7516878bd0004fc173df09c4d965f873867eb 100644 GIT binary patch delta 96386 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 E0S`dZfdBvi delta 96723 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 z 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%0D^s|S2?M}_JPA3Pxj6=*p`);6E`m$u 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 From 0b0abbb6b6e3d1c29353165deb1af718504908e5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Jul 2023 11:41:17 +0200 Subject: [PATCH 05/10] Add You're in screen (UI) tom --- .../waitlistscreen/WaitListStateProvider.kt | 3 +- .../screens/waitlistscreen/WaitListView.kt | 71 ++++++++++++++----- 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt index f7cd26209c..5907ff1acf 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt @@ -27,12 +27,13 @@ open class WaitListStateProvider : PreviewParameterProvider { aWaitListState(loginAction = Async.Loading()), aWaitListState(loginAction = Async.Failure(Throwable())), aWaitListState(loginAction = Async.Failure(Throwable(message = "IO_ELEMENT_X_WAIT_LIST"))), + aWaitListState(loginAction = Async.Success(SessionId("@alice:element.io"))), // Add other state here ) } fun aWaitListState( - appName: String = "Element", + appName: String = "Element X", serverName: String = "server.org", loginAction: Async = Async.Uninitialized, ) = WaitListState( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt index f611c5ef20..79e9f4d613 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt @@ -48,9 +48,11 @@ import androidx.lifecycle.Lifecycle import io.element.android.features.login.impl.R import io.element.android.features.login.impl.error.isWaitListError import io.element.android.features.login.impl.error.loginError +import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.components.dialogs.RetryDialog import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight +import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton @@ -137,19 +139,21 @@ private fun WaitListContent( .systemBarsPadding() .padding(horizontal = 16.dp, vertical = 16.dp) ) { - TextButton( - onClick = onCancelClicked, - colors = ButtonDefaults.buttonColors( - containerColor = Color.White, - contentColor = Color.Black, - disabledContainerColor = Color.White, - disabledContentColor = Color.Black, - ), - ) { - Text( - text = stringResource(CommonStrings.action_cancel), - style = ElementTheme.typography.fontBodyLgMedium, - ) + if (state.loginAction !is Async.Success) { + TextButton( + onClick = onCancelClicked, + colors = ButtonDefaults.buttonColors( + containerColor = Color.White, + contentColor = Color.Black, + disabledContainerColor = Color.White, + disabledContentColor = Color.Black, + ), + ) { + Text( + text = stringResource(CommonStrings.action_cancel), + style = ElementTheme.typography.fontBodyLgMedium, + ) + } } Box( modifier = Modifier.fillMaxSize(), @@ -171,26 +175,57 @@ private fun WaitListContent( Spacer(modifier = Modifier.height(24.dp)) } Spacer(modifier = Modifier.height(18.dp)) + val titleRes = when (state.loginAction) { + is Async.Success -> R.string.screen_waitlist_title_success + else -> R.string.screen_waitlist_title + } Text( - text = withColoredPeriod(R.string.screen_waitlist_title), + text = withColoredPeriod(titleRes), style = ElementTheme.typography.fontHeadingXlBold, textAlign = TextAlign.Center, color = Color.White, ) Spacer(modifier = Modifier.height(8.dp)) - Text( - modifier = Modifier.widthIn(max = 360.dp), - text = stringResource( + val subtitle = when (state.loginAction) { + is Async.Success -> stringResource( + id = R.string.screen_waitlist_message_success, + state.appName, + ) + else -> stringResource( id = R.string.screen_waitlist_message, state.appName, state.serverName, - ), + ) + } + Text( + modifier = Modifier.widthIn(max = 360.dp), + text = subtitle, style = ElementTheme.typography.fontBodyLgRegular, textAlign = TextAlign.Center, color = Color.White, ) } } + if (state.loginAction is Async.Success) { + Button( + onClick = { TODO() }, + colors = ButtonDefaults.buttonColors( + containerColor = Color.White, + contentColor = Color.Black, + disabledContainerColor = Color.White, + disabledContentColor = Color.Black, + ), + modifier = Modifier + .fillMaxWidth() + .align(Alignment.BottomCenter) + .padding(bottom = 8.dp) + ) { + Text( + text = stringResource(id = CommonStrings.action_continue), + style = ElementTheme.typography.fontBodyLgMedium, + ) + } + } } } From 9a7111cba1f1611f13fdb7b15ed310dec772c495 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Jul 2023 11:35:38 +0200 Subject: [PATCH 06/10] Show the "You're in" screen --- .../io/element/android/appnav/RootFlowNode.kt | 16 +++++++- .../features/login/api/LoginUserStory.kt | 23 +++++++++++ .../login/impl/DefaultLoginUserStory.kt | 38 +++++++++++++++++++ .../features/login/impl/LoginFlowNode.kt | 6 +++ .../loginpassword/LoginPasswordPresenter.kt | 4 ++ .../screens/waitlistscreen/WaitListEvents.kt | 1 + .../waitlistscreen/WaitListPresenter.kt | 3 ++ .../screens/waitlistscreen/WaitListView.kt | 2 +- 8 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt 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 733485fcef..e75ae3b542 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -42,6 +42,7 @@ import io.element.android.appnav.intent.IntentResolver import io.element.android.appnav.intent.ResolvedIntent import io.element.android.appnav.root.RootPresenter import io.element.android.appnav.root.RootView +import io.element.android.features.login.api.LoginUserStory import io.element.android.features.login.api.oidc.OidcAction import io.element.android.features.login.api.oidc.OidcActionFlow import io.element.android.features.preferences.api.CacheService @@ -55,6 +56,7 @@ import io.element.android.libraries.di.AppScope import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.UserId +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.first @@ -74,6 +76,7 @@ class RootFlowNode @AssistedInject constructor( private val bugReportEntryPoint: BugReportEntryPoint, private val intentResolver: IntentResolver, private val oidcActionFlow: OidcActionFlow, + private val loginUserStory: LoginUserStory, ) : BackstackNode( backstack = BackStack( @@ -90,8 +93,7 @@ class RootFlowNode @AssistedInject constructor( } private fun observeLoggedInState() { - authenticationService.isLoggedIn() - .distinctUntilChanged() + isUserLoggedInFlow() .combine( cacheService.cacheIndex().onEach { Timber.v("cacheIndex=$it") @@ -114,6 +116,16 @@ class RootFlowNode @AssistedInject constructor( .launchIn(lifecycleScope) } + private fun isUserLoggedInFlow(): Flow { + return combine( + authenticationService.isLoggedIn(), + loginUserStory.loginFlowIsDone() + ) { isLoggedIn, loginFlowIsDone -> + isLoggedIn && loginFlowIsDone + } + .distinctUntilChanged() + } + private fun switchToLoggedInFlow(sessionId: SessionId, cacheIndex: Int) { backstack.safeRoot(NavTarget.LoggedInFlow(sessionId, cacheIndex)) } diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt new file mode 100644 index 0000000000..7a6a704d0f --- /dev/null +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt @@ -0,0 +1,23 @@ +/* + * 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.api + +import kotlinx.coroutines.flow.Flow + +interface LoginUserStory { + fun loginFlowIsDone(): Flow +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt new file mode 100644 index 0000000000..aef32f0890 --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.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 + +import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.features.login.api.LoginUserStory +import io.element.android.libraries.di.AppScope +import io.element.android.libraries.di.SingleIn +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import javax.inject.Inject + +@SingleIn(AppScope::class) +@ContributesBinding(AppScope::class) +class DefaultLoginUserStory @Inject constructor() : LoginUserStory { + // True by default, will be set to false when the login user story is started, and set to true again once it's done. + private val loginFlowIsDone: MutableStateFlow = MutableStateFlow(true) + + override fun loginFlowIsDone(): Flow = loginFlowIsDone + + fun setLoginFlowIsDone(value: Boolean) { + loginFlowIsDone.value = value + } +} 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 0ed5848240..fe47fb1b67 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 @@ -60,6 +60,7 @@ class LoginFlowNode @AssistedInject constructor( private val customTabAvailabilityChecker: CustomTabAvailabilityChecker, private val customTabHandler: CustomTabHandler, private val accountProviderDataSource: AccountProviderDataSource, + private val defaultLoginUserStory: DefaultLoginUserStory, ) : BackstackNode( backstack = BackStack( initialElement = NavTarget.ConfirmAccountProvider, @@ -77,6 +78,11 @@ class LoginFlowNode @AssistedInject constructor( private val inputs: Inputs = inputs() + override fun onBuilt() { + super.onBuilt() + defaultLoginUserStory.setLoginFlowIsDone(false) + } + sealed interface NavTarget : Parcelable { @Parcelize object ConfirmAccountProvider : NavTarget diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt index 1fc4a10bbb..b2ea5fb985 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt @@ -24,6 +24,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable +import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Presenter @@ -36,6 +37,7 @@ import javax.inject.Inject class LoginPasswordPresenter @Inject constructor( private val authenticationService: MatrixAuthenticationService, private val accountProviderDataSource: AccountProviderDataSource, + private val defaultLoginUserStory: DefaultLoginUserStory, ) : Presenter { @Composable @@ -77,6 +79,8 @@ class LoginPasswordPresenter @Inject constructor( loggedInState.value = Async.Loading() authenticationService.login(formState.login.trim(), formState.password) .onSuccess { sessionId -> + // We will not navigate to the WaitList screen, so the login user story is done + defaultLoginUserStory.setLoginFlowIsDone(true) loggedInState.value = Async.Success(sessionId) } .onFailure { failure -> diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt index 5604789f55..5ceee99f91 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListEvents.kt @@ -19,4 +19,5 @@ package io.element.android.features.login.impl.screens.waitlistscreen sealed interface WaitListEvents { object AttemptLogin : WaitListEvents object ClearError : WaitListEvents + object Continue : WaitListEvents } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt index 061872839b..9c07204ab2 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt @@ -24,6 +24,7 @@ import androidx.compose.runtime.rememberCoroutineScope import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.screens.loginpassword.LoginFormState import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Presenter @@ -38,6 +39,7 @@ class WaitListPresenter @AssistedInject constructor( @Assisted private val formState: LoginFormState, private val buildMeta: BuildMeta, private val authenticationService: MatrixAuthenticationService, + private val defaultLoginUserStory: DefaultLoginUserStory, ) : Presenter { @AssistedFactory @@ -68,6 +70,7 @@ class WaitListPresenter @AssistedInject constructor( } } WaitListEvents.ClearError -> loginAction.value = Async.Uninitialized + WaitListEvents.Continue -> defaultLoginUserStory.setLoginFlowIsDone(true) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt index 79e9f4d613..15105a8048 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt @@ -208,7 +208,7 @@ private fun WaitListContent( } if (state.loginAction is Async.Success) { Button( - onClick = { TODO() }, + onClick = { state.eventSink.invoke(WaitListEvents.Continue) }, colors = ButtonDefaults.buttonColors( containerColor = Color.White, contentColor = Color.Black, From aafd4f8347437d08d38edd841fa6478c1a4108a0 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Thu, 6 Jul 2023 09:59:04 +0000 Subject: [PATCH 07/10] Update screenshots --- ...tGroup_WaitListViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png | 3 +++ ...tGroup_WaitListViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png | 3 +++ ...tGroup_WaitListViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png | 3 +++ ...tGroup_WaitListViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png | 3 +++ ...tGroup_WaitListViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png | 3 +++ ...Group_WaitListViewLightPreview_0_null_0,NEXUS_5,1.0,en].png | 3 +++ ...Group_WaitListViewLightPreview_0_null_1,NEXUS_5,1.0,en].png | 3 +++ ...Group_WaitListViewLightPreview_0_null_2,NEXUS_5,1.0,en].png | 3 +++ ...Group_WaitListViewLightPreview_0_null_3,NEXUS_5,1.0,en].png | 3 +++ ...Group_WaitListViewLightPreview_0_null_4,NEXUS_5,1.0,en].png | 3 +++ 10 files changed, 30 insertions(+) create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_0,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_1,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_2,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_3,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_4,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_0,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_1,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_2,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_3,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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_4,NEXUS_5,1.0,en].png diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..6b5e4c405f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97d88bef72c332cd145dc1080a989d163478c0252a9993f2f474bd51f2e4da8 +size 148762 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..151e09cfc0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8edd6d72db9efaaed76ac64f9882a5b66ac30747355815955157a3f3fc98c2c +size 149344 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..d1642cd741 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e099a30e3090ffd9c0f30e095131cb60d53b615623acd50565bde8fa28e7fe74 +size 62810 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..6b5e4c405f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97d88bef72c332cd145dc1080a989d163478c0252a9993f2f474bd51f2e4da8 +size 148762 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..822450c8af --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewDarkPreview_0_null_4,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85222447b700315e6eea458fc72d61fb741018cb80c3a4530d4efc08ac9335ac +size 129373 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_0,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..6b5e4c405f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_0,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97d88bef72c332cd145dc1080a989d163478c0252a9993f2f474bd51f2e4da8 +size 148762 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_1,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..151e09cfc0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_1,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8edd6d72db9efaaed76ac64f9882a5b66ac30747355815955157a3f3fc98c2c +size 149344 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_2,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..dfa30f1f08 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_2,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71289cbba79500c063ec80430fb46bc544ccbe6fa7035ac81c81322c9f1a300f +size 63631 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_3,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..6b5e4c405f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_3,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97d88bef72c332cd145dc1080a989d163478c0252a9993f2f474bd51f2e4da8 +size 148762 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_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.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_4,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..822450c8af --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.login.impl.screens.waitlistscreen_null_DefaultGroup_WaitListViewLightPreview_0_null_4,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85222447b700315e6eea458fc72d61fb741018cb80c3a4530d4efc08ac9335ac +size 129373 From 9dc8633b7b6492dc79b87fa4f722ecfed94d01de Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Jul 2023 12:01:16 +0200 Subject: [PATCH 08/10] Update tests --- .../loginpassword/LoginPasswordPresenterTest.kt | 14 ++++++++++++++ .../waitlistscreen/WaitListPresenterTest.kt | 12 ++++++++++++ 2 files changed, 26 insertions(+) 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 c4c8a97155..166c090e04 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 @@ -20,6 +20,7 @@ import app.cash.molecule.RecompositionClock import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +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.Async @@ -30,6 +31,7 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID 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.FakeAuthenticationService +import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Test @@ -38,9 +40,11 @@ class LoginPasswordPresenterTest { fun `present - initial state`() = runTest { val authenticationService = FakeAuthenticationService() val accountProviderDataSource = AccountProviderDataSource() + val loginUserStory = DefaultLoginUserStory() val presenter = LoginPasswordPresenter( authenticationService, accountProviderDataSource, + loginUserStory, ) moleculeFlow(RecompositionClock.Immediate) { presenter.present() @@ -57,9 +61,11 @@ class LoginPasswordPresenterTest { fun `present - enter login and password`() = runTest { val authenticationService = FakeAuthenticationService() val accountProviderDataSource = AccountProviderDataSource() + val loginUserStory = DefaultLoginUserStory() val presenter = LoginPasswordPresenter( authenticationService, accountProviderDataSource, + loginUserStory, ) authenticationService.givenHomeserver(A_HOMESERVER) moleculeFlow(RecompositionClock.Immediate) { @@ -81,14 +87,17 @@ class LoginPasswordPresenterTest { fun `present - submit`() = runTest { val authenticationService = FakeAuthenticationService() val accountProviderDataSource = AccountProviderDataSource() + val loginUserStory = DefaultLoginUserStory().apply { setLoginFlowIsDone(false) } val presenter = LoginPasswordPresenter( authenticationService, accountProviderDataSource, + loginUserStory, ) authenticationService.givenHomeserver(A_HOMESERVER) moleculeFlow(RecompositionClock.Immediate) { presenter.present() }.test { + assertThat(loginUserStory.loginFlowIsDone().first()).isFalse() val initialState = awaitItem() initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) @@ -99,6 +108,7 @@ class LoginPasswordPresenterTest { assertThat(submitState.loginAction).isInstanceOf(Async.Loading::class.java) val loggedInState = awaitItem() assertThat(loggedInState.loginAction).isEqualTo(Async.Success(A_SESSION_ID)) + assertThat(loginUserStory.loginFlowIsDone().first()).isTrue() } } @@ -106,9 +116,11 @@ class LoginPasswordPresenterTest { fun `present - submit with error`() = runTest { val authenticationService = FakeAuthenticationService() val accountProviderDataSource = AccountProviderDataSource() + val loginUserStory = DefaultLoginUserStory() val presenter = LoginPasswordPresenter( authenticationService, accountProviderDataSource, + loginUserStory, ) authenticationService.givenHomeserver(A_HOMESERVER) moleculeFlow(RecompositionClock.Immediate) { @@ -132,9 +144,11 @@ class LoginPasswordPresenterTest { fun `present - clear error`() = runTest { val authenticationService = FakeAuthenticationService() val accountProviderDataSource = AccountProviderDataSource() + val loginUserStory = DefaultLoginUserStory() val presenter = LoginPasswordPresenter( authenticationService, accountProviderDataSource, + loginUserStory, ) authenticationService.givenHomeserver(A_HOMESERVER) moleculeFlow(RecompositionClock.Immediate) { diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt index f997399e04..4a06fdf4f0 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt @@ -20,6 +20,7 @@ import app.cash.molecule.RecompositionClock import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.screens.loginpassword.LoginFormState import io.element.android.libraries.architecture.Async import io.element.android.libraries.matrix.api.core.SessionId @@ -29,6 +30,7 @@ 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.auth.FakeAuthenticationService import io.element.android.libraries.matrix.test.core.aBuildMeta +import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Test @@ -38,10 +40,12 @@ class WaitListPresenterTest { val authenticationService = FakeAuthenticationService().apply { givenHomeserver(A_HOMESERVER) } + val loginUserStory = DefaultLoginUserStory() val presenter = WaitListPresenter( LoginFormState.Default, aBuildMeta(applicationName = "Application Name"), authenticationService, + loginUserStory, ) moleculeFlow(RecompositionClock.Immediate) { presenter.present() @@ -58,10 +62,12 @@ class WaitListPresenterTest { val authenticationService = FakeAuthenticationService().apply { givenLoginError(A_THROWABLE) } + val loginUserStory = DefaultLoginUserStory() val presenter = WaitListPresenter( LoginFormState.Default, aBuildMeta(), authenticationService, + loginUserStory, ) moleculeFlow(RecompositionClock.Immediate) { presenter.present() @@ -85,14 +91,17 @@ class WaitListPresenterTest { @Test fun `present - attempt login with success`() = runTest { val authenticationService = FakeAuthenticationService() + val loginUserStory = DefaultLoginUserStory().apply { setLoginFlowIsDone(false) } val presenter = WaitListPresenter( LoginFormState.Default, aBuildMeta(), authenticationService, + loginUserStory, ) moleculeFlow(RecompositionClock.Immediate) { presenter.present() }.test { + assertThat(loginUserStory.loginFlowIsDone().first()).isFalse() val initialState = awaitItem() // First usage of AttemptLogin, nothing should happen initialState.eventSink.invoke(WaitListEvents.AttemptLogin) @@ -102,6 +111,9 @@ class WaitListPresenterTest { assertThat(submitState.loginAction).isInstanceOf(Async.Loading::class.java) val successState = awaitItem() assertThat(successState.loginAction).isEqualTo(Async.Success(A_USER_ID)) + assertThat(loginUserStory.loginFlowIsDone().first()).isFalse() + successState.eventSink.invoke(WaitListEvents.Continue) + assertThat(loginUserStory.loginFlowIsDone().first()).isTrue() } } } From f0910a4e2a3c5dd422f1c2c065266cdd1c5770f4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Jul 2023 14:19:49 +0200 Subject: [PATCH 09/10] Fix compilation issue of minimal app. --- .../kotlin/io/element/android/samples/minimal/LoginScreen.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt index 663e92fa04..ec4d7cf9f2 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt @@ -20,6 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +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.loginpassword.LoginPasswordPresenter import io.element.android.features.login.impl.screens.loginpassword.LoginPasswordView @@ -33,7 +34,8 @@ class LoginScreen(private val authenticationService: MatrixAuthenticationService val presenter = remember { LoginPasswordPresenter( authenticationService = authenticationService, - AccountProviderDataSource() + AccountProviderDataSource(), + DefaultLoginUserStory(), ) } From 072b59e06b21cc905d9c27f55c7c38e363ecaba9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Jul 2023 17:18:16 +0200 Subject: [PATCH 10/10] Use a `val` for the StateFlow, and expose a StateFlow. --- .../main/kotlin/io/element/android/appnav/RootFlowNode.kt | 2 +- .../element/android/features/login/api/LoginUserStory.kt | 4 ++-- .../android/features/login/impl/DefaultLoginUserStory.kt | 5 +---- .../screens/loginpassword/LoginPasswordPresenterTest.kt | 5 ++--- .../impl/screens/waitlistscreen/WaitListPresenterTest.kt | 7 +++---- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index e75ae3b542..ba01d15297 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -119,7 +119,7 @@ class RootFlowNode @AssistedInject constructor( private fun isUserLoggedInFlow(): Flow { return combine( authenticationService.isLoggedIn(), - loginUserStory.loginFlowIsDone() + loginUserStory.loginFlowIsDone ) { isLoggedIn, loginFlowIsDone -> isLoggedIn && loginFlowIsDone } diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt index 7a6a704d0f..3a4cc54563 100644 --- a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginUserStory.kt @@ -16,8 +16,8 @@ package io.element.android.features.login.api -import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow interface LoginUserStory { - fun loginFlowIsDone(): Flow + val loginFlowIsDone: StateFlow } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt index aef32f0890..26b00068bc 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt @@ -20,7 +20,6 @@ import com.squareup.anvil.annotations.ContributesBinding import io.element.android.features.login.api.LoginUserStory import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.SingleIn -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import javax.inject.Inject @@ -28,9 +27,7 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultLoginUserStory @Inject constructor() : LoginUserStory { // True by default, will be set to false when the login user story is started, and set to true again once it's done. - private val loginFlowIsDone: MutableStateFlow = MutableStateFlow(true) - - override fun loginFlowIsDone(): Flow = loginFlowIsDone + override val loginFlowIsDone: MutableStateFlow = MutableStateFlow(true) fun setLoginFlowIsDone(value: Boolean) { loginFlowIsDone.value = value 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 166c090e04..afd4b542e4 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 @@ -31,7 +31,6 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID 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.FakeAuthenticationService -import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Test @@ -97,7 +96,7 @@ class LoginPasswordPresenterTest { moleculeFlow(RecompositionClock.Immediate) { presenter.present() }.test { - assertThat(loginUserStory.loginFlowIsDone().first()).isFalse() + assertThat(loginUserStory.loginFlowIsDone.value).isFalse() val initialState = awaitItem() initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) @@ -108,7 +107,7 @@ class LoginPasswordPresenterTest { assertThat(submitState.loginAction).isInstanceOf(Async.Loading::class.java) val loggedInState = awaitItem() assertThat(loggedInState.loginAction).isEqualTo(Async.Success(A_SESSION_ID)) - assertThat(loginUserStory.loginFlowIsDone().first()).isTrue() + assertThat(loginUserStory.loginFlowIsDone.value).isTrue() } } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt index 4a06fdf4f0..389ac52176 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt @@ -30,7 +30,6 @@ 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.auth.FakeAuthenticationService import io.element.android.libraries.matrix.test.core.aBuildMeta -import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Test @@ -101,7 +100,7 @@ class WaitListPresenterTest { moleculeFlow(RecompositionClock.Immediate) { presenter.present() }.test { - assertThat(loginUserStory.loginFlowIsDone().first()).isFalse() + assertThat(loginUserStory.loginFlowIsDone.value).isFalse() val initialState = awaitItem() // First usage of AttemptLogin, nothing should happen initialState.eventSink.invoke(WaitListEvents.AttemptLogin) @@ -111,9 +110,9 @@ class WaitListPresenterTest { assertThat(submitState.loginAction).isInstanceOf(Async.Loading::class.java) val successState = awaitItem() assertThat(successState.loginAction).isEqualTo(Async.Success(A_USER_ID)) - assertThat(loginUserStory.loginFlowIsDone().first()).isFalse() + assertThat(loginUserStory.loginFlowIsDone.value).isFalse() successState.eventSink.invoke(WaitListEvents.Continue) - assertThat(loginUserStory.loginFlowIsDone().first()).isTrue() + assertThat(loginUserStory.loginFlowIsDone.value).isTrue() } } }