Commit ea5a7a11 authored by shohboz's avatar shohboz

[ADD] MUS-129, Feature added biometric add or not screen

parent 2acc7e5c
package uz.ssd.mobiuz.ui.auth
import android.content.Intent
import android.os.Bundle
import android.view.View
import uz.ssd.mobiuz.R
import androidx.core.os.bundleOf
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.MainActivity
import uz.ssd.mobiuz.databinding.FragmentBiometricBinding
import uz.ssd.mobiuz.databinding.FragmentLoginBinding
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.customLog
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
private var _bn: FragmentBiometricBinding? = 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 val viewModel: AuthViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentBiometricBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
btnBack.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
navController.navigateUp()
}
})
txtSkip.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
requireActivity().finish()
startActivity(Intent(requireContext(),MainActivity::class.java))
}
})
btnNext.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
requireActivity().finish()
startActivity(Intent(requireContext(),MainActivity::class.java))
}
})
btnSwitch.setOnCheckedChangeListener { buttonView, isChecked ->
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
if (phone != "+998949125150") {
navController.navigate(R.id.enterPasswordFragment, null, Utils.navOptions())
} else {
navController.navigate(R.id.passwordFragment, bundleOf(CONSTANTS.PHONE to phoneRaw), Utils.navOptions())
}
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
//fun main(){
// var ss = -421
// if(ss.toString().startsWith("-")){
// ss = ss.toString().replace("-","").toInt()
// val dd = (ss.toString().reversed().toInt()) * -1
// print(dd)
// }else{
// val dd = ss.toString().reversed().toInt()
// print(dd)
// }
//
//}
\ No newline at end of file
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="140dp"
android:height="140dp"
android:viewportWidth="140"
android:viewportHeight="140">
<path
android:pathData="M67.239,31.086C60.054,31.542 52.825,33.695 46.641,37.222C44.878,38.228 44.789,38.307 44.635,38.994C44.493,39.63 44.741,40.318 45.241,40.671C45.882,41.124 46.494,40.979 48.352,39.935C53.326,37.14 58.977,35.337 65.149,34.577C67.437,34.295 73.276,34.332 75.523,34.644C80.988,35.4 84.832,36.548 89.599,38.846C92.058,40.032 92.119,40.052 92.703,39.876C93.65,39.59 94.142,38.529 93.708,37.708C93.459,37.237 93.242,37.088 91.493,36.19C84.112,32.399 75.411,30.568 67.239,31.086ZM65.597,40.845C52.645,42.152 41.524,48.58 35.799,58.07C34.946,59.484 34.911,59.589 35.082,60.214C35.282,60.943 35.829,61.411 36.483,61.411C37.229,61.411 37.699,61.052 38.334,60C40.612,56.225 43.646,53.089 47.611,50.412C60.543,41.68 79.457,41.68 92.389,50.412C96.382,53.108 99.342,56.168 101.643,59.979C102.358,61.162 102.731,61.448 103.529,61.425C104.171,61.406 104.723,60.926 104.918,60.214C105.089,59.589 105.054,59.484 104.201,58.07C99.018,49.479 89.274,43.294 77.765,41.291C74,40.636 69.357,40.466 65.597,40.845ZM67.388,50.329C67.142,50.363 66.269,50.466 65.448,50.558C51.998,52.073 41.478,61.329 38.887,73.926C38.096,77.771 38,82.261 38.641,85.394C39.291,88.566 41.215,94.09 41.889,94.721C42.85,95.618 44.477,94.939 44.477,93.64C44.477,93.363 44.216,92.475 43.898,91.667C43.05,89.513 42.157,86.657 41.769,84.855C41.483,83.528 41.429,82.841 41.435,80.566C41.442,77.675 41.582,76.403 42.175,73.833C44.462,63.929 52.054,56.594 62.387,54.304C65.948,53.515 71.112,53.281 74.257,53.766C80.864,54.786 86.041,57.361 90.454,61.822C94.789,66.206 97.437,71.669 98.371,78.159C98.466,78.821 98.553,80.378 98.564,81.619C98.58,83.466 98.532,84.027 98.304,84.704C97.041,88.449 93.288,90.861 89.641,90.274C87.622,89.949 86.246,89.207 84.855,87.692C83.388,86.094 82.921,84.802 82.69,81.695C82.421,78.067 81.433,75.547 79.434,73.383C75.217,68.822 67.195,68.206 62.037,72.048C60.287,73.351 58.812,75.43 58.047,77.673C57.421,79.508 57.264,80.829 57.356,83.5C57.491,87.39 58.233,90.289 60,93.827C62.047,97.926 65.101,101.464 69.327,104.63C71.268,106.085 74.227,107.88 74.851,107.982C75.741,108.127 76.567,107.381 76.567,106.433C76.567,105.67 76.173,105.259 74.423,104.203C65.556,98.854 60.888,91.865 60.493,83.349C60.282,78.801 61.926,75.525 65.241,73.889C66.995,73.023 67.967,72.801 70,72.801C72.033,72.801 73.005,73.023 74.759,73.889C76.946,74.968 78.548,76.978 79.182,79.438C79.321,79.976 79.488,81.262 79.553,82.297C79.617,83.331 79.783,84.618 79.921,85.156C80.902,88.988 84.037,92.155 87.911,93.227C89.388,93.635 92.112,93.602 93.651,93.157C97.366,92.083 100.165,89.322 101.381,85.532C101.763,84.341 101.891,81.123 101.65,78.771C100.144,64.036 89.57,52.837 75.075,50.623C73.597,50.398 68.361,50.197 67.388,50.329ZM67.388,60.041C58.089,61.016 50.726,67.437 48.424,76.579C47.783,79.126 47.572,83.034 47.91,86.134C48.573,92.209 50.88,97.888 54.818,103.137C56.258,105.057 58.657,107.735 59.083,107.898C60.363,108.389 61.658,106.935 61.021,105.723C60.925,105.542 60.265,104.717 59.554,103.89C56.023,99.784 53.766,95.985 52.403,91.852C51.552,89.274 51.209,87.418 51.013,84.328C50.866,82.007 50.876,81.35 51.081,79.739C52.279,70.346 59.002,63.897 68.328,63.195C74.535,62.728 80.314,64.535 84.037,68.107C87.013,70.963 88.549,74.286 88.961,78.76C89.209,81.449 89.218,81.486 89.719,81.911C90.378,82.471 91.178,82.441 91.78,81.834C92.222,81.389 92.24,81.32 92.24,80.085C92.24,76.332 91.031,72.237 88.984,69.055C87.963,67.467 85.427,64.885 83.815,63.792C81.772,62.406 78.864,61.168 76.194,60.549C73.692,59.968 70.073,59.759 67.388,60.041ZM69.328,79.35C68.611,79.674 68.447,80.1 68.482,81.544C68.71,90.883 77.102,99.987 87.762,102.461C90.361,103.065 93.521,103.356 94.376,103.071C95.311,102.76 95.712,101.572 95.165,100.732C94.793,100.159 94.495,100.07 92.442,99.911C88.964,99.642 86.452,98.987 83.508,97.582C79.781,95.804 76.683,93.167 74.556,89.963C72.8,87.318 71.917,84.806 71.649,81.691C71.507,80.051 71.28,79.55 70.565,79.298C69.99,79.096 69.882,79.101 69.328,79.35Z"
android:fillColor="#E62229"
android:fillType="evenOdd"/>
<path
android:strokeWidth="1"
android:pathData="M70,0.5L70,0.5A69.5,69.5 0,0 1,139.5 70L139.5,70A69.5,69.5 0,0 1,70 139.5L70,139.5A69.5,69.5 0,0 1,0.5 70L0.5,70A69.5,69.5 0,0 1,70 0.5z"
android:strokeAlpha="0.06"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
</vector>
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.auth.BiometricFragment">
<FrameLayout
android:layout_width="match_parent"
android:paddingHorizontal="@dimen/_12sdp"
android:layout_height="?actionBarSize">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|start"
android:padding="@dimen/_4sdp"
android:id="@+id/btn_back"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_baseline_arrow_back"/>
<TextView
android:layout_width="wrap_content"
android:text="Пропустить"
android:id="@+id/txt_skip"
android:padding="@dimen/_4sdp"
android:textStyle="bold"
android:background="?android:selectableItemBackground"
android:textColor="@color/red_dark"
android:layout_gravity="center|end"
android:layout_height="wrap_content"/>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_marginTop="@dimen/_12sdp"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_fingerprint" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:text="Биометрический вход"
android:textSize="@dimen/_20sdp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginTop="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:text="Быстро войти в систему с помощью отпечатка пальца
или Face ID."
android:textColor="@color/text_color_77"
android:textSize="@dimen/_14sdp" />
<LinearLayout
android:layout_width="match_parent"
android:paddingHorizontal="@dimen/_12sdp"
android:layout_height="0dp"
android:gravity="center"
android:layout_weight="1">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:text="Активировать"
android:textStyle="bold"
android:layout_height="wrap_content"/>
<Switch
android:layout_width="wrap_content"
android:id="@+id/btn_switch"
android:layout_height="wrap_content"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="@dimen/_12sdp"
android:text="Измените это в любое время в настройках"
android:textColor="@color/text_color_77"
android:textSize="@dimen/_14sdp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="end|bottom"
android:layout_weight="1">
<com.google.android.material.button.MaterialButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:id="@+id/btn_next"
android:layout_marginEnd="@dimen/_12sdp"
android:textAllCaps="false"
android:padding="@dimen/_10sdp"
android:text="@string/continuoue_task"
android:textColor="@color/red"
app:backgroundTint="@color/white" />
</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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="wrap_content"
android:inputType="number"
android:layout_height="wrap_content"/>
</LinearLayout>
\ No newline at end of file
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