From c40a29d1b32c7a1b654c48bfdf85daf86275b5b3 Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Wed, 23 Mar 2022 15:42:03 +0200 Subject: [PATCH] Add name and password for start registration --- .../com/futo/circles/di/DataSourceModule.kt | 2 +- .../sign_up_type/SelectSignUpTypeFragment.kt | 25 ++++++++-- .../sign_up_type/SelectSignUpTypeViewModel.kt | 6 ++- .../data_source/SelectSignUpTypeDataSource.kt | 24 +++++---- .../layout/select_sign_up_type_fragment.xml | 50 +++++++++++++++++-- 5 files changed, 88 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/futo/circles/di/DataSourceModule.kt b/app/src/main/java/com/futo/circles/di/DataSourceModule.kt index 9e7978033..a211eb86f 100644 --- a/app/src/main/java/com/futo/circles/di/DataSourceModule.kt +++ b/app/src/main/java/com/futo/circles/di/DataSourceModule.kt @@ -24,7 +24,7 @@ val dataSourceModule = module { factory { CreateGroupDataSource() } single { SignUpDataSource(get()) } factory { ValidateTokenDataSource(get()) } - factory { SelectSignUpTypeDataSource(get()) } + factory { SelectSignUpTypeDataSource(get(), get()) } factory { AcceptTermsDataSource(get(), get()) } factory { ValidateEmailDataSource(get()) } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeFragment.kt b/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeFragment.kt index e92f3b78d..12de4da2c 100644 --- a/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeFragment.kt +++ b/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeFragment.kt @@ -2,6 +2,7 @@ package com.futo.circles.feature.sign_up_type import android.os.Bundle import android.view.View +import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.Fragment import by.kirich1409.viewbindingdelegate.viewBinding import com.futo.circles.R @@ -20,14 +21,30 @@ class SelectSignUpTypeFragment : Fragment(R.layout.select_sign_up_type_fragment) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel.clearSubtitle() + setupViews() + setupObservers() + } - binding.btnToken.setOnClickListener { - startLoading(binding.btnToken) - viewModel.startSignUp() + private fun setupViews() { + with(binding) { + tilUserName.editText?.doAfterTextChanged { setTokenButtonEnabled() } + tilPassword.editText?.doAfterTextChanged { setTokenButtonEnabled() } + btnToken.setOnClickListener { + startLoading(btnToken) + viewModel.startSignUp( + tilUserName.editText?.text?.trim()?.toString() ?: "", + tilPassword.editText?.text?.trim()?.toString() ?: "" + ) + } } + } + private fun setupObservers() { viewModel.startSignUpEventLiveData.observeResponse(this) } - + private fun setTokenButtonEnabled() { + binding.btnToken.isEnabled = binding.tilUserName.editText?.text?.isNotEmpty() == true && + binding.tilPassword.editText?.text?.isNotEmpty() == true + } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeViewModel.kt b/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeViewModel.kt index 7be19e6d2..c633956aa 100644 --- a/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeViewModel.kt +++ b/app/src/main/java/com/futo/circles/feature/sign_up_type/SelectSignUpTypeViewModel.kt @@ -12,9 +12,11 @@ class SelectSignUpTypeViewModel( val startSignUpEventLiveData = SingleEventLiveData<Response<Unit?>>() - fun startSignUp() { + fun startSignUp(name: String, password: String) { launchBg { - startSignUpEventLiveData.postValue(dataSource.startNewRegistration()) + startSignUpEventLiveData.postValue( + dataSource.startNewRegistration(name, password) + ) } } diff --git a/app/src/main/java/com/futo/circles/feature/sign_up_type/data_source/SelectSignUpTypeDataSource.kt b/app/src/main/java/com/futo/circles/feature/sign_up_type/data_source/SelectSignUpTypeDataSource.kt index cd908597a..c44ea3295 100644 --- a/app/src/main/java/com/futo/circles/feature/sign_up_type/data_source/SelectSignUpTypeDataSource.kt +++ b/app/src/main/java/com/futo/circles/feature/sign_up_type/data_source/SelectSignUpTypeDataSource.kt @@ -1,11 +1,14 @@ package com.futo.circles.feature.sign_up_type.data_source +import android.content.Context +import com.futo.circles.R import com.futo.circles.extensions.createResult import com.futo.circles.feature.sign_up.data_source.SignUpDataSource import com.futo.circles.provider.MatrixInstanceProvider import org.matrix.android.sdk.api.auth.registration.RegistrationResult class SelectSignUpTypeDataSource( + private val context: Context, private val signUpDataSource: SignUpDataSource ) { @@ -13,17 +16,20 @@ class SelectSignUpTypeDataSource( private val registrationWizard by lazy { authService.getRegistrationWizard() } - fun clearSubtitle(){ + fun clearSubtitle() { signUpDataSource.clearSubtitle() } - suspend fun startNewRegistration() = createResult { - authService.cancelPendingLoginOrRegistration() - (registrationWizard.createAccount(null, null, null) - as? RegistrationResult.FlowResponse) - ?.let { - signUpDataSource.startSignUpStages(it.flowResult.missingStages) - } - } + suspend fun startNewRegistration(name: String, password: String) = createResult { + authService.cancelPendingLoginOrRegistration() + (registrationWizard.createAccount( + name, password, + context.getString(R.string.initial_device_name, context.getString(R.string.app_name)) + ) + as? RegistrationResult.FlowResponse) + ?.let { + signUpDataSource.startSignUpStages(it.flowResult.missingStages) + } + } } \ No newline at end of file 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 683a1a8bc..0092a5316 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 @@ -4,14 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:paddingHorizontal="36dp" - android:paddingVertical="24dp"> + android:paddingVertical="16dp"> <androidx.constraintlayout.widget.Guideline android:id="@+id/guidelineLogo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.35" /> + app:layout_constraintGuide_percent="0.3" /> <com.futo.circles.view.CirclesLogoView android:id="@+id/ivLogo" @@ -22,6 +22,49 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/tilUserName" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:hint="@string/username" + app:layout_constraintBottom_toTopOf="@id/tilPassword" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/guidelineLogo"> + + <com.google.android.material.textfield.TextInputEditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:imeOptions="actionNext" + android:inputType="text" + android:maxLines="1" + android:padding="12dp" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/tilPassword" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:hint="@string/password" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/tilUserName" + app:passwordToggleEnabled="true"> + + <com.google.android.material.textfield.TextInputEditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:imeOptions="actionDone" + android:inputType="textPassword" + android:padding="8dp" /> + + </com.google.android.material.textfield.TextInputLayout> + <TextView android:id="@+id/tvTokenTitle" @@ -33,7 +76,7 @@ app:layout_constraintBottom_toTopOf="@id/btnToken" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/guidelineLogo" + app:layout_constraintTop_toBottomOf="@id/tilPassword" app:layout_constraintVertical_bias="0.3" app:layout_constraintVertical_chainStyle="packed" /> @@ -42,6 +85,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" + android:enabled="false" android:text="@string/sign_up_with_token" app:layout_constraintBottom_toTopOf="@id/tvOr" app:layout_constraintEnd_toEndOf="parent" -- GitLab