Commit bafee89e authored by shohboz's avatar shohboz

[UPD] MUS-230 Feature, updated offline rejim and changed api response on verification code

parent 7317c993
...@@ -4,6 +4,7 @@ import android.content.Intent ...@@ -4,6 +4,7 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import com.mobiuz.app.databinding.ActivityLanguageBinding import com.mobiuz.app.databinding.ActivityLanguageBinding
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.AuthActivity import com.mobiuz.app.dev.ui.auth.AuthActivity
...@@ -25,7 +26,7 @@ class LanguageActivity : AppCompatActivity() { ...@@ -25,7 +26,7 @@ class LanguageActivity : AppCompatActivity() {
_bn = ActivityLanguageBinding.inflate(layoutInflater) _bn = ActivityLanguageBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
bn.apply { bn.apply {
uzbekLang.setOnClickListener { uzbekLang.setOnClickListener {
setLangAndNavigate(CONSTANTS.UZ) setLangAndNavigate(CONSTANTS.UZ)
......
package com.mobiuz.app.dev package com.mobiuz.app.dev
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.GravityCompat import androidx.core.view.GravityCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.drawerlayout.widget.DrawerLayout import androidx.drawerlayout.widget.DrawerLayout
...@@ -18,7 +20,6 @@ import com.google.android.material.bottomnavigation.BottomNavigationView ...@@ -18,7 +20,6 @@ import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.firebase.FirebaseApp import com.google.firebase.FirebaseApp
import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.messaging.FirebaseMessaging import com.google.firebase.messaging.FirebaseMessaging
import com.google.gson.Gson
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityMainBinding import com.mobiuz.app.databinding.ActivityMainBinding
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
...@@ -26,9 +27,8 @@ import com.mobiuz.app.dev.network.model.UiStateObject ...@@ -26,9 +27,8 @@ import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthActivity import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.global.ButtonClick import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.FullScreenDialog
import com.mobiuz.app.dev.ui.settings.SettingsActivity
import com.mobiuz.app.dev.utils.LocaleHelper import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.* import com.mobiuz.app.dev.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
...@@ -50,6 +50,8 @@ class MainActivity : AppCompatActivity() { ...@@ -50,6 +50,8 @@ class MainActivity : AppCompatActivity() {
private var currentNavController: LiveData<NavController>? = null private var currentNavController: LiveData<NavController>? = null
private val viewModel: MainViewModel by viewModels() private val viewModel: MainViewModel by viewModels()
private lateinit var receiver: BroadcastReceiver private lateinit var receiver: BroadcastReceiver
// if offline type == 0
private var type = 0
private lateinit var mFirebaseAnalytics: FirebaseAnalytics private lateinit var mFirebaseAnalytics: FirebaseAnalytics
...@@ -59,6 +61,7 @@ class MainActivity : AppCompatActivity() { ...@@ -59,6 +61,7 @@ class MainActivity : AppCompatActivity() {
_bn = ActivityMainBinding.inflate(layoutInflater) _bn = ActivityMainBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
FirebaseApp.initializeApp(this) FirebaseApp.initializeApp(this)
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this) mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
...@@ -72,21 +75,21 @@ class MainActivity : AppCompatActivity() { ...@@ -72,21 +75,21 @@ class MainActivity : AppCompatActivity() {
setUpUI() setUpUI()
collects() collects()
receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) {
type = NetworkUtil.getConnectivityStatus(this@MainActivity)
bn.btnTryAgain.isVisible = type == 0
if(type != 0){
showMessage(getString(R.string.yes_internet_connect))
}else{
showMessage(getString(R.string.not_internet_connect))
}
}
}
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
registerReceiver(receiver,intentFilter)
// receiver = object : BroadcastReceiver(){
// override fun onReceive(context: Context?, intent: Intent?) {
// val type = NetworkUtil.getConnectivityStatus(this@MainActivity)
// if (type == 0){
// showMessage("Internet o'chdi")
// }else{
// showMessage("Internet yondi")
// }
//// customLog("onReceive=${type}")
// }
// }
//// val receiver = NetworkChangeReceiver()
// val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
// registerReceiver(receiver,intentFilter)
} }
...@@ -94,7 +97,11 @@ class MainActivity : AppCompatActivity() { ...@@ -94,7 +97,11 @@ class MainActivity : AppCompatActivity() {
private fun setUpUI() { private fun setUpUI() {
bn.apply { bn.apply {
bn.btnTryAgain.setOnClickListener {
if (type == 0){
navigate()
}
}
header.txtUserPhone.text = pref.userPhone.customMasketHome() header.txtUserPhone.text = pref.userPhone.customMasketHome()
customLog("lang:${pref.language}") customLog("lang:${pref.language}")
when (pref.language) { when (pref.language) {
...@@ -108,7 +115,6 @@ class MainActivity : AppCompatActivity() { ...@@ -108,7 +115,6 @@ class MainActivity : AppCompatActivity() {
GlobalScope.launch { GlobalScope.launch {
viewModel.logOut() viewModel.logOut()
} }
// uz.agr.sdk.open_source.ui.MainFormFragment
val intent = Intent(this@MainActivity, AuthActivity::class.java) val intent = Intent(this@MainActivity, AuthActivity::class.java)
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)
...@@ -155,6 +161,13 @@ class MainActivity : AppCompatActivity() { ...@@ -155,6 +161,13 @@ class MainActivity : AppCompatActivity() {
} }
} }
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)
finish()
}
private fun navigateUri(link: String) { private fun navigateUri(link: String) {
val uri = Uri.parse(link) val uri = Uri.parse(link)
val intent = Intent(Intent.ACTION_VIEW) val intent = Intent(Intent.ACTION_VIEW)
...@@ -172,10 +185,11 @@ class MainActivity : AppCompatActivity() { ...@@ -172,10 +185,11 @@ class MainActivity : AppCompatActivity() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
customLog("onResume: pref.isShowPin:${pref.isShowPin}")
if (pref.isShowPin) { if (pref.isShowPin) {
showPinCode() showPinCode()
} else { } else {
pref.blockedTime = System.currentTimeMillis()
pref.isShowPin = true pref.isShowPin = true
} }
} }
...@@ -198,7 +212,7 @@ class MainActivity : AppCompatActivity() { ...@@ -198,7 +212,7 @@ class MainActivity : AppCompatActivity() {
} }
} }
private fun navigateToSettingsScreen(resId:Int) { private fun navigateToSettingsScreen(resId: Int) {
val window = window.decorView val window = 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
currentNavController?.value?.navigate(resId) currentNavController?.value?.navigate(resId)
...@@ -222,7 +236,6 @@ class MainActivity : AppCompatActivity() { ...@@ -222,7 +236,6 @@ class MainActivity : AppCompatActivity() {
viewModel.bottomSheetUiState.collect { viewModel.bottomSheetUiState.collect {
when (it) { when (it) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
customLog("bottomSheetUiState ${it.data}")
bn.bottomNavView.isVisible = it.data bn.bottomNavView.isVisible = it.data
} }
else -> Unit else -> Unit
...@@ -247,10 +260,9 @@ class MainActivity : AppCompatActivity() { ...@@ -247,10 +260,9 @@ class MainActivity : AppCompatActivity() {
viewModel.swipeDrawerUiState.collect { viewModel.swipeDrawerUiState.collect {
when (it) { when (it) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
customLog("locked:${it.data}") if (it.data) {
if(it.data){
bn.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED) bn.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
}else{ } else {
bn.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) bn.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
} }
} }
...@@ -287,7 +299,7 @@ class MainActivity : AppCompatActivity() { ...@@ -287,7 +299,7 @@ class MainActivity : AppCompatActivity() {
override fun onDestroy() { override fun onDestroy() {
_bn = null _bn = null
// unregisterReceiver(receiver) unregisterReceiver(receiver)
super.onDestroy() super.onDestroy()
} }
} }
\ No newline at end of file
package com.mobiuz.app.dev package com.mobiuz.app.dev
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityOfflineBinding import com.mobiuz.app.databinding.ActivityOfflineBinding
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.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.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.showFullScreenDialog
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
...@@ -22,6 +32,9 @@ class OfflineActivity : AppCompatActivity() { ...@@ -22,6 +32,9 @@ class OfflineActivity : AppCompatActivity() {
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
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
// if offline type == 0
private var type = 0
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
...@@ -32,6 +45,7 @@ class OfflineActivity : AppCompatActivity() { ...@@ -32,6 +45,7 @@ class OfflineActivity : AppCompatActivity() {
setContentView(bn.root) setContentView(bn.root)
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
adapter = ServiceAdapter(pref.language) adapter = ServiceAdapter(pref.language)
pref.isShowPin = false
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)
...@@ -39,11 +53,79 @@ class OfflineActivity : AppCompatActivity() { ...@@ -39,11 +53,79 @@ class OfflineActivity : AppCompatActivity() {
navController.popBackStack() navController.popBackStack()
navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE)) navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE))
receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) {
type = NetworkUtil.getConnectivityStatus(this@OfflineActivity)
bn.btnTryAgain.isVisible = type != 0
if(type != 0){
showMessage(getString(R.string.yes_internet_connect))
}else{
showMessage(getString(R.string.not_internet_connect))
}
}
}
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
registerReceiver(receiver,intentFilter)
bn.btnTryAgain.setOnClickListener {
if (type != 0){
navigate()
}
}
}
override fun onResume() {
super.onResume()
customLog("onResume: pref.isShowPin:${pref.isShowPin}")
if (pref.isShowPin && pref.pinCode.isNotEmpty()) {
showPinCode()
} else {
pref.blockedTime = System.currentTimeMillis()
pref.isShowPin = true
}
}
override fun onStop() {
super.onStop()
pref.blockedTime = System.currentTimeMillis()
}
private fun showPinCode() {
showFullScreenDialog {
finish()
pref.clearUserData()
val intent = Intent(this, AuthActivity::class.java)
intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.LOGIN)
intent.putExtra(CONSTANTS.PHONE, pref.userPhone)
startActivity(intent)
it.dismiss()
}
}
fun navigate(){
when {
!pref.isRegistered -> {
startActivity(Intent(this, AuthActivity::class.java))
}
pref.pinCode.isEmpty() -> {
startActivity(Intent(this, AuthActivity::class.java).putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.PIN_CODE))
}
else -> {
val intent = Intent(this, MainActivity::class.java)
intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
}
}
finish()
} }
override fun onDestroy() { override fun onDestroy() {
unregisterReceiver(receiver)
_bn = null _bn = null
super.onDestroy() super.onDestroy()
} }
......
...@@ -8,6 +8,7 @@ import android.os.Bundle ...@@ -8,6 +8,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.GravityCompat import androidx.core.view.GravityCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
...@@ -40,15 +41,15 @@ class SplashActivity : AppCompatActivity() { ...@@ -40,15 +41,15 @@ class SplashActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivitySplashBinding.inflate(layoutInflater) _bn = ActivitySplashBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
receiver = object : BroadcastReceiver(){ receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
val type = NetworkUtil.getConnectivityStatus(this@SplashActivity) val type = NetworkUtil.getConnectivityStatus(this@SplashActivity)
if (type == 0){ isTypeOffline = if (type == 0){
isTypeOffline = true true
}else{ }else{
viewModel.services() viewModel.services()
isTypeOffline = false false
} }
} }
} }
...@@ -58,9 +59,11 @@ class SplashActivity : AppCompatActivity() { ...@@ -58,9 +59,11 @@ class SplashActivity : AppCompatActivity() {
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
delay(1000) delay(1000)
if (isTypeOffline){ if (isTypeOffline && pref.services.isNotEmpty()){
startActivity(Intent(this@SplashActivity, OfflineActivity::class.java)) startActivity(Intent(this@SplashActivity, OfflineActivity::class.java))
finish() finish()
}else{
bn.btnTryAgain.isVisible = true
} }
} }
......
...@@ -12,7 +12,6 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) { ...@@ -12,7 +12,6 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
fun clearUserData(){ fun clearUserData(){
isRegistered = false isRegistered = false
pinCode = ""
userName = "" userName = ""
} }
fun setDeviceToken(token: String) { fun setDeviceToken(token: String) {
......
...@@ -12,12 +12,12 @@ interface ApiService { ...@@ -12,12 +12,12 @@ interface ApiService {
@POST("customer/login") @POST("customer/login")
suspend fun login( suspend fun login(
@Body req: UserAuth @Body req: UserAuth
): ResponseList<Any> ): ResponseObject<String>
@POST("customer/register") @POST("customer/register")
suspend fun register( suspend fun register(
@Body req: UserAuth @Body req: UserAuth
): ResponseList<Any> ): ResponseObject<String>
@POST("customer/check-phone") @POST("customer/check-phone")
suspend fun checkPhone( suspend fun checkPhone(
...@@ -35,7 +35,7 @@ interface ApiService { ...@@ -35,7 +35,7 @@ interface ApiService {
@POST("customer/forget-password") @POST("customer/forget-password")
suspend fun forgetPassword( suspend fun forgetPassword(
@Body req: UserAuth @Body req: UserAuth
): ResponseList<Any> ): ResponseObject<String>
@POST("customer/check-reset-code") @POST("customer/check-reset-code")
suspend fun checkResetCode( suspend fun checkResetCode(
...@@ -53,7 +53,7 @@ interface ApiService { ...@@ -53,7 +53,7 @@ interface ApiService {
@POST("customer/send-sms-code") @POST("customer/send-sms-code")
suspend fun reSendSms( suspend fun reSendSms(
@Body req: UserAuth @Body req: UserAuth
): ResponseObject<Any> ): ResponseObject<String>
@POST("customer/check-password") @POST("customer/check-password")
suspend fun checkPassword( suspend fun checkPassword(
......
...@@ -39,7 +39,7 @@ class AuthRepository @Inject constructor( ...@@ -39,7 +39,7 @@ class AuthRepository @Inject constructor(
return try { return try {
val res = apiService.register(data) val res = apiService.register(data)
when { when {
res.status -> UiStateObject.SUCCESS(res.message) res.status && res.data != null -> UiStateObject.SUCCESS(res.data!!)
res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage()) res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage())
else -> UiStateObject.ERROR(res.message) else -> UiStateObject.ERROR(res.message)
} }
...@@ -73,7 +73,7 @@ class AuthRepository @Inject constructor( ...@@ -73,7 +73,7 @@ class AuthRepository @Inject constructor(
when { when {
res.status -> { res.status -> {
UiStateObject.SUCCESS(res.message) UiStateObject.SUCCESS(res.data!!)
} }
res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage()) res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage())
else -> UiStateObject.ERROR(res.message) else -> UiStateObject.ERROR(res.message)
...@@ -123,7 +123,7 @@ class AuthRepository @Inject constructor( ...@@ -123,7 +123,7 @@ class AuthRepository @Inject constructor(
when { when {
res.status -> { res.status -> {
UiStateObject.SUCCESS(res.message) UiStateObject.SUCCESS(res.data?:"")
} }
res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage()) res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage())
else -> UiStateObject.ERROR(res.message) else -> UiStateObject.ERROR(res.message)
...@@ -139,7 +139,7 @@ class AuthRepository @Inject constructor( ...@@ -139,7 +139,7 @@ class AuthRepository @Inject constructor(
when { when {
res.status -> { res.status -> {
UiStateObject.SUCCESS(res.message) UiStateObject.SUCCESS(res.data ?: "")
} }
res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage()) res.errors.isNotEmpty() -> UiStateObject.ERROR(res.errors.getMessage())
else -> UiStateObject.ERROR(res.message) else -> UiStateObject.ERROR(res.message)
......
package com.mobiuz.app.dev.ui.auth package com.mobiuz.app.dev.ui.auth
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import com.google.firebase.FirebaseApp import com.google.firebase.FirebaseApp
...@@ -11,9 +17,13 @@ import com.google.firebase.analytics.FirebaseAnalytics ...@@ -11,9 +17,13 @@ import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.messaging.FirebaseMessaging import com.google.firebase.messaging.FirebaseMessaging
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityAuthBinding import com.mobiuz.app.databinding.ActivityAuthBinding
import com.mobiuz.app.dev.MainActivity
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.NetworkUtil
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
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
...@@ -27,6 +37,8 @@ class AuthActivity : AppCompatActivity() { ...@@ -27,6 +37,8 @@ class AuthActivity : AppCompatActivity() {
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var navController: NavController private lateinit var navController: NavController
private lateinit var mFirebaseAnalytics: FirebaseAnalytics private lateinit var mFirebaseAnalytics: FirebaseAnalytics
private lateinit var receiver: BroadcastReceiver
private var type = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
...@@ -36,11 +48,7 @@ class AuthActivity : AppCompatActivity() { ...@@ -36,11 +48,7 @@ class AuthActivity : AppCompatActivity() {
navController = NavHostFragment.findNavController(fragment) navController = NavHostFragment.findNavController(fragment)
FirebaseApp.initializeApp(this) FirebaseApp.initializeApp(this)
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this) mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
// Firebase.messaging.subscribeToTopic("just").addOnCompleteListener { task ->
// Log.e("AAA", "subscribe: ${task.isSuccessful}")
// }
FirebaseMessaging.getInstance().token.addOnCompleteListener { FirebaseMessaging.getInstance().token.addOnCompleteListener {
if (it.isSuccessful) pref.setDeviceToken(it.result.toString()) if (it.isSuccessful) pref.setDeviceToken(it.result.toString())
...@@ -48,23 +56,54 @@ class AuthActivity : AppCompatActivity() { ...@@ -48,23 +56,54 @@ class AuthActivity : AppCompatActivity() {
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
intent?.let { intent?.let {
val type = it.getStringExtra(CONSTANTS.TYPE_AUTH) when (it.getStringExtra(CONSTANTS.TYPE_AUTH)) {
if (type == CONSTANTS.PIN_CODE) { CONSTANTS.PIN_CODE -> {
navController.popBackStack() navController.popBackStack()
navController.navigate(R.id.pinFragment, null, Utils.navOptions()) navController.navigate(R.id.pinFragment, null, Utils.navOptions())
}else if (type == CONSTANTS.LOGIN) { }
CONSTANTS.LOGIN -> {
val phone = it.getStringExtra(CONSTANTS.PHONE) val phone = it.getStringExtra(CONSTANTS.PHONE)
navController.popBackStack() 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())
}else if (type == CONSTANTS.TYPE_VERIFICATION) { }
CONSTANTS.TYPE_VERIFICATION -> {
val phone = it.getStringExtra(CONSTANTS.PHONE) val phone = it.getStringExtra(CONSTANTS.PHONE)
val code = it.getStringExtra(CONSTANTS.PIN_CODE)
navController.popBackStack() navController.popBackStack()
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone ), Utils.navOptions()) navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone , CONSTANTS.PIN_CODE to code), Utils.navOptions())
}
}
}
bn.btnTryAgain.setOnClickListener {
if (type == 0){
navigate()
} }
} }
receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) {
type = NetworkUtil.getConnectivityStatus(this@AuthActivity)
bn.btnTryAgain.isVisible = type == 0
if(type != 0){
showMessage(getString(R.string.yes_internet_connect))
}else{
showMessage(getString(R.string.not_internet_connect))
}
}
}
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
registerReceiver(receiver,intentFilter)
}
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)
finish()
} }
override fun onDestroy() { override fun onDestroy() {
unregisterReceiver(receiver)
_bn = null _bn = null
super.onDestroy() super.onDestroy()
} }
......
...@@ -121,7 +121,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) { ...@@ -121,7 +121,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
showProgressDialog(false) showProgressDialog(false)
bn.helperPassword.isVisible = false bn.helperPassword.isVisible = false
bn.helperPhone.isVisible = false bn.helperPhone.isVisible = false
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions()) navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone, CONSTANTS.PIN_CODE to it.data), Utils.navOptions())
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
showProgressDialog(false) showProgressDialog(false)
...@@ -148,7 +148,8 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) { ...@@ -148,7 +148,8 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
R.id.myVerificationFragment, R.id.myVerificationFragment,
bundleOf( bundleOf(
CONSTANTS.PHONE to phone, CONSTANTS.PHONE to phone,
CONSTANTS.TYPE_VERIFICATION to CONSTANTS.TYPE_FORGET CONSTANTS.TYPE_VERIFICATION to CONSTANTS.TYPE_FORGET,
CONSTANTS.PIN_CODE to it.data
), ),
Utils.navOptions() Utils.navOptions()
) )
......
...@@ -72,7 +72,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -72,7 +72,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
txtAgree.makeLinks( txtAgree.makeLinks(
Pair("Terms of Use", View.OnClickListener { Pair("Terms of Use", View.OnClickListener {
val uri = Uri.parse("https://www.mobi.uz/") val uri = Uri.parse("https://ip.mobi.uz/selfcare/")
val intent = Intent(Intent.ACTION_VIEW) val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri intent.data = uri
startActivity(intent) startActivity(intent)
...@@ -149,10 +149,8 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -149,10 +149,8 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
} else { } else {
viewModel.register(UserAuth(phone.replace(" ", "").replace("+", ""), password)) viewModel.register(UserAuth(phone.replace(" ", "").replace("+", ""), password))
} }
} }
} }
} }
}) })
...@@ -168,9 +166,10 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -168,9 +166,10 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
when (it) { when (it) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
showProgressDialog(false) showProgressDialog(false)
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions()) navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone,CONSTANTS.PIN_CODE to it.data), Utils.navOptions())
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
code = ""
showProgressDialog(false) showProgressDialog(false)
showToastMessage(it.message) showToastMessage(it.message)
} }
......
...@@ -45,6 +45,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) { ...@@ -45,6 +45,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
private val viewModel: AuthViewModel by viewModels() private val viewModel: AuthViewModel by viewModels()
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var code = "" private var code = ""
private var verification_code = ""
private var phone = "" private var phone = ""
...@@ -55,6 +56,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) { ...@@ -55,6 +56,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
arguments?.let { arguments?.let {
phone = it.getString(CONSTANTS.PHONE) ?: "" phone = it.getString(CONSTANTS.PHONE) ?: ""
type = it.getString(CONSTANTS.TYPE_VERIFICATION) ?: "" type = it.getString(CONSTANTS.TYPE_VERIFICATION) ?: ""
verification_code = it.getString(CONSTANTS.PIN_CODE) ?: ""
} }
} }
...@@ -100,12 +102,27 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) { ...@@ -100,12 +102,27 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
}) })
sentCodeAgain.setOnClickListener { sentCodeAgain.setOnClickListener {
count(true)
viewModel.resetSmsCode(UserAuth(phone.replace("+", "").replace(" ", ""))) viewModel.resetSmsCode(UserAuth(phone.replace("+", "").replace(" ", "")))
} }
coutdownView.setOnCountdownEndListener { coutdownView.setOnCountdownEndListener {
count(false) count(false)
} }
setVerificationCode()
}
}
private fun setVerificationCode() {
if(verification_code.length == 6){
bn.apply {
pin1.setText(verification_code[0].toString())
pin2.setText(verification_code[1].toString())
pin3.setText(verification_code[2].toString())
pin4.setText(verification_code[3].toString())
pin5.setText(verification_code[4].toString())
pin6.setText(verification_code[5].toString())
pin6.requestFocus()
btnLogin.isEnabled = true
}
} }
} }
...@@ -223,7 +240,9 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) { ...@@ -223,7 +240,9 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
when (it) { when (it) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
showToastMessage(it.data) showToastMessage(it.data)
verification_code = it.data
setVerificationCode()
count(true)
showProgressDialog(false) showProgressDialog(false)
} }
is UiStateObject.ERROR -> { is UiStateObject.ERROR -> {
...@@ -274,7 +293,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) { ...@@ -274,7 +293,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
sentCodeAgain.isVisible = !status sentCodeAgain.isVisible = !status
coutdownViewHelperText.isVisible = !status coutdownViewHelperText.isVisible = !status
coutdownView.isVisible = status coutdownView.isVisible = status
if (status) coutdownView.start(10000) if (status) coutdownView.start(CONSTANTS.RESEND_CODE_TIME)
} }
} }
......
...@@ -39,6 +39,8 @@ object CONSTANTS { ...@@ -39,6 +39,8 @@ object CONSTANTS {
const val DEFAULT_PHONE = "+998 97 999-99-99" const val DEFAULT_PHONE = "+998 97 999-99-99"
const val FULL_SCREEN_DIALOG = "full_screen_dialog" const val FULL_SCREEN_DIALOG = "full_screen_dialog"
const val RESEND_CODE_TIME = 10000L
const val BLOCKED_TIME = 6000
const val LONGITUDE = 69.2602108116081 const val LONGITUDE = 69.2602108116081
const val LATITUDE = 41.34823322480444 const val LATITUDE = 41.34823322480444
......
...@@ -60,15 +60,13 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -60,15 +60,13 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
bn.apply { bn.apply {
btnAddSum.setOnClickListener { btnAddSum.setOnClickListener {
navController.navigate(R.id.billingFragment) // navController.navigate(R.id.billingFragment)
} }
toolbar.setNavigationOnClickListener { toolbar.setNavigationOnClickListener {
mainViewModel.mainIndex(System.currentTimeMillis()) mainViewModel.mainIndex(System.currentTimeMillis())
} }
scrollView.viewTreeObserver.addOnScrollChangedListener { scrollView.viewTreeObserver.addOnScrollChangedListener {
if (scrollView.scrollY < 100) { if (scrollView.scrollY < 100) {
toolbarInsideLayout.isVisible = false toolbarInsideLayout.isVisible = false
topDiv.setBackgroundColor(Color.TRANSPARENT) topDiv.setBackgroundColor(Color.TRANSPARENT)
...@@ -123,8 +121,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -123,8 +121,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
is UiStateObject.LOADING -> { is UiStateObject.LOADING -> {
isProgressing = true isProgressing = true
if (isFirstProgressing) showProgressDialog(true) if (isFirstProgressing) showProgressDialog(true)
isFirstProgressing = false else {
bn.lottie.isVisible = true bn.lottie.isVisible = true
isFirstProgressing = false
}
} }
else -> Unit else -> Unit
} }
......
...@@ -3,6 +3,7 @@ package com.mobiuz.app.dev.ui.service ...@@ -3,6 +3,7 @@ package com.mobiuz.app.dev.ui.service
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.view.isVisible
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.mobiuz.app.databinding.ItemServiceBinding import com.mobiuz.app.databinding.ItemServiceBinding
import com.mobiuz.app.dev.model.ServiceData import com.mobiuz.app.dev.model.ServiceData
...@@ -28,7 +29,9 @@ class ServiceAdapter(val lang: String) : RecyclerView.Adapter<ServiceAdapter.VHo ...@@ -28,7 +29,9 @@ class ServiceAdapter(val lang: String) : RecyclerView.Adapter<ServiceAdapter.VHo
binding.apply { binding.apply {
txtTitle.text = d.title.getCurrentName(lang) txtTitle.text = d.title.getCurrentName(lang)
txtDescription.text = d.short_description.getCurrentName(lang) val des = d.short_description.getCurrentName(lang)
txtDescription.text = des
txtDescription.isVisible = des.isNotEmpty()
cardView.setOnClickListener(object : ButtonClick() { cardView.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
listener?.invoke(d) listener?.invoke(d)
......
...@@ -273,6 +273,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -273,6 +273,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
val intent = Intent(requireContext(), AuthActivity::class.java) val intent = Intent(requireContext(), AuthActivity::class.java)
intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.TYPE_VERIFICATION) intent.putExtra(CONSTANTS.TYPE_AUTH, CONSTANTS.TYPE_VERIFICATION)
intent.putExtra(CONSTANTS.PHONE, pref.userPhone) intent.putExtra(CONSTANTS.PHONE, pref.userPhone)
intent.putExtra(CONSTANTS.PIN_CODE, it.data)
startActivity(intent) startActivity(intent)
showProgressDialog(false) showProgressDialog(false)
} }
......
...@@ -47,7 +47,7 @@ fun Fragment.showCustomDialog(description:String,status:Boolean, block: () -> Un ...@@ -47,7 +47,7 @@ fun Fragment.showCustomDialog(description:String,status:Boolean, block: () -> Un
fun FragmentActivity.showFullScreenDialog(block: (dialog: FullScreenDialog) -> Unit){ fun FragmentActivity.showFullScreenDialog(block: (dialog: FullScreenDialog) -> Unit){
val time = SharedPref(this).blockedTime val time = SharedPref(this).blockedTime
if(time < System.currentTimeMillis() - 5000){ if(time < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME){
val fragment = supportFragmentManager.findFragmentByTag(CONSTANTS.FULL_SCREEN_DIALOG) val fragment = supportFragmentManager.findFragmentByTag(CONSTANTS.FULL_SCREEN_DIALOG)
if(fragment == null){ if(fragment == null){
val dialog = FullScreenDialog() val dialog = FullScreenDialog()
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"> android:fitsSystemWindows="true">
...@@ -10,9 +11,19 @@ ...@@ -10,9 +11,19 @@
android:id="@+id/auth_container" android:id="@+id/auth_container"
android:name="androidx.navigation.fragment.NavHostFragment" android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_weight="1"
app:defaultNavHost="true" app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph_auth" app:navGraph="@navigation/nav_graph_auth"
tools:context=".dev.ui.auth.AuthActivity"/> tools:context=".dev.ui.auth.AuthActivity"/>
<Button
android:id="@+id/btn_try_again"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginBottom="30dp"
android:text="@string/to_offline"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
...@@ -19,6 +19,14 @@ ...@@ -19,6 +19,14 @@
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" /> android:layout_weight="1" />
<Button
android:id="@+id/btn_try_again"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/try_again"
android:visibility="visible" />
<com.google.android.material.bottomnavigation.BottomNavigationView <com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav_view" android:id="@+id/bottom_nav_view"
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="false"> android:fitsSystemWindows="false">
...@@ -9,8 +10,18 @@ ...@@ -9,8 +10,18 @@
android:id="@+id/offline_container" android:id="@+id/offline_container"
android:name="androidx.navigation.fragment.NavHostFragment" android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_weight="1"
app:defaultNavHost="true" app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph_offline" /> app:navGraph="@navigation/nav_graph_offline" />
<Button
android:id="@+id/btn_try_again"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginBottom="30dp"
android:text="@string/try_again"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingEnd="6dp" android:paddingEnd="6dp"
android:src="@drawable/ic_vector_error" android:src="@drawable/ic_vector_error"
android:visibility="visible" android:visibility="gone"
app:layout_constraintEnd_toStartOf="@id/txt_check_confirm" app:layout_constraintEnd_toStartOf="@id/txt_check_confirm"
app:layout_constraintBottom_toBottomOf="@id/txt_check_confirm" app:layout_constraintBottom_toBottomOf="@id/txt_check_confirm"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm" app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
style="@style/ServicesTextStyle" style="@style/ServicesTextStyle"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="@dimen/_20sdp" android:layout_marginTop="@dimen/_20sdp"
android:text="Нет интернет соединения" /> android:text="@string/not_internet" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:gravity="center" android:gravity="center"
android:text="Проверьте интернет соединение и попробуйте снова" android:text="@string/not_internet_try_again"
android:textColor="@color/grey100" android:textColor="@color/grey100"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="26dp" android:layout_marginTop="26dp"
android:text="Доступно" android:text="@string/open"
android:textColor="@color/grey80" android:textColor="@color/grey80"
android:visibility="gone" /> android:visibility="gone" />
...@@ -75,13 +75,15 @@ ...@@ -75,13 +75,15 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_service" android:id="@+id/rv_service"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_marginHorizontal="12dp" android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_20sdp" android:layout_marginTop="@dimen/_20sdp"
android:layout_weight="1"
android:overScrollMode="never" android:overScrollMode="never"
android:scrollbars="none" android:scrollbars="none"
android:visibility="visible" android:visibility="visible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<string name="change_all_time">Измените это в любое время в настройках</string> <string name="change_all_time">Измените это в любое время в настройках</string>
<string name="skip">Пропустить</string> <string name="skip">Пропустить</string>
<string name="enter_parol">Введите пароль:</string> <string name="enter_parol">Введите пароль:</string>
<string name="min_6">Должно быть не менее 6 символов</string> <string name="min_6">Должно быть не менее 4 символов</string>
<string name="confirm_parol">Введите пароль повторно:</string> <string name="confirm_parol">Введите пароль повторно:</string>
<string name="must_same">Пароли должны совпадать</string> <string name="must_same">Пароли должны совпадать</string>
<string name="my_number">Мой номер</string> <string name="my_number">Мой номер</string>
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<string name="change_all_time">Измените это в любое время в настройках</string> <string name="change_all_time">Измените это в любое время в настройках</string>
<string name="skip">Пропустить</string> <string name="skip">Пропустить</string>
<string name="enter_parol">Введите пароль:</string> <string name="enter_parol">Введите пароль:</string>
<string name="min_6">Должно быть не менее 6 символов</string> <string name="min_6">Должно быть не менее 4 символов</string>
<string name="confirm_parol">Введите пароль повторно:</string> <string name="confirm_parol">Введите пароль повторно:</string>
<string name="must_same">Пароли должны совпадать</string> <string name="must_same">Пароли должны совпадать</string>
<string name="my_number">Мой номер</string> <string name="my_number">Мой номер</string>
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<string name="change_all_time">Измените это в любое время в настройках</string> <string name="change_all_time">Измените это в любое время в настройках</string>
<string name="skip">Пропустить</string> <string name="skip">Пропустить</string>
<string name="enter_parol">Введите пароль:</string> <string name="enter_parol">Введите пароль:</string>
<string name="min_6">Должно быть не менее 6 символов</string> <string name="min_6">Должно быть не менее 4 символов</string>
<string name="confirm_parol">Введите пароль повторно:</string> <string name="confirm_parol">Введите пароль повторно:</string>
<string name="must_same">Пароли должны совпадать</string> <string name="must_same">Пароли должны совпадать</string>
<string name="my_number">Мой номер</string> <string name="my_number">Мой номер</string>
......
...@@ -103,8 +103,8 @@ ...@@ -103,8 +103,8 @@
<string name="enter_new_password">Введите новый пароль</string> <string name="enter_new_password">Введите новый пароль</string>
<string name="enter_confirm_new_password">Для подтверждения введите новый пароль ещё раз</string> <string name="enter_confirm_new_password">Для подтверждения введите новый пароль ещё раз</string>
<string name="password_changed">Пароль изменен</string> <string name="password_changed">Пароль изменен</string>
<string name="enter_old_pin">Ведите старый PIN-код</string> <string name="enter_old_pin">Введите старый PIN-код</string>
<string name="forget_pin">Забыл PIN?</string> <string name="forget_pin">Забыли PIN?</string>
<string name="enter_new_pin">Введите новый PIN-код</string> <string name="enter_new_pin">Введите новый PIN-код</string>
<string name="confirm_new_pin">Подтвердите PIN-код</string> <string name="confirm_new_pin">Подтвердите PIN-код</string>
<string name="wrong_pin">Неверный PIN-код</string> <string name="wrong_pin">Неверный PIN-код</string>
...@@ -132,5 +132,13 @@ ...@@ -132,5 +132,13 @@
<string name="title_home">Home</string> <string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string> <string name="title_dashboard">Dashboard</string>
<string name="title_notifications">Notifications</string> <string name="title_notifications">Notifications</string>
<string name="not_internet">Нет интернет соединения</string>
<string name="not_internet_try_again">Проверьте интернет соединение и попробуйте снова</string>
<string name="open">Доступно</string>
<string name="send">Отправить</string>
<string name="try_again">Повторить подключение</string>
<string name="to_offline">Перейти в офлайн режим</string>
<string name="not_internet_connect">Отсутствует активное подключение</string>
<string name="yes_internet_connect">Интернет соединение восстановлено</string>
</resources> </resources>
\ No newline at end of file
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
<item name="android:statusBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentStatus">true</item>
<item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item> <item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item>
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
<!-- Secondary brand color. --> <!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item> <item name="colorSecondary">@color/teal_200</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