diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LoginDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LoginDataSource.kt index 2a826f042f0b0af71c88bf80291e8d077107fca0..b262c87c41810776c5c9d1cfe57bab023aec05d3 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LoginDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LoginDataSource.kt @@ -8,8 +8,8 @@ import org.futo.circles.auth.feature.uia.UIADataSource.Companion.DIRECT_LOGIN_PA import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_BSSPEKE_VERIFY_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_PASSWORD_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_PASSWORD_USER_ID_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_BSSPEKE_SAVE_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_BSSPEKE_SAVE_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_EMAIL_SUBMIT_TOKEN_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSource.Companion.USER_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider @@ -85,10 +85,10 @@ class LoginDataSource @Inject constructor( private fun getCircleStagesForForgotPassword(flows: List<List<Stage>>): List<Stage>? = flows.firstOrNull { stages -> val containsEmailStage = stages.firstOrNull { stage -> - (stage as? Stage.Other)?.type == REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE + (stage as? Stage.Other)?.type == ENROLL_EMAIL_SUBMIT_TOKEN_TYPE } != null val containsSetPassword = stages.firstOrNull { stage -> - (stage as? Stage.Other)?.type == REGISTRATION_BSSPEKE_SAVE_TYPE + (stage as? Stage.Other)?.type == ENROLL_BSSPEKE_SAVE_TYPE } != null containsEmailStage && containsSetPassword } diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt index 8841a4ead076e435f19e47271daef34f8e6ae535..95535ce37f4e636cc9a92613098bf0ed091bff0f 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt @@ -4,8 +4,8 @@ import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import org.futo.circles.auth.R import org.futo.circles.auth.feature.uia.UIADataSource -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_FREE_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_SUBSCRIPTION_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.SUBSCRIPTION_FREE_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.SUBSCRPTION_GOOGLE_TYPE import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.auth.model.UIAFlowType import org.futo.circles.core.base.CirclesAppConfig @@ -52,7 +52,7 @@ class SignUpDataSource @Inject constructor( // Must contain org.futo.subscriptions.free_forever fun getFreeSignupStages(flows: List<List<Stage>>): List<Stage>? = flows.firstOrNull { stages -> stages.firstOrNull { stage -> - (stage as? Stage.Other)?.type == REGISTRATION_FREE_TYPE + (stage as? Stage.Other)?.type == SUBSCRIPTION_FREE_TYPE } != null } @@ -61,7 +61,7 @@ class SignUpDataSource @Inject constructor( if (CirclesAppConfig.isGplayFlavor()) { flows.firstOrNull { stages -> stages.firstOrNull { stage -> - (stage as? Stage.Other)?.type == REGISTRATION_SUBSCRIPTION_TYPE + (stage as? Stage.Other)?.type == SUBSCRPTION_GOOGLE_TYPE } != null } } else null diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt index d6f9d30a5b781fadd3e33db5f46d02138404a7fd..741c1161ae33085cef7db8ee2008c131e1518ac9 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt @@ -114,23 +114,23 @@ abstract class UIADataSource { private suspend fun handleStageOther(type: String): UIANavigationEvent? = when (type) { - REGISTRATION_FREE_TYPE -> { + SUBSCRIPTION_FREE_TYPE -> { performUIAStage(mapOf(TYPE_PARAM_KEY to type)) null } - REGISTRATION_TOKEN_TYPE -> UIANavigationEvent.TokenValidation - REGISTRATION_SUBSCRIPTION_TYPE -> UIANavigationEvent.Subscription - REGISTRATION_EMAIL_REQUEST_TOKEN_TYPE -> UIANavigationEvent.ValidateEmail - REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE -> null //stay on same screen - REGISTRATION_USERNAME_TYPE -> UIANavigationEvent.Username - REGISTRATION_PASSWORD_TYPE, + LOGIN_REGISTRATION_TOKEN_TYPE -> UIANavigationEvent.TokenValidation + SUBSCRPTION_GOOGLE_TYPE -> UIANavigationEvent.Subscription + ENROLL_EMAIL_REQUEST_TOKEN_TYPE -> UIANavigationEvent.ValidateEmail + ENROLL_EMAIL_SUBMIT_TOKEN_TYPE -> null //stay on same screen + ENROLL_USERNAME_TYPE -> UIANavigationEvent.Username + ENROLL_PASSWORD_TYPE, LOGIN_PASSWORD_TYPE, LOGIN_BSSPEKE_OPRF_TYPE, DIRECT_LOGIN_PASSWORD_TYPE, - REGISTRATION_BSSPEKE_OPRF_TYPE -> UIANavigationEvent.Password + ENROLL_BSSPEKE_OPRF_TYPE -> UIANavigationEvent.Password - REGISTRATION_BSSPEKE_SAVE_TYPE -> null + ENROLL_BSSPEKE_SAVE_TYPE -> null LOGIN_BSSPEKE_VERIFY_TYPE -> null else -> throw IllegalArgumentException("Not supported stage $type") @@ -151,21 +151,25 @@ abstract class UIADataSource { const val USER_PARAM_KEY = "user" const val LOGIN_PASSWORD_USER_ID_TYPE = "m.id.user" - //login stages + //stages password const val LOGIN_PASSWORD_TYPE = "m.login.password" const val DIRECT_LOGIN_PASSWORD_TYPE = "m.login.password.direct" const val LOGIN_BSSPEKE_OPRF_TYPE = "m.login.bsspeke-ecc.oprf" const val LOGIN_BSSPEKE_VERIFY_TYPE = "m.login.bsspeke-ecc.verify" + const val ENROLL_BSSPEKE_OPRF_TYPE = "m.enroll.bsspeke-ecc.oprf" + const val ENROLL_BSSPEKE_SAVE_TYPE = "m.enroll.bsspeke-ecc.save" + + //stages subscription + const val SUBSCRIPTION_FREE_TYPE = "org.futo.subscriptions.free_forever" + const val SUBSCRPTION_GOOGLE_TYPE = "org.futo.subscriptions.google_play" + + //stages email + const val ENROLL_EMAIL_REQUEST_TOKEN_TYPE = "m.enroll.email.request_token" + const val ENROLL_EMAIL_SUBMIT_TOKEN_TYPE = "m.enroll.email.submit_token" + + const val LOGIN_REGISTRATION_TOKEN_TYPE = "m.login.registration_token" + const val ENROLL_USERNAME_TYPE = "m.enroll.username" + const val ENROLL_PASSWORD_TYPE = "m.enroll.password" - //signup stages - const val REGISTRATION_FREE_TYPE = "org.futo.subscriptions.free_forever" - const val REGISTRATION_TOKEN_TYPE = "m.login.registration_token" - const val REGISTRATION_SUBSCRIPTION_TYPE = "org.futo.subscriptions.google_play" - const val REGISTRATION_EMAIL_REQUEST_TOKEN_TYPE = "m.enroll.email.request_token" - const val REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE = "m.enroll.email.submit_token" - const val REGISTRATION_USERNAME_TYPE = "m.enroll.username" - const val REGISTRATION_PASSWORD_TYPE = "m.enroll.password" - const val REGISTRATION_BSSPEKE_OPRF_TYPE = "m.enroll.bsspeke-ecc.oprf" - const val REGISTRATION_BSSPEKE_SAVE_TYPE = "m.enroll.bsspeke-ecc.save" } } \ No newline at end of file diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/BsSpekeStageDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/BsSpekeStageDataSource.kt index 50969573831f3b2484cf188ec3989b7a0cc387a9..1c710998ac95dd18348fc2032888a0adddb2a1c5 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/BsSpekeStageDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/BsSpekeStageDataSource.kt @@ -8,8 +8,8 @@ import org.futo.circles.auth.bsspeke.BSSpekeClient import org.futo.circles.auth.bsspeke.BSSpekeClientProvider import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_BSSPEKE_OPRF_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_BSSPEKE_VERIFY_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_BSSPEKE_OPRF_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_BSSPEKE_SAVE_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_BSSPEKE_OPRF_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_BSSPEKE_SAVE_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.auth.model.UIAFlowType @@ -39,7 +39,7 @@ class BsSpekeStageDataSource @Inject constructor( private fun isLoginMode() = UIADataSourceProvider.activeFlowType == UIAFlowType.Login private fun getOprfTypeKey() = - if (isLoginMode()) LOGIN_BSSPEKE_OPRF_TYPE else REGISTRATION_BSSPEKE_OPRF_TYPE + if (isLoginMode()) LOGIN_BSSPEKE_OPRF_TYPE else ENROLL_BSSPEKE_OPRF_TYPE private suspend fun performOprfStage( bsSpekeClient: BSSpekeClient @@ -87,14 +87,14 @@ class BsSpekeStageDataSource @Inject constructor( ): Response<RegistrationResult> { val PandV: Pair<String, String> try { - val blindSalt = getBlindSalt(context, oprfResult, REGISTRATION_BSSPEKE_SAVE_TYPE) + val blindSalt = getBlindSalt(context, oprfResult, ENROLL_BSSPEKE_SAVE_TYPE) PandV = bsSpekeClient.generateBase64PandV(blindSalt, blocks, iterations) } catch (e: Exception) { return Response.Error(e.message ?: "") } return uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_BSSPEKE_SAVE_TYPE, + TYPE_PARAM_KEY to ENROLL_BSSPEKE_SAVE_TYPE, P_PARAM_KEY to PandV.first, V_PARAM_KEY to PandV.second, PHF_PARAM_KEY to phfParams diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/PasswordDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/PasswordDataSource.kt index 265510cefdf32dd8478dc092f4c7180609744f15..51f9732cb1451a2a64392843fb4f1217884eee20 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/PasswordDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/password/PasswordDataSource.kt @@ -6,8 +6,8 @@ import org.futo.circles.auth.R import org.futo.circles.auth.feature.uia.UIADataSource.Companion.DIRECT_LOGIN_PASSWORD_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_BSSPEKE_OPRF_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_PASSWORD_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_BSSPEKE_OPRF_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_PASSWORD_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_BSSPEKE_OPRF_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_PASSWORD_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.core.extensions.Response @@ -26,10 +26,10 @@ class PasswordDataSource @Inject constructor( suspend fun processPasswordStage(password: String): Response<Unit> = when ((uiaDataSource.currentStage as? Stage.Other)?.type) { - LOGIN_BSSPEKE_OPRF_TYPE, REGISTRATION_BSSPEKE_OPRF_TYPE -> + LOGIN_BSSPEKE_OPRF_TYPE, ENROLL_BSSPEKE_OPRF_TYPE -> bsSpekeStageDataSource.processPasswordStage(password) - REGISTRATION_PASSWORD_TYPE -> processRegistrationPasswordStage(password) + ENROLL_PASSWORD_TYPE -> processRegistrationPasswordStage(password) LOGIN_PASSWORD_TYPE -> processPasswordStageL(password) DIRECT_LOGIN_PASSWORD_TYPE -> processDirectPasswordStage(password) else -> throw IllegalArgumentException("Unsupported password stage") @@ -39,7 +39,7 @@ class PasswordDataSource @Inject constructor( private suspend fun processRegistrationPasswordStage(password: String): Response<Unit> = when (val result = uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_PASSWORD_TYPE, + TYPE_PARAM_KEY to ENROLL_PASSWORD_TYPE, REGISTRATION_PASSWORD_PARAM_KEY to password ) )) { diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/subscription_stage/SubscriptionStageDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/subscription_stage/SubscriptionStageDataSource.kt index bfc5055f08919fb5bf84ba7b1172b592eff04750..d1601e52eebcd79a076c6726f06c70f34add04ba 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/subscription_stage/SubscriptionStageDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/subscription_stage/SubscriptionStageDataSource.kt @@ -1,6 +1,6 @@ package org.futo.circles.auth.feature.uia.stages.subscription_stage -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_SUBSCRIPTION_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.SUBSCRPTION_GOOGLE_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.auth.model.SubscriptionReceiptData @@ -18,7 +18,7 @@ class SubscriptionStageDataSource @Inject constructor() { ): Response<RegistrationResult> = uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_SUBSCRIPTION_TYPE, + TYPE_PARAM_KEY to SUBSCRPTION_GOOGLE_TYPE, ORDER_ID_KEY to subscriptionReceiptData.orderId, PACKAGE_KEY to subscriptionReceiptData.packageName, SUBSCRIPTION_ID_KEY to subscriptionReceiptData.productId, diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/username/UsernameDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/username/UsernameDataSource.kt index 25c3e3b82187f686f0a1c3a5182836a909dd212b..9b21f76a52acd7eeb359239aded128462f67d764 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/username/UsernameDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/username/UsernameDataSource.kt @@ -1,7 +1,7 @@ package org.futo.circles.auth.feature.uia.stages.username import androidx.lifecycle.MutableLiveData -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_USERNAME_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_USERNAME_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.core.extensions.Response @@ -17,7 +17,7 @@ class UsernameDataSource @Inject constructor() { suspend fun processUsernameStage(username: String): Response<RegistrationResult> = uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_USERNAME_TYPE, + TYPE_PARAM_KEY to ENROLL_USERNAME_TYPE, USERNAME_PARAM_KEY to username ), name = username ) diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_email/ValidateEmailDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_email/ValidateEmailDataSource.kt index 083a9d1d76a9491a67e0dbb9e86d59953a723a34..04395ccf477ba1d498a971c273ded6607dc49dbb 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_email/ValidateEmailDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_email/ValidateEmailDataSource.kt @@ -1,7 +1,7 @@ package org.futo.circles.auth.feature.uia.stages.validate_email -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_EMAIL_REQUEST_TOKEN_TYPE -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_EMAIL_REQUEST_TOKEN_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.ENROLL_EMAIL_SUBMIT_TOKEN_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.core.extensions.Response @@ -18,7 +18,7 @@ class ValidateEmailDataSource @Inject constructor() { subscribeToUpdates: Boolean ): Response<RegistrationResult> = uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_EMAIL_REQUEST_TOKEN_TYPE, + TYPE_PARAM_KEY to ENROLL_EMAIL_REQUEST_TOKEN_TYPE, EMAIL_PARAM_KEY to email, SUBSCRIBE_TO_LIST to subscribeToUpdates ) @@ -27,7 +27,7 @@ class ValidateEmailDataSource @Inject constructor() { suspend fun validateEmail(code: String): Response<RegistrationResult> = uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_EMAIL_SUBMIT_TOKEN_TYPE, + TYPE_PARAM_KEY to ENROLL_EMAIL_SUBMIT_TOKEN_TYPE, TOKEN_PARAM_KEY to code ) ) diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_token/ValidateTokenDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_token/ValidateTokenDataSource.kt index a35f11aee2f37561358a91f6fb5adda11a757b46..a42a543df6b3769a3cefae83a89f9ba5d9bef4be 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_token/ValidateTokenDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/stages/validate_token/ValidateTokenDataSource.kt @@ -1,6 +1,6 @@ package org.futo.circles.auth.feature.uia.stages.validate_token -import org.futo.circles.auth.feature.uia.UIADataSource.Companion.REGISTRATION_TOKEN_TYPE +import org.futo.circles.auth.feature.uia.UIADataSource.Companion.LOGIN_REGISTRATION_TOKEN_TYPE import org.futo.circles.auth.feature.uia.UIADataSource.Companion.TYPE_PARAM_KEY import org.futo.circles.auth.feature.uia.UIADataSourceProvider import org.futo.circles.core.extensions.Response @@ -14,7 +14,7 @@ class ValidateTokenDataSource @Inject constructor() { suspend fun validateToken(token: String): Response<RegistrationResult> = uiaDataSource.performUIAStage( mapOf( - TYPE_PARAM_KEY to REGISTRATION_TOKEN_TYPE, + TYPE_PARAM_KEY to LOGIN_REGISTRATION_TOKEN_TYPE, TOKEN_PARAM_KEY to token ) )