Commit 22e7c154 authored by shohboz's avatar shohboz

[UPD] MUS-244 Feature, updated localizations and fixed some bugs

parent 4edadbeb
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="FUQOZ9OVZLWKVKZT" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2021-12-21T15:08:49.610759Z" />
</component>
</project>
\ No newline at end of file
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
<entry key="app/src/main/res/drawable/ic_finger_print.xml" value="0.2590277777777778" /> <entry key="app/src/main/res/drawable/ic_finger_print.xml" value="0.2590277777777778" />
<entry key="app/src/main/res/drawable/ic_fingerprint.xml" value="0.26525096525096525" /> <entry key="app/src/main/res/drawable/ic_fingerprint.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/ic_group_12.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_group_12.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/ic_image_only_finger.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/ic_mobiuz_logo.xml" value="0.26180555555555557" /> <entry key="app/src/main/res/drawable/ic_mobiuz_logo.xml" value="0.26180555555555557" />
<entry key="app/src/main/res/drawable/ic_pinger_print.xml" value="0.2590277777777778" /> <entry key="app/src/main/res/drawable/ic_pinger_print.xml" value="0.2590277777777778" />
<entry key="app/src/main/res/drawable/ic_russia.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_russia.xml" value="0.2796296296296296" />
...@@ -89,6 +90,7 @@ ...@@ -89,6 +90,7 @@
<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" />
<entry key="app/src/main/res/layout/fragment_ussd.xml" value="0.25625" />
<entry key="app/src/main/res/layout/fragment_verification.xml" value="0.2" /> <entry key="app/src/main/res/layout/fragment_verification.xml" value="0.2" />
<entry key="app/src/main/res/layout/home_home.xml" value="0.25625" /> <entry key="app/src/main/res/layout/home_home.xml" value="0.25625" />
<entry key="app/src/main/res/layout/home_motion.xml" value="0.10951008645533142" /> <entry key="app/src/main/res/layout/home_motion.xml" value="0.10951008645533142" />
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" /> <uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application <application
android:name=".dev.app.App" android:name=".dev.app.App"
......
...@@ -10,6 +10,7 @@ import com.mobiuz.app.dev.model.SharedPref ...@@ -10,6 +10,7 @@ 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.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import uz.agr.mobiuz.AGRBilling
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
...@@ -42,6 +43,7 @@ class LanguageActivity : AppCompatActivity() { ...@@ -42,6 +43,7 @@ class LanguageActivity : AppCompatActivity() {
private fun setLangAndNavigate(lang: String) { private fun setLangAndNavigate(lang: String) {
pref.language = lang pref.language = lang
AGRBilling.setLanguage(this, lang)
startActivity(Intent(this, AuthActivity::class.java)) startActivity(Intent(this, AuthActivity::class.java))
} }
......
...@@ -200,7 +200,7 @@ class MainActivity : AppCompatActivity() { ...@@ -200,7 +200,7 @@ class MainActivity : AppCompatActivity() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (pref.isShowPin) { if (pref.isShowPin && !pref.isOpenUssdBottomSheetDialog) {
showPinCode() showPinCode()
} else { } else {
pref.blockedTime = System.currentTimeMillis() pref.blockedTime = System.currentTimeMillis()
...@@ -210,7 +210,8 @@ class MainActivity : AppCompatActivity() { ...@@ -210,7 +210,8 @@ 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.fullScreenFragment &&
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.fullScreenFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER))
} }
......
package com.mobiuz.app.dev package com.mobiuz.app.dev
import android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.ChangePassword
import com.mobiuz.app.dev.network.model.UiStateObject import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.network.repository.MainRepository import com.mobiuz.app.dev.network.repository.MainRepository
import com.mobiuz.app.dev.utils.extensions.customLog
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
...@@ -45,7 +41,7 @@ class MainViewModel @Inject constructor( ...@@ -45,7 +41,7 @@ class MainViewModel @Inject constructor(
private val _bottomSheetUiState = MutableStateFlow<UiStateObject<Boolean>>(UiStateObject.EMPTY) private val _bottomSheetUiState = MutableStateFlow<UiStateObject<Boolean>>(UiStateObject.EMPTY)
val bottomSheetUiState: StateFlow<UiStateObject<Boolean>> = _bottomSheetUiState val bottomSheetUiState: StateFlow<UiStateObject<Boolean>> = _bottomSheetUiState
fun bottomSheet(status:Boolean) = viewModelScope.launch { fun bottomSheet(status: Boolean) = viewModelScope.launch {
_bottomSheetUiState.value = UiStateObject.EMPTY _bottomSheetUiState.value = UiStateObject.EMPTY
_bottomSheetUiState.value = UiStateObject.SUCCESS(status) _bottomSheetUiState.value = UiStateObject.SUCCESS(status)
} }
...@@ -53,8 +49,7 @@ class MainViewModel @Inject constructor( ...@@ -53,8 +49,7 @@ class MainViewModel @Inject constructor(
private val _swipeDrawerUiState = MutableStateFlow<UiStateObject<Boolean>>(UiStateObject.EMPTY) private val _swipeDrawerUiState = MutableStateFlow<UiStateObject<Boolean>>(UiStateObject.EMPTY)
val swipeDrawerUiState: StateFlow<UiStateObject<Boolean>> = _swipeDrawerUiState val swipeDrawerUiState: StateFlow<UiStateObject<Boolean>> = _swipeDrawerUiState
fun swipeDrawer(status:Boolean) = viewModelScope.launch { fun swipeDrawer(status: Boolean) = viewModelScope.launch {
Log.e("AAA","swipeDrawer:$status")
_swipeDrawerUiState.value = UiStateObject.EMPTY _swipeDrawerUiState.value = UiStateObject.EMPTY
_swipeDrawerUiState.value = UiStateObject.SUCCESS(status) _swipeDrawerUiState.value = UiStateObject.SUCCESS(status)
} }
...@@ -62,6 +57,4 @@ class MainViewModel @Inject constructor( ...@@ -62,6 +57,4 @@ class MainViewModel @Inject constructor(
suspend fun logOut() = repository.logOut() suspend fun logOut() = repository.logOut()
} }
\ No newline at end of file
...@@ -17,7 +17,9 @@ import com.mobiuz.app.dev.model.SharedPref ...@@ -17,7 +17,9 @@ 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.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.service.ServiceAdapter import com.mobiuz.app.dev.ui.service.ServiceAdapter
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.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 javax.inject.Inject import javax.inject.Inject
...@@ -31,6 +33,7 @@ class OfflineActivity : AppCompatActivity() { ...@@ -31,6 +33,7 @@ class OfflineActivity : AppCompatActivity() {
private lateinit var adapter: ServiceAdapter private lateinit var adapter: ServiceAdapter
private lateinit var navController: NavController private lateinit var navController: NavController
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
...@@ -39,6 +42,7 @@ class OfflineActivity : AppCompatActivity() { ...@@ -39,6 +42,7 @@ class OfflineActivity : AppCompatActivity() {
lateinit var pref: SharedPref lateinit var pref: SharedPref
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
LocaleHelper.setLocale(this)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivityOfflineBinding.inflate(layoutInflater) _bn = ActivityOfflineBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
...@@ -48,6 +52,7 @@ class OfflineActivity : AppCompatActivity() { ...@@ -48,6 +52,7 @@ class OfflineActivity : AppCompatActivity() {
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 )
intent?.let { intent?.let {
val type = it.getStringExtra(CONSTANTS.TYPE_SERVICE) val type = it.getStringExtra(CONSTANTS.TYPE_SERVICE)
...@@ -64,6 +69,10 @@ class OfflineActivity : AppCompatActivity() { ...@@ -64,6 +69,10 @@ class OfflineActivity : AppCompatActivity() {
receiver = object : BroadcastReceiver() { receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == CONSTANTS.USSD_ACTION_REFRESH) {
pref.blockedTime = System.currentTimeMillis()
customLog("USSD_ACTION_REFRESH")
}
if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE) { if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE) {
sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE)) sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
} }
...@@ -77,9 +86,10 @@ class OfflineActivity : AppCompatActivity() { ...@@ -77,9 +86,10 @@ class OfflineActivity : AppCompatActivity() {
} }
} }
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)
intentFilter.addAction(CONSTANTS.USSD_ACTION_REFRESH)
registerReceiver(receiver, intentFilter) registerReceiver(receiver, intentFilter)
bn.btnTryAgain.setOnClickListener { bn.btnTryAgain.setOnClickListener {
...@@ -108,7 +118,9 @@ class OfflineActivity : AppCompatActivity() { ...@@ -108,7 +118,9 @@ class OfflineActivity : AppCompatActivity() {
private fun showPinCode() { private fun showPinCode() {
if (pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME) { if (pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME) {
if (navController.currentDestination?.id != R.id.fullScreenFragment) { if (navController.currentDestination?.id != R.id.fullScreenFragment &&
navController.currentDestination?.id != R.id.ussdFragment) {
customLog("fullScreenFragment")
bn.btnTryAgain.isVisible = false bn.btnTryAgain.isVisible = false
navController.navigate(R.id.fullScreenFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER)) navController.navigate(R.id.fullScreenFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER))
} }
......
...@@ -2,6 +2,7 @@ package com.mobiuz.app.dev.model ...@@ -2,6 +2,7 @@ package com.mobiuz.app.dev.model
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import com.mobiuz.app.dev.ui.global.CONSTANTS
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
...@@ -27,7 +28,7 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) { ...@@ -27,7 +28,7 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
} }
var language: String var language: String
get() = mySharedPref.getString(::language.name, "") ?: "" get() = mySharedPref.getString(::language.name,"") ?: ""
set(value) { set(value) {
mySharedPref.edit().putString(::language.name, value).apply() mySharedPref.edit().putString(::language.name, value).apply()
} }
...@@ -80,6 +81,12 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) { ...@@ -80,6 +81,12 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
mySharedPref.edit().putBoolean(::isShowPin.name, value).apply() mySharedPref.edit().putBoolean(::isShowPin.name, value).apply()
} }
var isOpenUssdBottomSheetDialog: Boolean
get() = mySharedPref.getBoolean(::isOpenUssdBottomSheetDialog.name, true)
set(value) {
mySharedPref.edit().putBoolean(::isOpenUssdBottomSheetDialog.name, value).apply()
}
var blockedTime: Long var blockedTime: Long
get() = mySharedPref.getLong(::blockedTime.name, 0) get() = mySharedPref.getLong(::blockedTime.name, 0)
set(value) { set(value) {
......
...@@ -156,8 +156,8 @@ class AuthRepository @Inject constructor( ...@@ -156,8 +156,8 @@ class AuthRepository @Inject constructor(
res.status -> { res.status -> {
UiStateObject.SUCCESS(res.message) UiStateObject.SUCCESS(res.message)
} }
res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage()) res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage(),true)
else -> UiStateObject.ERROR(res.message) else -> UiStateObject.ERROR(res.message,true)
} }
} catch (e: Exception) { } catch (e: Exception) {
UiStateObject.ERROR(e.userMessage(context)) UiStateObject.ERROR(e.userMessage(context))
......
...@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.MainActivity ...@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.MainActivity
import com.mobiuz.app.dev.OfflineActivity import com.mobiuz.app.dev.OfflineActivity
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
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.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
...@@ -43,6 +44,7 @@ class AuthActivity : AppCompatActivity() { ...@@ -43,6 +44,7 @@ class AuthActivity : AppCompatActivity() {
private var phone = "" private var phone = ""
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
LocaleHelper.setLocale(this)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivityAuthBinding.inflate(layoutInflater) _bn = ActivityAuthBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
......
...@@ -75,7 +75,7 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) { ...@@ -75,7 +75,7 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
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)
requireActivity().finish() requireActivity().finishAffinity()
} }
override fun collects() {} override fun collects() {}
......
...@@ -47,7 +47,6 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -47,7 +47,6 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
arguments?.let { arguments?.let {
type = it.getString(CONSTANTS.TYPE_PIN, "") ?: "" type = it.getString(CONSTANTS.TYPE_PIN, "") ?: ""
customLog("pin type = $type")
pinCode = it.getString(CONSTANTS.PIN_CODE, "") ?: "" pinCode = it.getString(CONSTANTS.PIN_CODE, "") ?: ""
} }
} }
...@@ -65,7 +64,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -65,7 +64,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
bn.apply { bn.apply {
loadData() loadData()
toolbar.setNavigationOnClickListener { toolbar.setNavigationOnClickListener {
navController.navigateUp() when {
navController.popBackStack(R.id.registerFragment,false) -> {
}
navController.popBackStack(R.id.loginFragment,false) -> {
}
else -> navController.navigateUp()
}
} }
rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
rvPin.setHasFixedSize(true) rvPin.setHasFixedSize(true)
...@@ -79,12 +86,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -79,12 +86,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
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 -> {
...@@ -164,8 +174,10 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -164,8 +174,10 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
bn.apply { bn.apply {
count-- count--
if (count == 0){ if (count == 0){
showMessage(getString(R.string.popitok_error)) showCustomDialog(getString(R.string.popitok_error),false){
navigateToLogin() navigateToLogin()
}
}else{ }else{
vibrate(requireContext()) vibrate(requireContext())
cardPin.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake)) cardPin.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake))
...@@ -180,7 +192,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -180,7 +192,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN) intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN)
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)
requireActivity().finish() requireActivity().finishAffinity()
} }
private fun navigate() { private fun navigate() {
...@@ -188,8 +200,11 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) { ...@@ -188,8 +200,11 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
if (golfing.canAuthenticate()) { if (golfing.canAuthenticate()) {
navController.navigate(R.id.biometricFragment, null, Utils.navOptions()) navController.navigate(R.id.biometricFragment, null, Utils.navOptions())
} else { } else {
startActivity(Intent(requireContext(), MainActivity::class.java).putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST)) val intent = Intent(requireContext(), MainActivity::class.java)
requireActivity().finish() intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
requireActivity().finishAffinity()
} }
} }
......
...@@ -39,6 +39,7 @@ object CONSTANTS { ...@@ -39,6 +39,7 @@ object CONSTANTS {
const val FULL_SCREEN_DIALOG = "full_screen_dialog" const val FULL_SCREEN_DIALOG = "full_screen_dialog"
const val CONNECTIVITY_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE" const val CONNECTIVITY_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE"
const val MY_CONNECTIVITY_CHANGE = "MY_CONNECTIVITY_CHANGE" const val MY_CONNECTIVITY_CHANGE = "MY_CONNECTIVITY_CHANGE"
const val USSD_ACTION_REFRESH = "com.times.ussd.action.REFRESH"
//password types //password types
......
...@@ -6,10 +6,13 @@ import android.view.View ...@@ -6,10 +6,13 @@ import android.view.View
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import android.widget.TextView import android.widget.TextView
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
import androidx.biometric.BiometricPrompt
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
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
...@@ -22,15 +25,12 @@ import com.mobiuz.app.dev.model.SharedPref ...@@ -22,15 +25,12 @@ 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.PinAdapter
import com.mobiuz.app.dev.ui.base.BaseFragment import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.utils.extensions.SingleBlock import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.customLog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.extensions.showMessage
import com.mobiuz.app.dev.utils.extensions.vibrate import com.mobiuz.app.dev.utils.extensions.vibrate
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import javax.inject.Inject import javax.inject.Inject
import android.widget.LinearLayout
@AndroidEntryPoint @AndroidEntryPoint
...@@ -45,6 +45,10 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -45,6 +45,10 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
private lateinit var mainViewModel: MainViewModel private lateinit var mainViewModel: MainViewModel
private var type = "" private var type = ""
private var errorCount = 3 private var errorCount = 3
private lateinit var goldfinger: Goldfinger
private lateinit var biometricManager: BiometricManager
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo: BiometricPrompt.PromptInfo
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
...@@ -59,24 +63,64 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -59,24 +63,64 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
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
mainViewModel.bottomSheet(false) mainViewModel.bottomSheet(false)
mainViewModel.swipeDrawer(false) mainViewModel.swipeDrawer(false)
setUpUI() setUpUI()
if (pref.isUseFingerPrint) loadFingerPrint() goldfinger = Goldfinger.Builder(requireContext()).build()
biometricManager = BiometricManager.from(requireContext())
checkBiometric()
} }
private fun checkBiometric() {
when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) {
BiometricManager.BIOMETRIC_SUCCESS -> {
bn.btnFingerPrint.isVisible = true
if (pref.isUseFingerPrint) loadBiometric()
}
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
bn.btnFingerPrint.isVisible = false
}
BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> {
bn.btnFingerPrint.isVisible = false
}
else -> Unit
}
}
private fun loadBiometric() {
biometricPrompt = BiometricPrompt(this, object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
navigate()
}
})
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle(getString(R.string.biometric_enter))
.setSubtitle(getString(R.string.subtitle_biometric))
.setConfirmationRequired(true)
.setNegativeButtonText(getString(R.string.cancel))
.build()
biometricPrompt.authenticate(promptInfo)
}
private fun loadFingerPrint() { private fun loadFingerPrint() {
val golfing = Goldfinger.Builder(requireContext()).build() if (goldfinger.canAuthenticate()) {
if (golfing.canAuthenticate()) {
val params = Goldfinger.PromptParams.Builder(this) val params = Goldfinger.PromptParams.Builder(this)
.title(getString(R.string.enter_from_finger_or_face)) .title(getString(R.string.biometric_enter))
.description(getString(R.string.enter_from_finger_or_face))
.negativeButtonText(getString(R.string.cancel)) .negativeButtonText(getString(R.string.cancel))
.build() .build()
golfing.authenticate(params, object : Goldfinger.Callback { goldfinger.authenticate(params, object : Goldfinger.Callback {
override fun onResult(result: Goldfinger.Result) { override fun onResult(result: Goldfinger.Result) {
if (result.type() == Goldfinger.Type.SUCCESS) { if (result.type() == Goldfinger.Type.SUCCESS) {
navigate() navigate()
...@@ -93,23 +137,12 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -93,23 +137,12 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
bn.apply { bn.apply {
loadData() loadData()
val param1 = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
val param2 = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
param2.weight = 3f
// frame.layoutParams = param1
// btnViewGroup.layoutParams = param2
rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
rvPin.adapter = pinAdapter rvPin.adapter = pinAdapter
txtNotPin.isVisible = false txtNotPin.isVisible = false
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner,object : OnBackPressedCallback(true){ requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
requireActivity().finish() requireActivity().finish()
} }
...@@ -121,8 +154,10 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -121,8 +154,10 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
navigate() navigate()
} else { } else {
errorCount-- errorCount--
if (errorCount == 0){ if (errorCount == 0) {
loadWithPassword() showCustomDialog(getString(R.string.pin_code_error3), false) {
loadWithPassword()
}
} }
vibrate(requireContext()) vibrate(requireContext())
cardPin.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake)) cardPin.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake))
...@@ -142,7 +177,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -142,7 +177,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
loadWithPassword() loadWithPassword()
} }
R.id.btn_finger_print -> { R.id.btn_finger_print -> {
loadFingerPrint() loadBiometric()
} }
else -> { else -> {
val text = it as TextView val text = it as TextView
...@@ -152,22 +187,27 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) { ...@@ -152,22 +187,27 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
} }
} }
} }
} }
} }
private fun loadWithPassword() { private fun loadWithPassword() {
pref.clearUserData() val isOffline = NetworkUtil.getConnectivityStatus(requireContext())
val intent = Intent(requireContext(), AuthActivity::class.java) if (isOffline != 0){
intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN) pref.clearUserData()
startActivity(intent) val intent = Intent(requireContext(), AuthActivity::class.java)
requireActivity().finish() intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN)
startActivity(intent)
requireActivity().finish()
}else{
showMessage(getString(R.string.check_internet_and_try_again))
}
} }
private fun navigate() { private fun navigate() {
navController.popBackStack() navController.popBackStack()
requireActivity().sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE)) requireActivity().sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
if(type == CONSTANTS.OFFLINE){ if (type == CONSTANTS.OFFLINE) {
navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE)) navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE))
} else if (type != CONSTANTS.TYPE_AFTER) { } else if (type != CONSTANTS.TYPE_AFTER) {
navController.navigate(R.id.homeFragment) navController.navigate(R.id.homeFragment)
......
...@@ -79,16 +79,23 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -79,16 +79,23 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
TabLayoutMediator(tabIndicator, slider) { _, _ -> }.attach() TabLayoutMediator(tabIndicator, slider) { _, _ -> }.attach()
jobAutoSlide = viewLifecycleOwner.lifecycleScope.launchWhenStarted { // lifecycleScope.launchWhenCreated {
while (isActive) { // repeat(10000000){
delay(4000) // delay(4000)
if (slider.currentItem != tabIndicator.tabCount - 1) { // if (slider.currentItem != tabIndicator.tabCount - 1) {
slider.currentItem = slider.currentItem + 1 // slider.currentItem = slider.currentItem + 1
} else { // } else {
slider.currentItem = 0 // slider.currentItem = 0
} // }
} // }
} // }
// jobAutoSlide = viewLifecycleOwner.lifecycleScope.launchWhenStarted {
// while (isActive) {
//
// }
// }
slider.offscreenPageLimit = 3 slider.offscreenPageLimit = 3
slider.getChildAt(0).overScrollMode = RecyclerView.OVER_SCROLL_NEVER slider.getChildAt(0).overScrollMode = RecyclerView.OVER_SCROLL_NEVER
...@@ -106,7 +113,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -106,7 +113,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
mainViewModel.openDrawer(System.currentTimeMillis()) mainViewModel.openDrawer(System.currentTimeMillis())
} }
val params0 = FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT) val params0 = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
val params = FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT) val params = FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
bounceScrollView.setOnOverScrollListener { fromStart, overScrolledDistance -> bounceScrollView.setOnOverScrollListener { fromStart, overScrolledDistance ->
......
package com.mobiuz.app.dev.ui.home package com.mobiuz.app.dev.ui.home
import android.graphics.Color
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ItemHomeBinding import com.mobiuz.app.databinding.ItemHomeBinding
class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() { class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() {
...@@ -17,14 +20,20 @@ class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() { ...@@ -17,14 +20,20 @@ class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() {
) )
} }
override fun onBindViewHolder(holder: SliderViewHolder, position: Int) = holder.onBind() override fun onBindViewHolder(holder: SliderViewHolder, position: Int) = holder.onBind(position)
override fun getItemCount(): Int = 4 override fun getItemCount(): Int = 4
inner class SliderViewHolder(val view: ItemHomeBinding) : RecyclerView.ViewHolder(view.root) { inner class SliderViewHolder(val view: ItemHomeBinding) : RecyclerView.ViewHolder(view.root) {
fun onBind() { fun onBind(position: Int) {
view.apply {
if(position % 2 != 0){
imageSlider.setBackgroundResource(R.drawable.image_slider2)
txtDescription.setTextColor(Color.WHITE)
txtDescription.text = itemView.context.getString(R.string.misic_all_with_you)
}
}
} }
} }
......
package com.mobiuz.app.dev.ui.service package com.mobiuz.app.dev.ui.service
import android.Manifest import android.Manifest
import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.telephony.PhoneStateListener
import android.telephony.TelephonyManager
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -15,7 +19,9 @@ import com.mobiuz.app.dev.model.UssdData ...@@ -15,7 +19,9 @@ import com.mobiuz.app.dev.model.UssdData
import com.mobiuz.app.dev.ui.global.ButtonClick import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.utils.extensions.getCurrentName import com.mobiuz.app.dev.utils.extensions.getCurrentName
import com.mobiuz.app.dev.utils.extensions.checkPermission import com.mobiuz.app.dev.utils.extensions.checkPermission
import com.mobiuz.app.dev.utils.extensions.customLog
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
...@@ -34,6 +40,7 @@ class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() { ...@@ -34,6 +40,7 @@ class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
pref.isOpenUssdBottomSheetDialog = true
setUpUI() setUpUI()
} }
...@@ -52,12 +59,18 @@ class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() { ...@@ -52,12 +59,18 @@ class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() {
pref.isShowPin = false pref.isShowPin = false
checkPermission(Manifest.permission.CALL_PHONE) { checkPermission(Manifest.permission.CALL_PHONE) {
try { try {
pref.blockedTime = System.currentTimeMillis()
pref.isShowPin = false pref.isShowPin = false
val ussd = data.code.replace("#", "") + Uri.encode("#") val ussd = data.code.replace("#", "") + Uri.encode("#")
startActivity(Intent(Intent.ACTION_CALL, Uri.parse("tel:$ussd"))) val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:$ussd"))
startActivityForResult(intent,1)
val manager = requireContext().getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
manager.listen(MyCallListener(pref),PhoneStateListener.LISTEN_CALL_STATE)
} catch (e: Exception) { } catch (e: Exception) {
pref.isShowPin = false pref.isShowPin = false
} }
pref.isOpenUssdBottomSheetDialog = false
dismiss() dismiss()
} }
} }
...@@ -65,9 +78,25 @@ class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() { ...@@ -65,9 +78,25 @@ class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() {
} }
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
pref.blockedTime = System.currentTimeMillis()
customLog("requestCode:$requestCode, resultCode:$resultCode, data:$data ")
}
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
_bn = null _bn = null
} }
} }
\ No newline at end of file
class MyCallListener(val pref: SharedPref): PhoneStateListener(){
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
super.onCallStateChanged(state, phoneNumber)
pref.isShowPin = false
pref.blockedTime = System.currentTimeMillis()
Log.e("AAA", "RINGING, number: ")
}
}
...@@ -17,6 +17,7 @@ import com.mobiuz.app.dev.utils.LocaleHelper ...@@ -17,6 +17,7 @@ import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.extensions.SingleBlock 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 me.everything.android.ui.overscroll.OverScrollDecoratorHelper
import uz.agr.mobiuz.AGRBilling
import javax.inject.Inject import javax.inject.Inject
...@@ -72,6 +73,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) { ...@@ -72,6 +73,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)
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)
......
...@@ -183,7 +183,9 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -183,7 +183,9 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
private fun loadError(){ private fun loadError(){
bn.apply { bn.apply {
if (count == 0){ if (count == 0){
showMessage( getString(R.string.popitok_error_password)) 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()))
} }
...@@ -206,7 +208,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -206,7 +208,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
showProgressDialog(false) showProgressDialog(false)
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
if(it.message == "Invalid password"){ 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){
......
...@@ -4,11 +4,13 @@ import android.annotation.TargetApi ...@@ -4,11 +4,13 @@ import android.annotation.TargetApi
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.global.CONSTANTS
import java.util.* import java.util.*
object LocaleHelper { object LocaleHelper {
fun setLocale(context: Context):Context { fun setLocale(context: Context):Context {
return language(context, SharedPref(context).language) val lang = SharedPref(context).language
return language(context,if (lang.isNotEmpty()) lang else CONSTANTS.RU )
} }
private fun language(context: Context, language: String):Context{ private fun language(context: Context, language: String):Context{
......
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="40dp"
android:height="45dp"
android:viewportWidth="50"
android:viewportHeight="55">
<path
android:pathData="M23.0276,0.0616C17.8956,0.3869 12.7318,1.9252 8.3149,4.4446C7.0558,5.1627 6.9921,5.2191 6.8822,5.7101C6.7806,6.1645 6.9581,6.6558 7.3149,6.9079C7.773,7.2313 8.2097,7.1279 9.5374,6.3819C13.0902,4.3855 17.1266,3.098 21.535,2.5549C23.1694,2.3534 27.34,2.3803 28.9447,2.6025C32.8488,3.143 35.5941,3.9625 38.9993,5.6043C40.7555,6.4511 40.7996,6.4657 41.2165,6.3398C41.8929,6.1355 42.2439,5.3782 41.9342,4.7918C41.7563,4.4549 41.6013,4.3487 40.3524,3.7073C35.0797,0.9994 28.8648,-0.3085 23.0276,0.0616ZM21.8549,7.0325C12.6033,7.9656 4.66,12.5571 0.5705,19.3358C-0.0386,20.3455 -0.0637,20.4207 0.0585,20.8674C0.2012,21.3879 0.5923,21.7219 1.0592,21.7219C1.592,21.7219 1.9278,21.466 2.3816,20.7141C4.0087,18.0179 6.1761,15.7778 9.0079,13.8657C18.2453,7.6286 31.7547,7.6286 40.9921,13.8657C43.8444,15.7917 45.9589,17.9774 47.6025,20.6989C48.1129,21.544 48.3791,21.7483 48.9492,21.7319C49.4082,21.7188 49.8022,21.3755 49.9415,20.8674C50.0637,20.4207 50.0386,20.3455 49.4295,19.3358C45.7273,13.1993 38.7668,8.7816 30.5463,7.351C27.8568,6.883 24.5409,6.7615 21.8549,7.0325ZM23.1343,13.8067C22.9583,13.8306 22.3347,13.9041 21.7483,13.9702C12.1414,15.0524 4.6268,21.6635 2.7761,30.6612C2.2112,33.4075 2.1426,36.6153 2.6009,38.853C3.0648,41.1183 4.4392,45.0647 4.9209,45.5147C5.6069,46.1557 6.769,45.6706 6.769,44.743C6.769,44.5452 6.583,43.911 6.3555,43.3334C5.7498,41.7953 5.112,39.7547 4.8347,38.4676C4.6305,37.5198 4.5923,37.0294 4.5964,35.4044C4.6015,33.3395 4.7015,32.4305 5.1254,30.5948C6.7587,23.521 12.1813,18.2817 19.5622,16.646C22.1053,16.0822 25.7942,15.9151 28.0404,16.2617C32.7602,16.99 36.4582,18.8291 39.6098,22.0158C42.7065,25.1468 44.5978,29.0493 45.2648,33.6847C45.3329,34.1576 45.3949,35.27 45.4026,36.1568C45.414,37.4759 45.3803,37.8765 45.2171,38.3602C44.3147,41.035 41.6345,42.7581 39.0293,42.3385C37.5868,42.1062 36.6046,41.5762 35.6109,40.4942C34.5627,39.3529 34.2295,38.4298 34.0646,36.2105C33.8722,33.6197 33.1666,31.8191 31.7383,30.274C28.7263,27.0156 22.9966,26.5757 19.312,29.3198C18.062,30.2508 17.0085,31.7358 16.462,33.3376C16.0147,34.6485 15.9029,35.5925 15.9687,37.5003C16.0648,40.2785 16.5949,42.3496 17.8569,44.8764C19.3191,47.804 21.5009,50.3311 24.5194,52.5928C25.906,53.632 28.019,54.914 28.4651,54.987C29.1004,55.0909 29.691,54.5581 29.691,53.8809C29.691,53.3354 29.409,53.0421 28.1591,52.2881C21.8259,48.4673 18.4911,43.4748 18.2091,37.3923C18.0586,34.1435 19.233,31.8035 21.6008,30.6348C22.8534,30.0165 23.5481,29.8577 25,29.8577C26.4519,29.8577 27.1466,30.0165 28.3992,30.6348C29.9611,31.4057 31.1058,32.8416 31.5589,34.5983C31.658,34.9825 31.777,35.9015 31.8233,36.6404C31.8696,37.3794 31.988,38.2984 32.0864,38.6826C32.7874,41.4203 35.0268,43.6825 37.7937,44.4477C38.8486,44.7394 40.7943,44.7159 41.8935,44.3981C44.5474,43.6305 46.5463,41.6586 47.4147,38.9513C47.6875,38.1009 47.7792,35.8021 47.6075,34.1222C46.5311,23.5971 38.9789,15.598 28.6249,14.0167C27.5692,13.8554 23.8296,13.7125 23.1343,13.8067ZM23.1343,20.7436C16.492,21.4402 11.2331,26.0263 9.5885,32.5561C9.1304,34.3756 8.9803,37.167 9.2218,39.3812C9.6948,43.7205 11.3428,47.777 14.1559,51.5267C15.1842,52.8975 16.8981,54.8105 17.2024,54.9271C18.1166,55.2775 19.0417,54.239 18.5862,53.3737C18.5182,53.2446 18.0466,52.6553 17.5383,52.0641C15.0164,49.1315 13.4043,46.4179 12.4303,43.4656C11.8228,41.6242 11.5782,40.2988 11.4381,38.0914C11.3329,36.4336 11.3398,35.9645 11.4866,34.8132C12.342,28.1043 17.1442,23.498 23.8056,22.9967C28.239,22.6631 32.3669,23.9539 35.0263,26.5053C37.1523,28.5449 38.2495,30.9187 38.5438,34.1146C38.7206,36.035 38.727,36.0616 39.0849,36.3653C39.556,36.765 40.1272,36.7434 40.5574,36.3097C40.8726,35.992 40.8855,35.9429 40.8855,35.0606C40.8855,32.3798 40.0222,29.4549 38.5601,27.182C37.8308,26.0482 36.0193,24.2039 34.8679,23.4227C33.4087,22.4328 31.3312,21.5487 29.4245,21.1063C27.637,20.6915 25.0523,20.5425 23.1343,20.7436ZM24.5202,34.5359C24.0081,34.7669 23.8907,35.0713 23.916,36.103C24.0788,42.7733 30.0729,49.2766 37.687,51.0438C39.5435,51.4747 41.8005,51.6829 42.4118,51.4795C43.0794,51.2574 43.3654,50.4088 42.9751,49.8083C42.7094,49.3995 42.4965,49.3354 41.0299,49.2219C38.5454,49.0297 36.7513,48.562 34.6486,47.5586C31.9866,46.2882 29.7736,44.4047 28.2544,42.1165C26.9999,40.2269 26.3692,38.433 26.1776,36.208C26.0767,35.0367 25.9143,34.6784 25.4035,34.4989C24.9926,34.3544 24.9156,34.3576 24.5202,34.5359Z"
android:fillColor="#969A97"
android:fillType="evenOdd"/>
</vector>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp" android:layout_marginHorizontal="16dp"
android:layout_marginBottom="30dp" android:layout_marginVertical="30dp"
android:text="@string/to_offline" android:text="@string/to_offline"
android:visibility="gone" /> android:visibility="gone" />
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
android:layout_gravity="start" android:layout_gravity="start"
android:layout_marginStart="@dimen/_12sdp" android:layout_marginStart="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_12sdp" android:layout_marginBottom="@dimen/_12sdp"
android:text="@string/choose_lang" android:text="Tilni tanlang"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" /> android:textStyle="bold" />
......
This diff is collapsed.
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="center" android:gravity="center"
android:text="Сохраненные\nкарты" android:text="@string/save_cards"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="14sp" /> android:textSize="14sp" />
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="center" android:gravity="center"
android:text="История\nпополнений" android:text="@string/history_pay"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="14sp" /> android:textSize="14sp" />
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="center" android:gravity="center"
android:text="Пополнить\nбаланс" android:text="@string/pay_balance"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="14sp" /> android:textSize="14sp" />
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="@dimen/_5sdp" android:layout_marginTop="@dimen/_5sdp"
android:letterSpacing="0.05" android:letterSpacing="0.05"
android:text="Powered by" android:text="@string/powered_by"
android:textColor="@color/grey80" android:textColor="@color/grey80"
android:textSize="12sp" android:textSize="12sp"
android:textStyle="bold" /> android:textStyle="bold" />
......
This diff is collapsed.
...@@ -7,6 +7,11 @@ ...@@ -7,6 +7,11 @@
android:background="@color/white" android:background="@color/white"
android:fitsSystemWindows="false" android:fitsSystemWindows="false"
android:orientation="vertical"> android:orientation="vertical">
<View
android:layout_width="match_parent"
android:id="@+id/top_div"
android:visibility="gone"
android:layout_height="24dp"/>
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
......
...@@ -166,13 +166,15 @@ ...@@ -166,13 +166,15 @@
<ImageView <ImageView
android:id="@+id/btn_finger_print" android:id="@+id/btn_finger_print"
android:layout_width="56dp" android:visibility="invisible"
android:layout_height="56dp" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless" android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/remove" android:contentDescription="@string/remove"
android:src="@drawable/ic_finger_print" android:src="@drawable/ic_finger_print"
app:layout_constraintBottom_toBottomOf="@id/btn_0" app:layout_constraintBottom_toBottomOf="@id/btn_0"
app:layout_constraintStart_toStartOf="@id/btn_7" app:layout_constraintStart_toStartOf="@id/btn_7"
app:layout_constraintEnd_toEndOf="@id/btn_7"
app:layout_constraintTop_toTopOf="@id/btn_0" /> app:layout_constraintTop_toTopOf="@id/btn_0" />
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
android:textColor="@color/white100" android:textColor="@color/white100"
android:paddingHorizontal="18dp" android:paddingHorizontal="18dp"
android:paddingVertical="10dp" android:paddingVertical="10dp"
android:text="+998 97 999-99-99" tools:text="+998 97 999-99-99"
android:textSize="15sp" /> android:textSize="15sp" />
<View <View
...@@ -100,14 +100,14 @@ ...@@ -100,14 +100,14 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Дата рождения " android:text="@string/birthday"
android:textColor="@color/grey110" android:textColor="@color/grey110"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="31.12.1999" tools:text="31.12.1999"
android:id="@+id/txt_birthday" android:id="@+id/txt_birthday"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="15sp" android:textSize="15sp"
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
android:inputType="numberPassword" android:inputType="numberPassword"
android:maxLength="7" android:maxLength="7"
android:paddingVertical="@dimen/_12sdp" android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp" android:paddingHorizontal="@dimen/_12sdp"
android:textSize="@dimen/_12sdp" /> android:textSize="@dimen/_12sdp" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
android:inputType="numberPassword" android:inputType="numberPassword"
android:maxLength="7" android:maxLength="7"
android:paddingVertical="@dimen/_12sdp" android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp" android:paddingHorizontal="@dimen/_12sdp"
android:textSize="@dimen/_12sdp" /> android:textSize="@dimen/_12sdp" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
android:id="@+id/txt_helper_mobiuz" android:id="@+id/txt_helper_mobiuz"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/_10sdp" android:layout_marginHorizontal="@dimen/_16sdp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:textSize="14sp" android:textSize="14sp"
android:textColorLink="@color/primary100" android:textColorLink="@color/primary100"
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Биометрия" android:text="@string/biometria"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Использовать для входа в приложение" android:text="@string/for_enter_app"
android:textColor="@color/grey110" android:textColor="@color/grey110"
android:textSize="15sp" /> android:textSize="15sp" />
</LinearLayout> </LinearLayout>
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Сменить PIN" android:text="@string/change_pin"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Изменение PIN для входа в приложение" android:text="@string/change_pin_code"
android:textColor="@color/grey110" android:textColor="@color/grey110"
android:textSize="15sp" /> android:textSize="15sp" />
</LinearLayout> </LinearLayout>
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="Сменить пароль" android:text="@string/change_passoword"
android:textColor="@color/black100" android:textColor="@color/black100"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
......
...@@ -11,8 +11,9 @@ ...@@ -11,8 +11,9 @@
android:paddingVertical="@dimen/_16sdp" android:paddingVertical="@dimen/_16sdp"
android:layout_height="180dp" android:layout_height="180dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:id="@+id/image_slider"
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:background="@drawable/banner" android:background="@drawable/image_slider1"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
...@@ -28,6 +29,7 @@ ...@@ -28,6 +29,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="13dp" android:layout_marginTop="13dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:id="@+id/txt_description"
android:maxWidth="@dimen/_120sdp" android:maxWidth="@dimen/_120sdp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dui, risus" android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dui, risus"
android:textColor="@color/black80" android:textColor="@color/black80"
...@@ -50,7 +52,7 @@ ...@@ -50,7 +52,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:text="Узнать больше" android:text="@string/more_know"
android:textColor="@color/primary100" android:textColor="@color/primary100"
android:textSize="12sp" android:textSize="12sp"
android:textStyle="bold" /> android:textStyle="bold" />
......
...@@ -11,12 +11,13 @@ ...@@ -11,12 +11,13 @@
android:layout_width="84dp" android:layout_width="84dp"
android:layout_height="84dp" android:layout_height="84dp"
android:text="Ю" android:text="Ю"
android:layout_marginTop="24dp"
android:id="@+id/txt_avatar" android:id="@+id/txt_avatar"
android:gravity="center" android:gravity="center"
android:textSize="24sp" android:textSize="24sp"
android:layout_gravity="start" android:layout_gravity="start"
android:background="@drawable/bgn_avatar" android:background="@drawable/bgn_avatar"
android:layout_marginTop="20dp" /> />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:id="@+id/txt_user_name" android:id="@+id/txt_user_name"
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:id="@+id/btn_ok" android:id="@+id/btn_ok"
android:textSize="14sp" android:textSize="16sp"
android:layout_margin="24dp" android:layout_margin="24dp"
android:textStyle="bold" android:textStyle="bold"
android:elevation="2dp" android:elevation="2dp"
......
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
<item <item
android:id="@+id/nav_graph_home" android:id="@+id/nav_graph_home"
android:icon="@drawable/ic_vector" android:icon="@drawable/ic_vector"
android:title="My MOBI" /> android:title="@string/my_mobi" />
<item <item
android:id="@+id/nav_graph_profile" android:id="@+id/nav_graph_profile"
android:icon="@drawable/ic_vector_service" android:icon="@drawable/ic_vector_service"
android:title="Услуги" /> android:title="@string/services" />
</menu> </menu>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="login">Login</string> <string name="login">Авторизоваться</string>
<string name="phone_number">Phone Number</string> <string name="phone_number">Телефонный номер</string>
<string name="ex304">Не исправимая ошибка</string> <string name="ex304">Не исправимая ошибка</string>
<string name="ex400">неверный запрос</string> <string name="ex400">неверный запрос</string>
<string name="ex401">Пользователь не зарегистрирован</string> <string name="ex401">Пользователь не зарегистрирован</string>
...@@ -19,16 +19,16 @@ ...@@ -19,16 +19,16 @@
<string name="jsonsyntaxexception">Ma\'lumot olishda xatolik</string> <string name="jsonsyntaxexception">Ma\'lumot olishda xatolik</string>
<string name="connect_exception">Internet yo\'q</string> <string name="connect_exception">Internet yo\'q</string>
<string name="ex_nothing">Неизвестная ошибка</string> <string name="ex_nothing">Неизвестная ошибка</string>
<string name="register">Registration</string> <string name="register">Регистрация</string>
<string name="password">Password</string> <string name="password">Пароль</string>
<string name="choose_lang">Tilni tanlang</string> <string name="choose_lang">Выберите язык</string>
<string name="back">Back</string> <string name="back">Назад</string>
<string name="enter_number">Введите номер</string> <string name="enter_number">Введите номер</string>
<string name="continuoue">Далее</string> <string name="continuoue">Далее</string>
<string name="phone">Телефон:</string> <string name="phone">Телефон:</string>
<string name="think_password">Придумайте пароль</string> <string name="think_password">Придумайте пароль</string>
<string name="enter">Войти</string> <string name="enter">Войти</string>
<string name="enter_verification">Ведите код \nподтверждения</string> <string name="enter_verification">Ведите код подтверждения</string>
<string name="sent_code_again">Отправить код заново</string> <string name="sent_code_again">Отправить код заново</string>
<string name="install_pin">Установите PIN-код</string> <string name="install_pin">Установите PIN-код</string>
<string name="confirm_pin">Повторите этот PIN-код</string> <string name="confirm_pin">Повторите этот PIN-код</string>
...@@ -47,22 +47,22 @@ ...@@ -47,22 +47,22 @@
<string name="next_spisanie">Следующее списание:</string> <string name="next_spisanie">Следующее списание:</string>
<string name="forget_password">Забыли пароль?</string> <string name="forget_password">Забыли пароль?</string>
<string name="pin_not_same">Значения не совпадают</string> <string name="pin_not_same">Значения не совпадают</string>
<string name="remove">remove</string> <string name="remove">Удалять</string>
<string name="password_same">Пароли совпали</string> <string name="password_same">Пароли совпали</string>
<string name="password_not_same">Пароли не совпали</string> <string name="password_not_same">Пароли не совпали</string>
<string name="enter_pin_code">Введите PIN-код</string> <string name="enter_pin_code">Введите PIN-код</string>
<string name="exit">Exit</string> <string name="exit">Выход</string>
<string name="are_you_sure">Do you want to exit?</string> <string name="are_you_sure">Вы хотите выйти?</string>
<string name="no">No</string> <string name="no">Нет</string>
<string name="yes">Yes</string> <string name="yes">Да</string>
<string name="successfully">Successfully</string> <string name="successfully">Успешно</string>
<string name="ok">Ok</string> <string name="ok">Ok</string>
<string name="helper_mobiuz">Для входа вы можете использовать пароль от интернет-помощника www.mobi.uz</string> <string name="helper_mobiuz">Для входа вы можете использовать пароль от интернет-помощника www.mobi.uz</string>
<string name="error_data">Error</string> <string name="error_data">Ошибка</string>
<string name="password_successfully_updated">Password successfully updated</string> <string name="password_successfully_updated">Пароль успешно обновлен</string>
<string name="enter_from_finger_or_face">Вход в приложение по отпечатку пальца или лицу</string> <string name="enter_from_finger_or_face">Вход в приложение по отпечатку пальца или лицу</string>
<string name="cancel">Cancel</string> <string name="cancel">Отмена</string>
<string name="my_tarif">My tarif</string> <string name="my_tarif">Мы тариф</string>
<string name="bezopasnost">Безопасность</string> <string name="bezopasnost">Безопасность</string>
<string name="language_app">Язык приложени</string> <string name="language_app">Язык приложени</string>
<string name="support">Служба поддержки</string> <string name="support">Служба поддержки</string>
...@@ -82,23 +82,22 @@ ...@@ -82,23 +82,22 @@
<string name="cannot_change_pin">Вы не можете изменить новый пин-код на текущий пин-код</string> <string name="cannot_change_pin">Вы не можете изменить новый пин-код на текущий пин-код</string>
<string name="cannot_change_password">Вы не можете изменить новый пароль на текущий пароль</string> <string name="cannot_change_password">Вы не можете изменить новый пароль на текущий пароль</string>
<string name="password_updated">Пароль успешно обновлен</string> <string name="password_updated">Пароль успешно обновлен</string>
<string name="by_signing_up_you_re_agree_to_our_nterms_of_use_and_privacy_policy">By signing up, you\'re agree to our \nTerms of Use and Privacy Policy</string>
<string name="not_internet">Нет интернет соединения</string> <string name="not_internet">Нет интернет соединения</string>
<string name="settings_safety">Настройки безопасности действуют только для основного номера +998 97 999-99-99</string> <string name="settings_safety">Настройки безопасности действуют только для основного номера +998 97 999-99-99</string>
<string name="popitok_error_password">"Замена пароля невозможна "</string> <string name="popitok_error_password">"Замена пароля невозможен \nВы ввели неправильный пароль 3 раза"</string>
<string name="close_process">Закрыть</string> <string name="close_process">Закрыть</string>
<string name="login_register">Авторизация/Регистрация</string> <string name="login_register">Авторизация/Регистрация</string>
<string name="impossible_change_password">Замена пароля невозможна</string> <string name="impossible_change_password">Замена пароля невозможна</string>
<string name="wrong_password">Неверный Пароль</string> <string name="wrong_password">Неверный Пароль</string>
<string name="your_opinion_matters">Ваше мнение имеет значение</string> <string name="your_opinion_matters">Ваше мнение имеет значение</string>
<string name="send_an_appeal">Отправить обращение</string> <string name="send_an_appeal">Отправить обращение</string>
<string name="email">Email</string> <string name="email">Электронное письмо</string>
<string name="telegram_bot">Телеграм бот</string> <string name="telegram_bot">Телеграм бот</string>
<string name="contact_us">Связь с нами</string> <string name="contact_us">Связь с нами</string>
<string name="all_nomer">Со всех номеров</string> <string name="all_nomer">Со всех номеров</string>
<string name="for_abonent">Для абонентов</string> <string name="for_abonent">Для абонентов</string>
<string name="pin_code_updated">Пин-код успешно обновлен</string> <string name="pin_code_updated">Пин-код успешно обновлен</string>
<string name="popitok_error">"Смена ПИН кода невозможна \nВы ввели неправильный PIN код 3 раза"</string> <string name="popitok_error">"Смена ПИН кода невозможен \nВы ввели неправильный PIN 3 раза"</string>
<string name="popitok">Неверный PIN-код \nОсталось %1$s попытки</string> <string name="popitok">Неверный PIN-код \nОсталось %1$s попытки</string>
<string name="popitok_password">Неверный Пароль \nОсталось %1$s попытки</string> <string name="popitok_password">Неверный Пароль \nОсталось %1$s попытки</string>
<string name="confirm_new_pin">Подтвердите PIN-код</string> <string name="confirm_new_pin">Подтвердите PIN-код</string>
...@@ -124,5 +123,22 @@ ...@@ -124,5 +123,22 @@
<string name="oferta_finans"><u>Оферта на предоставление финансовых услуг</u></string> <string name="oferta_finans"><u>Оферта на предоставление финансовых услуг</u></string>
<string name="open_with_password">Войти по паролю</string> <string name="open_with_password">Войти по паролю</string>
<string name="sum_month">%1$s Сум/мес</string> <string name="sum_month">%1$s Сум/мес</string>
<string name="misic_all_with_you">Музыка всегда с тобой</string>
<string name="my_mobi">Мой MOBI</string>
<string name="vvesti_pin">Ввести PIN - код</string>
<string name="pin_code_error3">Вход невозможен \nВы ввели неправильный PIN 3 раза</string>
<string name="change_passoword">Сменить пароль</string>
<string name="change_pin_code">Изменение PIN для входа в приложение</string>
<string name="change_pin">Сменить PIN</string>
<string name="biometria">Биометрия</string>
<string name="for_enter_app">Использовать для входа в приложение</string>
<string name="birthday">Дата рождения</string>
<string name="save_cards">Сохраненные\nкарты</string>
<string name="history_pay">История\nпополнений</string>
<string name="pay_balance">Пополнить\nбаланс</string>
<string name="powered_by">Питаться от</string>
<string name="more_know">Узнать больше</string>
<string name="check_internet_and_try_again">Проверьте подключение к Интернету и попробуйте еще раз</string>
</resources> </resources>
\ No newline at end of file
This diff is collapsed.
...@@ -14,10 +14,10 @@ ...@@ -14,10 +14,10 @@
<string name="ex408">Тайм-аут запроса</string> <string name="ex408">Тайм-аут запроса</string>
<string name="ex409">Конфликт</string> <string name="ex409">Конфликт</string>
<string name="ex413">Тайм-аут запроса</string> <string name="ex413">Тайм-аут запроса</string>
<string name="ex422">Необработанный</string> <string name="ex422" translatable="false">Необработанный</string>
<string name="ex429">Необработанный</string> <string name="ex429">Необработанный</string>
<string name="ex500">Ошибка сервера</string> <string name="ex500">Ошибка сервера</string>
<string name="ex502">Неверный шлюз</string> <string name="ex502" translatable="false">Неверный шлюз</string>
<string name="exelse">Непредвиденная ошибка, повторите попытку позже</string> <string name="exelse">Непредвиденная ошибка, повторите попытку позже</string>
<string name="ioexception">Ошибка сетевого подключения</string> <string name="ioexception">Ошибка сетевого подключения</string>
<string name="jsonsyntaxexception">Ma\'lumot olishda xatolik</string> <string name="jsonsyntaxexception">Ma\'lumot olishda xatolik</string>
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<string name="choose_lang">Tilni tanlang</string> <string name="choose_lang">Tilni tanlang</string>
<string name="uzbek" translatable="false">O\'zbek</string> <string name="uzbek" translatable="false">O\'zbek</string>
<string name="english" translatable="false">English</string> <string name="english" translatable="false">English</string>
<string name="russian" translatable="false">Russian</string> <string name="russian" translatable="false">Русский</string>
<string name="back">Back</string> <string name="back">Back</string>
<string name="enter_number">Введите номер</string> <string name="enter_number">Введите номер</string>
<string name="continuoue">Далее</string> <string name="continuoue">Далее</string>
...@@ -110,6 +110,7 @@ ...@@ -110,6 +110,7 @@
<string name="popitok">Неверный PIN-код \nОсталось %1$s попытки</string> <string name="popitok">Неверный PIN-код \nОсталось %1$s попытки</string>
<string name="popitok_password">Неверный Пароль \nОсталось %1$s попытки</string> <string name="popitok_password">Неверный Пароль \nОсталось %1$s попытки</string>
<string name="popitok_error">Смена ПИН кода невозможна \nВы ввели неправильный PIN код 3 раза</string> <string name="popitok_error">Смена ПИН кода невозможна \nВы ввели неправильный PIN код 3 раза</string>
<string name="pin_code_error3">Вход невозможен \nВы ввели неправильный PIN 3 раза</string>
<string name="pin_code_updated">Пин-код успешно обновлен</string> <string name="pin_code_updated">Пин-код успешно обновлен</string>
<string name="for_abonent">Для абонентов</string> <string name="for_abonent">Для абонентов</string>
<string name="all_nomer">Со всех номеров</string> <string name="all_nomer">Со всех номеров</string>
...@@ -140,11 +141,27 @@ ...@@ -140,11 +141,27 @@
<string name="not_internet_connect">Отсутствует активное подключение</string> <string name="not_internet_connect">Отсутствует активное подключение</string>
<string name="yes_internet_connect">Интернет соединение восстановлено</string> <string name="yes_internet_connect">Интернет соединение восстановлено</string>
<string name="oferta_finans"><u>Оферта на предоставление финансовых услуг</u></string> <string name="oferta_finans"><u>Оферта на предоставление финансовых услуг</u></string>
<string name="by_signing_up_you_re_agree_to_our_nterms_of_use_and_privacy_policy">By signing up, you\'re agree to our \nTerms of Use and Privacy Policy</string> <string name="by_signing_up_you_re_agree_to_our_nterms_of_use_and_privacy_policy" translatable="false">By signing up, you\'re agree to our \nTerms of Use and Privacy
Policy</string>
<string name="btn_try_again">Попробуй снова</string> <string name="btn_try_again">Попробуй снова</string>
<string name="cannot_change_pin">You cannot change new pin to current pin</string> <string name="cannot_change_pin">You cannot change new pin to current pin</string>
<string name="cannot_change_password">You cannot change new password to current password</string> <string name="cannot_change_password">You cannot change new password to current password</string>
<string name="open_with_password">Войти по паролю</string> <string name="open_with_password">Войти по паролю</string>
<string name="sum_month">%1$s Сум/мес</string> <string name="sum_month">%1$s Сум/мес</string>
<string name="misic_all_with_you">Musiqa har doim sen bilan</string>
<string name="my_mobi">My MOBI</string>
<string name="vvesti_pin">Ввести PIN - код</string>
<string name="change_passoword">Сменить пароль</string>
<string name="change_pin_code">Изменение PIN для входа в приложение</string>
<string name="change_pin">Сменить PIN</string>
<string name="biometria">Биометрия</string>
<string name="for_enter_app">Использовать для входа в приложение</string>
<string name="birthday">Дата рождения</string>
<string name="save_cards">Сохраненные\nкарты</string>
<string name="history_pay">История\nпополнений</string>
<string name="pay_balance">Пополнить\nбаланс</string>
<string name="powered_by">Powered by</string>
<string name="more_know">Узнать больше</string>
<string name="check_internet_and_try_again">Internet ulanishini tekshirib qayta urinib ko\'ring</string>
</resources> </resources>
\ No newline at end of file
...@@ -70,14 +70,6 @@ ...@@ -70,14 +70,6 @@
</style> </style>
<style name="DialogThemeLight" parent="Theme.AppCompat.Light.Dialog.MinWidth">
<item name="colorAccent">@color/chuck_colorAccent</item>
<item name="android:colorAccent">@color/chuck_colorAccent</item>
<item name="android:background">@color/chuck_colorPrimary</item>
<item name="android:textColorPrimary">@color/chuck_colorPrimary</item>
<item name="android:textColorSecondary">@color/chuck_colorPrimary</item>
</style>
<style name="BtnStyle"> <style name="BtnStyle">
<item name="android:layout_height">@dimen/_48sdp</item> <item name="android:layout_height">@dimen/_48sdp</item>
<item name="android:layout_width">@dimen/_48sdp</item> <item name="android:layout_width">@dimen/_48sdp</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