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