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 275f161c3145472ce913a2bb6171d96b7acfffbe..61240b1b3c5ad2417aa188039cdeac33bc195596 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 @@ -1,11 +1,10 @@ package org.futo.circles.auth.feature.uia -import android.content.Context import androidx.lifecycle.MutableLiveData -import org.futo.circles.auth.R import org.futo.circles.auth.feature.uia.flow.LoginStagesDataSource import org.futo.circles.auth.feature.uia.flow.SignUpStagesDataSource import org.futo.circles.auth.feature.uia.flow.reauth.ReAuthStagesDataSource +import org.futo.circles.auth.model.UIAFlowType import org.futo.circles.auth.model.UIANavigationEvent import org.futo.circles.core.base.SingleEventLiveData import org.futo.circles.core.extensions.Response @@ -18,7 +17,7 @@ import org.matrix.android.sdk.api.util.JsonDict import javax.inject.Inject import kotlin.coroutines.Continuation -abstract class UIADataSource(private val context: Context) { +abstract class UIADataSource { class Factory @Inject constructor( private val loginStagesDataSource: LoginStagesDataSource, @@ -34,7 +33,7 @@ abstract class UIADataSource(private val context: Context) { } - val subtitleLiveData = MutableLiveData<String>() + val subtitleLiveData = MutableLiveData<Pair<Int, Int>>() val navigationLiveData = SingleEventLiveData<UIANavigationEvent>() val finishUIAEventLiveData = SingleEventLiveData<Session>() @@ -107,9 +106,7 @@ abstract class UIADataSource(private val context: Context) { val event = when (val stage = currentStage) { is Stage.Terms -> UIANavigationEvent.AcceptTerm is Stage.Other -> handleStageOther(stage.type) - else -> throw IllegalArgumentException( - context.getString(R.string.not_supported_stage_format, stage.toString()) - ) + else -> throw IllegalArgumentException("Not supported stage $stage") } event?.let { navigationLiveData.postValue(it) } updatePageSubtitle() @@ -135,9 +132,8 @@ abstract class UIADataSource(private val context: Context) { REGISTRATION_BSSPEKE_SAVE_TYPE -> null LOGIN_BSSPEKE_VERIFY_TYPE -> null - else -> throw IllegalArgumentException( - context.getString(R.string.not_supported_stage_format, type) - ) + else -> throw IllegalArgumentException("Not supported stage $type") + } private fun getCurrentStageIndex() = @@ -146,8 +142,7 @@ abstract class UIADataSource(private val context: Context) { private fun updatePageSubtitle() { val size = stagesToComplete.size val number = getCurrentStageIndex() + 1 - val subtitle = context.getString(R.string.sign_up_stage_subtitle_format, number, size) - subtitleLiveData.postValue(subtitle) + subtitleLiveData.postValue(number to size) } companion object { diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt index 8d70497fdf30e3521a8ee2964e7ff5a24dcfe82c..adb1335b3df4dc175a412d5dcd5da612681d8163 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt @@ -15,6 +15,7 @@ import org.futo.circles.auth.databinding.DialogFragmentUiaBinding import org.futo.circles.auth.feature.pass_phrase.recovery.EnterPassPhraseDialog import org.futo.circles.auth.feature.pass_phrase.recovery.EnterPassPhraseDialogListener import org.futo.circles.auth.feature.uia.flow.reauth.ReAuthCancellationListener +import org.futo.circles.auth.model.UIAFlowType import org.futo.circles.auth.model.UIANavigationEvent import org.futo.circles.core.base.NetworkObserver import org.futo.circles.core.base.fragment.BackPressOwner @@ -78,8 +79,9 @@ class UIADialogFragment : viewModel.navigationLiveData.observeData(this) { event -> handleNavigation(event) } - viewModel.subtitleLiveData.observeData(this) { - binding.toolbar.subtitle = it + viewModel.subtitleLiveData.observeData(this) { (number, size) -> + binding.toolbar.subtitle = + getString(R.string.sign_up_stage_subtitle_format, number, size) } viewModel.restoreKeysLiveData.observeResponse( this, diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt index ce6b2e25b8dd52c77c56f9f34c6ba2d6a2e81e50..97ad2b3b231f854d08ab81431393539b0a8c7f5b 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt @@ -1,6 +1,7 @@ package org.futo.circles.auth.feature.uia import android.net.Uri +import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import org.futo.circles.auth.R @@ -33,7 +34,7 @@ class UIAViewModel @Inject constructor( val uiaDataSource = UIADataSourceProvider.getDataSourceOrThrow() - val subtitleLiveData = uiaDataSource.subtitleLiveData + val subtitleLiveData: LiveData<Pair<Int, Int>> = uiaDataSource.subtitleLiveData val navigationLiveData = uiaDataSource.navigationLiveData val restoreKeysLiveData = SingleEventLiveData<Response<Unit>>() val passPhraseLoadingLiveData = restoreBackupDataSource.loadingLiveData diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt index acfd663bba109048831ed0cc8383365f5852627e..b685d27820567599e3f9547e7ccc0515022c9bd6 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt @@ -16,7 +16,7 @@ import javax.inject.Singleton @Singleton class LoginStagesDataSource @Inject constructor( @ApplicationContext private val context: Context -) : UIADataSource(context) { +) : UIADataSource() { var userPassword: String = "" diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt index 7fe92637b133885018fb16af22d59b5e30f63042..c9fb31553f36ef81b24c8c19ddf8dc7127308a19 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt @@ -15,7 +15,7 @@ import javax.inject.Singleton @Singleton class SignUpStagesDataSource @Inject constructor( @ApplicationContext private val context: Context -) : UIADataSource(context) { +) : UIADataSource() { override suspend fun performUIAStage( authParams: JsonDict, diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt index a72acf034ed311384e57149bca35f66e8c1e9f25..77ad13a926862e13227772eb71f3e7a2ebe45056 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt @@ -1,7 +1,5 @@ package org.futo.circles.auth.feature.uia.flow.reauth -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext import org.futo.circles.auth.feature.uia.UIADataSource import org.futo.circles.auth.model.CustomUIAuth import org.futo.circles.core.extensions.Response @@ -19,9 +17,7 @@ import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @Singleton -class ReAuthStagesDataSource @Inject constructor( - @ApplicationContext context: Context, -) : UIADataSource(context) { +class ReAuthStagesDataSource @Inject constructor() : UIADataSource() { private var authPromise: Continuation<UIABaseAuth>? = null private var sessionId: String = "" diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml index d94e7ef82451915d20c13ac1e074437d807f50f2..c797cb0ff2b0ffd772624f18e14c5d95d1b46e8c 100644 --- a/auth/src/main/res/values/strings.xml +++ b/auth/src/main/res/values/strings.xml @@ -16,7 +16,6 @@ <string name="eu_server_format"><![CDATA[<b>EU</b> - (%s)]]></string> <string name="sign_up_using_active_subscription">Sign Up using your active subscription</string> <string name="sign_up">Sign Up</string> - <string name="not_supported_stage_format">Not supported stage %s</string> <string name="sign_up_stage_subtitle_format">Stage %1$d of %2$d</string> <string name="no_backup_message">Keys backup not found</string> <string name="username_can_not_be_empty">Username can not be empty.</string>