From 2eba483cfe9656152875c681bb908e2875c3d503 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 28 Feb 2024 16:52:28 +0200 Subject: [PATCH] Remove context --- .../circles/auth/feature/uia/UIADataSource.kt | 19 +++++++------------ .../auth/feature/uia/UIADialogFragment.kt | 6 ++++-- .../circles/auth/feature/uia/UIAViewModel.kt | 3 ++- .../feature/uia/flow/LoginStagesDataSource.kt | 2 +- .../uia/flow/SignUpStagesDataSource.kt | 2 +- .../uia/flow/reauth/ReAuthStagesDataSource.kt | 6 +----- auth/src/main/res/values/strings.xml | 1 - 7 files changed, 16 insertions(+), 23 deletions(-) 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 275f161c3..61240b1b3 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 8d70497fd..adb1335b3 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 ce6b2e25b..97ad2b3b2 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 acfd663bb..b685d2782 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 7fe92637b..c9fb31553 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 a72acf034..77ad13a92 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 d94e7ef82..c797cb0ff 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> -- GitLab