From b7923091282a5e71acf207d6db81b1f48ce89c58 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Thu, 16 Nov 2023 16:24:04 +0200 Subject: [PATCH] Add subscribe to email on registration --- .../sign_up/validate_email/ValidateEmailDataSource.kt | 8 +++++++- .../sign_up/validate_email/ValidateEmailFragment.kt | 5 +++++ .../sign_up/validate_email/ValidateEmailViewModel.kt | 5 ++++- auth/src/main/res/layout/fragment_validate_email.xml | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailDataSource.kt index 93fe0f9fd..0ae5902e3 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailDataSource.kt @@ -6,6 +6,7 @@ import org.futo.circles.auth.feature.sign_up.SignUpDataSource.Companion.REGISTRA import org.futo.circles.auth.feature.sign_up.SignUpDataSource.Companion.REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE import org.futo.circles.core.extensions.Response import org.matrix.android.sdk.api.auth.registration.RegistrationResult +import org.matrix.android.sdk.api.auth.registration.Stage import javax.inject.Inject class ValidateEmailDataSource @Inject constructor( @@ -19,7 +20,7 @@ class ValidateEmailDataSource @Inject constructor( mapOf( TYPE_PARAM_KEY to REGISTRATION_EMAIL_REQUEST_TOKEN_TYPE, EMAIL_PARAM_KEY to email, - //SUBSCRIBE_TO_LIST to subscribeToUpdates + SUBSCRIBE_TO_LIST to subscribeToUpdates ) ) @@ -31,9 +32,14 @@ class ValidateEmailDataSource @Inject constructor( ) ) + fun shouldShowSubscribeToEmail(): Boolean = + (signUpDataSource.currentStage as? Stage.Other)?.params?.get(OFFER_LIST_SUBSCRIPTION_KEY) as? Boolean + ?: false + companion object { private const val EMAIL_PARAM_KEY = "email" private const val TOKEN_PARAM_KEY = "token" private const val SUBSCRIBE_TO_LIST = "subscribe_to_list" + private const val OFFER_LIST_SUBSCRIPTION_KEY = "offer_list_subscription" } } \ No newline at end of file diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailFragment.kt index 4d00dc1ba..da2ea239d 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailFragment.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailFragment.kt @@ -13,7 +13,9 @@ import org.futo.circles.core.base.fragment.HasLoadingState import org.futo.circles.core.base.fragment.ParentBackPressOwnerFragment import org.futo.circles.core.extensions.getText import org.futo.circles.core.extensions.isValidEmail +import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse +import org.futo.circles.core.extensions.setIsVisible import org.futo.circles.core.extensions.showDialog import org.futo.circles.core.extensions.showSuccess import org.futo.circles.core.extensions.visible @@ -67,6 +69,9 @@ class ValidateEmailFragment : ParentBackPressOwnerFragment(R.layout.fragment_val viewModel.sendCodeLiveData.observeResponse(this, success = { validationCodeSentState() }) viewModel.validateEmailLiveData.observeResponse(this) + viewModel.showSubscribeCheckLiveData.observeData(this) { + binding.cbEmailUpdates.setIsVisible(it) + } } private fun getEmailInput(): String = binding.tilEmail.getText() diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailViewModel.kt index 3ea9d8bec..7dde2420a 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailViewModel.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/validate_email/ValidateEmailViewModel.kt @@ -18,10 +18,13 @@ class ValidateEmailViewModel @Inject constructor( val validateEmailLiveData = SingleEventLiveData<Response<RegistrationResult>>() + val showSubscribeCheckLiveData = MutableLiveData(dataSource.shouldShowSubscribeToEmail()) fun sendCode(email: String, subscribeToUpdates: Boolean) { launchBg { - sendCodeLiveData.postValue(dataSource.sendValidationCode(email, subscribeToUpdates)) + val result = dataSource.sendValidationCode(email, subscribeToUpdates) + sendCodeLiveData.postValue(result) + if (result is Response.Success) showSubscribeCheckLiveData.postValue(false) } } diff --git a/auth/src/main/res/layout/fragment_validate_email.xml b/auth/src/main/res/layout/fragment_validate_email.xml index 5aea88782..8fb3c4e6e 100644 --- a/auth/src/main/res/layout/fragment_validate_email.xml +++ b/auth/src/main/res/layout/fragment_validate_email.xml @@ -120,7 +120,7 @@ android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/btnSendCode" /> + app:layout_constraintTop_toBottomOf="@id/tilValidationCode" /> <org.futo.circles.core.view.LoadingButton android:id="@+id/btnValidate" -- GitLab