Commit f9d9b438 authored by shohboz's avatar shohboz

[UPD] MUS-230 Feature, updated offline rejim and refactoring screens classes

parent 785858b0
......@@ -42,7 +42,7 @@ class LanguageActivity : AppCompatActivity() {
private fun setLangAndNavigate(lang: String) {
pref.language = lang
startActivity(Intent(this@LanguageActivity, AuthActivity::class.java))
startActivity(Intent(this, AuthActivity::class.java))
}
override fun onDestroy() {
......
......@@ -8,6 +8,7 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.annotation.IdRes
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.GravityCompat
......@@ -20,6 +21,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.firebase.FirebaseApp
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.messaging.FirebaseMessaging
import com.mobiuz.app.BuildConfig
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityMainBinding
import com.mobiuz.app.dev.model.SharedPref
......@@ -50,6 +52,7 @@ class MainActivity : AppCompatActivity() {
private var currentNavController: LiveData<NavController>? = null
private val viewModel: MainViewModel by viewModels()
private lateinit var receiver: BroadcastReceiver
// if offline type == 0
private var type = 0
......@@ -66,7 +69,7 @@ class MainActivity : AppCompatActivity() {
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
FirebaseMessaging.getInstance().token.addOnCompleteListener {
if (it.isSuccessful) pref.setDeviceToken(it.result.toString())
if (it.isSuccessful) pref.deviceToken = it.result.toString()
}
if (savedInstanceState == null) {
setupBottomNavigationBar()
......@@ -75,18 +78,17 @@ class MainActivity : AppCompatActivity() {
setUpUI()
collects()
receiver = object : BroadcastReceiver(){
receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
type = NetworkUtil.getConnectivityStatus(this@MainActivity)
type = NetworkUtil.getConnectivityStatus(this@MainActivity)
bn.btnTryAgain.isVisible = type == 0
if(type == 0){
if (type == 0) {
showMessage(getString(R.string.not_internet_connect))
}
}
}
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
registerReceiver(receiver,intentFilter)
registerReceiver(receiver, intentFilter)
}
......@@ -96,10 +98,12 @@ class MainActivity : AppCompatActivity() {
bn.apply {
bn.btnTryAgain.setOnClickListener {
if (type == 0){
navigate()
if (type == 0) {
navigate()
}
}
txtVersion.text = "v ${BuildConfig.VERSION_NAME}"
header.txtUserPhone.text = pref.userPhone.customMasketHome()
customLog("lang:${pref.language}")
when (pref.language) {
......@@ -147,16 +151,16 @@ class MainActivity : AppCompatActivity() {
}
})
txtRedactData.setOnClickListener {
navigateUri("https://www.mobi.uz/")
navigateUri(CONSTANTS.MAIN_URL1)
}
txtPublicOferta.setOnClickListener {
navigateUri("https://www.mobi.uz/")
navigateUri(CONSTANTS.MAIN_URL2)
}
}
}
fun navigate(){
fun navigate() {
val intent = Intent(this, OfflineActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
......@@ -206,7 +210,8 @@ class MainActivity : AppCompatActivity() {
}
}
private fun navigateToSettingsScreen(resId: Int) {
private fun navigateToSettingsScreen(@IdRes resId: Int) {
val window = window.decorView
window.systemUiVisibility = window.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
currentNavController?.value?.navigate(resId)
......@@ -294,6 +299,7 @@ class MainActivity : AppCompatActivity() {
override fun onDestroy() {
_bn = null
unregisterReceiver(receiver)
pref.blockedTime = 0
super.onDestroy()
}
}
\ No newline at end of file
......@@ -30,9 +30,8 @@ class MainViewModel @Inject constructor(
private val _mainIndexUiState = MutableStateFlow<UiStateObject<Long>>(UiStateObject.EMPTY)
val mainIndexUiState: StateFlow<UiStateObject<Long>> = _mainIndexUiState
fun mainIndex(status: Long) = viewModelScope.launch {
_mainIndexUiState.value = UiStateObject.SUCCESS(status)
// _mainIndexUiState.value = repository.mainIndex()
fun openDrawer(time: Long) = viewModelScope.launch {
_mainIndexUiState.value = UiStateObject.SUCCESS(time)
}
private val _servicesUiState = MutableStateFlow<UiStateObject<String>>(UiStateObject.EMPTY)
......
......@@ -59,8 +59,6 @@ class OfflineActivity : AppCompatActivity() {
bn.btnTryAgain.isVisible = type != 0
if(type != 0){
showMessage(getString(R.string.yes_internet_connect))
}else{
showMessage(getString(R.string.not_internet_connect))
}
}
}
......@@ -76,7 +74,6 @@ class OfflineActivity : AppCompatActivity() {
}
override fun onResume() {
super.onResume()
customLog("onResume: pref.isShowPin:${pref.isShowPin}")
if (pref.isShowPin && pref.pinCode.isNotEmpty()) {
showPinCode()
} else {
......@@ -127,6 +124,7 @@ class OfflineActivity : AppCompatActivity() {
override fun onDestroy() {
unregisterReceiver(receiver)
_bn = null
pref.blockedTime = 0
super.onDestroy()
}
}
\ No newline at end of file
......@@ -9,9 +9,9 @@ import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.GravityCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivitySplashBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.model.UiStateObject
......@@ -32,42 +32,41 @@ class SplashActivity : AppCompatActivity() {
private var _bn: ActivitySplashBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val viewModel: MainViewModel by viewModels()
@Inject
lateinit var pref: SharedPref
private lateinit var receiver: BroadcastReceiver
private var isTypeOffline = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivitySplashBinding.inflate(layoutInflater)
setContentView(bn.root)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
receiver = object : BroadcastReceiver(){
receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val type = NetworkUtil.getConnectivityStatus(this@SplashActivity)
isTypeOffline = if (type == 0){
true
}else{
viewModel.services()
false
if (type == 0) {
showMessage(getString(R.string.not_internet_connect))
if (pref.services.isNotEmpty()) {
lifecycleScope.launchWhenCreated {
delay(1500)
startActivity(Intent(this@SplashActivity, OfflineActivity::class.java))
finish()
}
}else {
bn.btnTryAgain.isVisible = true
}
} else {
viewModel.services()
}
}
}
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
registerReceiver(receiver,intentFilter)
registerReceiver(receiver, intentFilter)
lifecycleScope.launchWhenCreated {
delay(1000)
if (isTypeOffline && pref.services.isNotEmpty()){
startActivity(Intent(this@SplashActivity, OfflineActivity::class.java))
finish()
}else{
bn.btnTryAgain.isVisible = true
}
}
bn.btnTryAgain.setOnClickListener(object : ButtonClick(){
bn.btnTryAgain.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
viewModel.services()
}
......@@ -76,14 +75,17 @@ class SplashActivity : AppCompatActivity() {
viewModel.servicesUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
bn.progress.isVisible = false
bn.btnTryAgain.isVisible = false
navigate()
}
is UiStateObject.ERROR -> {
bn.progress.isVisible = false
bn.btnTryAgain.isVisible = true
showMessage(it.message)
}
is UiStateObject.LOADING -> {
bn.progress.isVisible = true
bn.btnTryAgain.isVisible = false
}
else -> Unit
......@@ -93,7 +95,7 @@ class SplashActivity : AppCompatActivity() {
}
fun navigate(){
fun navigate() {
when {
pref.language.isEmpty() -> {
startActivity(Intent(this@SplashActivity, LanguageActivity::class.java))
......
package com.mobiuz.app.dev.app
import android.app.Application
import android.content.Context
import android.content.res.Configuration
import com.mobiuz.app.dev.utils.LocaleHelper
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
class App : Application()
\ No newline at end of file
class App : Application(){
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(LocaleHelper.setLocale(base!!))
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
LocaleHelper.setLocale(this)
}
}
\ No newline at end of file
......@@ -52,9 +52,9 @@ class ServerModule {
val builder = chain.request().newBuilder()
builder.header("Content-Type", "application/x-www-form-urlencoded")
builder.header("Lang", sharedPref.language)
builder.header("device-id", sharedPref.getDeviceToken() ?: Utils.getDeviceName())
builder.header("device-id", sharedPref.deviceToken ?: Utils.getDeviceName())
builder.header("Accept", "application/json")
builder.header("Authorization", "Bearer ${sharedPref.getUserToken()}")
builder.header("Authorization", "Bearer ${sharedPref.userToken}")
chain.proceed(builder.build())
})
.build()
......
......@@ -14,21 +14,17 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
isRegistered = false
userName = ""
}
fun setDeviceToken(token: String) {
mySharedPref.edit().putString("device_token", token).apply()
}
fun getDeviceToken(): String? {
return mySharedPref.getString("device_token", null)
}
fun setUserToken(token: String?) {
mySharedPref.edit().putString("user_token", token).apply()
}
var deviceToken: String?
get() = mySharedPref.getString(::deviceToken.name, null)
set(value) {
mySharedPref.edit().putString(::deviceToken.name, value).apply()
}
fun getUserToken(): String? {
return mySharedPref.getString("user_token", null)
}
var userToken: String?
get() = mySharedPref.getString(::userToken.name, null)
set(value) {
mySharedPref.edit().putString(::userToken.name, value).apply()
}
var language: String
get() = mySharedPref.getString(::language.name, "") ?: ""
......
......@@ -3,69 +3,70 @@ package com.mobiuz.app.dev.network.api
import com.mobiuz.app.dev.model.ServiceData
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.*
import com.mobiuz.app.dev.ui.global.CONSTANTS
import retrofit2.http.Body
import retrofit2.http.POST
interface ApiService {
@POST("customer/login")
@POST(CONSTANTS.API_LOGIN)
suspend fun login(
@Body req: UserAuth
): ResponseObject<String>
@POST("customer/register")
@POST(CONSTANTS.API_REGISTER)
suspend fun register(
@Body req: UserAuth
): ResponseObject<String>
@POST("customer/check-phone")
@POST(CONSTANTS.API_CHECK_PHONE)
suspend fun checkPhone(
@Body req: UserAuth
): ResponseObject<Action>
@POST("customer/check-sms-code")
@POST(CONSTANTS.API_CHECK_SMS_CODE)
suspend fun checkSMSCode(
@Body req: UserAuth
): ResponseObject<GenerateToken>
@POST("main/index")
@POST(CONSTANTS.API_MAIN_INDEX)
suspend fun mainIndex(): ResponseObject<Customer>
@POST("customer/forget-password")
@POST(CONSTANTS.API_FORGET_PASSWORD)
suspend fun forgetPassword(
@Body req: UserAuth
): ResponseObject<String>
@POST("customer/check-reset-code")
@POST(CONSTANTS.API_CHECK_RESET_CODE)
suspend fun checkResetCode(
@Body req: UserAuth
): Response
@POST("customer/reset-password")
@POST(CONSTANTS.API_RESET_PASSWORD)
suspend fun resetPassword(
@Body req: UserAuth
): ResponseObject<GenerateToken>
@POST("customer/log-out")
@POST(CONSTANTS.API_LOG_OUT)
suspend fun logOut(): Response
@POST("customer/send-sms-code")
@POST(CONSTANTS.API_SEND_SMS_CODE)
suspend fun reSendSms(
@Body req: UserAuth
): ResponseObject<String>
@POST("customer/check-password")
@POST(CONSTANTS.API_CHECK_PASSWORD)
suspend fun checkPassword(
@Body req: UserAuth
): Response
@POST("customer/change-password")
@POST(CONSTANTS.API_CHANGE_PASSWORD)
suspend fun installPassword(
@Body req: ChangePassword
): Response
@POST("service/index")
@POST(CONSTANTS.API_SERVICE_INDEX)
suspend fun getServices(): ResponseList<ServiceData>
......
......@@ -3,5 +3,5 @@ package com.mobiuz.app.dev.network.model
data class Response(
var status: Boolean,
var message: String,
var errors: List<Errors>,
var errors: List<Errors>
)
\ No newline at end of file
......@@ -55,7 +55,7 @@ class AuthRepository @Inject constructor(
when {
res.status -> {
pref.setUserToken(res.data?.token)
pref.userToken = res.data?.token
pref.isRegistered = true
UiStateObject.SUCCESS(res.message)
}
......@@ -106,7 +106,7 @@ class AuthRepository @Inject constructor(
when {
res.status -> {
pref.isRegistered = true
pref.setUserToken(res.data?.token)
pref.userToken = res.data?.token
UiStateObject.SUCCESS(res.message)
}
res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage())
......
......@@ -39,6 +39,8 @@ class AuthActivity : AppCompatActivity() {
private lateinit var mFirebaseAnalytics: FirebaseAnalytics
private lateinit var receiver: BroadcastReceiver
private var type = 0
private var verificationCode: String? = null
private var phone = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -51,26 +53,26 @@ class AuthActivity : AppCompatActivity() {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
FirebaseMessaging.getInstance().token.addOnCompleteListener {
if (it.isSuccessful) pref.setDeviceToken(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 {
phone = it.getStringExtra(CONSTANTS.PHONE) ?: ""
verificationCode = it.getStringExtra(CONSTANTS.PIN_CODE)
when (it.getStringExtra(CONSTANTS.TYPE_AUTH)) {
CONSTANTS.PIN_CODE -> {
navController.popBackStack()
navController.navigate(R.id.pinFragment, null, Utils.navOptions())
}
CONSTANTS.LOGIN -> {
val phone = it.getStringExtra(CONSTANTS.PHONE)
navController.popBackStack()
navController.navigate(R.id.loginFragment, bundleOf(CONSTANTS.PHONE to phone ), Utils.navOptions())
navController.navigate(R.id.loginFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
CONSTANTS.TYPE_VERIFICATION -> {
val phone = it.getStringExtra(CONSTANTS.PHONE)
val code = it.getStringExtra(CONSTANTS.PIN_CODE)
navController.popBackStack()
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone , CONSTANTS.PIN_CODE to code), Utils.navOptions())
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone , CONSTANTS.PIN_CODE to verificationCode), Utils.navOptions())
}
}
}
......
......@@ -5,6 +5,7 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
import androidx.core.text.isDigitsOnly
import androidx.core.view.isVisible
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
......@@ -64,7 +65,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
txtHelperMobiuz.makeLinks(
Pair("www.mobi.uz", View.OnClickListener {
val uri = Uri.parse("https://www.mobi.uz/")
val uri = Uri.parse(CONSTANTS.HTTP_MOBI_UZ)
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
startActivity(intent)
......@@ -72,14 +73,14 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
txtAgree.makeLinks(
Pair("Terms of Use", View.OnClickListener {
val uri = Uri.parse("https://ip.mobi.uz/selfcare/")
val uri = Uri.parse(CONSTANTS.TERMS_OF_USE)
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
startActivity(intent)
}),
Pair("Privacy Policy", View.OnClickListener {
val uri = Uri.parse("https://www.mobi.uz/")
val uri = Uri.parse(CONSTANTS.PRIVACY_POLICY)
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
startActivity(intent)
......@@ -145,9 +146,9 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
}
else -> {
if (type == CONSTANTS.TYPE_FORGET) {
viewModel.resetPassword(UserAuth(phone.replace(" ", "").replace("+", ""), password, code))
viewModel.resetPassword(UserAuth(phone.filter { it.isDigit() }, password, code))
} else {
viewModel.register(UserAuth(phone.replace(" ", "").replace("+", ""), password))
viewModel.register(UserAuth(phone.filter { it.isDigit() }, password))
}
}
}
......
package com.mobiuz.app.dev.ui.global
object CONSTANTS {
const val LOGIN = "login"
const val BASE_URL = "http://10.160.45.60/api/v1/"
//languages
const val RU = "ru"
const val UZ = "uz"
const val EN = "en"
const val PHONE = "phone"
const val TYPE_AUTH = "type_auth"
const val TYPE_SERVICE = "type_service"
const val OLD_PASSWORD = "old_password"
const val LATEST_PASSWORD = "latest_password"
const val TYPE_VERIFICATION = "type_verification"
const val TYPE_FORGET = "type_forget"
const val FIRST = "first"
// safety data
const val HELP_BOT = "@MobiuzHelpBot"
const val TERMS_OF_USE = "https://ip.mobi.uz/selfcare/"
const val PRIVACY_POLICY = "https://www.mobi.uz/"
const val HTTP_MOBI_UZ = "https://www.mobi.uz/"
const val FEEDBACK = "https://company.mobi.uz/ru/feedback/"
const val EMAIL = "info@mobi.uz"
const val MAIN_URL1 = "https://www.mobi.uz/"
const val MAIN_URL2 = "https://www.mobi.uz/"
const val PHONE1 = "0890"
const val PHONE2 = "+998 97 130 09 09"
const val PHONE3 = "+998 97 203 10 10"
const val PHONE = "phone"
const val RESEND_CODE_TIME = 10000L
const val BLOCKED_TIME = 6000
//auth types
const val TYPE_AUTH = "type_auth"
const val LOGIN = "login"
const val TYPE_VERIFICATION = "type_verification"
const val TYPE_FORGET = "type_forget"
const val PIN_CODE = "PIN_CODE"
const val FIRST = "first"
const val SERVICE = "service"
const val TYPE_PASSWORD = "TYPE_PASSWORD"
const val TYPE_SERVICE = "type_service"
const val OFFLINE = "offline"
const val CURRENT_PASSWORD = "CURRENT_PASSWORD"
const val NEW_PASSWORD = "NEW_PASSWORD"
const val CONFIRM_NEW_PASSWORD = "CONFIRM_NEW_PASSWORD"
const val DEFAULT_PHONE = "+998 97 999-99-99"
const val FULL_SCREEN_DIALOG = "full_screen_dialog"
const val RESEND_CODE_TIME = 10000L
const val BLOCKED_TIME = 6000
//pin types
const val PIN_CODE = "PIN_CODE"
//password types
const val TYPE_PASSWORD = "TYPE_PASSWORD"
const val OLD_PASSWORD = "OLD_PASSWORD"
const val LATEST_PASSWORD = "LATEST_PASSWORD"
const val CURRENT_PASSWORD = "CURRENT_PASSWORD"
const val NEW_PASSWORD = "NEW_PASSWORD"
const val CONFIRM_NEW_PASSWORD = "CONFIRM_NEW_PASSWORD"
//pin types
const val TYPE_PIN = "TYPE_PIN"
const val NEW_PIN = "NEW_PIN"
const val CONFIRM_NEW_PIN = "CONFIRM_NEW_PIN"
......@@ -43,6 +63,23 @@ object CONSTANTS {
const val CHANGE_NEW_PIN = "CHANGE_NEW_PIN"
const val CONFIRM_CHANGE_NEW_PIN = "CONFIRM_CHANGE_NEW_PIN"
//urls
const val API_LOGIN = "customer/login"
const val API_REGISTER = "customer/register"
const val API_CHECK_PHONE = "customer/check-phone"
const val API_CHECK_SMS_CODE = "customer/check-sms-code"
const val API_MAIN_INDEX = "main/index"
const val API_FORGET_PASSWORD = "customer/forget-password"
const val API_CHECK_RESET_CODE = "customer/check-reset-code"
const val API_RESET_PASSWORD = "customer/reset-password"
const val API_LOG_OUT = "customer/log-out"
const val API_SEND_SMS_CODE = "customer/send-sms-code"
const val API_CHECK_PASSWORD = "customer/check-password"
const val API_CHANGE_PASSWORD = "customer/change-password"
const val API_SERVICE_INDEX = "service/index"
const val LONGITUDE = 69.2602108116081
const val LATITUDE = 41.34823322480444
......
......@@ -16,6 +16,7 @@ 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
......@@ -44,12 +45,11 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
isCancelable = false
setUpUI()
loadFingerPrint()
if (pref.isUseFingerPrint) loadFingerPrint()
}
private fun loadFingerPrint() {
if(pref.isUseFingerPrint) {
val golfing = Goldfinger.Builder(requireContext()).build()
if (golfing.canAuthenticate()) {
val params = Goldfinger.PromptParams.Builder(this)
......@@ -70,7 +70,7 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
}
})
}
}
}
fun setUpUI() {
......@@ -87,6 +87,7 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
txtNotPin.isVisible = false
dismiss()
} else {
vibrate(requireContext())
cardPin.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake))
txtNotPin.isVisible = true
}
......
package com.mobiuz.app.dev.ui.auth.pin
package com.mobiuz.app.dev.ui.global
import android.content.Context
import android.util.AttributeSet
......
......@@ -63,7 +63,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
// navController.navigate(R.id.billingFragment)
}
toolbar.setNavigationOnClickListener {
mainViewModel.mainIndex(System.currentTimeMillis())
mainViewModel.openDrawer(System.currentTimeMillis())
}
scrollView.viewTreeObserver.addOnScrollChangedListener {
......@@ -145,12 +145,14 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
txtCountMinut.text = it?.SECOND?.value?.toMoneyFormat() ?: "0"
txtTypeMinut.text = it?.SECOND?.unit ?: "min"
txtTarif.text = it?.SECOND?.name ?: "My tarif"
txtTarifTo.text = it?.SECOND?.date_to?.getDateTime() ?: ""
txtCountSms.text = it?.ITEM?.value?.toMoneyFormat() ?: "0"
txtTypeSms.text = it?.ITEM?.unit ?: "sms"
}
mainViewModel.setUserName(customer?.customer?.name ?: "Unnamed User")
txtTarif.text = customer?.customer?.tariff?.name.toString() ?: getString(R.string.my_tarif)
txtMyNumber.text = pref.userPhone.customMasketHome().replace("-", " ")
toolbarMyNumber.text = pref.userPhone.customMasketHome().replace("-", " ")
}
......
package com.mobiuz.app.dev.ui.auth.pin
package com.mobiuz.app.dev.ui.home
import android.content.Context
import android.util.AttributeSet
......
......@@ -62,30 +62,33 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
override fun setUpUI() {
bn.apply {
if (type == CONSTANTS.OFFLINE) {
toolbar.isVisible = false
txtDostupno.isVisible = true
layoutOffline.isVisible = true
}
checkType(type == CONSTANTS.OFFLINE)
rvService.adapter = adapter
// rvService.edgeEffectFactory = RecyclerView.EdgeEffectFactory()
val arg = pref.services
val list = Gson().fromJson<List<ServiceData>>(arg, object : TypeToken<List<ServiceData>>() {}.type)
val list = Gson().fromJson<List<ServiceData>>(pref.services, object : TypeToken<List<ServiceData>>() {}.type)
adapter.submitList(list)
OverScrollDecoratorHelper.setUpStaticOverScroll(bn.rvService, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
// OverScrollDecoratorHelper.setUpStaticOverScroll(bn.rvService, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
adapter.setOnClickListener {
navigateToServiceScreen(it)
}
toolbar.setNavigationOnClickListener {
mainViewModel.mainIndex(System.currentTimeMillis())
mainViewModel.openDrawer(System.currentTimeMillis())
}
}
}
private fun checkType(b: Boolean) {
bn.apply {
toolbar.isVisible = !b
txtDostupno.isVisible = b
layoutOffline.isVisible = b
}
}
override fun onStop() {
super.onStop()
mainViewModel.swipeDrawer(false)
......
......@@ -40,8 +40,6 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
override fun setUpUI() {
bn.apply {
// OverScrollDecoratorHelper.setUpStaticOverScroll(bn.viewGroup, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
......@@ -82,9 +80,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
requireActivity().finishAffinity()
}
override fun collects() {
}
override fun collects() {}
override fun onDestroy() {
_bn = null
......
......@@ -29,7 +29,6 @@ class ProfileFragment : BaseFragment(R.layout.fragment_profile) {
_bn = FragmentProfileBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
......@@ -40,23 +39,6 @@ class ProfileFragment : BaseFragment(R.layout.fragment_profile) {
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
btn0890.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
}
})
btn0890.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
}
})
btnEmail.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
}
})
btnSim.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
}
})
}
}
......
......@@ -16,7 +16,6 @@ import dagger.hilt.android.AndroidEntryPoint
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
import javax.inject.Inject
@AndroidEntryPoint
class SupportFragment : BaseFragment(R.layout.fragment_support) {
......@@ -32,7 +31,6 @@ class SupportFragment : BaseFragment(R.layout.fragment_support) {
_bn = FragmentSupportBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
......@@ -90,12 +88,7 @@ class SupportFragment : BaseFragment(R.layout.fragment_support) {
pref.isShowPin = false
}
override fun collects() {
}
override fun collects() {}
override fun onDestroy() {
_bn = null
......
package com.mobiuz.app.dev.ui.settings.safety.password
package com.mobiuz.app.dev.ui.settings.safety
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
......@@ -12,7 +11,6 @@ import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentChangePasswordBinding
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.ChangePassword
......@@ -24,13 +22,11 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
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.showCustomDialog
import com.mobiuz.app.dev.utils.extensions.showMessage
import com.mobiuz.app.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
import javax.inject.Inject
......@@ -44,7 +40,6 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var type = ""
private var count = 3
private lateinit var decorView: View
private var oldPassword = ""
private var newPassword = ""
......
......@@ -45,7 +45,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
txtPhoneSafety.text = myText
switchBiometria.isChecked = pref.isUseFingerPrint
switchBiometria.setOnCheckedChangeListener { _, isChecked ->
val message = if(isChecked) "Biometric enabled" else "Biometric disabled"
val message = if(isChecked) getString(R.string.biometric_enabled) else getString(R.string.biometric_disabled)
showToastMessage(message)
pref.isUseFingerPrint = isChecked
}
......@@ -60,7 +60,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
})
btnChangePassword.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
navController.navigate(R.id.currentPasswordFragment, bundleOf(CONSTANTS.TYPE_PASSWORD to CONSTANTS.CURRENT_PASSWORD),Utils.navOptions())
navController.navigate(R.id.changePasswordFragment, bundleOf(CONSTANTS.TYPE_PASSWORD to CONSTANTS.CURRENT_PASSWORD),Utils.navOptions())
}
})
btn4.setOnClickListener(object : ButtonClick(){
......
......@@ -31,6 +31,9 @@ import com.mobiuz.app.dev.ui.global.SenderDialog
import retrofit2.HttpException
import java.io.IOException
import java.net.ConnectException
import java.sql.Date
import java.sql.Timestamp
import java.text.SimpleDateFormat
fun Fragment.showMessage(message: String) {
......@@ -45,6 +48,16 @@ fun Fragment.showCustomDialog(description:String,status:Boolean, block: () -> Un
dialog.show(childFragmentManager,"tab")
}
fun String.getDateTime(): String? {
return try {
val long = Timestamp.parse(this)
val sdf = SimpleDateFormat("MM/dd/yyyy")
sdf.format(long)
} catch (e: Exception) {
""
}
}
fun FragmentActivity.showFullScreenDialog(block: (dialog: FullScreenDialog) -> Unit){
val time = SharedPref(this).blockedTime
if(time < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME){
......
......@@ -4,9 +4,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white100"
tools:context=".dev.LanguageActivity">
<com.mobiuz.app.dev.ui.auth.pin.SquareImageView
<com.mobiuz.app.dev.ui.global.SquareImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
......
......@@ -24,7 +24,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/try_again"
android:text="@string/to_offline"
android:visibility="visible" />
<com.google.android.material.bottomnavigation.BottomNavigationView
......@@ -61,12 +61,13 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="@dimen/_14sdp"
android:layout_marginTop="@dimen/_4sdp"
android:background="@color/grey20" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:overScrollMode="never"
android:layout_weight="1">
<LinearLayout
......@@ -78,7 +79,7 @@
android:id="@+id/btn_safety"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/_24sdp"
android:layout_marginTop="@dimen/_14sdp"
android:background="?android:selectableItemBackground"
android:orientation="horizontal"
android:paddingVertical="18dp"
......@@ -201,7 +202,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="30dp"
android:layout_marginTop="20dp"
android:background="?android:selectableItemBackground"
android:text="@string/oferta_finans"
android:textColor="@color/link"
......@@ -240,7 +241,6 @@
android:src="@drawable/ic_log_out" />
<TextView
android:id="@+id/txt_user_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
......@@ -251,11 +251,11 @@
android:textStyle="bold" />
<TextView
android:id="@+id/txt_user_phone"
android:id="@+id/txt_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="v 0.01.1"
tools:text="0.01.1"
android:textColor="@color/grey80"
android:textSize="14sp" />
......
......@@ -18,12 +18,19 @@
android:src="@drawable/ic_mobiuz_logo"
android:textStyle="bold" />
<ProgressBar
android:layout_width="wrap_content"
android:id="@+id/progress"
android:visibility="gone"
android:backgroundTint="@color/primary110"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_try_again"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/_24sdp"
android:text="Try Again"
android:text="@string/btn_try_again"
android:visibility="gone"
android:textColor="@color/white100" />
......
......@@ -48,14 +48,10 @@
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="@dimen/_12sdp"
style="@style/TitleTextStyle"
android:gravity="center"
android:layout_marginTop="@dimen/_12sdp"
android:text="@string/biometric_enter"
android:textSize="29sp"
android:textStyle="bold" />
android:text="@string/biometric_enter" />
<TextView
android:layout_width="wrap_content"
......
......@@ -61,7 +61,6 @@
<TextView
android:id="@+id/txt_password"
style="@style/TitleTextStyle"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_current_password"
app:layout_constraintBottom_toTopOf="@id/txt_hint_confirm"
......
......@@ -16,14 +16,10 @@
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number"
android:textSize="29sp"
android:textStyle="bold" />
android:text="@string/enter_number" />
<LinearLayout
android:layout_width="match_parent"
......
......@@ -15,14 +15,10 @@
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number"
android:textSize="29sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
......
......@@ -10,6 +10,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:id="@+id/home_image"
android:src="@drawable/bgn_home" />
<LinearLayout
......@@ -349,6 +350,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txt_tarif_to"
android:layout_gravity="end"
tools:text="22 Декабря" />
</FrameLayout>
......
......@@ -17,14 +17,10 @@
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter"
android:textSize="29sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
......@@ -137,7 +133,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:textSize="16sp"
android:textSize="17sp"
android:text="@string/forget_password"
android:background="?android:selectableItemBackground"
android:textColor="@color/grey110"
......
This diff is collapsed.
......@@ -14,14 +14,10 @@
app:navigationIcon="@drawable/ic_baseline_arrow_back" />
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_verification"
android:textSize="29sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
......
......@@ -17,14 +17,10 @@
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_pin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_14sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/install_pin"
android:textSize="29sp"
android:textStyle="bold" />
android:text="@string/install_pin" />
<FrameLayout
android:layout_width="match_parent"
......
......@@ -9,14 +9,10 @@
android:orientation="vertical">
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_pin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_14sdp"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter_pin_code"
android:textSize="29sp"
android:textStyle="bold" />
android:text="@string/enter_pin_code" />
<FrameLayout
android:layout_width="match_parent"
......
......@@ -36,17 +36,13 @@
android:layout_marginTop="20dp" />
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_user_name"
android:layout_width="match_parent"
android:gravity="center"
android:elevation="8dp"
android:layout_marginHorizontal="@dimen/_24sdp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="12dp"
tools:text="Юлия Шевченко "
android:textSize="25sp"
android:textStyle="bold" />
android:textSize="25sp" />
<TextView
android:id="@+id/txt_profile"
......@@ -119,94 +115,8 @@
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/btn_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:visibility="invisible"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_image_email" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email"
android:textColor="@color/grey110"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="user@gmail.com"
android:textColor="@color/grey110"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/btn_sim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
android:layout_marginTop="10dp"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_image_sim" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Наименование СИМ-карты"
android:textColor="@color/grey110"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Наименование симкарты"
android:textStyle="bold"
android:textColor="@color/black100"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
......
......@@ -16,14 +16,10 @@
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/register"
android:textSize="29sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
......@@ -168,8 +164,7 @@
android:layout_marginTop="29dp"
android:textSize="13sp"
android:textColorLink="@color/primary100"
android:text="By signing up, you're agree to our
\nTerms of Use and Privacy Policy"
android:text="@string/by_signing_up_you_re_agree_to_our_nterms_of_use_and_privacy_policy"
android:textColor="@color/grey80"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
android:overScrollMode="never"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="false"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_offline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="@dimen/_24sdp"
android:layout_marginVertical="@dimen/_20sdp"
android:background="@color/grey10"
android:orientation="vertical"
android:paddingTop="@dimen/_22sdp"
......@@ -49,7 +56,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="26dp"
android:layout_marginTop="20dp"
android:text="@string/open"
android:textColor="@color/grey80"
android:visibility="gone" />
......@@ -74,16 +81,17 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_service"
android:overScrollMode="never"
android:scrollbars="none"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_height="match_parent"
android:layout_marginHorizontal="12dp"
android:layout_marginBottom="@dimen/_30sdp"
android:clipToPadding="true"
android:layout_marginTop="@dimen/_20sdp"
android:layout_weight="1"
android:overScrollMode="never"
android:scrollbars="none"
android:visibility="visible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
\ No newline at end of file
</LinearLayout>
</ScrollView>
\ No newline at end of file
......@@ -19,8 +19,8 @@
<TextView
android:layout_width="wrap_content"
android:textColor="@color/black80"
android:maxWidth="@dimen/_150sdp"
android:layout_marginTop="6dp"
android:maxWidth="@dimen/_120sdp"
android:layout_marginTop="13dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dui, risus"
android:textSize="10sp"
android:layout_marginBottom="8dp"
......@@ -29,7 +29,7 @@
<com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content"
app:cardCornerRadius="4dp"
android:layout_marginTop="6dp"
android:layout_marginTop="20dp"
android:layout_height="wrap_content">
<LinearLayout
......
......@@ -39,7 +39,7 @@
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.password.ChangePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.ChangePasswordFragment"
android:label="CurrentPasswordFragment" />
<fragment
......
......@@ -37,7 +37,7 @@
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.password.ChangePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.safety.ChangePasswordFragment"
android:label="CurrentPasswordFragment" />
<fragment
......
......@@ -71,4 +71,14 @@
<string name="tx1">Согласие на обработку данных</string>
<string name="tx2">Публичная оферта</string>
<string name="tx3">Политика конфиденциальности</string>
<string name="biometric_enabled">Biometric authentication enabled</string>
<string name="biometric_disabled">Biometric authentication disabled</string>
<string name="send">Send</string>
<string name="to_offline">Go offline</string>
<string name="try_again">Reconnect</string>
<string name="open">Available</string>
<string name="yes_internet_connect">Internet connection restored</string>
<string name="not_internet_connect">No active connection</string>
<string name="btn_try_again">Try again</string>
<string name="not_internet_try_again">Check your internet connection and try again</string>
</resources>
\ No newline at end of file
......@@ -31,7 +31,7 @@
<string name="think_password">Придумайте пароль</string>
<string name="enter">Войти</string>
<string name="enter_verification">Ведите код \nподтверждения</string>
<string name="sent_code_again">Sent code again</string>
<string name="sent_code_again">Отправить код заново</string>
<string name="install_pin">Установите PIN-код</string>
<string name="confirm_pin">Повторите этот PIN-код</string>
<string name="biometric_enter">Биометрический вход</string>
......@@ -71,4 +71,14 @@
<string name="tx1">Согласие на обработку данных</string>
<string name="tx2">Публичная оферта</string>
<string name="tx3">Политика конфиденциальности</string>
<string name="biometric_enabled">Биометрическая аутентификация включена</string>
<string name="biometric_disabled">Биометрическая аутентификация отключена</string>
<string name="send">Отправить</string>
<string name="to_offline">Перейти в офлайн режим</string>
<string name="try_again">Повторить подключение</string>
<string name="open">Доступно</string>
<string name="yes_internet_connect">Интернет соединение восстановлено</string>
<string name="not_internet_connect">Отсутствует активное подключение</string>
<string name="btn_try_again">Попробуй снова</string>
<string name="not_internet_try_again">Проверьте интернет соединение и попробуйте снова</string>
</resources>
\ No newline at end of file
......@@ -31,7 +31,7 @@
<string name="think_password">Придумайте пароль</string>
<string name="enter">Войти</string>
<string name="enter_verification">Ведите код \nподтверждения</string>
<string name="sent_code_again">Sent code again</string>
<string name="sent_code_again">Kodni qayta yuborish</string>
<string name="install_pin">Установите PIN-код</string>
<string name="confirm_pin">Повторите этот PIN-код</string>
<string name="biometric_enter">Биометрический вход</string>
......@@ -71,4 +71,14 @@
<string name="tx1">Согласие на обработку данных</string>
<string name="tx2">Публичная оферта</string>
<string name="tx3">Политика конфиденциальности</string>
<string name="biometric_enabled">Biometrik autentifikatsiya yoqilgan</string>
<string name="biometric_disabled">Biometrik autentifikatsiya o‘chirilgan</string>
<string name="send">Yuborish</string>
<string name="to_offline">Oflayn rejimga o\'tish</string>
<string name="try_again">Qayta ulanish</string>
<string name="open">Mavjud</string>
<string name="yes_internet_connect">Internetga ulanish tiklandi</string>
<string name="not_internet_connect">Faol ulanish yo\'q</string>
<string name="btn_try_again">Qayta urinib ko\'rish</string>
<string name="not_internet_try_again">Internet aloqangizni tekshiring va qayta urinib ko\'ring</string>
</resources>
\ No newline at end of file
......@@ -37,7 +37,7 @@
<string name="think_password">Придумайте пароль</string>
<string name="enter">Войти</string>
<string name="enter_verification">Ведите код \nподтверждения</string>
<string name="sent_code_again">Sent code again</string>
<string name="sent_code_again">Отправить код заново</string>
<string name="install_pin">Установите PIN-код</string>
<string name="confirm_pin">Повторите этот PIN-код</string>
<string name="biometric_enter">Биометрический вход</string>
......@@ -140,5 +140,7 @@
<string name="not_internet_connect">Отсутствует активное подключение</string>
<string name="yes_internet_connect">Интернет соединение восстановлено</string>
<string name="oferta_finans"><u>Оферта на предоставление \nфинансовых услуг</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="btn_try_again">Попробуй снова</string>
</resources>
\ No newline at end of file
......@@ -110,6 +110,8 @@
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">bold</item>
<item name="android:layout_marginEnd">@dimen/_12sdp</item>
<item name="android:layout_marginStart">@dimen/_12sdp</item>
<item name="android:textSize">29sp</item>
<item name="android:textColor">@color/black100</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