Commit caf6065a authored by shohboz's avatar shohboz

[FIX] MUS-401, Feature, fixed bugs with sms and card

parent 7db31b15
...@@ -280,6 +280,8 @@ dependencies { ...@@ -280,6 +280,8 @@ dependencies {
implementation 'xyz.peridy.shimmer:shimmerlayout:1.1' implementation 'xyz.peridy.shimmer:shimmerlayout:1.1'
implementation 'com.facebook.shimmer:shimmer:0.5.0' implementation 'com.facebook.shimmer:shimmer:0.5.0'
implementation 'com.github.reinaldoarrosi:maskededittext:1.1.0'
} }
repositories { repositories {
maven { maven {
......
...@@ -47,7 +47,6 @@ class MainRepository @Inject constructor( ...@@ -47,7 +47,6 @@ class MainRepository @Inject constructor(
try { try {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
AGRBilling.deleteAllCards() AGRBilling.deleteAllCards()
// todo monitoring ni delete qilish kerak
apiService.logOut() apiService.logOut()
dao.deleteAllMonitoring() dao.deleteAllMonitoring()
} }
......
...@@ -44,6 +44,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -44,6 +44,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
setUpUI() setUpUI()
collects() collects()
} }
override fun setUpUI() { override fun setUpUI() {
...@@ -62,7 +63,6 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -62,7 +63,6 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
}) })
inputPhone.addTextChangedListener(object : TextWatcherWrapper() { inputPhone.addTextChangedListener(object : TextWatcherWrapper() {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
super.beforeTextChanged(s, start, count, after) super.beforeTextChanged(s, start, count, after)
oldText = s.toString() oldText = s.toString()
...@@ -72,13 +72,21 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -72,13 +72,21 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
super.onTextChanged(s, start, before, count) super.onTextChanged(s, start, before, count)
try { try {
inputPhone.removeTextChangedListener(this) inputPhone.removeTextChangedListener(this)
newText = s.toString().filter { it.isDigit() }.maskedTextMobi() val text = s.toString()
if(text.length < 5){
inputPhone.setText("+998 ")
inputPhone.setSelection(5)
}else{
newText = text.filter { it.isDigit() || it == '+'}.maskedTextMobi()
inputPhone.setText(newText) inputPhone.setText(newText)
inputPhone.setSelection(oldText.checkChangedPosition(newText)) inputPhone.setSelection(oldText.checkChangedPosition(newText))
}
inputPhone.addTextChangedListener(this) inputPhone.addTextChangedListener(this)
btnCheckPhone.isEnabled = inputPhone.text.toString().trim().length == 12 btnCheckPhone.isEnabled = inputPhone.text.toString().filter { it.isDigit() || it == '+' }.length == 13
}catch (e: Exception){ }catch (e: Exception){
inputPhone.text.clear() inputPhone.text.clear()
inputPhone.addTextChangedListener(this)
} }
} }
...@@ -86,8 +94,8 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -86,8 +94,8 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
btnCheckPhone.setOnClickListener(object : ButtonClick() { btnCheckPhone.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
phone = "+998" + inputPhone.text.toString().trim().replace(" ","") phone = inputPhone.text.toString().filter { it.isDigit() || it == '+' }
phoneRaw = "+998 " + inputPhone.text.toString().trim() phoneRaw = inputPhone.text.toString().trim()
when { when {
phone.length < 13 -> { phone.length < 13 -> {
inputPhone.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake)) inputPhone.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake))
......
...@@ -5,6 +5,7 @@ import android.os.Bundle ...@@ -5,6 +5,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import android.widget.TextView import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.biometric.BiometricManager import androidx.biometric.BiometricManager
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
...@@ -65,19 +66,13 @@ class InstallPinFragment : BaseFragment(R.layout.fragment_install_pin) { ...@@ -65,19 +66,13 @@ class InstallPinFragment : BaseFragment(R.layout.fragment_install_pin) {
bn.apply { bn.apply {
loadData() loadData()
toolbar.setNavigationOnClickListener { toolbar.setNavigationOnClickListener {
if (type == CONSTANTS.NEW_PIN){ handleBackStack()
when {
navController.popBackStack(R.id.registerFragment,false) -> {
}
navController.popBackStack(R.id.loginFragment,false) -> {
}
else -> navController.navigateUp()
} }
}else navController.navigateUp() requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
handleBackStack()
} }
})
rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
rvPin.setHasFixedSize(true) rvPin.setHasFixedSize(true)
...@@ -174,6 +169,16 @@ class InstallPinFragment : BaseFragment(R.layout.fragment_install_pin) { ...@@ -174,6 +169,16 @@ class InstallPinFragment : BaseFragment(R.layout.fragment_install_pin) {
} }
} }
private fun handleBackStack() {
if (type == CONSTANTS.NEW_PIN){
when {
navController.popBackStack(R.id.registerFragment,false) -> {}
navController.popBackStack(R.id.loginFragment,false) -> {}
else -> navController.navigateUp()
}
}else navController.navigateUp()
}
private fun checkBiometric() : Boolean { private fun checkBiometric() : Boolean {
return when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) { return when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) {
BiometricManager.BIOMETRIC_SUCCESS -> true BiometricManager.BIOMETRIC_SUCCESS -> true
......
...@@ -3,12 +3,9 @@ package uz.mobiuz.mobiservice.dev.ui.auth.verification ...@@ -3,12 +3,9 @@ package uz.mobiuz.mobiservice.dev.ui.auth.verification
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
import android.view.KeyEvent import android.view.KeyEvent
import android.view.View import android.view.View
import android.view.ViewGroup
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible import androidx.core.view.isVisible
...@@ -36,7 +33,6 @@ import uz.mobiuz.mobiservice.dev.utils.Utils ...@@ -36,7 +33,6 @@ import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.* import uz.mobiuz.mobiservice.dev.utils.extensions.*
import uz.mobiuz.mobiservice.dev.utils.hideKeyboard import uz.mobiuz.mobiservice.dev.utils.hideKeyboard
import uz.mobiuz.mobiservice.dev.utils.showKeyboard import uz.mobiuz.mobiservice.dev.utils.showKeyboard
import uz.mobiuz.mobiservice.dev.utils.sms.MessageDialog
import uz.mobiuz.mobiservice.dev.utils.sms.SmsBroadcastReceiver import uz.mobiuz.mobiservice.dev.utils.sms.SmsBroadcastReceiver
import java.util.regex.Pattern import java.util.regex.Pattern
import javax.inject.Inject import javax.inject.Inject
...@@ -62,7 +58,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -62,7 +58,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
private var cardNumber = "" private var cardNumber = ""
private var cardId = "" private var cardId = ""
private var cardExpire = "" private var cardExpire = ""
private var payCardnumber = "" private var payCardNumber = ""
private var monitoring = "" private var monitoring = ""
var transactionId = 0L var transactionId = 0L
...@@ -80,7 +76,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -80,7 +76,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
cardId = it.getString(CONSTANTS.CARD_ID) ?: "" cardId = it.getString(CONSTANTS.CARD_ID) ?: ""
cardNumber = it.getString(CONSTANTS.CARD_NUMBER) ?: "" cardNumber = it.getString(CONSTANTS.CARD_NUMBER) ?: ""
cardExpire = it.getString(CONSTANTS.CARD_EXPIRE) ?: "" cardExpire = it.getString(CONSTANTS.CARD_EXPIRE) ?: ""
payCardnumber = it.getString(CONSTANTS.PAY_CARD_NUMBER) ?: "" payCardNumber = it.getString(CONSTANTS.PAY_CARD_NUMBER) ?: ""
transactionId = it.getLong(CONSTANTS.TRANSACTION_ID) transactionId = it.getLong(CONSTANTS.TRANSACTION_ID)
saveCard = it.getInt(CONSTANTS.SAVED_CARD, 0) saveCard = it.getInt(CONSTANTS.SAVED_CARD, 0)
...@@ -146,31 +142,31 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -146,31 +142,31 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
sentCodeAgain.setOnClickListener { sentCodeAgain.setOnClickListener {
when (type) { when (type) {
CONSTANTS.TYPE_ADD_CARD -> { CONSTANTS.TYPE_ADD_CARD -> {
viewModel.resendSms("998949125150", cardNumber, cardExpire) viewModel.resendSms(pref.userPhone.filter { it.isDigit() }, cardNumber, cardExpire)
} }
CONSTANTS.TYPE_ANOTHER_CARD -> { CONSTANTS.TYPE_ANOTHER_CARD -> {
viewModel.vendorResendSms(transactionId) viewModel.vendorResendSms(transactionId)
} }
else -> viewModel.resetSmsCode(UserAuth(phone.filter { it.isDigit() })) else -> viewModel.resetSmsCode(UserAuth(pref.userPhone.filter { it.isDigit() }))
} }
} }
coutdownView.setOnCountdownEndListener { coutdownView.setOnCountdownEndListener {
count(false) count(false)
} }
// setVerificationCode()
} }
} }
private fun setVerificationCode(code: String) { private fun setVerificationCode(code: String) {
if (code.length == 6) { if (code.length == 6) {
bn.apply { bn.apply {
pin1.setText(verificationCode[0].toString()) pin1.setText(code[0].toString())
pin2.setText(verificationCode[1].toString()) pin2.setText(code[1].toString())
pin3.setText(verificationCode[2].toString()) pin3.setText(code[2].toString())
pin4.setText(verificationCode[3].toString()) pin4.setText(code[3].toString())
pin5.setText(verificationCode[4].toString()) pin5.setText(code[4].toString())
pin6.setText(verificationCode[5].toString()) pin6.setText(code[5].toString())
pin6.requestFocus() pin6.requestFocus()
pin6.setSelection(1)
btnVerification.isEnabled = true btnVerification.isEnabled = true
} }
} }
...@@ -384,7 +380,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -384,7 +380,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
R.id.paymentSuccessfulFragment, R.id.paymentSuccessfulFragment,
bundleOf( bundleOf(
CONSTANTS.PAY_SAVE_CARD to saveCard, CONSTANTS.PAY_SAVE_CARD to saveCard,
CONSTANTS.PAY_CARD_NUMBER to payCardnumber, CONSTANTS.PAY_CARD_NUMBER to payCardNumber,
CONSTANTS.PAY_MONITORING to monitoring CONSTANTS.PAY_MONITORING to monitoring
) )
) )
...@@ -448,7 +444,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -448,7 +444,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
private fun getOtpFromMessage(message: String) { // This will match any 6 digit number in the message private fun getOtpFromMessage(message: String) { // This will match any 6 digit number in the message
val matcher = Pattern.compile("(|^)\\d{6}").matcher(message) val matcher = Pattern.compile("(|^)\\d{6}").matcher(message)
if (matcher.find()) { if (matcher.find()) {
customLog("verification code:${matcher.group(0)} ") // customLog("verification code:${matcher.group(0)} ")
setVerificationCode(matcher.group(0)) setVerificationCode(matcher.group(0))
} }
} }
...@@ -479,17 +475,22 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -479,17 +475,22 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
smsBroadcastReceiver?.smsBroadcastReceiverListener = smsBroadcastReceiver?.smsBroadcastReceiverListener =
object : SmsBroadcastReceiver.SmsBroadcastReceiverListener { object : SmsBroadcastReceiver.SmsBroadcastReceiverListener {
override fun onSuccess(intent: Intent?) { override fun onSuccess(intent: Intent?) {
pref.isShowPin = false
startActivityForResult(intent, 200) startActivityForResult(intent, 200)
} }
override fun onFailure() {} override fun onFailure() {}
} }
val intentFilter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION) val intentFilter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
context?.registerReceiver(smsBroadcastReceiver, intentFilter) requireActivity().registerReceiver(smsBroadcastReceiver, intentFilter)
}
override fun onDestroyView() {
requireActivity().unregisterReceiver(smsBroadcastReceiver)
super.onDestroyView()
} }
override fun onDestroy() { override fun onDestroy() {
context?.unregisterReceiver(smsBroadcastReceiver)
_bn = null _bn = null
super.onDestroy() super.onDestroy()
} }
......
package uz.mobiuz.mobiservice.dev.ui.global package uz.mobiuz.mobiservice.dev.ui.global
import android.annotation.SuppressLint import android.annotation.SuppressLint
import uz.mobiuz.mobiservice.dev.BuildConfig
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
object CONSTANTS { object CONSTANTS {
...@@ -13,8 +14,9 @@ object CONSTANTS { ...@@ -13,8 +14,9 @@ object CONSTANTS {
const val CARD_NUMBER = "CARD_NUMBER" const val CARD_NUMBER = "CARD_NUMBER"
const val CARD_EXPIRE = "CARD_EXPIRE" const val CARD_EXPIRE = "CARD_EXPIRE"
const val UNAUTHORIZED = "UNAUTHORIZED" const val UNAUTHORIZED = "UNAUTHORIZED"
const val BASE_URL = "http://10.160.41.12:82/" val BASE_URL by lazy { if (BuildConfig.DEBUG) BASE_URL_PROD else BASE_URL_PROD }
// const val BASE_URL = "https://mobileapp.mobi.uz/" private const val BASE_URL_TEST = "https://testapp.mobi.uz:8443/"
private const val BASE_URL_PROD = "https://mobileapp.mobi.uz/"
//languages //languages
const val RU = "ru" const val RU = "ru"
...@@ -30,17 +32,17 @@ object CONSTANTS { ...@@ -30,17 +32,17 @@ object CONSTANTS {
const val TERMS_OF_USE = "Terms of Use" const val TERMS_OF_USE = "Terms of Use"
const val PRIVACY_POLICY = "Privacy Policy" const val PRIVACY_POLICY = "Privacy Policy"
const val LICENSE_UZ = "${BASE_URL}uploads/licenses/license_uz.html" val LICENSE_UZ = "${BASE_URL}uploads/licenses/license_uz.html"
const val LICENSE_RU = "${BASE_URL}uploads/licenses/license_ru.html" val LICENSE_RU = "${BASE_URL}uploads/licenses/license_ru.html"
const val LICENSE_EN = "${BASE_URL}uploads/licenses/license_en.html" val LICENSE_EN = "${BASE_URL}uploads/licenses/license_en.html"
const val PRIVACY_POLICY_UZ = "${BASE_URL}uploads/privacy/privacy_policy_uz.html" val PRIVACY_POLICY_UZ = "${BASE_URL}uploads/privacy/privacy_policy_uz.html"
const val PRIVACY_POLICY_RU = "${BASE_URL}uploads/privacy/privacy_policy_ru.html" val PRIVACY_POLICY_RU = "${BASE_URL}uploads/privacy/privacy_policy_ru.html"
const val PRIVACY_POLICY_EN = "${BASE_URL}uploads/privacy/privacy_policy_en.html" val PRIVACY_POLICY_EN = "${BASE_URL}uploads/privacy/privacy_policy_en.html"
const val PAYSYS_LICENSE_UZ = "${BASE_URL}uploads/paysys/license_uz.html" val PAYSYS_LICENSE_UZ = "${BASE_URL}uploads/paysys/license_uz.html"
const val PAYSYS_LICENSE_RU = "${BASE_URL}uploads/paysys/license_ru.html" val PAYSYS_LICENSE_RU = "${BASE_URL}uploads/paysys/license_ru.html"
const val PAYSYS_LICENSE_EN = "${BASE_URL}uploads/paysys/license_en.html" val PAYSYS_LICENSE_EN = "${BASE_URL}uploads/paysys/license_en.html"
const val PHONE1 = "0890" const val PHONE1 = "0890"
const val PHONE2 = "+998 97 130 09 09" const val PHONE2 = "+998 97 130 09 09"
......
...@@ -219,7 +219,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -219,7 +219,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
private fun loadData() { private fun loadData() {
try { try {
sliderAdapter.submitList(customer?.events ?: emptyList()) sliderAdapter.submitList(customer?.events ?: emptyList())
bn.imagePlaceHolder.isVisible = customer?.events?.isEmpty() ?: false
customer?.customer?.info?.let { customer?.customer?.info?.let {
bn.apply { bn.apply {
......
...@@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModel ...@@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import uz.agr.sdk.core.entity.card.CardInfo import uz.agr.sdk.core.entity.card.CardInfo
import uz.agr.sdk.core.entity.card.CardRegistration import uz.agr.sdk.core.entity.card.CardRegistration
...@@ -115,5 +117,12 @@ class CardViewModel @Inject constructor( ...@@ -115,5 +117,12 @@ class CardViewModel @Inject constructor(
}) })
} }
private val _onClickedCardUiState = MutableStateFlow<UiStateObject<Long>>(UiStateObject.EMPTY)
val onClickedCardUiState: StateFlow<UiStateObject<Long>> = _onClickedCardUiState
fun onCLickAddCard(time:Long){
_onClickedCardUiState.value = UiStateObject.SUCCESS(time)
}
} }
\ No newline at end of file
...@@ -96,27 +96,6 @@ class CardsListFragment : BaseFragment(R.layout.fragment_cards_list) { ...@@ -96,27 +96,6 @@ class CardsListFragment : BaseFragment(R.layout.fragment_cards_list) {
) )
) )
// swipeToRefresh.setColorSchemeResources(
// R.color.agr_black,
// R.color.primary100
// )
// swipeToRefresh.setOnRefreshListener {
// MobiUz.refreshCardsInfo(object : BaseListener<List<CardInfo>> {
// override fun error(message: String) {
// swipeToRefresh.isRefreshing = false
// showToastMessage(message)
// }
//
// override fun loading(boolean: Boolean) {
// swipeToRefresh.isRefreshing = boolean
// }
//
// override fun success(data: List<CardInfo>) {
// swipeToRefresh.isRefreshing = false
// setData(data)
// }
// })
// }
} }
......
...@@ -36,7 +36,7 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success ...@@ -36,7 +36,7 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private var saveCard: Int = 0 private var saveCard: Int = 0
private var cardNumber = "" private var cardNumber: String = ""
private lateinit var monitoring: Monitoring private lateinit var monitoring: Monitoring
private val viewModel: HistoryViewModel by viewModels() private val viewModel: HistoryViewModel by viewModels()
...@@ -47,7 +47,7 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success ...@@ -47,7 +47,7 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
arguments?.let { arguments?.let {
saveCard = it.getInt(CONSTANTS.PAY_SAVE_CARD, 0) saveCard = it.getInt(CONSTANTS.PAY_SAVE_CARD, 0) ?: 0
cardNumber = it.getString(CONSTANTS.PAY_CARD_NUMBER, "") ?: "" cardNumber = it.getString(CONSTANTS.PAY_CARD_NUMBER, "") ?: ""
val arg = it.getString(CONSTANTS.PAY_MONITORING, "") ?: "" val arg = it.getString(CONSTANTS.PAY_MONITORING, "") ?: ""
if (arg.isNotEmpty()) if (arg.isNotEmpty())
...@@ -119,14 +119,9 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success ...@@ -119,14 +119,9 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
} }
if (card != null) { if (card != null) {
AGRBilling.deleteCard(card, object : BaseListener<Boolean> { AGRBilling.deleteCard(card, object : BaseListener<Boolean> {
override fun error(message: String) { override fun error(message: String) {}
message
}
override fun loading(boolean: Boolean) {} override fun loading(boolean: Boolean) {}
override fun success(data: Boolean) { override fun success(data: Boolean) {}
data
}
}) })
} }
} }
......
...@@ -146,7 +146,7 @@ fun View.getStatusBarHeight(): Int { ...@@ -146,7 +146,7 @@ fun View.getStatusBarHeight(): Int {
fun String.maskedTextMobi(): String { fun String.maskedTextMobi(): String {
var newText = "" var newText = ""
for (i in this.indices) { for (i in this.indices) {
if (i == 2 || i == 5 || i == 7) { if (i == 4 || i == 6 || i == 9 || i == 11) {
newText += " " newText += " "
} }
newText += this[i] newText += this[i]
......
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/primary100"
android:state_checked="true" />
<item android:color="@color/grey70"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/primary70"
android:state_checked="true" />
<item android:color="@color/grey30"/>
</selector>
\ No newline at end of file
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/gradient" android:background="@drawable/gradient"
android:orientation="vertical" android:orientation="vertical"
tools:context=".dev.ui.auth.biometric.BiometricFragment"> tools:context=".dev.ui.auth.biometric.BiometricFragment">
...@@ -78,11 +79,13 @@ ...@@ -78,11 +79,13 @@
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="17sp" /> android:textSize="17sp" />
<Switch <androidx.appcompat.widget.SwitchCompat
android:id="@+id/btn_switch" android:id="@+id/btn_switch"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:checked="true" android:checked="true"
app:trackTint="@color/switch_track_selector"
app:thumbTint="@color/switch_thumb_selector"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout> </LinearLayout>
......
...@@ -38,35 +38,16 @@ ...@@ -38,35 +38,16 @@
android:textColor="@color/black75" android:textColor="@color/black75"
/> />
<LinearLayout
android:layout_width="match_parent"
android:background="@drawable/edit_text_unchecked"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="6dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:text="+998 "
android:visibility="visible"
android:layout_marginStart="@dimen/_16sdp"
android:paddingVertical="@dimen/_14sdp"
android:textStyle="bold"
android:layout_gravity="center"
android:textColor="@color/black80"
android:textSize="17sp"
android:layout_height="wrap_content"/>
<EditText <EditText
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/input_phone" android:id="@+id/input_phone"
android:inputType="phone" android:inputType="phone"
app:allowed_chars="1234567890"
android:longClickable="false" android:longClickable="false"
app:mask="+998 ## ### ## ##" android:layout_marginHorizontal="16dp"
android:maxLength="12" android:layout_marginTop="6dp"
android:paddingHorizontal="@dimen/_16sdp"
android:text="+998 "
android:maxLength="17"
android:paddingVertical="@dimen/_14sdp" android:paddingVertical="@dimen/_14sdp"
android:textStyle="bold" android:textStyle="bold"
android:layout_gravity="center" android:layout_gravity="center"
...@@ -74,7 +55,6 @@ ...@@ -74,7 +55,6 @@
android:textSize="17sp" android:textSize="17sp"
android:background="@drawable/edit_text_unchecked" android:background="@drawable/edit_text_unchecked"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
......
...@@ -426,16 +426,6 @@ ...@@ -426,16 +426,6 @@
app:riv_corner_radius="6dp" /> app:riv_corner_radius="6dp" />
</com.facebook.shimmer.ShimmerFrameLayout> </com.facebook.shimmer.ShimmerFrameLayout>
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/image_place_holder"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="@dimen/_16sdp"
android:src="@drawable/image_slider2"
android:visibility="gone" />
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
......
...@@ -40,22 +40,24 @@ ...@@ -40,22 +40,24 @@
android:textColor="@color/black75" android:textColor="@color/black75"
android:textSize="15sp" /> android:textSize="15sp" />
<com.github.pinball83.maskededittext.MaskedEditText
android:id="@+id/etPhone" <EditText
android:id="@+id/input_phone"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="56dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="16dp" android:layout_marginHorizontal="16dp"
android:layout_marginTop="4dp" android:layout_marginTop="6dp"
android:background="@drawable/edit_text_unchecked" android:background="@drawable/edit_text_unchecked"
android:gravity="center|start" android:imeOptions="actionDone"
android:imeOptions="actionNext" android:inputType="phone"
android:inputType="number|textNoSuggestions" android:longClickable="false"
android:paddingHorizontal="12dp" android:maxLength="17"
android:paddingVertical="12dp" android:paddingHorizontal="@dimen/_16sdp"
android:textColor="@color/black100" android:paddingVertical="@dimen/_14sdp"
android:textSize="15sp" android:text="+998 "
app:mask="+998 ** *** ** **" android:textSize="17sp"
app:notMaskedSymbol="*" /> android:textStyle="bold" />
<TextView <TextView
android:id="@+id/txt_hint_amount" android:id="@+id/txt_hint_amount"
...@@ -159,18 +161,22 @@ ...@@ -159,18 +161,22 @@
tools:visibility="visible" /> tools:visibility="visible" />
<LinearLayout <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/addCardForm" android:id="@+id/addCardForm"
tools:visibility="visible"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:background="@drawable/card_background" android:background="@drawable/card_background"
android:layout_marginBottom="16dp"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp" android:padding="16dp">
android:visibility="gone"
tools:visibility="visible">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -185,7 +191,6 @@ ...@@ -185,7 +191,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:textColorHint="@color/grey100"
android:hint="0000 0000 0000 0000" android:hint="0000 0000 0000 0000"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:inputType="number|textNoSuggestions" android:inputType="number|textNoSuggestions"
...@@ -193,12 +198,14 @@ ...@@ -193,12 +198,14 @@
android:maxLength="19" android:maxLength="19"
android:paddingVertical="12dp" android:paddingVertical="12dp"
android:textColor="@color/white100" android:textColor="@color/white100"
android:textColorHint="@color/grey100"
android:textSize="15sp" android:textSize="15sp"
tools:ignore="Autofill,HardcodedText" /> tools:ignore="Autofill,HardcodedText" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="@color/white100"/> android:background="@color/white100" />
<TextView <TextView
android:id="@+id/tvErrorMsg" android:id="@+id/tvErrorMsg"
...@@ -226,22 +233,23 @@ ...@@ -226,22 +233,23 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:hint="ММ / ГГ"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:textColorHint="@color/grey100" android:hint="ММ / ГГ"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:textColor="@color/white100"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="number|textNoSuggestions" android:inputType="number|textNoSuggestions"
android:longClickable="false" android:longClickable="false"
android:maxLength="5" android:maxLength="5"
android:paddingVertical="12dp" android:paddingVertical="12dp"
android:textColor="@color/white100"
android:textColorHint="@color/grey100"
android:textSize="15sp" android:textSize="15sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<View <View
android:layout_width="60dp" android:layout_width="60dp"
android:layout_height="1dp" android:layout_height="1dp"
android:background="@color/white100"/> android:background="@color/white100" />
<TextView <TextView
android:id="@+id/tvErrorMsgExpiry" android:id="@+id/tvErrorMsgExpiry"
...@@ -256,14 +264,14 @@ ...@@ -256,14 +264,14 @@
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/checkboxSaveCard" android:id="@+id/checkboxSaveCard"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp" android:layout_marginHorizontal="16dp"
android:layout_marginTop="15dp" android:layout_marginTop="16dp"
android:gravity="center"> android:gravity="center">
<TextView <TextView
...@@ -274,13 +282,18 @@ ...@@ -274,13 +282,18 @@
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="16sp" /> android:textSize="16sp" />
<Switch <androidx.appcompat.widget.SwitchCompat
android:id="@+id/btnSwitch" android:id="@+id/btnSwitch"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:checked="false" android:checked="false"
app:thumbTint="@color/switch_thumb_selector"
app:trackTint="@color/switch_track_selector"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout> </LinearLayout>
</LinearLayout>
<Space <Space
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
<item name="android:textColor">@color/black</item> <item name="android:textColor">@color/black</item>
<item name="buttonStyle">@style/ButtonPrimary</item> <item name="buttonStyle">@style/ButtonPrimary</item>
<item name="bottomSheetDialogTheme">@style/AppModalBottomSheetStyle</item> <item name="bottomSheetDialogTheme">@style/AppModalBottomSheetStyle</item>
<item name="colorSwitchThumbNormal">@color/primary100</item>
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
</style> </style>
......
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