Commit a38cff28 authored by shohboz's avatar shohboz

[UPD] MUS-350 Feature, updated navigate to offline from button to dialog

parent 1116ccfd
...@@ -41,6 +41,10 @@ android { ...@@ -41,6 +41,10 @@ android {
buildFeatures { buildFeatures {
viewBinding true viewBinding true
} }
lintOptions {
checkReleaseBuilds false
}
} }
repositories { repositories {
......
...@@ -38,12 +38,6 @@ class BillingFragment : BaseFragment(R.layout.fragment_billing) { ...@@ -38,12 +38,6 @@ class BillingFragment : BaseFragment(R.layout.fragment_billing) {
navController.navigateUp() navController.navigateUp()
} }
AGRBilling.hasCards().subscribe({
showMessage("Has Cards")
}, {
showMessage("No Card")
}).dispose()
savedCards.setOnClickListener { savedCards.setOnClickListener {
getPhoneNumber(object : LoadPhoneNumber { getPhoneNumber(object : LoadPhoneNumber {
override fun invoke(phoneNumber: String) { override fun invoke(phoneNumber: String) {
......
package com.mobiuz.app.dev.di package com.mobiuz.app.dev.di
import android.content.Context import android.content.Context
import android.content.Intent
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.api.ApiService import com.mobiuz.app.dev.network.api.ApiService
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.readystatesoftware.chuck.ChuckInterceptor import com.readystatesoftware.chuck.ChuckInterceptor
import dagger.Module import dagger.Module
...@@ -39,25 +41,27 @@ class ServerModule { ...@@ -39,25 +41,27 @@ class ServerModule {
@Provides @Provides
@Singleton @Singleton
fun getClient(@ApplicationContext context: Context, sharedPref: SharedPref): OkHttpClient = OkHttpClient.Builder() fun getClient(@ApplicationContext context: Context, sharedPref: SharedPref): OkHttpClient{
.connectTimeout(60, java.util.concurrent.TimeUnit.SECONDS) return OkHttpClient.Builder()
.readTimeout(60, java.util.concurrent.TimeUnit.SECONDS) .connectTimeout(60, java.util.concurrent.TimeUnit.SECONDS)
.addInterceptor( .readTimeout(60, java.util.concurrent.TimeUnit.SECONDS)
ChuckInterceptor(context) .addInterceptor(
) ChuckInterceptor(context)
.addInterceptor(HttpLoggingInterceptor().apply { )
level = HttpLoggingInterceptor.Level.BODY .addInterceptor(HttpLoggingInterceptor().apply {
}) level = HttpLoggingInterceptor.Level.BODY
.addInterceptor(Interceptor { chain -> })
val builder = chain.request().newBuilder() .addInterceptor(Interceptor { chain ->
builder.header("Content-Type", "application/x-www-form-urlencoded") val builder = chain.request().newBuilder()
builder.header("Lang", sharedPref.language) builder.header("Content-Type", "application/x-www-form-urlencoded")
builder.header("device-id", sharedPref.deviceToken ?: Utils.getDeviceName()) builder.header("Lang", sharedPref.language)
builder.header("Accept", "application/json") builder.header("device-id", sharedPref.deviceToken ?: Utils.getDeviceName())
builder.header("Authorization", "Bearer ${sharedPref.userToken}") builder.header("Accept", "application/json")
chain.proceed(builder.build()) builder.header("Authorization", "Bearer ${sharedPref.userToken}")
}) chain.proceed(builder.build())
.build() })
.build()
}
} }
\ No newline at end of file
...@@ -87,6 +87,11 @@ class AuthActivity : AppCompatActivity() { ...@@ -87,6 +87,11 @@ class AuthActivity : AppCompatActivity() {
receiver = object : BroadcastReceiver(){ receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE){
showOfflineBottomSheetDialog()
}
if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE){ if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE){
type = NetworkUtil.getConnectivityStatus(this@AuthActivity) type = NetworkUtil.getConnectivityStatus(this@AuthActivity)
if((type == 0) && (navController.currentDestination?.id != R.id.pinFragment) if((type == 0) && (navController.currentDestination?.id != R.id.pinFragment)
...@@ -97,6 +102,7 @@ class AuthActivity : AppCompatActivity() { ...@@ -97,6 +102,7 @@ class AuthActivity : AppCompatActivity() {
} }
intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE) intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE)
intentFilter.addAction(CONSTANTS.MY_CONNECTIVITY_CHANGE)
registerReceiver(receiver,intentFilter) registerReceiver(receiver,intentFilter)
} }
......
package com.mobiuz.app.dev.ui.auth.check package com.mobiuz.app.dev.ui.auth.check
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.telephony.PhoneNumberFormattingTextWatcher import android.telephony.PhoneNumberFormattingTextWatcher
import android.text.Editable import android.text.Editable
...@@ -20,11 +21,9 @@ import com.mobiuz.app.dev.ui.base.BaseFragment ...@@ -20,11 +21,9 @@ import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
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.checkChangedPosition import com.mobiuz.app.dev.utils.extensions.*
import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.maskedTextMobi
import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.hideKeyboard import com.mobiuz.app.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
...@@ -95,7 +94,11 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) { ...@@ -95,7 +94,11 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
phone.length < 13 -> { phone.length < 13 -> {
inputPhone.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake)) inputPhone.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.shake))
} }
else -> viewModel.checkPhone(UserAuth(phone.replace("+", ""))) else ->{
if(checkInternet()){
viewModel.checkPhone(UserAuth(phone.replace("+", "")))
}
}
} }
} }
......
...@@ -24,6 +24,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick ...@@ -24,6 +24,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.checkInternet
import com.mobiuz.app.dev.utils.extensions.makeLinks import com.mobiuz.app.dev.utils.extensions.makeLinks
import com.mobiuz.app.dev.utils.extensions.showCustomDialog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.hideKeyboard import com.mobiuz.app.dev.utils.hideKeyboard
...@@ -99,7 +100,10 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) { ...@@ -99,7 +100,10 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
) )
} }
else -> { else -> {
viewModel.login(UserAuth(phone.filter { it.isDigit() }, password)) if(checkInternet()){
viewModel.login(UserAuth(phone.filter { it.isDigit() }, password))
}
} }
} }
......
...@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick ...@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.checkInternet
import com.mobiuz.app.dev.utils.extensions.getColorCompat import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.makeLinks import com.mobiuz.app.dev.utils.extensions.makeLinks
import com.mobiuz.app.dev.utils.extensions.showCustomDialog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
...@@ -135,11 +136,14 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) { ...@@ -135,11 +136,14 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
password = inputPassword.text.toString().trim() password = inputPassword.text.toString().trim()
confirmPassword = inputConfirm.text.toString().trim() confirmPassword = inputConfirm.text.toString().trim()
if(password == confirmPassword){ if(password == confirmPassword){
if (type == CONSTANTS.TYPE_FORGET) { if(checkInternet()){
viewModel.resetPassword(UserAuth(phone.filter { it.isDigit() }, password, code)) if (type == CONSTANTS.TYPE_FORGET) {
} else { viewModel.resetPassword(UserAuth(phone.filter { it.isDigit() }, password, code))
viewModel.register(UserAuth(phone.filter { it.isDigit() }, password)) } else {
viewModel.register(UserAuth(phone.filter { it.isDigit() }, password))
}
} }
} }
} }
......
...@@ -2,7 +2,7 @@ package com.mobiuz.app.dev.ui.global ...@@ -2,7 +2,7 @@ package com.mobiuz.app.dev.ui.global
object CONSTANTS { object CONSTANTS {
const val BASE_URL = "http://10.160.45.60/api/v1/" const val BASE_URL = "https://mobileapp.mobi.uz/api/v1/"
//languages //languages
const val RU = "ru" const val RU = "ru"
...@@ -16,17 +16,17 @@ object CONSTANTS { ...@@ -16,17 +16,17 @@ object CONSTANTS {
const val TERMS_OF_USE = "Terms of Use" const val TERMS_OF_USE = "Terms of Use"
const val PRIVACY_POLICY = "Privacy Policy" const val PRIVACY_POLICY = "Privacy Policy"
const val LICENSE_UZ = "http://10.160.45.60/uploads/licenses/license_uz.html" const val LICENSE_UZ = "https://mobileapp.mobi.uz/uploads/licenses/license_uz.html"
const val LICENSE_RU = "http://10.160.45.60/uploads/licenses/license_ru.html" const val LICENSE_RU = "https://mobileapp.mobi.uz/uploads/licenses/license_ru.html"
const val LICENSE_EN = "http://10.160.45.60/uploads/licenses/license_en.html" const val LICENSE_EN = "https://mobileapp.mobi.uz/uploads/licenses/license_en.html"
const val PRIVACY_POLICY_UZ = "http://10.160.45.60/uploads/privacy/privacy_policy_uz.html" const val PRIVACY_POLICY_UZ = "https://mobileapp.mobi.uz/uploads/privacy/privacy_policy_uz.html"
const val PRIVACY_POLICY_RU = "http://10.160.45.60/uploads/privacy/privacy_policy_ru.html" const val PRIVACY_POLICY_RU = "https://mobileapp.mobi.uz/uploads/privacy/privacy_policy_ru.html"
const val PRIVACY_POLICY_EN = "http://10.160.45.60/uploads/privacy/privacy_policy_en.html" const val PRIVACY_POLICY_EN = "https://mobileapp.mobi.uz/uploads/privacy/privacy_policy_en.html"
const val PAYSYS_LICENSE_UZ = "http://10.160.45.60/uploads/paysys/license_uz.html" const val PAYSYS_LICENSE_UZ = "https://mobileapp.mobi.uz/uploads/paysys/license_uz.html"
const val PAYSYS_LICENSE_RU = "http://10.160.45.60/uploads/paysys/license_ru.html" const val PAYSYS_LICENSE_RU = "https://mobileapp.mobi.uz/uploads/paysys/license_ru.html"
const val PAYSYS_LICENSE_EN = "http://10.160.45.60/uploads/paysys/license_en.html" const val PAYSYS_LICENSE_EN = "https://mobileapp.mobi.uz/uploads/paysys/license_en.html"
const val PHONE1 = "0890" const val PHONE1 = "0890"
const val PHONE2 = "+998 97 130 09 09" const val PHONE2 = "+998 97 130 09 09"
......
...@@ -65,7 +65,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -65,7 +65,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentHomeBinding.bind(view) _bn = FragmentHomeBinding.bind(view)
isFirstProgressing = true
requireActivity().window.decorView.systemUiVisibility = View.VISIBLE requireActivity().window.decorView.systemUiVisibility = View.VISIBLE
setUpUI() setUpUI()
collects() collects()
...@@ -101,7 +101,10 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -101,7 +101,10 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
btnAddSum.setOnClickListener { btnAddSum.setOnClickListener {
pref.isShowPin = false pref.isShowPin = false
navController.navigate(R.id.billingFragment) if(checkInternet()){
navController.navigate(R.id.billingFragment)
}
} }
val number = pref.userPhone.customMasketHome().replace("-", " ") val number = pref.userPhone.customMasketHome().replace("-", " ")
...@@ -117,8 +120,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { ...@@ -117,8 +120,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
lastUpdateTime = System.currentTimeMillis() lastUpdateTime = System.currentTimeMillis()
} }
if (fromStart && overScrolledDistance > 140.52632 && (lastUpdateTime < System.currentTimeMillis() - 2000)) { if (fromStart && overScrolledDistance > 140.52632 && (lastUpdateTime < System.currentTimeMillis() - 2000)) {
vibrate(requireContext())
viewModel.mainIndex() if(checkInternet()){
viewModel.mainIndex()
vibrate(requireContext())
}
lastUpdateTime = System.currentTimeMillis() lastUpdateTime = System.currentTimeMillis()
} }
......
...@@ -22,6 +22,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick ...@@ -22,6 +22,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.checkInternet
import com.mobiuz.app.dev.utils.extensions.getColorCompat import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.showCustomDialog import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.extensions.showMessage import com.mobiuz.app.dev.utils.extensions.showMessage
...@@ -136,35 +137,38 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) { ...@@ -136,35 +137,38 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
} }
else -> { else -> {
bn.btnLogin.hideKeyboard() bn.btnLogin.hideKeyboard()
when (type) { if(checkInternet()){
CONSTANTS.CURRENT_PASSWORD -> { when (type) {
oldPassword = password CONSTANTS.CURRENT_PASSWORD -> {
viewModel.checkPassword(UserAuth(password = oldPassword)) oldPassword = password
} viewModel.checkPassword(UserAuth(password = oldPassword))
CONSTANTS.NEW_PASSWORD -> {
if (oldPassword == password) {
showMessage(getString(R.string.cannot_change_password))
} else {
navController.navigate(
R.id.changePasswordFragment,
bundleOf(
CONSTANTS.TYPE_PASSWORD to CONSTANTS.CONFIRM_NEW_PASSWORD,
CONSTANTS.OLD_PASSWORD to oldPassword,
CONSTANTS.LATEST_PASSWORD to password,
), Utils.navOptions()
)
} }
} CONSTANTS.NEW_PASSWORD -> {
if (oldPassword == password) {
showMessage(getString(R.string.cannot_change_password))
} else {
navController.navigate(
R.id.changePasswordFragment,
bundleOf(
CONSTANTS.TYPE_PASSWORD to CONSTANTS.CONFIRM_NEW_PASSWORD,
CONSTANTS.OLD_PASSWORD to oldPassword,
CONSTANTS.LATEST_PASSWORD to password,
), Utils.navOptions()
)
}
CONSTANTS.CONFIRM_NEW_PASSWORD -> { }
if (newPassword == password) {
viewModel.changePassword(ChangePassword(oldPassword, newPassword)) CONSTANTS.CONFIRM_NEW_PASSWORD -> {
if (newPassword == password) {
viewModel.changePassword(ChangePassword(oldPassword, newPassword))
}
} }
} }
} }
} }
} }
......
...@@ -2,6 +2,7 @@ package com.mobiuz.app.dev.utils.extensions ...@@ -2,6 +2,7 @@ package com.mobiuz.app.dev.utils.extensions
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Vibrator import android.os.Vibrator
import android.text.* import android.text.*
...@@ -23,11 +24,13 @@ import com.google.gson.JsonSyntaxException ...@@ -23,11 +24,13 @@ import com.google.gson.JsonSyntaxException
import com.mobiuz.app.R import com.mobiuz.app.R
import com.mobiuz.app.dev.model.SharedPref import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.Translate import com.mobiuz.app.dev.model.Translate
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.Errors import com.mobiuz.app.dev.network.model.Errors
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.ExitDialog import com.mobiuz.app.dev.ui.global.ExitDialog
import com.mobiuz.app.dev.ui.global.OfflineBottomSheet import com.mobiuz.app.dev.ui.global.OfflineBottomSheet
import com.mobiuz.app.dev.ui.global.SenderDialog import com.mobiuz.app.dev.ui.global.SenderDialog
import com.mobiuz.app.dev.utils.NetworkUtil
import retrofit2.HttpException import retrofit2.HttpException
import java.io.IOException import java.io.IOException
import java.net.ConnectException import java.net.ConnectException
...@@ -58,7 +61,8 @@ fun String.getDateTime(): String? { ...@@ -58,7 +61,8 @@ fun String.getDateTime(): String? {
} }
fun FragmentActivity.showOfflineBottomSheetDialog(){ fun FragmentActivity.showOfflineBottomSheetDialog(){
OfflineBottomSheet().show(supportFragmentManager,CONSTANTS.FULL_SCREEN_DIALOG) val fragment = supportFragmentManager.findFragmentByTag(CONSTANTS.FULL_SCREEN_DIALOG)
if(fragment == null) OfflineBottomSheet().show(supportFragmentManager,CONSTANTS.FULL_SCREEN_DIALOG)
} }
fun Activity.showMessage(message: String) { fun Activity.showMessage(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show() Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
...@@ -189,6 +193,16 @@ fun FragmentActivity.showCustomDialog(string: String, status: Boolean, block: () ...@@ -189,6 +193,16 @@ fun FragmentActivity.showCustomDialog(string: String, status: Boolean, block: ()
dialog.show(supportFragmentManager, "supportFragmentManager") dialog.show(supportFragmentManager, "supportFragmentManager")
} }
fun Fragment.checkInternet():Boolean{
val type = NetworkUtil.getConnectivityStatus(context)
return if(type == 0){
requireActivity().sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
false
}else{
true
}
}
typealias SingleBlock<T> = (T) -> Unit typealias SingleBlock<T> = (T) -> Unit
typealias MultiBlock<T, K> = (T, K) -> Unit typealias MultiBlock<T, K> = (T, K) -> Unit
typealias ThreeBlock<T, K, M> = (T, K, M) -> Unit typealias ThreeBlock<T, K, M> = (T, K, M) -> Unit
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
android:background="@drawable/edit_text_bgn" android:background="@drawable/edit_text_bgn"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="24dp"
android:layout_marginBottom="@dimen/_16sdp" android:layout_marginBottom="@dimen/_16sdp"
android:paddingVertical="12dp" android:paddingVertical="16dp"
android:text="@string/close_process" android:text="@string/close_process"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
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