Commit 5101f34d authored by shohboz's avatar shohboz

[UPD] MUS-322 Feature, updated sdk and code rafactoring

parent be371d26
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
<entry key="app/src/main/res/drawable/radius_top.xml" value="0.25416666666666665" /> <entry key="app/src/main/res/drawable/radius_top.xml" value="0.25416666666666665" />
<entry key="app/src/main/res/drawable/tab_indicator.xml" value="0.2756756756756757" /> <entry key="app/src/main/res/drawable/tab_indicator.xml" value="0.2756756756756757" />
<entry key="app/src/main/res/drawable/text_handle.xml" value="1.4214285714285715" /> <entry key="app/src/main/res/drawable/text_handle.xml" value="1.4214285714285715" />
<entry key="app/src/main/res/layout-large/fragment_pin.xml" value="0.25625" />
<entry key="app/src/main/res/layout/activity_auth.xml" value="0.15853658536585366" /> <entry key="app/src/main/res/layout/activity_auth.xml" value="0.15853658536585366" />
<entry key="app/src/main/res/layout/activity_language.xml" value="0.25" /> <entry key="app/src/main/res/layout/activity_language.xml" value="0.25" />
<entry key="app/src/main/res/layout/activity_main.xml" value="0.22" /> <entry key="app/src/main/res/layout/activity_main.xml" value="0.22" />
...@@ -69,6 +70,7 @@ ...@@ -69,6 +70,7 @@
<entry key="app/src/main/res/layout/fragment_forget_password.xml" value="0.21174863387978143" /> <entry key="app/src/main/res/layout/fragment_forget_password.xml" value="0.21174863387978143" />
<entry key="app/src/main/res/layout/fragment_home.xml" value="0.18385416666666668" /> <entry key="app/src/main/res/layout/fragment_home.xml" value="0.18385416666666668" />
<entry key="app/src/main/res/layout/fragment_home_content.xml" value="0.266796875" /> <entry key="app/src/main/res/layout/fragment_home_content.xml" value="0.266796875" />
<entry key="app/src/main/res/layout/fragment_install_pin.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_language.xml" value="0.25625" /> <entry key="app/src/main/res/layout/fragment_language.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_login.xml" value="0.2" /> <entry key="app/src/main/res/layout/fragment_login.xml" value="0.2" />
<entry key="app/src/main/res/layout/fragment_main.xml" value="0.25625" /> <entry key="app/src/main/res/layout/fragment_main.xml" value="0.25625" />
...@@ -87,6 +89,7 @@ ...@@ -87,6 +89,7 @@
<entry key="app/src/main/res/layout/fragment_progress.xml" value="0.33242753623188404" /> <entry key="app/src/main/res/layout/fragment_progress.xml" value="0.33242753623188404" />
<entry key="app/src/main/res/layout/fragment_register.xml" value="0.25" /> <entry key="app/src/main/res/layout/fragment_register.xml" value="0.25" />
<entry key="app/src/main/res/layout/fragment_safety.xml" value="0.25625" /> <entry key="app/src/main/res/layout/fragment_safety.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_security.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_service.xml" value="0.25625" /> <entry key="app/src/main/res/layout/fragment_service.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_support.xml" value="0.25625" /> <entry key="app/src/main/res/layout/fragment_support.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_tarifs.xml" value="0.25625" /> <entry key="app/src/main/res/layout/fragment_tarifs.xml" value="0.25625" />
...@@ -104,6 +107,7 @@ ...@@ -104,6 +107,7 @@
<entry key="app/src/main/res/layout/layout_ask_create_task.xml" value="0.22643442622950818" /> <entry key="app/src/main/res/layout/layout_ask_create_task.xml" value="0.22643442622950818" />
<entry key="app/src/main/res/layout/layout_exit.xml" value="0.25625" /> <entry key="app/src/main/res/layout/layout_exit.xml" value="0.25625" />
<entry key="app/src/main/res/layout/layout_home_header.xml" value="0.25625" /> <entry key="app/src/main/res/layout/layout_home_header.xml" value="0.25625" />
<entry key="app/src/main/res/layout/layout_offline_bottom_sheet.xml" value="0.266051912568306" />
<entry key="app/src/main/res/layout/layout_sender.xml" value="0.25625" /> <entry key="app/src/main/res/layout/layout_sender.xml" value="0.25625" />
<entry key="app/src/main/res/layout/motion_layout.xml" value="0.266796875" /> <entry key="app/src/main/res/layout/motion_layout.xml" value="0.266796875" />
<entry key="app/src/main/res/menu/bottom_nav_menu.xml" value="0.3416666666666667" /> <entry key="app/src/main/res/menu/bottom_nav_menu.xml" value="0.3416666666666667" />
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
android:windowSoftInputMode="adjustResize" /> android:windowSoftInputMode="adjustResize" />
<activity <activity
android:name=".dev.BillingActivity" android:name=".dev.BillingFragment"
android:configChanges="orientation" android:configChanges="orientation"
android:exported="false" android:exported="false"
android:screenOrientation="portrait" android:screenOrientation="portrait"
......
...@@ -3,38 +3,39 @@ package com.mobiuz.app.dev ...@@ -3,38 +3,39 @@ package com.mobiuz.app.dev
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentBillingBinding import com.mobiuz.app.databinding.FragmentBillingBinding
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.utils.LocaleHelper import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import uz.agr.mobiuz.AGRBilling import uz.agr.mobiuz.AGRBilling
import uz.agr.sdk.coreui.extension.showMessage import uz.agr.sdk.coreui.extension.showMessage
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class BillingActivity : AppCompatActivity() { class BillingFragment : BaseFragment(R.layout.fragment_billing) {
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
private var _bn: FragmentBillingBinding? = null private var _bn: FragmentBillingBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController by lazy (LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
override fun onCreate(savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
LocaleHelper.setLocale(this) _bn = FragmentBillingBinding.bind(view)
super.onCreate(savedInstanceState)
_bn = FragmentBillingBinding.inflate(layoutInflater)
setContentView(bn.root)
val window = window.decorView
window.systemUiVisibility = window.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
setUpUI() setUpUI()
val window = requireActivity().window.decorView
window.systemUiVisibility = window.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
} }
fun setUpUI() {
override fun setUpUI() {
bn.apply { bn.apply {
toolbar.setNavigationOnClickListener { toolbar.setNavigationOnClickListener {
finish() navController.navigateUp()
} }
AGRBilling.hasCards().subscribe({ AGRBilling.hasCards().subscribe({
...@@ -48,7 +49,7 @@ class BillingActivity : AppCompatActivity() { ...@@ -48,7 +49,7 @@ class BillingActivity : AppCompatActivity() {
override fun invoke(phoneNumber: String) { override fun invoke(phoneNumber: String) {
pref.isShowPin = false pref.isShowPin = false
startActivity( startActivity(
AGRBilling.createCardsListIntent(this@BillingActivity, pref.userPhone.filter { it.isDigit() }) AGRBilling.createCardsListIntent(requireContext(), pref.userPhone.filter { it.isDigit() })
) )
} }
}) })
...@@ -63,7 +64,7 @@ class BillingActivity : AppCompatActivity() { ...@@ -63,7 +64,7 @@ class BillingActivity : AppCompatActivity() {
) )
*/ */
startActivity( startActivity(
AGRBilling.createReplenishBalanceIntent(this@BillingActivity, phoneNumber) AGRBilling.createReplenishBalanceIntent(requireContext(), phoneNumber)
) )
} }
}) })
...@@ -73,7 +74,7 @@ class BillingActivity : AppCompatActivity() { ...@@ -73,7 +74,7 @@ class BillingActivity : AppCompatActivity() {
override fun invoke(phoneNumber: String) { override fun invoke(phoneNumber: String) {
pref.isShowPin = false pref.isShowPin = false
startActivity( startActivity(
AGRBilling.createHistoryIntent(this@BillingActivity, phoneNumber) AGRBilling.createHistoryIntent(requireContext(), phoneNumber)
) )
} }
}) })
...@@ -81,8 +82,7 @@ class BillingActivity : AppCompatActivity() { ...@@ -81,8 +82,7 @@ class BillingActivity : AppCompatActivity() {
} }
} }
override fun collects() {}
private fun getPhoneNumber(listener: LoadPhoneNumber) { private fun getPhoneNumber(listener: LoadPhoneNumber) {
val number = pref.userPhone.filter { it.isDigit() } val number = pref.userPhone.filter { it.isDigit() }
......
...@@ -10,7 +10,6 @@ import android.view.View ...@@ -10,7 +10,6 @@ import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.annotation.IdRes import androidx.annotation.IdRes
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.GravityCompat import androidx.core.view.GravityCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
...@@ -53,6 +52,7 @@ class MainActivity : AppCompatActivity() { ...@@ -53,6 +52,7 @@ class MainActivity : AppCompatActivity() {
private var currentNavController: LiveData<NavController>? = null private var currentNavController: LiveData<NavController>? = null
private val viewModel: MainViewModel by viewModels() private val viewModel: MainViewModel by viewModels()
private lateinit var receiver: BroadcastReceiver private lateinit var receiver: BroadcastReceiver
private val intentFilter = IntentFilter()
// if offline type == 0 // if offline type == 0
private var type = 0 private var type = 0
...@@ -77,9 +77,7 @@ class MainActivity : AppCompatActivity() { ...@@ -77,9 +77,7 @@ class MainActivity : AppCompatActivity() {
currentNavController?.value?.navigate(R.id.homeFragment) currentNavController?.value?.navigate(R.id.homeFragment)
} }
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
FirebaseApp.initializeApp(this@MainActivity) FirebaseApp.initializeApp(this@MainActivity)
// throw java.lang.NullPointerException("cannot")
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this@MainActivity) mFirebaseAnalytics = FirebaseAnalytics.getInstance(this@MainActivity)
FirebaseMessaging.getInstance().token.addOnCompleteListener { FirebaseMessaging.getInstance().token.addOnCompleteListener {
...@@ -96,14 +94,14 @@ class MainActivity : AppCompatActivity() { ...@@ -96,14 +94,14 @@ class MainActivity : AppCompatActivity() {
} }
if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE){ if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE){
type = NetworkUtil.getConnectivityStatus(this@MainActivity) type = NetworkUtil.getConnectivityStatus(this@MainActivity)
bn.btnTryAgain.isVisible = (type == 0) && (currentNavController?.value?.currentDestination?.id != R.id.fullScreenFragment) bn.btnTryAgain.isVisible = (type == 0) && (currentNavController?.value?.currentDestination?.id != R.id.pinFragment)
if (type == 0) { if (type == 0) {
showMessage(getString(R.string.not_internet_connect)) showMessage(getString(R.string.not_internet_connect))
} }
} }
} }
} }
val intentFilter = IntentFilter()
intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE) intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE)
intentFilter.addAction(CONSTANTS.MY_CONNECTIVITY_CHANGE) intentFilter.addAction(CONSTANTS.MY_CONNECTIVITY_CHANGE)
registerReceiver(receiver, intentFilter) registerReceiver(receiver, intentFilter)
...@@ -156,7 +154,7 @@ class MainActivity : AppCompatActivity() { ...@@ -156,7 +154,7 @@ class MainActivity : AppCompatActivity() {
btnSafety.setOnClickListener(object : ButtonClick() { btnSafety.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
navigateToSettingsScreen(R.id.safetyFragment) navigateToSettingsScreen(R.id.securityFragment)
} }
}) })
...@@ -218,10 +216,10 @@ class MainActivity : AppCompatActivity() { ...@@ -218,10 +216,10 @@ class MainActivity : AppCompatActivity() {
private fun showPinCode() { private fun showPinCode() {
if(pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME){ if(pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME){
if (currentNavController?.value?.currentDestination?.id != R.id.fullScreenFragment && if (currentNavController?.value?.currentDestination?.id != R.id.pinFragment &&
currentNavController?.value?.currentDestination?.id != R.id.ussdFragment){ currentNavController?.value?.currentDestination?.id != R.id.ussdFragment){
bn.btnTryAgain.isVisible = false bn.btnTryAgain.isVisible = false
currentNavController?.value?.navigate(R.id.fullScreenFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER)) currentNavController?.value?.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER))
} }
} }
} }
...@@ -293,7 +291,7 @@ class MainActivity : AppCompatActivity() { ...@@ -293,7 +291,7 @@ class MainActivity : AppCompatActivity() {
bottomNavigationView = findViewById(R.id.bottom_nav_view) bottomNavigationView = findViewById(R.id.bottom_nav_view)
val navGraphIds = listOf( val navGraphIds = listOf(
R.navigation.nav_graph_home, R.navigation.nav_graph_home,
R.navigation.nav_graph_profile R.navigation.nav_graph_services
) )
val controller = bottomNavigationView.setupWithNavController( val controller = bottomNavigationView.setupWithNavController(
......
...@@ -46,45 +46,29 @@ class OfflineActivity : AppCompatActivity() { ...@@ -46,45 +46,29 @@ class OfflineActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivityOfflineBinding.inflate(layoutInflater) _bn = ActivityOfflineBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
adapter = ServiceAdapter(pref.language) adapter = ServiceAdapter(pref.language)
pref.isShowPin = false pref.isShowPin = false
val fragment = supportFragmentManager.findFragmentById(R.id.offline_container) as NavHostFragment val fragment = supportFragmentManager.findFragmentById(R.id.offline_container) as NavHostFragment
navController = NavHostFragment.findNavController(fragment) navController = NavHostFragment.findNavController(fragment)
// if(intent ) navController.popBackStack()
navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE))
intent?.let {
val type = it.getStringExtra(CONSTANTS.TYPE_SERVICE)
navController.popBackStack()
if (pref.isRegistered && pref.pinCode.isNotEmpty() && type != CONSTANTS.FROM_ONLINE) {
navController.navigate(R.id.fullScreenFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.OFFLINE))
} else {
navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE))
}
}
receiver = object : BroadcastReceiver() { receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE) { if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE) {
sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
}
if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE) {
type = NetworkUtil.getConnectivityStatus(this@OfflineActivity) type = NetworkUtil.getConnectivityStatus(this@OfflineActivity)
bn.btnTryAgain.isVisible = (type != 0) && (navController.currentDestination?.id != R.id.fullScreenFragment) bn.btnTryAgain.isVisible = (type != 0)
if (type != 0) { if (type != 0) {
showMessage(getString(R.string.yes_internet_connect)) showMessage(getString(R.string.yes_internet_connect))
} }
} }
} }
} }
intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE) intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE)
intentFilter.addAction(CONSTANTS.MY_CONNECTIVITY_CHANGE)
registerReceiver(receiver, intentFilter) registerReceiver(receiver, intentFilter)
bn.btnTryAgain.setOnClickListener { bn.btnTryAgain.setOnClickListener {
...@@ -95,34 +79,6 @@ class OfflineActivity : AppCompatActivity() { ...@@ -95,34 +79,6 @@ class OfflineActivity : AppCompatActivity() {
} }
override fun onResume() {
super.onResume()
if (pref.isRegistered && pref.isShowPin && pref.pinCode.isNotEmpty()) {
showPinCode()
} else {
pref.blockedTime = System.currentTimeMillis()
pref.isShowPin = true
}
}
override fun onStop() {
super.onStop()
pref.blockedTime = System.currentTimeMillis()
}
private fun showPinCode() {
if (pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME) {
if (navController.currentDestination?.id != R.id.fullScreenFragment &&
navController.currentDestination?.id != R.id.ussdFragment) {
customLog("fullScreenFragment")
bn.btnTryAgain.isVisible = false
navController.navigate(R.id.fullScreenFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER))
}
}
}
fun navigate() { fun navigate() {
when { when {
!pref.isRegistered -> { !pref.isRegistered -> {
...@@ -135,7 +91,7 @@ class OfflineActivity : AppCompatActivity() { ...@@ -135,7 +91,7 @@ class OfflineActivity : AppCompatActivity() {
else -> { else -> {
val intent = Intent(this, MainActivity::class.java) val intent = Intent(this, MainActivity::class.java)
intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST) // intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent) startActivity(intent)
} }
...@@ -147,7 +103,6 @@ class OfflineActivity : AppCompatActivity() { ...@@ -147,7 +103,6 @@ class OfflineActivity : AppCompatActivity() {
override fun onDestroy() { override fun onDestroy() {
unregisterReceiver(receiver) unregisterReceiver(receiver)
_bn = null _bn = null
pref.blockedTime = 0
super.onDestroy() super.onDestroy()
} }
} }
\ No newline at end of file
...@@ -42,20 +42,19 @@ class SplashActivity : AppCompatActivity() { ...@@ -42,20 +42,19 @@ class SplashActivity : AppCompatActivity() {
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
private lateinit var receiver: BroadcastReceiver private lateinit var receiver: BroadcastReceiver
private val intentFilter = IntentFilter()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivitySplashBinding.inflate(layoutInflater) _bn = ActivitySplashBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
// customLog("rect.top: ${getStatusBarHeight() / resources.displayMetrics.density}") window.decorView.systemUiVisibility = View.VISIBLE
receiver = object : BroadcastReceiver() { receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
val type = NetworkUtil.getConnectivityStatus(this@SplashActivity) val type = NetworkUtil.getConnectivityStatus(this@SplashActivity)
if (type == 0) { if (type == 0) {
showMessage(getString(R.string.not_internet_connect))
if (pref.services.isNotEmpty()) { if (pref.services.isNotEmpty()) {
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
delay(1500) delay(1500)
...@@ -70,7 +69,7 @@ class SplashActivity : AppCompatActivity() { ...@@ -70,7 +69,7 @@ class SplashActivity : AppCompatActivity() {
} }
} }
} }
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE") intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE)
registerReceiver(receiver, intentFilter) registerReceiver(receiver, intentFilter)
...@@ -83,17 +82,14 @@ class SplashActivity : AppCompatActivity() { ...@@ -83,17 +82,14 @@ class SplashActivity : AppCompatActivity() {
viewModel.servicesUiState.collect { viewModel.servicesUiState.collect {
when (it) { when (it) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
// bn.progress.isVisible = false
bn.btnTryAgain.isVisible = false bn.btnTryAgain.isVisible = false
navigate() navigate()
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
// bn.progress.isVisible = false
bn.btnTryAgain.isVisible = true bn.btnTryAgain.isVisible = true
showMessage(it.message) showMessage(it.message)
} }
is UiStateObject.LOADING -> { is UiStateObject.LOADING -> {
// bn.progress.isVisible = true
bn.btnTryAgain.isVisible = false bn.btnTryAgain.isVisible = false
} }
else -> Unit else -> Unit
......
...@@ -11,7 +11,9 @@ data class Translate( ...@@ -11,7 +11,9 @@ data class Translate(
val uz:String, val uz:String,
val ru:String, val ru:String,
val en:String val en:String
) ){
}
data class InnerData( data class InnerData(
val title:Translate, val title:Translate,
......
...@@ -25,6 +25,7 @@ import com.mobiuz.app.dev.utils.LocaleHelper ...@@ -25,6 +25,7 @@ import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.NetworkUtil import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.showMessage import com.mobiuz.app.dev.utils.extensions.showMessage
import com.mobiuz.app.dev.utils.extensions.showOfflineBottomSheetDialog
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
...@@ -39,25 +40,29 @@ class AuthActivity : AppCompatActivity() { ...@@ -39,25 +40,29 @@ class AuthActivity : AppCompatActivity() {
private lateinit var navController: NavController private lateinit var navController: NavController
private lateinit var mFirebaseAnalytics: FirebaseAnalytics private lateinit var mFirebaseAnalytics: FirebaseAnalytics
private lateinit var receiver: BroadcastReceiver private lateinit var receiver: BroadcastReceiver
private var type = 0
private var verificationCode: String? = null private var verificationCode: String? = null
private val intentFilter = IntentFilter()
private var phone = "" private var phone = ""
// if offline type == 0
private var type = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
LocaleHelper.setLocale(this) LocaleHelper.setLocale(this)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivityAuthBinding.inflate(layoutInflater) _bn = ActivityAuthBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
val fragment = supportFragmentManager.findFragmentById(R.id.auth_container) as NavHostFragment val fragment = supportFragmentManager.findFragmentById(R.id.auth_container) as NavHostFragment
navController = NavHostFragment.findNavController(fragment) navController = NavHostFragment.findNavController(fragment)
FirebaseApp.initializeApp(this) FirebaseApp.initializeApp(this)
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this) mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
FirebaseMessaging.getInstance().token.addOnCompleteListener { FirebaseMessaging.getInstance().token.addOnCompleteListener {
if (it.isSuccessful) pref.deviceToken = it.result.toString() if (it.isSuccessful) pref.deviceToken = it.result.toString()
} }
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
intent?.let { intent?.let {
phone = it.getStringExtra(CONSTANTS.PHONE) ?: "" phone = it.getStringExtra(CONSTANTS.PHONE) ?: ""
...@@ -78,31 +83,20 @@ class AuthActivity : AppCompatActivity() { ...@@ -78,31 +83,20 @@ class AuthActivity : AppCompatActivity() {
} }
} }
} }
bn.btnTryAgain.setOnClickListener {
if (type == 0){
navigate()
}
}
receiver = object : BroadcastReceiver(){ receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE){ if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE){
sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
}
if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE){
type = NetworkUtil.getConnectivityStatus(this@AuthActivity) type = NetworkUtil.getConnectivityStatus(this@AuthActivity)
bn.btnTryAgain.isVisible = (type == 0) if((type == 0) && (navController.currentDestination?.id != R.id.pinFragment)
&& (navController.currentDestination?.id != R.id.pinFragment) && (navController.currentDestination?.id != R.id.biometricFragment))
&& (navController.currentDestination?.id != R.id.biometricFragment) showOfflineBottomSheetDialog()
if(type == 0){
showMessage(getString(R.string.not_internet_connect))
}
} }
} }
} }
val intentFilter = IntentFilter()
intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE) intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE)
intentFilter.addAction(CONSTANTS.MY_CONNECTIVITY_CHANGE)
registerReceiver(receiver,intentFilter) registerReceiver(receiver,intentFilter)
} }
......
...@@ -36,9 +36,9 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -36,9 +36,9 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
var phone = "" var phone = ""
var phoneRaw = ""
var oldText = "" var oldText = ""
var newText = "" var newText = ""
var phoneRaw = ""
private val viewModel: AuthViewModel by viewModels() private val viewModel: AuthViewModel by viewModels()
...@@ -53,14 +53,17 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -53,14 +53,17 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
toolbar.setNavigationOnClickListener {
requireActivity().finish()
}
viewGroup.setOnClickListener(object : ButtonClick() { viewGroup.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
bn.viewGroup.hideKeyboard() bn.viewGroup.hideKeyboard()
} }
}) })
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) {
...@@ -97,9 +100,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -97,9 +100,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
} }
}) })
toolbar.setNavigationOnClickListener {
requireActivity().finish()
}
} }
} }
......
...@@ -8,7 +8,7 @@ import com.mobiuz.app.databinding.ItemPinBinding ...@@ -8,7 +8,7 @@ import com.mobiuz.app.databinding.ItemPinBinding
import com.mobiuz.app.dev.model.PinData import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.utils.extensions.SingleBlock import com.mobiuz.app.dev.utils.extensions.SingleBlock
class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() { class InstallPinAdapter : RecyclerView.Adapter<InstallPinAdapter.VHolder>() {
private val list: ArrayList<PinData> by lazy { ArrayList() } private val list: ArrayList<PinData> by lazy { ArrayList() }
private var listener: SingleBlock<String>? = null private var listener: SingleBlock<String>? = null
......
package com.mobiuz.app.dev.ui.auth.pin package com.mobiuz.app.dev.ui.auth.pin
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle 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.biometric.BiometricManager import androidx.biometric.BiometricManager
import androidx.core.hardware.fingerprint.FingerprintManagerCompat import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import co.infinum.goldfinger.Goldfinger
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentPinBinding import com.mobiuz.app.databinding.FragmentInstallPinBinding
import com.mobiuz.app.dev.MainActivity import com.mobiuz.app.dev.MainActivity
import com.mobiuz.app.dev.model.PinData import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
...@@ -26,19 +24,18 @@ import com.mobiuz.app.dev.ui.global.CONSTANTS ...@@ -26,19 +24,18 @@ import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.* import com.mobiuz.app.dev.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class PinFragment : BaseFragment(R.layout.fragment_pin) { class InstallPinFragment : BaseFragment(R.layout.fragment_install_pin) {
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
private var _bn: FragmentPinBinding? = null private var _bn: FragmentInstallPinBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private val data = ArrayList<PinData>() private val data = ArrayList<PinData>()
private val pinAdapter = PinAdapter() private val pinAdapter = InstallPinAdapter()
private var type = "" private var type = ""
private var titleText = "" private var titleText = ""
private var pinCode = "" private var pinCode = ""
...@@ -56,7 +53,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -56,7 +53,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentPinBinding.bind(view) _bn = FragmentInstallPinBinding.bind(view)
biometricManager = BiometricManager.from(requireContext()) biometricManager = BiometricManager.from(requireContext())
setUpUI() setUpUI()
...@@ -84,23 +81,18 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -84,23 +81,18 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
rvPin.adapter = pinAdapter rvPin.adapter = pinAdapter
titleText = when (type) { titleText = when (type) {
CONSTANTS.NEW_PIN -> { CONSTANTS.NEW_PIN -> {
topDiv.isVisible = false
getString(R.string.install_pin) getString(R.string.install_pin)
} }
CONSTANTS.CONFIRM_NEW_PIN -> { CONSTANTS.CONFIRM_NEW_PIN -> {
topDiv.isVisible = false
getString(R.string.confirm_pin) getString(R.string.confirm_pin)
} }
CONSTANTS.CURRENT_PIN -> { CONSTANTS.CURRENT_PIN -> {
topDiv.isVisible = true
getString(R.string.enter_old_pin) getString(R.string.enter_old_pin)
} }
CONSTANTS.CHANGE_NEW_PIN -> { CONSTANTS.CHANGE_NEW_PIN -> {
topDiv.isVisible = true
getString(R.string.enter_new_pin) getString(R.string.enter_new_pin)
} }
CONSTANTS.CONFIRM_CHANGE_NEW_PIN -> { CONSTANTS.CONFIRM_CHANGE_NEW_PIN -> {
topDiv.isVisible = true
getString(R.string.confirm_new_pin) getString(R.string.confirm_new_pin)
} }
else -> { else -> {
...@@ -114,7 +106,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -114,7 +106,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
pinAdapter.setOnDoneListener { pinAdapter.setOnDoneListener {
when (type) { when (type) {
CONSTANTS.NEW_PIN -> { CONSTANTS.NEW_PIN -> {
navController.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.CONFIRM_NEW_PIN, CONSTANTS.PIN_CODE to it), navController.navigate(R.id.installPinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.CONFIRM_NEW_PIN, CONSTANTS.PIN_CODE to it),
Utils.navOptions()) Utils.navOptions())
} }
CONSTANTS.CONFIRM_NEW_PIN -> { CONSTANTS.CONFIRM_NEW_PIN -> {
...@@ -129,7 +121,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -129,7 +121,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
} }
CONSTANTS.CURRENT_PIN -> { CONSTANTS.CURRENT_PIN -> {
if(pref.pinCode == it){ if(pref.pinCode == it){
navController.navigate(R.id.pinFragment, bundleOf( CONSTANTS.TYPE_PIN to CONSTANTS.CHANGE_NEW_PIN), Utils.navOptions()) navController.navigate(R.id.installPinFragment, bundleOf( CONSTANTS.TYPE_PIN to CONSTANTS.CHANGE_NEW_PIN), Utils.navOptions())
}else{ }else{
loadError() loadError()
} }
...@@ -138,14 +130,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -138,14 +130,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
if(pref.pinCode == it){ if(pref.pinCode == it){
showMessage(getString(R.string.cannot_change_pin)) showMessage(getString(R.string.cannot_change_pin))
}else{ }else{
navController.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.CONFIRM_CHANGE_NEW_PIN, CONSTANTS.PIN_CODE to it), Utils.navOptions()) navController.navigate(R.id.installPinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.CONFIRM_CHANGE_NEW_PIN, CONSTANTS.PIN_CODE to it), Utils
.navOptions())
} }
} }
CONSTANTS.CONFIRM_CHANGE_NEW_PIN -> { CONSTANTS.CONFIRM_CHANGE_NEW_PIN -> {
if(pinCode == it){ if(pinCode == it){
pref.pinCode = pinCode pref.pinCode = pinCode
showCustomDialog(getString(R.string.pin_code_updated),true){ showCustomDialog(getString(R.string.pin_code_updated),true){
navController.popBackStack(R.id.safetyFragment, false) navController.popBackStack(R.id.securityFragment, false)
} }
}else{ }else{
...@@ -176,7 +169,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -176,7 +169,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
} }
private fun checkBiometric() : Boolean { private fun checkBiometric() : Boolean {
return when (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG or BiometricManager.Authenticators.BIOMETRIC_WEAK)) { return when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) {
BiometricManager.BIOMETRIC_SUCCESS -> true BiometricManager.BIOMETRIC_SUCCESS -> true
else -> false else -> false
} }
...@@ -229,9 +222,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -229,9 +222,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
pinAdapter.submitList(data) pinAdapter.submitList(data)
} }
override fun collects() { override fun collects() {}
}
override fun onDestroy() { override fun onDestroy() {
_bn = null _bn = null
......
...@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick ...@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.makeLinks import com.mobiuz.app.dev.utils.extensions.makeLinks
import com.mobiuz.app.dev.utils.extensions.showCustomDialog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.hideKeyboard import com.mobiuz.app.dev.utils.hideKeyboard
...@@ -38,6 +39,8 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -38,6 +39,8 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private val viewModel: AuthViewModel by viewModels() private val viewModel: AuthViewModel by viewModels()
private var password = ""
private var confirmPassword = ""
private var phone = "" private var phone = ""
private var type = "" private var type = ""
private var code = "" private var code = ""
...@@ -61,6 +64,10 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -61,6 +64,10 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
viewGroup.setOnClickListener(object : ButtonClick() { viewGroup.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
bn.viewGroup.hideKeyboard() bn.viewGroup.hideKeyboard()
...@@ -79,22 +86,26 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -79,22 +86,26 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
txtAgree.makeLinks( txtAgree.makeLinks(
Pair("Terms of Use", View.OnClickListener { Pair("Terms of Use", View.OnClickListener {
val uri = Uri.parse(when(pref.language){ val uri = Uri.parse(
CONSTANTS.UZ -> CONSTANTS.LICENSE_UZ when (pref.language) {
CONSTANTS.RU -> CONSTANTS.LICENSE_RU CONSTANTS.UZ -> CONSTANTS.LICENSE_UZ
else -> CONSTANTS.LICENSE_EN CONSTANTS.RU -> CONSTANTS.LICENSE_RU
}) else -> CONSTANTS.LICENSE_EN
}
)
val intent = Intent(Intent.ACTION_VIEW) val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri intent.data = uri
startActivity(intent) startActivity(intent)
}), }),
Pair("Privacy Policy", View.OnClickListener { Pair("Privacy Policy", View.OnClickListener {
val uri = Uri.parse(when(pref.language){ val uri = Uri.parse(
CONSTANTS.UZ -> CONSTANTS.PRIVACY_POLICY_UZ when (pref.language) {
CONSTANTS.RU -> CONSTANTS.PRIVACY_POLICY_RU CONSTANTS.UZ -> CONSTANTS.PRIVACY_POLICY_UZ
else -> CONSTANTS.PRIVACY_POLICY_EN CONSTANTS.RU -> CONSTANTS.PRIVACY_POLICY_RU
}) else -> CONSTANTS.PRIVACY_POLICY_EN
}
)
val intent = Intent(Intent.ACTION_VIEW) val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri intent.data = uri
startActivity(intent) startActivity(intent)
...@@ -106,26 +117,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -106,26 +117,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
inputPassword.addTextChangedListener(object : TextWatcherWrapper() { inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count) super.onTextChanged(s, start, before, count)
txtCheckPassword.isVisible = (s.toString().length < 4) checkPasswordAndConfirm()
val confirmText = inputConfirm.text.toString().trim()
if (confirmText.isNotEmpty()) {
if (s.toString() == confirmText) {
imageCheck.setImageResource(R.drawable.ic_baseline_check_circle)
txtCheckConfirm.text = getString(R.string.password_same)
txtCheckConfirm.setTextColor(requireActivity().resources.getColor(R.color.green100))
btnLogin.isEnabled = true
} else {
imageCheck.setImageResource(R.drawable.ic_vector_error)
txtCheckConfirm.text = getString(R.string.password_not_same)
btnLogin.isEnabled = false
txtCheckConfirm.setTextColor(requireActivity().resources.getColor(R.color.primary100))
}
imageCheck.isVisible = true
txtCheckConfirm.isVisible = true
} else {
imageCheck.isVisible = false
txtCheckConfirm.isVisible = false
}
} }
}) })
...@@ -133,46 +125,52 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -133,46 +125,52 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
inputConfirm.addTextChangedListener(object : TextWatcherWrapper() { inputConfirm.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count) super.onTextChanged(s, start, before, count)
if (s.toString() == inputPassword.text.toString().trim()) { checkPasswordAndConfirm()
imageCheck.setImageResource(R.drawable.ic_baseline_check_circle)
txtCheckConfirm.text = getString(R.string.password_same)
txtCheckConfirm.setTextColor(requireActivity().resources.getColor(R.color.green100))
btnLogin.isEnabled = true
} else {
imageCheck.setImageResource(R.drawable.ic_vector_error)
txtCheckConfirm.text = getString(R.string.password_not_same)
btnLogin.isEnabled = false
txtCheckConfirm.setTextColor(requireActivity().resources.getColor(R.color.primary100))
}
imageCheck.isVisible = true
txtCheckConfirm.isVisible = true
} }
}) })
btnLogin.setOnClickListener(object : ButtonClick() { btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
val password = inputPassword.text.toString().trim() password = inputPassword.text.toString().trim()
val confirm = inputConfirm.text.toString().trim() confirmPassword = inputConfirm.text.toString().trim()
when { if(password == confirmPassword){
password.length < 4 || password != confirm -> { if (type == CONSTANTS.TYPE_FORGET) {
viewModel.resetPassword(UserAuth(phone.filter { it.isDigit() }, password, code))
} } else {
else -> { viewModel.register(UserAuth(phone.filter { it.isDigit() }, password))
if (type == CONSTANTS.TYPE_FORGET) {
viewModel.resetPassword(UserAuth(phone.filter { it.isDigit() }, password, code))
} else {
viewModel.register(UserAuth(phone.filter { it.isDigit() }, password))
}
} }
} }
} }
}) })
toolbar.setNavigationOnClickListener {
navController.navigateUp() }
}
private fun checkPasswordAndConfirm(){
bn.apply {
password = inputPassword.text.toString().trim()
confirmPassword = inputConfirm.text.toString().trim()
btnLogin.isEnabled = (password.length > 3) && (password == confirmPassword)
txtCheckPassword.isVisible = password.length < 4
if (password.isNotEmpty() && confirmPassword.isNotEmpty()){
if (password == confirmPassword){
imageCheck.setImageResource(R.drawable.ic_baseline_check_circle)
txtCheckConfirm.text = getString(R.string.password_same)
txtCheckConfirm.setTextColor(getColorCompat(R.color.green100))
}else{
imageCheck.setImageResource(R.drawable.ic_vector_error)
txtCheckConfirm.text = getString(R.string.password_not_same)
txtCheckConfirm.setTextColor(getColorCompat(R.color.primary100))
}
imageCheck.isVisible = true
txtCheckConfirm.isVisible = true
} }
} }
} }
override fun collects() { override fun collects() {
...@@ -207,7 +205,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -207,7 +205,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
showProgressDialog(false) showProgressDialog(false)
showCustomDialog(getString(R.string.password_successfully_updated),true){ showCustomDialog(getString(R.string.password_successfully_updated),true){
navController.popBackStack(R.id.loginFragment, false) navController.popBackStack(R.id.loginFragment, false)
navController.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.NEW_PIN), Utils.navOptions()) navController.navigate(R.id.installPinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.NEW_PIN), Utils.navOptions())
} }
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
......
...@@ -218,7 +218,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) { ...@@ -218,7 +218,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
showProgressDialog(false) showProgressDialog(false)
pref.userPhone = phone pref.userPhone = phone
navController.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.NEW_PIN), Utils.navOptions()) navController.navigate(R.id.installPinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.NEW_PIN), Utils.navOptions())
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
showProgressDialog(false) showProgressDialog(false)
......
package com.mobiuz.app.dev.ui.global
import android.os.Bundle
import android.view.View
import android.view.animation.AnimationUtils
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import co.infinum.goldfinger.Goldfinger
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentPinDialogBinding
import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.pin.PinAdapter
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.vibrate
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import java.lang.Exception
import javax.inject.Inject
@AndroidEntryPoint
class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
@Inject
lateinit var pref: SharedPref
private var _bn: FragmentPinDialogBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val data = ArrayList<PinData>()
private val pinAdapter = PinAdapter()
private var listener: SingleBlock<Boolean>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.FullScreenDialog)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentPinDialogBinding.bind(view)
isCancelable = false
setUpUI()
if (pref.isUseFingerPrint) loadFingerPrint()
}
private fun loadFingerPrint() {
val golfing = Goldfinger.Builder(requireContext()).build()
if (golfing.canAuthenticate()) {
val params = Goldfinger.PromptParams.Builder(this)
.title(getString(R.string.enter_from_finger_or_face))
.negativeButtonText(getString(R.string.cancel))
.build()
golfing.authenticate(params, object : Goldfinger.Callback {
override fun onResult(result: Goldfinger.Result) {
if(result.type() == Goldfinger.Type.SUCCESS){
dismiss()
}
customLog("onResult:${result.type()}, ${result.reason()}")
}
override fun onError(e: Exception) {
customLog("onError")
}
})
}
}
fun setUpUI() {
bn.apply {
loadData()
rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
rvPin.adapter = pinAdapter
txtNotPin.isVisible = false
pinAdapter.setOnDoneListener {
lifecycleScope.launchWhenCreated {
delay(50)
if (pref.pinCode == it) {
txtNotPin.isVisible = false
dismiss()
} else {
vibrate(requireContext())
cardPin.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake))
txtNotPin.isVisible = true
}
}
}
for (i in 0 until btnViewGroup.childCount) {
btnViewGroup.getChildAt(i).setOnClickListener {
when (it.id) {
R.id.btn_remove -> {
pinAdapter.removeItem()
txtNotPin.isVisible = false
}
R.id.with_password -> {
listener?.invoke(true)
}
R.id.btn_finger_print -> {
loadFingerPrint()
}
else -> {
val text = it as TextView
txtNotPin.isVisible = false
pinAdapter.addItem(text.text.toString().toInt())
}
}
}
}
}
}
private fun loadData() {
data.clear()
for (i in 0..3) {
data.add(PinData(-1))
}
pinAdapter.submitList(data)
}
fun setOnPinDoneListener(block: SingleBlock<Boolean>) {
listener = block
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
package com.mobiuz.app.dev.ui.global
import android.Manifest
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.mobiuz.app.databinding.BottomSheetUssdBinding
import com.mobiuz.app.databinding.LayoutOfflineBottomSheetBinding
import com.mobiuz.app.dev.OfflineActivity
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UssdData
import com.mobiuz.app.dev.utils.extensions.checkPermission
import com.mobiuz.app.dev.utils.extensions.getCurrentName
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
class OfflineBottomSheet() : BottomSheetDialogFragment() {
@Inject
lateinit var pref: SharedPref
private var _bn: LayoutOfflineBottomSheetBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private var lng = ""
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_bn = LayoutOfflineBottomSheetBinding.inflate(inflater)
return bn.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setUpUI()
}
private fun setUpUI() {
bn.apply {
lng = pref.language
btnZapros.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
pref.isShowPin = false
navigate()
}
})
btnOtmena.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
dismiss()
}
})
}
}
fun navigate(){
val intent = Intent(requireContext(), OfflineActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
requireActivity().finishAffinity()
dismiss()
}
override fun onDestroy() {
super.onDestroy()
_bn = null
}
}
\ No newline at end of file
...@@ -16,14 +16,13 @@ import androidx.lifecycle.lifecycleScope ...@@ -16,14 +16,13 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import co.infinum.goldfinger.Goldfinger
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentPinDialogBinding import com.mobiuz.app.databinding.FragmentPinBinding
import com.mobiuz.app.dev.MainViewModel import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.PinData import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.AuthActivity import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.auth.pin.PinAdapter import com.mobiuz.app.dev.ui.auth.pin.InstallPinAdapter
import com.mobiuz.app.dev.ui.base.BaseFragment import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.utils.NetworkUtil import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.showCustomDialog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
...@@ -35,14 +34,14 @@ import javax.inject.Inject ...@@ -35,14 +34,14 @@ import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { class PinFragment : BaseFragment(R.layout.fragment_pin) {
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
private var _bn: FragmentPinDialogBinding? = null private var _bn: FragmentPinBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val data = ArrayList<PinData>() private val data = ArrayList<PinData>()
private val pinAdapter = PinAdapter() private val pinAdapter = InstallPinAdapter()
private lateinit var mainViewModel: MainViewModel private lateinit var mainViewModel: MainViewModel
private var type = "" private var type = ""
private var errorCount = 3 private var errorCount = 3
...@@ -59,7 +58,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -59,7 +58,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentPinDialogBinding.bind(view) _bn = FragmentPinBinding.bind(view)
val window = requireActivity().window.decorView val window = requireActivity().window.decorView
window.systemUiVisibility = window.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR window.systemUiVisibility = window.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
...@@ -197,9 +196,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -197,9 +196,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
} }
override fun collects() { override fun collects() {}
}
private fun loadData() { private fun loadData() {
data.clear() data.clear()
......
...@@ -11,11 +11,13 @@ import androidx.core.view.isVisible ...@@ -11,11 +11,13 @@ import androidx.core.view.isVisible
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentHomeBinding import com.mobiuz.app.databinding.FragmentHomeBinding
import com.mobiuz.app.dev.BillingActivity import com.mobiuz.app.dev.BillingFragment
import com.mobiuz.app.dev.MainViewModel import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.model.Customer import com.mobiuz.app.dev.network.model.Customer
...@@ -48,20 +50,22 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -48,20 +50,22 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
private var lastUpdateTime = 0L private var lastUpdateTime = 0L
private lateinit var matchParam: FrameLayout.LayoutParams private lateinit var matchParam: FrameLayout.LayoutParams
private lateinit var changedParam: FrameLayout.LayoutParams private lateinit var changedParam: FrameLayout.LayoutParams
private val navController : NavController by lazy (LazyThreadSafetyMode.NONE){ NavHostFragment.findNavController(this) }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java] mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
viewModel.mainIndex() viewModel.mainIndex()
viewModel.mainRoaming() viewModel.mainRoaming()
lastUpdateTime = System.currentTimeMillis() matchParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
changedParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentHomeBinding.bind(view) _bn = FragmentHomeBinding.bind(view)
val window = requireActivity().window.decorView
window.systemUiVisibility = View.VISIBLE
requireActivity().window.decorView.systemUiVisibility = View.VISIBLE
setUpUI() setUpUI()
collects() collects()
...@@ -70,9 +74,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -70,9 +74,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
matchParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
changedParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
slider.adapter = sliderAdapter slider.adapter = sliderAdapter
TabLayoutMediator(tabIndicator, slider) { _, _ -> }.attach() TabLayoutMediator(tabIndicator, slider) { _, _ -> }.attach()
...@@ -99,8 +100,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -99,8 +100,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
btnAddSum.setOnClickListener { btnAddSum.setOnClickListener {
pref.isShowPin = false pref.isShowPin = false
pref.blockedTime = System.currentTimeMillis() navController.navigate(R.id.billingFragment)
startActivity(Intent(requireContext(), BillingActivity::class.java))
} }
val number = pref.userPhone.customMasketHome().replace("-", " ") val number = pref.userPhone.customMasketHome().replace("-", " ")
...@@ -112,9 +112,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -112,9 +112,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
} }
bounceScrollView.setOnOverScrollListener { fromStart, overScrolledDistance -> bounceScrollView.setOnOverScrollListener { fromStart, overScrolledDistance ->
// customLog("fromStart:$fromStart, overScroll:$overScroll, overScrolledDistance: $overScrolledDistance")
if (!fromStart) { if (!fromStart) {
lastUpdateTime = System.currentTimeMillis() lastUpdateTime = System.currentTimeMillis()
} }
...@@ -190,16 +187,13 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -190,16 +187,13 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
showProgressDialog(false) showProgressDialog(false)
bn.cardRoaming.isVisible = it.data.name != null bn.cardRoaming.isVisible = it.data.name != null
customLog("mainRoamingUiState SUCCESS${it.data}")
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
customLog("mainRoamingUiState ERROR${it.message}")
showProgressDialog(false) showProgressDialog(false)
bn.cardRoaming.isVisible = false bn.cardRoaming.isVisible = false
} }
is UiStateObject.LOADING -> { is UiStateObject.LOADING -> {
bn.cardRoaming.isVisible = false bn.cardRoaming.isVisible = false
customLog("mainRoamingUiState LOADING")
} }
else -> Unit else -> Unit
} }
...@@ -242,11 +236,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -242,11 +236,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
super.onResume() super.onResume()
mainViewModel.bottomSheet(true) mainViewModel.bottomSheet(true)
mainViewModel.swipeDrawer(true) mainViewModel.swipeDrawer(true)
customLog("onResume")
} }
override fun onStop() { override fun onStop() {
super.onStop() super.onStop()
mainViewModel.bottomSheet(false)
mainViewModel.swipeDrawer(false) mainViewModel.swipeDrawer(false)
} }
......
...@@ -58,6 +58,13 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) { ...@@ -58,6 +58,13 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
mainViewModel.swipeDrawer(true) mainViewModel.swipeDrawer(true)
} }
override fun onStop() {
super.onStop()
mainViewModel.bottomSheet(false)
mainViewModel.swipeDrawer(false)
}
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
...@@ -89,11 +96,6 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) { ...@@ -89,11 +96,6 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
} }
} }
override fun onStop() {
super.onStop()
mainViewModel.swipeDrawer(false)
}
private fun navigateToServiceScreen(key: ServiceData) { private fun navigateToServiceScreen(key: ServiceData) {
navController.navigate(R.id.ussdFragment, bundleOf(CONSTANTS.SERVICE to Gson().toJson(key))) navController.navigate(R.id.ussdFragment, bundleOf(CONSTANTS.SERVICE to Gson().toJson(key)))
......
...@@ -14,9 +14,7 @@ import com.mobiuz.app.dev.ui.base.BaseFragment ...@@ -14,9 +14,7 @@ import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.LocaleHelper import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
import uz.agr.mobiuz.AGRBilling import uz.agr.mobiuz.AGRBilling
import javax.inject.Inject import javax.inject.Inject
...@@ -42,7 +40,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) { ...@@ -42,7 +40,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
toolbar.setNavigationOnClickListener { toolbar.setNavigationOnClickListener {
navController.navigateUp() navController.navigateUp()
} }
bn.apply { bn.apply {
when (pref.language) { when (pref.language) {
...@@ -50,19 +48,19 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) { ...@@ -50,19 +48,19 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
CONSTANTS.RU -> imageRussian.isVisible = true CONSTANTS.RU -> imageRussian.isVisible = true
CONSTANTS.EN -> imageEnglish.isVisible = true CONSTANTS.EN -> imageEnglish.isVisible = true
} }
uzbekLang.setOnClickListener(object : ButtonClick(){ uzbekLang.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
setLangAndNavigate(CONSTANTS.UZ) setLangAndNavigate(CONSTANTS.UZ)
} }
}) })
russianLang.setOnClickListener(object : ButtonClick(){ russianLang.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
setLangAndNavigate(CONSTANTS.RU) setLangAndNavigate(CONSTANTS.RU)
} }
}) })
englishLang.setOnClickListener(object : ButtonClick(){ englishLang.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
setLangAndNavigate(CONSTANTS.EN) setLangAndNavigate(CONSTANTS.EN)
} }
...@@ -73,7 +71,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) { ...@@ -73,7 +71,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
private fun setLangAndNavigate(lang: String) { private fun setLangAndNavigate(lang: String) {
pref.language = lang pref.language = lang
AGRBilling.changeLanguage(requireContext(),lang) AGRBilling.setLanguage(requireContext(), lang)
LocaleHelper.setLocale(requireContext()) LocaleHelper.setLocale(requireContext())
val intent = Intent(requireContext(), MainActivity::class.java) val intent = Intent(requireContext(), MainActivity::class.java)
intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST) intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST)
......
package com.mobiuz.app.dev.ui.settings.safety package com.mobiuz.app.dev.ui.settings.security
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.View import android.view.View
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible import androidx.core.view.isVisible
...@@ -23,7 +22,6 @@ import com.mobiuz.app.dev.ui.global.ButtonClick ...@@ -23,7 +22,6 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.getColorCompat import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.showCustomDialog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.extensions.showMessage import com.mobiuz.app.dev.utils.extensions.showMessage
...@@ -68,7 +66,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -68,7 +66,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
val text = when (type) { val text = when (type) {
CONSTANTS.CURRENT_PASSWORD ->{ CONSTANTS.CURRENT_PASSWORD -> {
txtForgetPassword.isVisible = true txtForgetPassword.isVisible = true
getString(R.string.enter_current_password) getString(R.string.enter_current_password)
} }
...@@ -81,7 +79,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -81,7 +79,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
} }
txtPassword.text = text txtPassword.text = text
viewGroup.setOnClickListener(object : ButtonClick(){ viewGroup.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
bn.viewGroup.hideKeyboard() bn.viewGroup.hideKeyboard()
} }
...@@ -89,7 +87,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -89,7 +87,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
txtForgetPassword.setOnClickListener(object : ButtonClick() { txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
if(type == CONSTANTS.CURRENT_PASSWORD){ if (type == CONSTANTS.CURRENT_PASSWORD) {
viewModel.forgetPassword(UserAuth(pref.userPhone.replace(" ", "").replace("+", ""))) viewModel.forgetPassword(UserAuth(pref.userPhone.replace(" ", "").replace("+", "")))
} }
} }
...@@ -98,7 +96,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -98,7 +96,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
inputPassword.addTextChangedListener(object : TextWatcherWrapper() { inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count) super.onTextChanged(s, start, before, count)
if(type == CONSTANTS.CONFIRM_NEW_PASSWORD){ if (type == CONSTANTS.CONFIRM_NEW_PASSWORD) {
if (s.toString() == newPassword) { if (s.toString() == newPassword) {
imageCheck.setImageResource(R.drawable.ic_baseline_check_circle) imageCheck.setImageResource(R.drawable.ic_baseline_check_circle)
...@@ -113,7 +111,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -113,7 +111,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
} }
imageCheck.isVisible = true imageCheck.isVisible = true
txtCheckConfirm.isVisible = true txtCheckConfirm.isVisible = true
}else{ } else {
btnLogin.isEnabled = s.toString().length > 3 btnLogin.isEnabled = s.toString().length > 3
imageCheck.isVisible = false imageCheck.isVisible = false
txtCheckConfirm.isVisible = false txtCheckConfirm.isVisible = false
...@@ -145,9 +143,9 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -145,9 +143,9 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
} }
CONSTANTS.NEW_PASSWORD -> { CONSTANTS.NEW_PASSWORD -> {
if(oldPassword == password){ if (oldPassword == password) {
showMessage(getString(R.string.cannot_change_password)) showMessage(getString(R.string.cannot_change_password))
}else{ } else {
navController.navigate( navController.navigate(
R.id.changePasswordFragment, R.id.changePasswordFragment,
bundleOf( bundleOf(
...@@ -163,7 +161,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -163,7 +161,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
CONSTANTS.CONFIRM_NEW_PASSWORD -> { CONSTANTS.CONFIRM_NEW_PASSWORD -> {
if (newPassword == password) { if (newPassword == password) {
viewModel.changePassword(ChangePassword(oldPassword,newPassword)) viewModel.changePassword(ChangePassword(oldPassword, newPassword))
} }
} }
} }
...@@ -180,14 +178,14 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -180,14 +178,14 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
} }
private fun loadError(){ private fun loadError() {
bn.apply { bn.apply {
if (count == 0){ if (count == 0) {
showCustomDialog(getString(R.string.popitok_error_password),false){ showCustomDialog(getString(R.string.popitok_error_password), false) {
} }
}else{ } else {
showMessage(getString(R.string.popitok_password,count.toString())) showMessage(getString(R.string.popitok_password, count.toString()))
} }
} }
} }
...@@ -208,20 +206,20 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -208,20 +206,20 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
showProgressDialog(false) showProgressDialog(false)
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
if(it.fromServer){ if (it.fromServer) {
count-- count--
if(count == 0){ if (count == 0) {
showCustomDialog(getString(R.string.popitok_error_password), false){ showCustomDialog(getString(R.string.popitok_error_password), false) {
pref.clearUserData() pref.clearUserData()
val intent = Intent(requireContext(), AuthActivity::class.java) val intent = Intent(requireContext(), AuthActivity::class.java)
intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN) intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN)
startActivity(intent) startActivity(intent)
requireActivity().finish() requireActivity().finish()
} }
}else{ } else {
loadError() loadError()
} }
}else{ } else {
showToastMessage(it.message) showToastMessage(it.message)
} }
...@@ -241,8 +239,8 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -241,8 +239,8 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
when (it) { when (it) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
showProgressDialog(false) showProgressDialog(false)
showCustomDialog(getString(R.string.password_updated),true){ showCustomDialog(getString(R.string.password_updated), true) {
navController.popBackStack(R.id.safetyFragment, false) navController.popBackStack(R.id.securityFragment, false)
} }
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
......
package com.mobiuz.app.dev.ui.settings.safety package com.mobiuz.app.dev.ui.settings.security
import android.content.Intent import android.content.Intent
import android.os.Build import android.os.Build
...@@ -12,40 +12,33 @@ import androidx.core.os.bundleOf ...@@ -12,40 +12,33 @@ import androidx.core.os.bundleOf
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.BuildConfig
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentSafetyBinding import com.mobiuz.app.databinding.FragmentSecurityBinding
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.showMessage import com.mobiuz.app.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import uz.agr.sdk.core.entity.synxron.VersionSdk
// 35
// 93 320 36 00 = 30
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class SafetyFragment : BaseFragment(R.layout.fragment_safety) { class SecurityFragment : BaseFragment(R.layout.fragment_security) {
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
private lateinit var biometricManager: BiometricManager private lateinit var biometricManager: BiometricManager
private var _bn: FragmentSafetyBinding? = null private var _bn: FragmentSecurityBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentSafetyBinding.bind(view) _bn = FragmentSecurityBinding.bind(view)
setUpUI() setUpUI()
collects() collects()
biometricManager = BiometricManager.from(requireContext()) biometricManager = BiometricManager.from(requireContext())
...@@ -91,7 +84,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) { ...@@ -91,7 +84,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
btnChangePin.setOnClickListener(object : ButtonClick() { btnChangePin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
navController.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.CURRENT_PIN), Utils.navOptions()) navController.navigate(R.id.installPinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.CURRENT_PIN), Utils.navOptions())
} }
}) })
btnChangePassword.setOnClickListener(object : ButtonClick() { btnChangePassword.setOnClickListener(object : ButtonClick() {
...@@ -105,19 +98,15 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) { ...@@ -105,19 +98,15 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
private fun checkBiometricAfter(toSettings:Boolean) { private fun checkBiometricAfter(toSettings:Boolean) {
when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) { when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) {
BiometricManager.BIOMETRIC_SUCCESS -> { BiometricManager.BIOMETRIC_SUCCESS -> {
customLog("BIOMETRIC_SUCCESS")
bn.btnBiometric.isVisible = true bn.btnBiometric.isVisible = true
} }
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> { BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
customLog("BIOMETRIC_ERROR_NO_HARDWARE")
pref.isUseFingerPrint = false pref.isUseFingerPrint = false
bn.btnBiometric.isVisible = false bn.btnBiometric.isVisible = false
} }
BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> { BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
customLog("BIOMETRIC_ERROR_NONE_ENROLLED")
customLog("${Build.VERSION.SDK_INT} >= ${Build.VERSION_CODES.R}")
if (toSettings){ if (toSettings){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){
...@@ -125,7 +114,6 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) { ...@@ -125,7 +114,6 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
putExtra(Settings.EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED, BIOMETRIC_STRONG or BIOMETRIC_WEAK) putExtra(Settings.EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED, BIOMETRIC_STRONG or BIOMETRIC_WEAK)
} }
pref.isShowPin = false pref.isShowPin = false
customLog("BIOMETRIC_ERROR_NONE_ENROLLED INTENT")
startActivityForResult(enrollIntent, 1) startActivityForResult(enrollIntent, 1)
}else{ }else{
showMessage(getString(R.string.to_settings)) showMessage(getString(R.string.to_settings))
...@@ -135,14 +123,12 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) { ...@@ -135,14 +123,12 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
pref.isUseFingerPrint = false pref.isUseFingerPrint = false
} }
else -> Unit else -> {
if (toSettings) showMessage(getString(R.string.to_settings))
}
} }
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}
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)) {
......
...@@ -26,7 +26,7 @@ import com.mobiuz.app.dev.model.Translate ...@@ -26,7 +26,7 @@ import com.mobiuz.app.dev.model.Translate
import com.mobiuz.app.dev.network.model.Errors import com.mobiuz.app.dev.network.model.Errors
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.ExitDialog import com.mobiuz.app.dev.ui.global.ExitDialog
import com.mobiuz.app.dev.ui.global.FullScreenDialog import com.mobiuz.app.dev.ui.global.OfflineBottomSheet
import com.mobiuz.app.dev.ui.global.SenderDialog import com.mobiuz.app.dev.ui.global.SenderDialog
import retrofit2.HttpException import retrofit2.HttpException
import java.io.IOException import java.io.IOException
...@@ -57,20 +57,8 @@ fun String.getDateTime(): String? { ...@@ -57,20 +57,8 @@ fun String.getDateTime(): String? {
} }
} }
fun FragmentActivity.showFullScreenDialog(block: (dialog: FullScreenDialog) -> Unit){ fun FragmentActivity.showOfflineBottomSheetDialog(){
val time = SharedPref(this).blockedTime OfflineBottomSheet().show(supportFragmentManager,CONSTANTS.FULL_SCREEN_DIALOG)
if(time < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME){
val fragment = supportFragmentManager.findFragmentByTag(CONSTANTS.FULL_SCREEN_DIALOG)
if(fragment == null){
val dialog = FullScreenDialog()
dialog.setOnPinDoneListener {
block(dialog)
}
dialog.show(supportFragmentManager,CONSTANTS.FULL_SCREEN_DIALOG)
}
}
} }
fun Activity.showMessage(message: String) { fun Activity.showMessage(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show() Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
...@@ -151,15 +139,8 @@ fun String.checkChangedPosition(new:String):Int{ ...@@ -151,15 +139,8 @@ fun String.checkChangedPosition(new:String):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){ if(i == 2 || i == 5 || i == 7){
newText += " "
}
if(i == 5){
newText += " "
}
if(i == 7){
newText += " " newText += " "
} }
newText += this[i] newText += this[i]
...@@ -169,15 +150,6 @@ fun String.maskedTextMobi():String{ ...@@ -169,15 +150,6 @@ fun String.maskedTextMobi():String{
return newText return newText
} }
//fun Fragment.showCustomDialog(string: String, status: Boolean, block: () -> Unit) {
// val snackBar = Snackbar.make(this.requireView(),string, Snackbar.LENGTH_LONG)
// .setBackgroundTint(Color.GRAY)
// .setTextColor(Color.WHITE)
// .setText(string)
// snackBar.show()
//
//}
fun TextView.makeLinks(vararg links: Pair<String, View.OnClickListener>) { fun TextView.makeLinks(vararg links: Pair<String, View.OnClickListener>) {
val spannableString = SpannableString(this.text) val spannableString = SpannableString(this.text)
var startIndexOfLink = -1 var startIndexOfLink = -1
...@@ -262,12 +234,10 @@ fun String.customMasket():String{ ...@@ -262,12 +234,10 @@ fun String.customMasket():String{
new += ") " new += ") "
} }
if (i == 9){ if (i == 9 || i == 11){
new += "-"
}
if (i == 11){
new += "-" new += "-"
} }
new += text[i] new += text[i]
} }
return new return new
...@@ -284,10 +254,7 @@ fun String.customMasketHome():String{ ...@@ -284,10 +254,7 @@ fun String.customMasketHome():String{
new += " " new += " "
} }
if (i == 9){ if (i == 9 || i == 11){
new += "-"
}
if (i == 11){
new += "-" new += "-"
} }
new += text[i] new += text[i]
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
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"
android:orientation="vertical"
android:background="@color/white100" android:background="@color/white100"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"> android:fitsSystemWindows="true">
...@@ -12,19 +12,9 @@ ...@@ -12,19 +12,9 @@
android:id="@+id/auth_container" android:id="@+id/auth_container"
android:name="androidx.navigation.fragment.NavHostFragment" android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="match_parent"
android:layout_weight="1"
app:defaultNavHost="true" app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph_auth" app:navGraph="@navigation/nav_graph_auth"
tools:context=".dev.ui.auth.AuthActivity"/> tools:context=".dev.ui.auth.AuthActivity"/>
<Button
android:id="@+id/btn_try_again"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="30dp"
android:text="@string/to_offline"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:orientation="vertical" android:orientation="vertical"
tools:context=".dev.BillingActivity"> tools:context=".dev.BillingFragment">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
......
...@@ -2,24 +2,18 @@ ...@@ -2,24 +2,18 @@
<androidx.constraintlayout.widget.ConstraintLayout 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:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/view_group" android:id="@+id/view_group"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="false" android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id="@+id/div"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<FrameLayout <FrameLayout
android:layout_width="match_parent"
android:id="@+id/frame" android:id="@+id/frame"
app:layout_constraintTop_toBottomOf="@id/div" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
...@@ -28,30 +22,30 @@ ...@@ -28,30 +22,30 @@
app:navigationIcon="@drawable/ic_baseline_arrow_back" /> app:navigationIcon="@drawable/ic_baseline_arrow_back" />
<LinearLayout <LinearLayout
android:id="@+id/error_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primary100"
android:gravity="center" android:gravity="center"
android:visibility="invisible"
android:id="@+id/error_layout"
android:orientation="vertical" android:orientation="vertical"
android:background="@color/primary100" android:visibility="invisible">
android:layout_height="match_parent">
<TextView <TextView
android:layout_width="wrap_content"
android:textColor="@color/white100"
android:id="@+id/error_title" android:id="@+id/error_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/wrong_password" android:text="@string/wrong_password"
android:textColor="@color/white100"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
android:layout_width="wrap_content"
android:textColor="@color/white100"
android:id="@+id/error_text" android:id="@+id/error_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/_14sdp" android:layout_marginHorizontal="@dimen/_14sdp"
android:text="@string/popitok" android:text="@string/popitok"
android:textColor="@color/white100"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
...@@ -107,10 +101,10 @@ ...@@ -107,10 +101,10 @@
android:id="@+id/image_check" android:id="@+id/image_check"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_6sdp"
android:paddingHorizontal="6dp" android:paddingHorizontal="6dp"
android:src="@drawable/ic_vector_error" android:src="@drawable/ic_vector_error"
android:visibility="gone" android:visibility="gone"
android:layout_marginTop="@dimen/_6sdp"
app:layout_constraintEnd_toStartOf="@id/txt_check_confirm" app:layout_constraintEnd_toStartOf="@id/txt_check_confirm"
app:layout_constraintStart_toStartOf="@id/layout_input_password" app:layout_constraintStart_toStartOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" /> app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
...@@ -122,8 +116,8 @@ ...@@ -122,8 +116,8 @@
android:layout_marginTop="@dimen/_6sdp" android:layout_marginTop="@dimen/_6sdp"
android:text="@string/must_same" android:text="@string/must_same"
android:textColor="@color/grey110" android:textColor="@color/grey110"
android:visibility="gone"
android:textSize="13sp" android:textSize="13sp"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/image_check" app:layout_constraintStart_toEndOf="@id/image_check"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" /> app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
......
...@@ -5,48 +5,55 @@ ...@@ -5,48 +5,55 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white" android:background="@color/white"
android:fitsSystemWindows="false" android:fitsSystemWindows="true"
android:orientation="vertical"> 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 <TextView
style="@style/TitleTextStyle"
android:textSize="@dimen/_20sdp"
android:id="@+id/txt_enter_pin" android:id="@+id/txt_enter_pin"
android:layout_marginTop="@dimen/_44sdp" style="@style/TitleTextStyle"
android:text="@string/enter_pin_code" /> android:text="@string/install_pin" />
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:id="@+id/frame" android:layout_weight="1">
android:layout_weight="0.9">
<TextView <TextView
android:id="@+id/txt_not_pin" android:id="@+id/txt_not_pin"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="top|center" android:layout_gravity="top|center"
android:layout_marginTop="@dimen/_20sdp" android:layout_marginTop="@dimen/_10sdp"
android:layout_marginBottom="@dimen/_20sdp" android:layout_marginBottom="@dimen/_30sdp"
android:text="@string/pin_not_same" android:text="@string/pin_not_same"
android:textColor="@color/primary100" android:textColor="@color/primary100"
android:textSize="@dimen/_10sdp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" /> android:visibility="gone" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="@dimen/_100sdp"
android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:orientation="vertical" android:gravity="center"
android:layout_height="wrap_content"> android:orientation="vertical">
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:id="@+id/card_pin" android:id="@+id/card_pin"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="0dp" android:layout_gravity="center"
android:minWidth="@dimen/_110sdp" android:minWidth="@dimen/_100sdp"
android:minHeight="@dimen/_32sdp"> android:minHeight="@dimen/_32sdp"
app:cardCornerRadius="0dp">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_pin" android:id="@+id/rv_pin"
...@@ -54,33 +61,31 @@ ...@@ -54,33 +61,31 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="18dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="4" tools:itemCount="4"
tools:listitem="@layout/item_pin" /> tools:listitem="@layout/item_pin" />
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
<View <View
android:layout_width="@dimen/_110sdp" android:layout_width="@dimen/_120sdp"
android:background="@color/grey30" android:layout_height="2dp"
android:layout_height="2dp"/> android:background="@color/grey30" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/btn_view_group" android:id="@+id/btn_view_group"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="2.8" android:layout_weight="2.5">
>
<TextView <TextView
android:id="@+id/btn_1" android:id="@+id/btn_1"
style="@style/BtnStyle" style="@style/BtnStyle"
app:layout_constraintHorizontal_chainStyle="packed"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_1" android:text="@string/_1"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/btn_2" app:layout_constraintEnd_toStartOf="@id/btn_2"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -88,10 +93,11 @@ ...@@ -88,10 +93,11 @@
<TextView <TextView
android:id="@+id/btn_2" android:id="@+id/btn_2"
style="@style/BtnStyle" style="@style/BtnStyle"
android:layout_marginHorizontal="@dimen/_26sdp"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_2" android:text="@string/_2"
android:layout_marginHorizontal="@dimen/_26sdp"
app:layout_constraintEnd_toStartOf="@id/btn_3" app:layout_constraintEnd_toStartOf="@id/btn_3"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/btn_1" app:layout_constraintStart_toEndOf="@id/btn_1"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -113,7 +119,8 @@ ...@@ -113,7 +119,8 @@
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/btn_5" app:layout_constraintEnd_toStartOf="@id/btn_5"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_1" /> app:layout_constraintTop_toBottomOf="@id/btn_1"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/btn_5" android:id="@+id/btn_5"
...@@ -140,8 +147,8 @@ ...@@ -140,8 +147,8 @@
android:layout_marginTop="@dimen/_16sdp" android:layout_marginTop="@dimen/_16sdp"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_7" android:text="@string/_7"
app:layout_constraintEnd_toStartOf="@id/btn_8"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/btn_8"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_4" /> app:layout_constraintTop_toBottomOf="@id/btn_4" />
...@@ -164,24 +171,11 @@ ...@@ -164,24 +171,11 @@
app:layout_constraintStart_toEndOf="@id/btn_8" app:layout_constraintStart_toEndOf="@id/btn_8"
app:layout_constraintTop_toTopOf="@id/btn_7" /> app:layout_constraintTop_toTopOf="@id/btn_7" />
<ImageView
android:id="@+id/btn_finger_print"
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/remove"
android:src="@drawable/ic_finger_print"
app:layout_constraintBottom_toBottomOf="@id/btn_0"
app:layout_constraintStart_toStartOf="@id/btn_7"
app:layout_constraintEnd_toEndOf="@id/btn_7"
app:layout_constraintTop_toTopOf="@id/btn_0" />
<TextView <TextView
android:id="@+id/btn_0" android:id="@+id/btn_0"
style="@style/BtnStyle" style="@style/BtnStyle"
android:layout_marginTop="24dp" android:layout_marginTop="@dimen/_16sdp"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_0" android:text="@string/_0"
app:layout_constraintStart_toStartOf="@id/btn_8" app:layout_constraintStart_toStartOf="@id/btn_8"
...@@ -194,31 +188,13 @@ ...@@ -194,31 +188,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless" android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/remove" android:contentDescription="@string/remove"
android:padding="@dimen/_12sdp" android:padding="@dimen/_4sdp"
android:src="@drawable/ic_vector_remove" android:src="@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf="@id/btn_0" app:layout_constraintBottom_toBottomOf="@id/btn_0"
app:layout_constraintStart_toStartOf="@id/btn_9"
app:layout_constraintTop_toTopOf="@id/btn_0" />
<TextView
android:id="@+id/with_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="@dimen/_20sdp"
android:background="?android:selectableItemBackground"
android:text="@string/open_with_password"
android:textColor="@color/primary100"
android:textSize="14sp"
android:textStyle="bold"
android:paddingHorizontal="@dimen/_20sdp"
android:paddingVertical="@dimen/_12sdp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_0" /> app:layout_constraintStart_toEndOf="@id/btn_0"
app:layout_constraintTop_toTopOf="@id/btn_0" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -3,13 +3,9 @@ ...@@ -3,13 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
......
...@@ -5,60 +5,48 @@ ...@@ -5,60 +5,48 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white" android:background="@color/white"
android:fitsSystemWindows="false" android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<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 <TextView
android:id="@+id/txt_enter_pin"
style="@style/TitleTextStyle" style="@style/TitleTextStyle"
android:text="@string/install_pin" /> android:textSize="@dimen/_20sdp"
android:id="@+id/txt_enter_pin"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter_pin_code" />
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"> android:id="@+id/frame"
android:layout_weight="0.9">
<TextView <TextView
android:id="@+id/txt_not_pin" android:id="@+id/txt_not_pin"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="top|center" android:layout_gravity="top|center"
android:layout_marginTop="@dimen/_10sdp" android:layout_marginTop="@dimen/_20sdp"
android:layout_marginBottom="@dimen/_30sdp" android:layout_marginBottom="@dimen/_20sdp"
android:text="@string/pin_not_same" android:text="@string/pin_not_same"
android:textColor="@color/primary100" android:textColor="@color/primary100"
android:textSize="16sp" android:textSize="@dimen/_10sdp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" /> android:visibility="gone" />
<LinearLayout <LinearLayout
android:layout_width="@dimen/_100sdp" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center" android:orientation="vertical"
android:orientation="vertical"> android:layout_height="wrap_content">
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:id="@+id/card_pin" android:id="@+id/card_pin"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" app:cardCornerRadius="0dp"
android:minWidth="@dimen/_100sdp" android:minWidth="@dimen/_110sdp"
android:minHeight="@dimen/_32sdp" android:minHeight="@dimen/_32sdp">
app:cardCornerRadius="0dp">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_pin" android:id="@+id/rv_pin"
...@@ -66,31 +54,33 @@ ...@@ -66,31 +54,33 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="18dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="4" tools:itemCount="4"
tools:listitem="@layout/item_pin" /> tools:listitem="@layout/item_pin" />
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
<View <View
android:layout_width="@dimen/_120sdp" android:layout_width="@dimen/_110sdp"
android:layout_height="2dp" android:background="@color/grey30"
android:background="@color/grey30" /> android:layout_height="2dp"/>
</LinearLayout> </LinearLayout>
</FrameLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/btn_view_group" android:id="@+id/btn_view_group"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="2.5"> android:layout_weight="2.8"
>
<TextView <TextView
android:id="@+id/btn_1" android:id="@+id/btn_1"
style="@style/BtnStyle" style="@style/BtnStyle"
app:layout_constraintHorizontal_chainStyle="packed"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_1" android:text="@string/_1"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/btn_2" app:layout_constraintEnd_toStartOf="@id/btn_2"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -98,11 +88,10 @@ ...@@ -98,11 +88,10 @@
<TextView <TextView
android:id="@+id/btn_2" android:id="@+id/btn_2"
style="@style/BtnStyle" style="@style/BtnStyle"
android:layout_marginHorizontal="@dimen/_26sdp"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_2" android:text="@string/_2"
android:layout_marginHorizontal="@dimen/_26sdp"
app:layout_constraintEnd_toStartOf="@id/btn_3" app:layout_constraintEnd_toStartOf="@id/btn_3"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/btn_1" app:layout_constraintStart_toEndOf="@id/btn_1"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -124,8 +113,7 @@ ...@@ -124,8 +113,7 @@
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/btn_5" app:layout_constraintEnd_toStartOf="@id/btn_5"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_1" app:layout_constraintTop_toBottomOf="@id/btn_1" />
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/btn_5" android:id="@+id/btn_5"
...@@ -152,8 +140,8 @@ ...@@ -152,8 +140,8 @@
android:layout_marginTop="@dimen/_16sdp" android:layout_marginTop="@dimen/_16sdp"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_7" android:text="@string/_7"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/btn_8" app:layout_constraintEnd_toStartOf="@id/btn_8"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_4" /> app:layout_constraintTop_toBottomOf="@id/btn_4" />
...@@ -176,11 +164,24 @@ ...@@ -176,11 +164,24 @@
app:layout_constraintStart_toEndOf="@id/btn_8" app:layout_constraintStart_toEndOf="@id/btn_8"
app:layout_constraintTop_toTopOf="@id/btn_7" /> app:layout_constraintTop_toTopOf="@id/btn_7" />
<ImageView
android:id="@+id/btn_finger_print"
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/remove"
android:src="@drawable/ic_finger_print"
app:layout_constraintBottom_toBottomOf="@id/btn_0"
app:layout_constraintStart_toStartOf="@id/btn_7"
app:layout_constraintEnd_toEndOf="@id/btn_7"
app:layout_constraintTop_toTopOf="@id/btn_0" />
<TextView <TextView
android:id="@+id/btn_0" android:id="@+id/btn_0"
style="@style/BtnStyle" style="@style/BtnStyle"
android:layout_marginTop="@dimen/_16sdp" android:layout_marginTop="24dp"
android:background="@drawable/bgn_pin_btn" android:background="@drawable/bgn_pin_btn"
android:text="@string/_0" android:text="@string/_0"
app:layout_constraintStart_toStartOf="@id/btn_8" app:layout_constraintStart_toStartOf="@id/btn_8"
...@@ -193,13 +194,31 @@ ...@@ -193,13 +194,31 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless" android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/remove" android:contentDescription="@string/remove"
android:padding="@dimen/_4sdp" android:padding="@dimen/_12sdp"
android:src="@drawable/ic_vector_remove" android:src="@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf="@id/btn_0" app:layout_constraintBottom_toBottomOf="@id/btn_0"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@id/btn_9"
app:layout_constraintStart_toEndOf="@id/btn_0"
app:layout_constraintTop_toTopOf="@id/btn_0" /> app:layout_constraintTop_toTopOf="@id/btn_0" />
<TextView
android:id="@+id/with_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="@dimen/_20sdp"
android:background="?android:selectableItemBackground"
android:text="@string/open_with_password"
android:textColor="@color/primary100"
android:textSize="14sp"
android:textStyle="bold"
android:paddingHorizontal="@dimen/_20sdp"
android:paddingVertical="@dimen/_12sdp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_0" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -4,16 +4,10 @@ ...@@ -4,16 +4,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:fitsSystemWindows="false" android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -4,14 +4,9 @@ ...@@ -4,14 +4,9 @@
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"
android:fitsSystemWindows="false" android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
......
...@@ -4,13 +4,9 @@ ...@@ -4,13 +4,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:fitsSystemWindows="true"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_rectangle_122"
android:layout_gravity="center"
android:layout_marginTop="12dp"
android:layout_height="wrap_content"/>
<TextView
style="@style/ServicesTextStyle"
android:id="@+id/txt_title"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:layout_marginHorizontal="@dimen/_20sdp"
android:text="@string/not_internet_connect"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:id="@+id/btn_zapros"
style="@style/ButtonPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="24dp"
android:paddingVertical="12dp"
android:text="@string/to_offline"
android:textSize="14sp" />
<TextView
android:id="@+id/btn_otmena"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textStyle="bold"
android:background="?android:selectableItemBackground"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="@dimen/_16sdp"
android:paddingVertical="12dp"
android:text="@string/close_process"
android:textSize="14sp" />
</LinearLayout>
\ No newline at end of file
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
android:title="@string/my_mobi" /> android:title="@string/my_mobi" />
<item <item
android:id="@+id/nav_graph_profile" android:id="@+id/nav_graph_services"
android:icon="@drawable/ic_vector_service" android:icon="@drawable/ic_vector_service"
android:title="@string/services" /> android:title="@string/services" />
......
...@@ -23,10 +23,10 @@ ...@@ -23,10 +23,10 @@
tools:layout="@layout/fragment_login" /> tools:layout="@layout/fragment_login" />
<fragment <fragment
android:id="@+id/pinFragment" android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.PinFragment" android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment" android:label="PinFragment"
tools:layout="@layout/fragment_pin" /> tools:layout="@layout/fragment_install_pin" />
<fragment <fragment
android:id="@+id/biometricFragment" android:id="@+id/biometricFragment"
android:name="com.mobiuz.app.dev.ui.auth.biometric.BiometricFragment" android:name="com.mobiuz.app.dev.ui.auth.biometric.BiometricFragment"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<navigation xmlns:android="http://schemas.android.com/apk/res/android" <navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/fullScreenFragment" app:startDestination="@id/pinFragment"
android:id="@+id/nav_graph_home"> android:id="@+id/nav_graph_home">
<fragment <fragment
...@@ -12,10 +12,10 @@ ...@@ -12,10 +12,10 @@
tools:layout="@layout/fragment_home" /> tools:layout="@layout/fragment_home" />
<fragment <fragment
android:id="@+id/pinFragment" android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.PinFragment" android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment" android:label="PinFragment"
tools:layout="@layout/fragment_pin" /> tools:layout="@layout/fragment_install_pin" />
<fragment <fragment
android:id="@+id/languageFragment" android:id="@+id/languageFragment"
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
android:name="com.mobiuz.app.dev.ui.settings.SupportFragment" android:name="com.mobiuz.app.dev.ui.settings.SupportFragment"
android:label="SupportFragment" /> android:label="SupportFragment" />
<fragment <fragment
android:id="@+id/safetyFragment" android:id="@+id/securityFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.SafetyFragment" android:name="com.mobiuz.app.dev.ui.settings.security.SecurityFragment"
android:label="fragment_safety" android:label="fragment_safety"
tools:layout="@layout/fragment_safety" /> tools:layout="@layout/fragment_security" />
<fragment <fragment
android:id="@+id/profileFragment" android:id="@+id/profileFragment"
android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment" android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment"
...@@ -39,19 +39,19 @@ ...@@ -39,19 +39,19 @@
tools:layout="@layout/fragment_profile" /> tools:layout="@layout/fragment_profile" />
<fragment <fragment
android:id="@+id/changePasswordFragment" android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.ChangePasswordFragment" android:name="com.mobiuz.app.dev.ui.settings.security.ChangePasswordFragment"
android:label="CurrentPasswordFragment" /> android:label="CurrentPasswordFragment" />
<fragment <fragment
android:id="@+id/billingFragment" android:id="@+id/billingFragment"
android:name="com.mobiuz.app.dev.BillingActivity" android:name="com.mobiuz.app.dev.BillingFragment"
android:label="fragment_billing" android:label="fragment_billing"
tools:layout="@layout/fragment_billing" /> tools:layout="@layout/fragment_billing" />
<fragment <fragment
android:id="@+id/fullScreenFragment" android:id="@+id/pinFragment"
tools:layout="@layout/fragment_pin_dialog" tools:layout="@layout/fragment_pin"
android:name="com.mobiuz.app.dev.ui.global.FullScreenFragment" android:name="com.mobiuz.app.dev.ui.global.PinFragment"
android:label="FullScreenFragment" /> android:label="FullScreenFragment" />
</navigation> </navigation>
\ No newline at end of file
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph_settings" android:id="@+id/nav_graph_settings"
app:startDestination="@id/fullScreenFragment"> app:startDestination="@id/serviceFragment">
<fragment <fragment
android:id="@+id/serviceFragment" android:id="@+id/serviceFragment"
tools:layout="@layout/fragment_service" tools:layout="@layout/fragment_service"
...@@ -14,10 +15,4 @@ ...@@ -14,10 +15,4 @@
android:name="com.mobiuz.app.dev.ui.service.UssdFragment" android:name="com.mobiuz.app.dev.ui.service.UssdFragment"
android:label="ServicesFragmentActivity" /> android:label="ServicesFragmentActivity" />
<fragment
android:id="@+id/fullScreenFragment"
tools:layout="@layout/fragment_pin_dialog"
android:name="com.mobiuz.app.dev.ui.global.FullScreenFragment"
android:label="FullScreenFragment" />
</navigation> </navigation>
\ No newline at end of file
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/serviceFragment" app:startDestination="@id/serviceFragment"
android:id="@+id/nav_graph_profile"> android:id="@+id/nav_graph_services">
<fragment <fragment
android:id="@+id/fullScreenFragment" android:id="@+id/pinFragment"
tools:layout="@layout/fragment_pin_dialog" tools:layout="@layout/fragment_pin"
android:name="com.mobiuz.app.dev.ui.global.FullScreenFragment" android:name="com.mobiuz.app.dev.ui.global.PinFragment"
android:label="FullScreenFragment" /> android:label="FullScreenFragment" />
<fragment <fragment
...@@ -33,10 +33,10 @@ ...@@ -33,10 +33,10 @@
android:name="com.mobiuz.app.dev.ui.settings.SupportFragment" android:name="com.mobiuz.app.dev.ui.settings.SupportFragment"
android:label="SupportFragment" /> android:label="SupportFragment" />
<fragment <fragment
android:id="@+id/safetyFragment" android:id="@+id/securityFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.SafetyFragment" android:name="com.mobiuz.app.dev.ui.settings.security.SecurityFragment"
android:label="fragment_safety" android:label="fragment_safety"
tools:layout="@layout/fragment_safety" /> tools:layout="@layout/fragment_security" />
<fragment <fragment
android:id="@+id/profileFragment" android:id="@+id/profileFragment"
android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment" android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment"
...@@ -44,13 +44,13 @@ ...@@ -44,13 +44,13 @@
tools:layout="@layout/fragment_profile" /> tools:layout="@layout/fragment_profile" />
<fragment <fragment
android:id="@+id/changePasswordFragment" android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.ChangePasswordFragment" android:name="com.mobiuz.app.dev.ui.settings.security.ChangePasswordFragment"
android:label="CurrentPasswordFragment" /> android:label="CurrentPasswordFragment" />
<fragment <fragment
android:id="@+id/pinFragment" android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.PinFragment" android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment" android:label="PinFragment"
tools:layout="@layout/fragment_pin" /> tools:layout="@layout/fragment_install_pin" />
</navigation> </navigation>
\ No newline at end of file
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
<item name="colorPrimaryDark">@android:color/transparent</item> <item name="colorPrimaryDark">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentStatus">true</item>
<item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
<item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item> <item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item>
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item> <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
......
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