Commit cd5e730d authored by shohboz's avatar shohboz

[REF] MUS-125 Feature, refactoring authorization screens names

parent a714b180
package uz.ssd.mobiuz.ui.forget
package uz.ssd.mobiuz.ui.auth
import android.os.Bundle
import android.view.View
import android.view.animation.AnimationUtils
import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
......@@ -10,10 +11,9 @@ import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentLoginBinding
import uz.ssd.mobiuz.databinding.FragmentCheckPhoneBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
......@@ -23,9 +23,9 @@ import uz.ssd.mobiuz.utils.extensions.customLog
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
private var _bn: FragmentLoginBinding? = null
private var _bn: FragmentCheckPhoneBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
var phone = ""
......@@ -34,7 +34,7 @@ class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
private val viewModel: AuthViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentLoginBinding.bind(view)
_bn = FragmentCheckPhoneBinding.bind(view)
setUpUI()
collects()
......@@ -44,8 +44,7 @@ class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
override fun setUpUI() {
bn.apply {
// txtEnterPhone.text = "Забыли пароль?"
inputPhone.addTextChangedListener(object : TextWatcherWrapper(){
inputPhone.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
customLog("s=${s?.toString()?.length}")
......@@ -57,11 +56,17 @@ class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
override fun onSingleClick(v: View?) {
phone = "+998" + inputPhone.unmaskedText.toString().trim()
phoneRaw = inputPhone.text.toString().trim()
viewModel.login(UserAuth(phone, "password"))
when {
phone.length < 13 -> {
inputPhone.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake))
}
else -> viewModel.login(UserAuth(phone, null))
}
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
requireActivity().finish()
}
}
}
......@@ -72,7 +77,11 @@ class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(R.id.forgetVerificationFragment, null, Utils.navOptions())
if (it.data.action == "login") {
navController.navigate(R.id.loginFragment, bundleOf(CONSTANTS.PHONE to phoneRaw), Utils.navOptions())
} else if (it.data.action == "register") {
navController.navigate(R.id.registerFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
......
......@@ -20,7 +20,6 @@ import uz.ssd.mobiuz.model.PinData
import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.showMessage
import javax.inject.Inject
@AndroidEntryPoint
......@@ -40,7 +39,7 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
pinCode = it.getString("pinCode","") ?: ""
pinCode = it.getString("pinCode", "") ?: ""
}
}
......@@ -98,10 +97,10 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
val manager = FingerprintManagerCompat.from(requireContext())
val isEnabled = manager.isHardwareDetected && manager.hasEnrolledFingerprints()
if(isEnabled){
if (isEnabled) {
navController.navigate(R.id.biometricFragment, null, Utils.navOptions())
}else{
startActivity(Intent(requireContext(),MainActivity::class.java))
} else {
startActivity(Intent(requireContext(), MainActivity::class.java))
requireActivity().finish()
}
}
......
......@@ -2,7 +2,6 @@ package uz.ssd.mobiuz.ui.auth
import android.os.Bundle
import android.view.View
import android.view.animation.AnimationUtils
import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
......@@ -19,7 +18,6 @@ import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
import uz.ssd.mobiuz.utils.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.customLog
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
......@@ -28,45 +26,66 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
private var _bn: FragmentLoginBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
var phone = ""
var phoneRaw = ""
private var phone = ""
private val viewModel: AuthViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
phone = it.getString(CONSTANTS.PHONE, "")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentLoginBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
inputPhone.addTextChangedListener(object : TextWatcherWrapper() {
inputPhone.setText(phone)
txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
navController.navigate(R.id.forgetVerificationFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
})
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
customLog("s=${s?.toString()?.length}")
btnLogin.isEnabled = inputPhone.text.toString().trim().length == 17
btnLogin.isEnabled = (s.toString().length > 5)
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
phone = "+998" + inputPhone.unmaskedText.toString().trim()
phoneRaw = inputPhone.text.toString().trim()
val password = inputPassword.text.toString().trim()
when {
phone.length < 13 -> {
inputPhone.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake))
password.length < 6 -> {
inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
}
else -> {
viewModel.login(UserAuth(phone.replace(" ", ""), password))
}
else -> viewModel.login(UserAuth(phone, null))
}
}
})
toolbar.setNavigationOnClickListener {
requireActivity().finish()
navController.navigateUp()
}
}
}
......@@ -77,14 +96,16 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
if (it.data.action == "login") {
navController.navigate(R.id.passwordFragment, bundleOf(CONSTANTS.PHONE to phoneRaw), Utils.navOptions())
} else if (it.data.action == "register"){
navController.navigate(R.id.enterPasswordFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
navController.navigate(R.id.verificationFragment, null, Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
bn.inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
......
package uz.ssd.mobiuz.ui.auth
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentPasswordBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
import uz.ssd.mobiuz.utils.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class PasswordFragment : BaseFragment(R.layout.fragment_password) {
private var _bn: FragmentPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var phone = ""
private val viewModel: AuthViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
phone = it.getString(CONSTANTS.PHONE, "")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
inputPhone.setText(phone)
txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
navController.navigate(R.id.forgetLoginFragment,null,Utils.navOptions())
}
})
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
btnLogin.isEnabled = (s.toString().length > 5)
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
val password = inputPassword.text.toString().trim()
when{
password.length < 6 -> {
inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
}
else ->{
viewModel.login(UserAuth(phone.replace(" ",""), password))
}
}
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(R.id.verificationFragment, null, Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
bn.inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
......@@ -11,7 +11,7 @@ import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentEnterPasswordBinding
import uz.ssd.mobiuz.databinding.FragmentRegisterBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.base.BaseFragment
......@@ -22,9 +22,9 @@ import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
class RegisterFragment : BaseFragment(R.layout.fragment_register) {
private var _bn: FragmentEnterPasswordBinding? = null
private var _bn: FragmentRegisterBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
......@@ -39,7 +39,7 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentEnterPasswordBinding.bind(view)
_bn = FragmentRegisterBinding.bind(view)
setUpUI()
collects()
......@@ -78,12 +78,12 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
override fun onSingleClick(v: View?) {
val password = inputPassword.text.toString().trim()
val confirm = inputConfirm.text.toString().trim()
when{
password.length < 5 || password != confirm ->{
when {
password.length < 5 || password != confirm -> {
}
else ->{
viewModel.register(UserAuth(phone.replace(" ",""), password))
else -> {
viewModel.register(UserAuth(phone.replace(" ", ""), password))
}
}
......
package uz.ssd.mobiuz.ui.forget
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import android.os.Bundle
import android.view.View
import androidx.core.view.isVisible
......@@ -12,9 +10,10 @@ import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentEnterPasswordBinding
import uz.ssd.mobiuz.databinding.FragmentRegisterBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
......@@ -22,16 +21,16 @@ import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
class ForgetPasswordFragment : BaseFragment(R.layout.fragment_register) {
private var _bn: FragmentEnterPasswordBinding? = null
private var _bn: FragmentRegisterBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private val viewModel: AuthViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentEnterPasswordBinding.bind(view)
_bn = FragmentRegisterBinding.bind(view)
setUpUI()
collects()
......
......@@ -20,6 +20,7 @@ import uz.ssd.mobiuz.ui.auth.AuthViewModel
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
import uz.ssd.mobiuz.utils.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.hideKeyboard
import uz.ssd.mobiuz.utils.extensions.showKeyboard
......@@ -34,6 +35,14 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
var code = ""
private var phone = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
phone = it.getString(CONSTANTS.PHONE) ?: ""
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentVerificationBinding.bind(view)
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number"
android:textSize="@dimen/_18sdp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/hint_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone"
android:layout_marginStart="@dimen/_12sdp"
android:layout_gravity="start"
android:textColor="@color/light"
android:textStyle="bold"
/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp">
<com.github.pinball83.maskededittext.MaskedEditText
android:layout_width="match_parent"
android:id="@+id/input_phone"
android:inputType="phone"
android:imeOptions="actionDone"
app:mask="+998 ** *** ** **"
app:notMaskedSymbol="*"
android:textSize="@dimen/_12sdp"
android:padding="@dimen/_14sdp"
android:background="@drawable/edit_text_bgn"
android:layout_height="match_parent"/>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.5">
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_24sdp"
android:text="@string/continuoue" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
......@@ -10,6 +10,7 @@
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
......@@ -20,65 +21,115 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number"
android:text="@string/enter"
android:textSize="@dimen/_18sdp"
android:textStyle="bold" />
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/hint_phone"
android:id="@+id/txt_hint_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone"
android:layout_marginStart="@dimen/_12sdp"
android:layout_gravity="start"
android:textColor="@color/light"
android:layout_marginTop="@dimen/_14sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="@string/phone"
android:textColor="@color/black"
android:textStyle="bold"
/>
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/txt_enter_phone" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input"
android:id="@+id/layout_input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp">
android:layout_marginEnd="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_140sdp"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/txt_hint_password">
<com.github.pinball83.maskededittext.MaskedEditText
android:layout_width="match_parent"
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_phone"
android:inputType="phone"
android:imeOptions="actionDone"
app:mask="+998 ** *** ** **"
app:notMaskedSymbol="*"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:focusable="false"
android:textSize="@dimen/_12sdp"
android:padding="@dimen/_14sdp"
android:background="@drawable/edit_text_bgn"
android:layout_height="match_parent"/>
android:imeOptions="actionNext"
android:inputType="phone"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
<TextView
android:id="@+id/txt_hint_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_34sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="@string/password"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_confirm"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.5">
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:endIconMode="password_toggle"
app:layout_constraintTop_toBottomOf="@id/txt_hint_confirm">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/edit_text_bgn"
android:imeOptions="actionDone"
android:inputType="number"
android:maxLength="7"
android:textSize="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
tools:ignore="RtlSymmetry" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_forget_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:text="@string/forget_password"
android:background="?android:selectableItemBackground"
android:textColor="@color/light_dark"
android:textStyle="bold"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_24sdp"
android:text="@string/continuoue" />
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm"
app:layout_constraintBottom_toBottomOf="parent" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter"
android:textSize="@dimen/_18sdp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/txt_hint_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="@string/phone"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/txt_enter_phone" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_140sdp"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/txt_hint_password">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_phone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:focusable="false"
android:textSize="@dimen/_12sdp"
android:background="@drawable/edit_text_bgn"
android:imeOptions="actionNext"
android:inputType="phone"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_hint_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_34sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="@string/password"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:endIconMode="password_toggle"
app:layout_constraintTop_toBottomOf="@id/txt_hint_confirm">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/edit_text_bgn"
android:imeOptions="actionDone"
android:inputType="number"
android:maxLength="7"
android:textSize="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
tools:ignore="RtlSymmetry" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_forget_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:text="@string/forget_password"
android:background="?android:selectableItemBackground"
android:textColor="@color/light_dark"
android:textStyle="bold"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -3,13 +3,13 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph_auth"
app:startDestination="@id/loginFragment">
app:startDestination="@id/checkPhoneFragment">
<fragment
android:id="@+id/loginFragment"
android:name="uz.ssd.mobiuz.ui.auth.LoginFragment"
android:id="@+id/checkPhoneFragment"
android:name="uz.ssd.mobiuz.ui.auth.CheckPhoneFragment"
android:label="fragment_login"
tools:layout="@layout/fragment_login" />
tools:layout="@layout/fragment_check_phone" />
<fragment
android:id="@+id/verificationFragment"
......@@ -17,15 +17,15 @@
android:label="fragment_verification"
tools:layout="@layout/fragment_verification" />
<fragment
android:id="@+id/enterPasswordFragment"
android:name="uz.ssd.mobiuz.ui.auth.EnterPasswordFragment"
android:id="@+id/registerFragment"
android:name="uz.ssd.mobiuz.ui.auth.RegisterFragment"
android:label="EnterPasswordFragment"
tools:layout="@layout/fragment_enter_password" />
tools:layout="@layout/fragment_register" />
<fragment
android:id="@+id/passwordFragment"
android:name="uz.ssd.mobiuz.ui.auth.PasswordFragment"
android:id="@+id/loginFragment"
android:name="uz.ssd.mobiuz.ui.auth.LoginFragment"
android:label="fragment_password"
tools:layout="@layout/fragment_password" />
tools:layout="@layout/fragment_login" />
<fragment
android:id="@+id/forgetPasswordFragment"
android:name="uz.ssd.mobiuz.ui.forget.ForgetPasswordFragment"
......@@ -41,11 +41,7 @@
android:name="uz.ssd.mobiuz.ui.auth.BiometricFragment"
android:label="fragment_biometric"
tools:layout="@layout/fragment_biometric" />
<fragment
android:id="@+id/forgetLoginFragment"
android:name="uz.ssd.mobiuz.ui.forget.ForgetLoginFragment"
android:label="ForgetLoginFragment"
tools:layout="@layout/fragment_login" />
<fragment
android:id="@+id/forgetVerificationFragment"
android:name="uz.ssd.mobiuz.ui.forget.ForgetVerificationFragment"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment