From f90233dfddba6c78382fa2c63d83ef69ab9c167d Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Thu, 4 Aug 2022 15:59:59 +0300
Subject: [PATCH] Handle choose subscription button enabled

---
 .../SelectSignUpTypeDataSource.kt             |  7 ++++-
 .../sign_up_type/SelectSignUpTypeFragment.kt  | 21 ++++++++++----
 .../sign_up_type/SelectSignUpTypeViewModel.kt |  9 ++++--
 .../layout/select_sign_up_type_fragment.xml   | 29 ++++---------------
 4 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeDataSource.kt b/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeDataSource.kt
index 9cdb9cfe8..44c53bec3 100644
--- a/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeDataSource.kt
+++ b/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeDataSource.kt
@@ -21,7 +21,12 @@ class SelectSignUpTypeDataSource(
         signUpDataSource.clearSubtitle()
     }
 
-    suspend fun startNewRegistration(name: String, password: String, domain: String) =
+    suspend fun startNewRegistration(
+        name: String,
+        password: String,
+        domain: String,
+        isSubscription: Boolean
+    ) =
         createResult {
             val homeServerUrl = HomeServerUtils.getHomeServerUrlFromDomain(domain)
             authService.cancelPendingLoginOrRegistration()
diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt b/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt
index a1f11d725..0f4512417 100644
--- a/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt
+++ b/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt
@@ -26,15 +26,13 @@ class SelectSignUpTypeFragment : Fragment(R.layout.select_sign_up_type_fragment)
         viewModel.clearSubtitle()
         setupViews()
         setupObservers()
-
     }
 
     private fun setupViews() {
-        setAlwaysDisabledViews(listOf(binding.btnSubscription))
         with(binding) {
             groupSubscription.setIsVisible(BuildConfig.IS_SUBSCRIPTIONS_ENABLED)
-            tilUserName.editText?.doAfterTextChanged { setTokenButtonEnabled() }
-            tilPassword.editText?.doAfterTextChanged { setTokenButtonEnabled() }
+            tilUserName.editText?.doAfterTextChanged { setSignupButtonsEnabled() }
+            tilPassword.editText?.doAfterTextChanged { setSignupButtonsEnabled() }
             btnToken.setOnClickListener {
                 startLoading(btnToken)
                 viewModel.startSignUp(
@@ -43,6 +41,15 @@ class SelectSignUpTypeFragment : Fragment(R.layout.select_sign_up_type_fragment)
                     tvServerDomain.text.toString()
                 )
             }
+            btnSubscription.setOnClickListener {
+                startLoading(btnSubscription)
+                viewModel.startSignUp(
+                    tilUserName.getText(),
+                    tilPassword.getText(),
+                    tvServerDomain.text.toString(),
+                    true
+                )
+            }
             serverLocationGroup.setOnCheckedChangeListener { _, checkedId ->
                 tvServerDomain.text = when (checkedId) {
                     btnUS.id -> BuildConfig.US_SERVER_DOMAIN
@@ -58,8 +65,10 @@ class SelectSignUpTypeFragment : Fragment(R.layout.select_sign_up_type_fragment)
         viewModel.startSignUpEventLiveData.observeResponse(this)
     }
 
-    private fun setTokenButtonEnabled() {
-        binding.btnToken.isEnabled = binding.tilUserName.editText?.text?.isNotEmpty() == true &&
+    private fun setSignupButtonsEnabled() {
+        val isEnabled = binding.tilUserName.editText?.text?.isNotEmpty() == true &&
                 binding.tilPassword.editText?.text?.isNotEmpty() == true
+        binding.btnToken.isEnabled = isEnabled
+        binding.btnSubscription.isEnabled = isEnabled
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeViewModel.kt b/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeViewModel.kt
index e9874360b..3979b0544 100644
--- a/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/sign_up/sign_up_type/SelectSignUpTypeViewModel.kt
@@ -11,10 +11,15 @@ class SelectSignUpTypeViewModel(
 
     val startSignUpEventLiveData = SingleEventLiveData<Response<Unit?>>()
 
-    fun startSignUp(name: String, password: String, serverDomain: String) {
+    fun startSignUp(
+        name: String,
+        password: String,
+        serverDomain: String,
+        isSubscription: Boolean = false
+    ) {
         launchBg {
             startSignUpEventLiveData.postValue(
-                dataSource.startNewRegistration(name, password, serverDomain)
+                dataSource.startNewRegistration(name, password, serverDomain, isSubscription)
             )
         }
     }
diff --git a/app/src/main/res/layout/select_sign_up_type_fragment.xml b/app/src/main/res/layout/select_sign_up_type_fragment.xml
index 63715b29e..77d3e6de4 100644
--- a/app/src/main/res/layout/select_sign_up_type_fragment.xml
+++ b/app/src/main/res/layout/select_sign_up_type_fragment.xml
@@ -129,7 +129,7 @@
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:gravity="center"
-        android:text="@string/already_have_a_circles_token"
+        android:text="@string/already_have_a_token"
         app:layout_constraintBottom_toTopOf="@id/btnToken"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
@@ -170,44 +170,27 @@
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:gravity="center"
-        android:text="@string/create_a_circles_subscription"
+        android:text="@string/create_a_subscription"
         app:layout_constraintBottom_toTopOf="@id/btnSubscription"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/tvOr" />
 
-    <com.google.android.material.button.MaterialButton
+    <org.futo.circles.view.LoadingButton
         android:id="@+id/btnSubscription"
-        style="@style/AccentButtonStyle"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="8dp"
         android:enabled="false"
-        android:text="@string/new_circles_subscription"
-        app:layout_constraintBottom_toTopOf="@id/tvSubscriptionUnavailable"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/tvSubscriptionTitle" />
-
-    <TextView
-        android:id="@+id/tvSubscriptionUnavailable"
-        style="@style/footNote"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="8dp"
-        android:gravity="center"
-        android:text="@string/new_paid_circles_subscriptions_are_currently_unavailable"
-        app:drawableStartCompat="@drawable/ic_error"
-        app:drawableTint="@color/inactive_menu_icon_color"
+        android:text="@string/choose_a_subscription"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/btnSubscription" />
-
+        app:layout_constraintTop_toBottomOf="@id/tvSubscriptionTitle" />
 
     <androidx.constraintlayout.widget.Group
         android:id="@+id/groupSubscription"
         android:layout_width="0dp"
         android:layout_height="0dp"
-        app:constraint_referenced_ids="tvOr,tvSubscriptionTitle,btnSubscription,tvSubscriptionUnavailable" />
+        app:constraint_referenced_ids="tvOr,tvSubscriptionTitle,btnSubscription" />
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
-- 
GitLab