Commit c9b38e0f authored by shohboz's avatar shohboz

[UPD] MUS-261 Feature, updated block app and changed projectId and motion test

parent ae54b133
......@@ -16,7 +16,7 @@ android {
}
defaultConfig {
applicationId "com.mobiuz.app"
applicationId "uz.mobiuz.mobiservice.dev"
minSdk 21
targetSdk 31
versionCode 1
......@@ -313,4 +313,7 @@ dependencies {
//cache fragment
implementation 'com.jakewharton:process-phoenix:2.1.2'
implementation 'xyz.peridy.shimmer:shimmerlayout:1.1'
implementation 'com.facebook.shimmer:shimmer:0.5.0'
}
\ No newline at end of file
......@@ -9,7 +9,7 @@
"client_info": {
"mobilesdk_app_id": "1:453497477762:android:57da19692a77341ae9b29b",
"android_client_info": {
"package_name": "com.mobiuz.app"
"package_name": "uz.mobiuz.mobiservice"
}
},
"oauth_client": [
......@@ -17,7 +17,7 @@
"client_id": "453497477762-t0b1iqi4k3t8s49mm7eco951kpdr4eta.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.mobiuz.app",
"package_name": "uz.mobiuz.mobiservice",
"certificate_hash": "0259d09452724d02cca3c034973f523c2485a232"
}
},
......@@ -46,7 +46,7 @@
"client_info": {
"mobilesdk_app_id": "1:453497477762:android:4e22d841473f89a3e9b29b",
"android_client_info": {
"package_name": "com.mobiuz.app.dev"
"package_name": "uz.mobiuz.mobiservice.dev"
}
},
"oauth_client": [
......@@ -54,7 +54,7 @@
"client_id": "453497477762-okn4u5uhp9mq1j85ckqds7bhieo4sbu6.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.mobiuz.app.dev",
"package_name": "uz.mobiuz.mobiservice.dev",
"certificate_hash": "0259d09452724d02cca3c034973f523c2485a232"
}
},
......
package com.mobiuz.app
package uz.mobiuz.mobiservice
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.mobiuz.app">
package="uz.mobiuz.mobiservice.dev">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
......@@ -13,7 +13,7 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:name=".dev.app.App"
android:name=".app.App"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
......@@ -25,12 +25,12 @@
android:usesCleartextTraffic="true"
tools:targetApi="m">
<activity
android:name=".dev.TestActivity"
android:name=".TestActivity"
android:exported="true" >
</activity>
<activity
android:name=".dev.SplashActivity"
android:name=".SplashActivity"
android:configChanges="orientation"
android:exported="true"
android:screenOrientation="portrait"
......@@ -42,25 +42,25 @@
</intent-filter>
</activity>
<activity
android:name=".dev.LanguageActivity"
android:name=".LanguageActivity"
android:configChanges="orientation"
android:exported="false"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".dev.OfflineActivity"
android:name=".OfflineActivity"
android:configChanges="orientation"
android:exported="false"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".dev.MainActivity"
android:name=".MainActivity"
android:configChanges="orientation"
android:exported="false"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".dev.ui.auth.AuthActivity"
android:name=".ui.auth.AuthActivity"
android:configChanges="orientation"
android:exported="false"
android:screenOrientation="portrait"
......
package com.mobiuz.app.dev
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.mobiuz.app.R
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class TestActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
}
}
\ No newline at end of file
package com.mobiuz.app.dev
package uz.mobiuz.mobiservice.dev
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import com.mobiuz.app.databinding.ActivityLanguageBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import dagger.hilt.android.AndroidEntryPoint
import uz.agr.mobiuz.AGRBilling
import uz.mobiuz.mobiservice.dev.databinding.ActivityLanguageBinding
import javax.inject.Inject
@AndroidEntryPoint
......
package com.mobiuz.app.dev
package uz.mobiuz.mobiservice.dev
import android.content.BroadcastReceiver
import android.content.Context
......@@ -21,21 +21,19 @@ 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
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import uz.mobiuz.mobiservice.dev.databinding.ActivityMainBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.LocaleHelper
import uz.mobiuz.mobiservice.dev.utils.NetworkUtil
import uz.mobiuz.mobiservice.dev.utils.extensions.*
import javax.inject.Inject
......@@ -53,6 +51,7 @@ class MainActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels()
private lateinit var receiver: BroadcastReceiver
private val intentFilter = IntentFilter()
private var isFirstRunning = true
// if offline type == 0
private var type = 0
......@@ -64,13 +63,12 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
_bn = ActivityMainBinding.inflate(layoutInflater)
setContentView(bn.root)
pref.isShowPin = false
pref.isShowPin = true
if (savedInstanceState == null) {
setupBottomNavigationBar()
}
val data = intent?.getStringExtra(CONSTANTS.FIRST)
if (data != null && data == CONSTANTS.FIRST) {
currentNavController?.value?.popBackStack()
......@@ -89,12 +87,17 @@ class MainActivity : AppCompatActivity() {
receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE){
if (intent?.action == CONSTANTS.UNAUTHORIZED) {
pref.clearUserData()
startActivity(Intent(this@MainActivity, AuthActivity::class.java))
finish()
}
if (intent?.action == CONSTANTS.CONNECTIVITY_CHANGE) {
sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
}
if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE){
if (intent?.action == CONSTANTS.MY_CONNECTIVITY_CHANGE) {
type = NetworkUtil.getConnectivityStatus(this@MainActivity)
// bn.btnTryAgain.isVisible =
if ((type == 0) && (currentNavController?.value?.currentDestination?.id != R.id.pinFragment)) {
showOfflineBottomSheetDialog()
}
......@@ -103,19 +106,14 @@ class MainActivity : AppCompatActivity() {
}
intentFilter.addAction(CONSTANTS.CONNECTIVITY_CHANGE)
intentFilter.addAction(CONSTANTS.UNAUTHORIZED)
intentFilter.addAction(CONSTANTS.MY_CONNECTIVITY_CHANGE)
registerReceiver(receiver, intentFilter)
}
private fun setUpUI() {
bn.apply {
bn.btnTryAgain.setOnClickListener {
if (type == 0) {
navigateToOffline()
}
}
txtVersion.text = "v ${BuildConfig.VERSION_NAME}"
header.txtUserPhone.text = pref.userPhone.customMasketHome()
......@@ -164,29 +162,25 @@ class MainActivity : AppCompatActivity() {
}
})
txtRedactData.setOnClickListener {
navigateUri(when(pref.language){
navigateUri(
when (pref.language) {
CONSTANTS.UZ -> CONSTANTS.LICENSE_UZ
CONSTANTS.RU -> CONSTANTS.LICENSE_RU
else -> CONSTANTS.LICENSE_EN
})
}
)
}
txtPublicOferta.setOnClickListener {
navigateUri(when(pref.language){
navigateUri(
when (pref.language) {
CONSTANTS.UZ -> CONSTANTS.PRIVACY_POLICY_UZ
CONSTANTS.RU -> CONSTANTS.PRIVACY_POLICY_RU
else -> CONSTANTS.PRIVACY_POLICY_EN
})
}
)
}
}
private fun navigateToOffline() {
val intent = Intent(this, OfflineActivity::class.java)
intent.putExtra(CONSTANTS.TYPE_SERVICE, CONSTANTS.FROM_ONLINE)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME
startActivity(intent)
finish()
}
private fun navigateUri(link: String) {
......@@ -206,6 +200,7 @@ class MainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
if (!isFirstRunning) {
if (pref.isShowPin) {
showPinCode()
} else {
......@@ -213,12 +208,15 @@ class MainActivity : AppCompatActivity() {
pref.isShowPin = true
}
}
isFirstRunning = false
}
private fun showPinCode() {
if(pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME){
if (pref.blockedTime < System.currentTimeMillis() - CONSTANTS.BLOCKED_TIME) {
if (currentNavController?.value?.currentDestination?.id != R.id.pinFragment &&
currentNavController?.value?.currentDestination?.id != R.id.ussdFragment){
bn.btnTryAgain.isVisible = false
currentNavController?.value?.currentDestination?.id != R.id.ussdFragment
) {
currentNavController?.value?.navigate(R.id.pinFragment, bundleOf(CONSTANTS.TYPE_PIN to CONSTANTS.TYPE_AFTER))
}
}
......@@ -312,6 +310,7 @@ class MainActivity : AppCompatActivity() {
override fun onDestroy() {
_bn = null
pref.blockedTime = 0
unregisterReceiver(receiver)
super.onDestroy()
}
......
package com.mobiuz.app.dev
package uz.mobiuz.mobiservice.dev
import android.content.BroadcastReceiver
import android.content.Context
......@@ -13,23 +13,19 @@ import androidx.core.view.GravityCompat
import androidx.core.view.isVisible
import androidx.drawerlayout.widget.DrawerLayout
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.mobiuz.app.BuildConfig
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentMainBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.global.ButtonClick
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.extensions.*
import uz.mobiuz.mobiservice.dev.databinding.FragmentMainBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.collect
......@@ -48,22 +44,20 @@ class MainFragment : Fragment(R.layout.fragment_main) {
private lateinit var bottomNavigationView: BottomNavigationView
private var currentNavController: LiveData<NavController>? = null
private val viewModel: MainViewModel by viewModels()
private lateinit var viewModel: MainViewModel
private lateinit var receiver: BroadcastReceiver
private val intentFilter = IntentFilter()
private val bottomNavSelectedItemIdKey = "BOTTOM_NAV_SELECTED_ITEM_ID_KEY"
private var bottomNavSelectedItemId = R.id.nav_graph_home // Must be your starting destination
private val navController : NavController by lazy (LazyThreadSafetyMode.NONE){ NavHostFragment.findNavController(this) }
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
// if offline type == 0
private var type = 0
override fun onCreate(savedInstanceState: Bundle?) {
// LocaleHelper.setLocale(this)
super.onCreate(savedInstanceState)
// _bn = ActivityMainBinding.inflate(layoutInflater)
// setContentView(bn.root)
viewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
}
......@@ -92,8 +86,8 @@ class MainFragment : Fragment(R.layout.fragment_main) {
receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == CONSTANTS.INTENT_ACTION_NAVIGATE){
val id = intent.getIntExtra(CONSTANTS.FRAGMENT_ID,0)
if (intent?.action == CONSTANTS.INTENT_ACTION_NAVIGATE) {
val id = intent.getIntExtra(CONSTANTS.FRAGMENT_ID, 0)
customLog("INTENT_ACTION_NAVIGATE: id: $id")
navController.navigate(id)
}
......@@ -101,7 +95,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
}
}
intentFilter.addAction(CONSTANTS.INTENT_ACTION_NAVIGATE)
// intentFilter.addAction(CONSTANTS.INTENT_ACTION_NAVIGATE)
requireActivity().registerReceiver(receiver, intentFilter)
}
......@@ -181,6 +175,18 @@ class MainFragment : Fragment(R.layout.fragment_main) {
}
)
}
// lifecycleScope.launchWhenCreated {
// viewModel.navigateUiState.collect {
// when (it) {
// is UiStateObject.SUCCESS -> {
// bn.drawerLayout.openDrawer(GravityCompat.START)
// }
// else -> Unit
// }
// }
// }
}
}
......@@ -210,7 +216,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
override fun onResume() {
super.onResume()
if (pref.isShowPin) {
showPinCode()
// showPinCode()
} else {
pref.blockedTime = System.currentTimeMillis()
pref.isShowPin = true
......
package com.mobiuz.app.dev
package uz.mobiuz.mobiservice.dev
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.network.repository.MainRepository
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.network.repository.MainRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
......
package com.mobiuz.app.dev
package uz.mobiuz.mobiservice.dev
import android.content.BroadcastReceiver
import android.content.Context
......@@ -10,16 +10,15 @@ import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityOfflineBinding
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.service.ServicesAdapter
import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.databinding.ActivityOfflineBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.service.ServicesAdapter
import uz.mobiuz.mobiservice.dev.utils.LocaleHelper
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint
import uz.mobiuz.mobiservice.dev.utils.NetworkUtil
import javax.inject.Inject
......
package com.mobiuz.app.dev
package uz.mobiuz.mobiservice.dev
import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.graphics.Rect
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.Window
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
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
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.customLog
import com.mobiuz.app.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.databinding.ActivitySplashBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
import java.lang.RuntimeException
import uz.mobiuz.mobiservice.dev.utils.NetworkUtil
import javax.inject.Inject
@SuppressLint("CustomSplashScreen")
......@@ -61,7 +54,7 @@ class SplashActivity : AppCompatActivity() {
startActivity(Intent(this@SplashActivity, OfflineActivity::class.java))
finish()
}
}else {
} else {
bn.btnTryAgain.isVisible = true
}
} else {
......@@ -100,7 +93,6 @@ class SplashActivity : AppCompatActivity() {
}
fun navigate() {
when {
pref.language.isEmpty() -> {
......
package uz.mobiuz.mobiservice.dev
import android.os.Bundle
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import uz.mobiuz.mobiservice.dev.databinding.ActivityTestBinding
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class TestActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels()
private var _bn: ActivityTestBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivityTestBinding.inflate(layoutInflater)
setContentView(bn.root)
val fragment = supportFragmentManager.findFragmentById(R.id.test_container) as NavHostFragment
navController = NavHostFragment.findNavController(fragment)
collects()
}
private fun collects() {
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev.app
package uz.mobiuz.mobiservice.dev.app
import android.content.Context
import androidx.multidex.MultiDex
import androidx.multidex.MultiDexApplication
import com.mobiuz.app.BuildConfig
import com.mobiuz.app.dev.utils.LocaleHelper
import uz.mobiuz.mobiservice.dev.BuildConfig
import uz.mobiuz.mobiservice.dev.utils.LocaleHelper
import dagger.hilt.android.HiltAndroidApp
import ru.terrakok.cicerone.Router
import timber.log.Timber
......
package com.mobiuz.app.dev.di
package uz.mobiuz.mobiservice.dev.di
import dagger.Module
import dagger.hilt.InstallIn
......
package com.mobiuz.app.dev.di
package uz.mobiuz.mobiservice.dev.di
import dagger.Module
import dagger.hilt.InstallIn
......
package com.mobiuz.app.dev.di
package uz.mobiuz.mobiservice.dev.di
import android.content.Context
import android.content.Intent
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.api.ApiService
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.api.ApiService
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.Utils
import com.readystatesoftware.chuck.ChuckInterceptor
import dagger.Module
import dagger.Provides
......@@ -42,9 +40,11 @@ class ServerModule {
@Provides
@Singleton
fun getClient(@ApplicationContext context: Context, sharedPref: SharedPref): OkHttpClient{
return OkHttpClient.Builder()
.connectTimeout(60, java.util.concurrent.TimeUnit.SECONDS)
.readTimeout(60, java.util.concurrent.TimeUnit.SECONDS)
.addInterceptor(
ChuckInterceptor(context)
)
......
package com.mobiuz.app.dev.model
package uz.mobiuz.mobiservice.dev.model
data class PinData(
var count: Int = -1
......
package com.mobiuz.app.dev.model
package uz.mobiuz.mobiservice.dev.model
data class ServiceData (
val id:Int,
......
package com.mobiuz.app.dev.model
package uz.mobiuz.mobiservice.dev.model
import android.content.Context
import android.content.SharedPreferences
import com.mobiuz.app.dev.ui.global.CONSTANTS
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
......
package com.mobiuz.app.dev.model
package uz.mobiuz.mobiservice.dev.model
data class UserAuth(
val phone: String? = null,
......
package com.mobiuz.app.dev.network.api
package uz.mobiuz.mobiservice.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 uz.mobiuz.mobiservice.dev.model.ServiceData
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.*
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import retrofit2.http.Body
import retrofit2.http.POST
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class Action(
var action: String = ""
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class ChangePassword(
val old_password:String,
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class Customer(
val events:List<Events>,
......@@ -9,7 +9,7 @@ data class CustomerData(
var info: CustomerInfo?,
var name: String,
val tariff:TarifCodeName?,
var date_of_birth: String
var date_of_birth: String?
)
data class TarifCodeName(
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class Errors(
var key: String,
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class Events(
val id:Int,
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class GenerateToken(
var token: String
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class Response(
var status: Boolean,
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
class ResponseList<T>(
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
class ResponseObject<T>(
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
data class Roaming(
val name: String?
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
sealed class UiStateList<out T> {
......
package com.mobiuz.app.dev.network.model
package uz.mobiuz.mobiservice.dev.network.model
sealed class UiStateObject<out T> {
data class SUCCESS<out T>(val data: T) : UiStateObject<T>()
......
package com.mobiuz.app.dev.network.repository
package uz.mobiuz.mobiservice.dev.network.repository
import android.content.Context
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.api.ApiService
import com.mobiuz.app.dev.network.model.Action
import com.mobiuz.app.dev.network.model.ChangePassword
import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.utils.extensions.getMessage
import com.mobiuz.app.dev.utils.extensions.userMessage
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.api.ApiService
import uz.mobiuz.mobiservice.dev.network.model.Action
import uz.mobiuz.mobiservice.dev.network.model.ChangePassword
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.utils.extensions.getMessage
import uz.mobiuz.mobiservice.dev.utils.extensions.userMessage
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
......
package com.mobiuz.app.dev.network.repository
package uz.mobiuz.mobiservice.dev.network.repository
import android.content.Context
import com.google.gson.Gson
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.api.ApiService
import com.mobiuz.app.dev.network.model.ChangePassword
import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.network.model.Roaming
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.utils.extensions.getMessage
import com.mobiuz.app.dev.utils.extensions.userMessage
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.api.ApiService
import uz.mobiuz.mobiservice.dev.network.model.Customer
import uz.mobiuz.mobiservice.dev.network.model.Roaming
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.utils.extensions.getMessage
import uz.mobiuz.mobiservice.dev.utils.extensions.userMessage
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import retrofit2.HttpException
import uz.agr.mobiuz.AGRBilling
import javax.inject.Inject
import javax.inject.Singleton
......
package com.mobiuz.app.dev.ui.auth
package uz.mobiuz.mobiservice.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.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.firebase.FirebaseApp
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.messaging.FirebaseMessaging
import com.mobiuz.app.R
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.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.LocaleHelper
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.showMessage
import com.mobiuz.app.dev.utils.extensions.showOfflineBottomSheetDialog
import uz.mobiuz.mobiservice.dev.OfflineActivity
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.ActivityAuthBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.LocaleHelper
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.showOfflineBottomSheetDialog
import dagger.hilt.android.AndroidEntryPoint
import uz.mobiuz.mobiservice.dev.utils.NetworkUtil
import javax.inject.Inject
@AndroidEntryPoint
......
package com.mobiuz.app.dev.ui.auth
package uz.mobiuz.mobiservice.dev.ui.auth
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.Action
import com.mobiuz.app.dev.network.model.ChangePassword
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.network.repository.AuthRepository
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.Action
import uz.mobiuz.mobiservice.dev.network.model.ChangePassword
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.network.repository.AuthRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.auth.biometric
package uz.mobiuz.mobiservice.dev.ui.auth.biometric
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentBiometricBinding
import com.mobiuz.app.dev.MainActivity
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.MainActivity
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentBiometricBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.extensions.getColorCompat
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.auth.check
package uz.mobiuz.mobiservice.dev.ui.auth.check
import android.content.Intent
import android.os.Bundle
import android.telephony.PhoneNumberFormattingTextWatcher
import android.text.Editable
import android.view.View
import android.view.animation.AnimationUtils
import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentCheckPhoneBinding
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
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.NetworkUtil
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.*
import com.mobiuz.app.dev.utils.hideKeyboard
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentCheckPhoneBinding
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthViewModel
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.global.TextWatcherWrapper
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.*
import uz.mobiuz.mobiservice.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
......@@ -74,7 +69,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
super.onTextChanged(s, start, before, count)
try {
inputPhone.removeTextChangedListener(this)
newText = s.toString().replace(" ","").maskedTextMobi()
newText = s.toString().filter { it.isDigit() }.maskedTextMobi()
inputPhone.setText(newText)
inputPhone.setSelection(oldText.checkChangedPosition(newText))
inputPhone.addTextChangedListener(this)
......
package com.mobiuz.app.dev.ui.auth.login
package uz.mobiuz.mobiservice.dev.ui.auth.login
import android.content.Intent
import android.net.Uri
......@@ -9,19 +9,19 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentLoginBinding
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
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.checkInternet
import com.mobiuz.app.dev.utils.extensions.makeLinks
import com.mobiuz.app.dev.utils.hideKeyboard
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentLoginBinding
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthViewModel
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.global.TextWatcherWrapper
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.checkInternet
import uz.mobiuz.mobiservice.dev.utils.extensions.makeLinks
import uz.mobiuz.mobiservice.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
......@@ -57,8 +57,8 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
bn.viewGroup.hideKeyboard()
}
})
txtHelperMobiuz.makeLinks(Pair(CONSTANTS.HTTP_MOBI_UZ, View.OnClickListener {
val uri = Uri.parse(CONSTANTS.HTTP_MOBI_UZ)
txtHelperMobiuz.makeLinks(Pair(CONSTANTS.WWW_MOBI_UZ, View.OnClickListener {
val uri = Uri.parse(CONSTANTS.MOBI_UZ_SELF_CARE)
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
startActivity(intent)
......
package com.mobiuz.app.dev.ui.auth.pin
package uz.mobiuz.mobiservice.dev.ui.auth.pin
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ItemPinBinding
import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.ItemPinBinding
import uz.mobiuz.mobiservice.dev.model.PinData
import uz.mobiuz.mobiservice.dev.utils.extensions.SingleBlock
class InstallPinAdapter : RecyclerView.Adapter<InstallPinAdapter.VHolder>() {
......
package com.mobiuz.app.dev.ui.auth.pin
package uz.mobiuz.mobiservice.dev.ui.auth.pin
import android.content.Intent
import android.os.Bundle
......@@ -13,16 +13,16 @@ import androidx.core.view.isVisible
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentInstallPinBinding
import com.mobiuz.app.dev.MainActivity
import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.*
import uz.mobiuz.mobiservice.dev.MainActivity
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentInstallPinBinding
import uz.mobiuz.mobiservice.dev.model.PinData
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.auth.register
package uz.mobiuz.mobiservice.dev.ui.auth.register
import android.content.Intent
import android.net.Uri
......@@ -10,22 +10,22 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentRegisterBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
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.checkInternet
import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.makeLinks
import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.hideKeyboard
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentRegisterBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthViewModel
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.global.TextWatcherWrapper
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.checkInternet
import uz.mobiuz.mobiservice.dev.utils.extensions.getColorCompat
import uz.mobiuz.mobiservice.dev.utils.extensions.makeLinks
import uz.mobiuz.mobiservice.dev.utils.extensions.showCustomDialog
import uz.mobiuz.mobiservice.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.auth.verification
package uz.mobiuz.mobiservice.dev.ui.auth.verification
import android.os.Bundle
import android.view.KeyEvent
......@@ -11,23 +11,23 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.android.material.textfield.TextInputEditText
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentVerificationBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
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.clearText
import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.extensions.isEmpty
import com.mobiuz.app.dev.utils.extensions.isNotEmpty
import com.mobiuz.app.dev.utils.hideKeyboard
import com.mobiuz.app.dev.utils.showKeyboard
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentVerificationBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthViewModel
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.global.TextWatcherWrapper
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.clearText
import uz.mobiuz.mobiservice.dev.utils.extensions.getColorCompat
import uz.mobiuz.mobiservice.dev.utils.extensions.isEmpty
import uz.mobiuz.mobiservice.dev.utils.extensions.isNotEmpty
import uz.mobiuz.mobiservice.dev.utils.hideKeyboard
import uz.mobiuz.mobiservice.dev.utils.showKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.base
package uz.mobiuz.mobiservice.dev.ui.base
import android.graphics.Color
import android.os.Bundle
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import com.google.android.material.snackbar.Snackbar
import com.mobiuz.app.dev.ui.global.ProgressDialog
import uz.mobiuz.mobiservice.dev.ui.global.ProgressDialog
abstract class BaseFragment(private val layoutId: Int) : Fragment() {
......@@ -37,20 +32,7 @@ abstract class BaseFragment(private val layoutId: Int) : Fragment() {
}
}
// protected fun showSnackMessage(message:String){
// val ssb = SpannableStringBuilder().apply {
// append(message)
// setSpan(
// ForegroundColorSpan(Color.WHITE),
// 0,
// message.length,
// Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
// )
// }
// view?.let { Snackbar.make(it, ssb, Snackbar.LENGTH_LONG).show() }
// }
protected fun showToastMessage(message:String) {
protected fun showToastMessage(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.os.SystemClock
import android.view.View
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
object CONSTANTS {
const val UNAUTHORIZED = "UNAUTHORIZED"
const val BASE_URL = "https://mobileapp.mobi.uz/api/v1/"
//languages
......@@ -12,6 +13,8 @@ object CONSTANTS {
// safety data
const val HELP_BOT = "@MobiuzHelpBot"
const val HTTP_MOBI_UZ = "https://mobi.uz"
const val WWW_MOBI_UZ = "www.mobi.uz"
const val MOBI_UZ_SELF_CARE = "https://ip.mobi.uz/selfcare/"
const val FEEDBACK = "https://company.mobi.uz/ru/feedback/"
const val TERMS_OF_USE = "Terms of Use"
const val PRIVACY_POLICY = "Privacy Policy"
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.LayoutExitBinding
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.LayoutExitBinding
import uz.mobiuz.mobiservice.dev.utils.extensions.SingleBlock
class ExitDialog : DialogFragment() {
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.content.Intent
import android.os.Bundle
......@@ -6,9 +6,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.mobiuz.app.databinding.LayoutOfflineBottomSheetBinding
import com.mobiuz.app.dev.OfflineActivity
import com.mobiuz.app.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.OfflineActivity
import uz.mobiuz.mobiservice.dev.databinding.LayoutOfflineBottomSheetBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.content.Intent
import android.os.Bundle
......@@ -16,20 +16,21 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentPinBinding
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.auth.pin.InstallPinAdapter
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.showCustomDialog
import com.mobiuz.app.dev.utils.extensions.showMessage
import com.mobiuz.app.dev.utils.extensions.vibrate
import uz.mobiuz.mobiservice.dev.MainViewModel
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentPinBinding
import uz.mobiuz.mobiservice.dev.model.PinData
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.auth.pin.InstallPinAdapter
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.utils.extensions.showCustomDialog
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.utils.extensions.vibrate
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import uz.mobiuz.mobiservice.dev.utils.NetworkUtil
import uz.mobiuz.mobiservice.dev.utils.extensions.customLog
import javax.inject.Inject
......@@ -78,6 +79,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or BIOMETRIC_WEAK)) {
BiometricManager.BIOMETRIC_SUCCESS -> {
bn.btnFingerPrint.isVisible = true
customLog("BIOMETRIC_SUCCESS")
if (pref.isUseFingerPrint){
lifecycleScope.launchWhenCreated {
delay(300)
......@@ -86,6 +88,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
}
}
else -> {
customLog("ERROR BiometricManager")
bn.btnFingerPrint.isVisible = false
}
}
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.mobiuz.app.R
import uz.mobiuz.mobiservice.dev.R
class ProgressDialog : DialogFragment(R.layout.fragment_progress) {
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.os.Bundle
import android.view.LayoutInflater
......@@ -6,9 +6,9 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.fragment.app.DialogFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.LayoutSenderBinding
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.LayoutSenderBinding
import uz.mobiuz.mobiservice.dev.utils.extensions.SingleBlock
class SenderDialog(
private val txtDescription: String,
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.content.Context
import android.util.AttributeSet
import android.widget.ImageView
import com.makeramen.roundedimageview.RoundedImageView
......
package com.mobiuz.app.dev.ui.global
package uz.mobiuz.mobiservice.dev.ui.global
import android.text.Editable
import android.text.TextWatcher
......
package com.mobiuz.app.dev.ui.home
package uz.mobiuz.mobiservice.dev.ui.home
import android.os.Bundle
import android.view.View
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentBillingBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentBillingBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint
import uz.agr.mobiuz.AGRBilling
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.home
package uz.mobiuz.mobiservice.dev.ui.home
import android.annotation.SuppressLint
import android.content.Intent
......@@ -15,19 +15,21 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.RecyclerView
import com.facebook.shimmer.ShimmerFrameLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentHomeBinding
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
import uz.agr.sdk.coreui.extension.fadeIn
import uz.mobiuz.mobiservice.dev.MainViewModel
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentHomeBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.model.Customer
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.utils.extensions.*
import javax.inject.Inject
......@@ -41,7 +43,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val viewModel: HomeViewModel by viewModels()
private lateinit var mainViewModel: MainViewModel
private var isFirstProgressing = true
private var isProgressing = false
private var jobAutoSlide: Job? = null
private var jobToMatch: Job? = null
......@@ -51,7 +53,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
private var lastUpdateTime = 0L
private lateinit var matchParam: FrameLayout.LayoutParams
private lateinit var changedParam: FrameLayout.LayoutParams
private val navController : NavController by lazy (LazyThreadSafetyMode.NONE){ NavHostFragment.findNavController(this) }
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -59,13 +61,12 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
viewModel.mainIndex()
viewModel.mainRoaming()
matchParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
changedParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
changedParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentHomeBinding.bind(view)
isFirstProgressing = true
requireActivity().window.decorView.systemUiVisibility = View.VISIBLE
setUpUI()
collects()
......@@ -78,7 +79,8 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
slider.adapter = sliderAdapter
sliderAdapter.setOnClickListener {
val uri = Uri.parse(it)
pref.isShowPin = false
val uri = Uri.parse(it.url)
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
startActivity(intent)
......@@ -86,30 +88,12 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
TabLayoutMediator(tabIndicator, slider) { _, _ -> }.attach()
// lifecycleScope.launchWhenCreated {
// repeat(10000000){
// delay(4000)
// if (slider.currentItem != tabIndicator.tabCount - 1) {
// slider.currentItem = slider.currentItem + 1
// } else {
// slider.currentItem = 0
// }
// }
// }
// jobAutoSlide = viewLifecycleOwner.lifecycleScope.launchWhenStarted {
// while (isActive) {
//
// }
// }
slider.offscreenPageLimit = 3
slider.getChildAt(0).overScrollMode = RecyclerView.OVER_SCROLL_NEVER
btnAddSum.setOnClickListener {
pref.isShowPin = false
if(checkInternet()){
// requireActivity().sendBroadcast(Intent(CONSTANTS.INTENT_ACTION_NAVIGATE).putExtra(CONSTANTS.FRAGMENT_ID,R.id.billingFragment))
if (checkInternet()) {
navController.navigate(R.id.billingFragment)
}
......@@ -127,9 +111,9 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
if (!fromStart) {
lastUpdateTime = System.currentTimeMillis()
}
if (fromStart && overScrolledDistance > 140.52632 && (lastUpdateTime < System.currentTimeMillis() - 2000)) {
if (fromStart && overScrolledDistance > 130.52632 && (lastUpdateTime < System.currentTimeMillis() - 1000)) {
if(checkInternet()){
if (checkInternet() && !isProgressing) {
viewModel.mainIndex()
vibrate(requireContext())
}
......@@ -144,6 +128,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
changedParam.width = homeImage.width - (overScroll - overScrolledDistance)
changedParam.height = homeImage.height - (overScroll - overScrolledDistance)
homeImage.layoutParams = matchParam
// changeToParam()
}
overScroll = overScrolledDistance
......@@ -167,29 +152,43 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.mainIndexUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
bn.shimmer.isVisible = false
bn.shimmer.stopShimmer()
bn.slider.isVisible = true
bn.tabIndicator.isVisible = true
bn.lottie.isVisible = false
isFirstProgressing = false
isProgressing = false
customer = it.data
loadData()
showProgressDialog(false)
}
is UiStateObject.ERROR -> {
isFirstProgressing = false
bn.shimmer.isVisible = false
bn.shimmer.stopShimmer()
bn.slider.isVisible = false
bn.tabIndicator.isVisible = false
isProgressing = false
showProgressDialog(false)
bn.lottie.isVisible = false
}
is UiStateObject.LOADING -> {
if (isFirstProgressing) showProgressDialog(true)
else {
bn.lottie.isVisible = true
isFirstProgressing = false
if (sliderAdapter.itemCount == 0){
bn.shimmer.isVisible = true
bn.shimmer.startShimmer()
bn.slider.isVisible = false
bn.tabIndicator.isVisible = false
}
bn.lottie.isVisible = true
isProgressing = true
}
else -> Unit
}
......@@ -220,7 +219,8 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
@SuppressLint("SetTextI18n")
private fun loadData() {
try {
// sliderAdapter.submitList(customer?.events ?: emptyList())
sliderAdapter.submitList(customer?.events ?: emptyList())
bn.imagePlaceHolder.isVisible = customer?.events?.isEmpty() ?: false
customer?.customer?.info?.let {
bn.apply {
......@@ -231,14 +231,13 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
txtCountMb.text = it.BYTE?.value?.toMoneyFormat() ?: "0"
txtTypeMb.text = it.BYTE?.unit ?: "mb"
txtCountMinut.text = it.SECOND?.value?.toMoneyFormat() ?: "0"
txtTypeMinut.text = it.SECOND?.unit ?: "min"
txtTarif.text = customer?.customer?.tariff?.name
val total_price = customer?.customer?.tariff?.total_price ?: 0
if(total_price > 0){
txtSumTariff.text = getString(R.string.sum_month, total_price.toMoneyFormat())
val priceTariff = customer?.customer?.tariff?.total_price ?: 0
if (priceTariff > 0) {
txtSumTariff.text = getString(R.string.sum_month, priceTariff.toMoneyFormat())
}
txtTarifTo.text = customer?.customer?.tariff?.next_tariffication_date
......
package com.mobiuz.app.dev.ui.home
package uz.mobiuz.mobiservice.dev.ui.home
import android.content.Context
import android.util.AttributeSet
......
package com.mobiuz.app.dev.ui.home
package uz.mobiuz.mobiservice.dev.ui.home
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.mobiuz.app.dev.network.model.Customer
import com.mobiuz.app.dev.network.model.Roaming
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.network.repository.AuthRepository
import com.mobiuz.app.dev.network.repository.MainRepository
import uz.mobiuz.mobiservice.dev.network.model.Customer
import uz.mobiuz.mobiservice.dev.network.model.Roaming
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.network.repository.MainRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
......
package uz.mobiuz.mobiservice.dev.ui.home
import android.os.Bundle
import android.view.View
import android.widget.FrameLayout
import android.widget.LinearLayout
import androidx.fragment.app.viewModels
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import uz.mobiuz.mobiservice.dev.MainViewModel
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentMotionBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.network.model.Customer
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import javax.inject.Inject
@AndroidEntryPoint
class MotionFragment : BaseFragment(R.layout.fragment_motion) {
@Inject
lateinit var pref: SharedPref
private var _bn: FragmentMotionBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val viewModel: HomeViewModel by viewModels()
private lateinit var mainViewModel: MainViewModel
private var isProgressing = false
private var jobAutoSlide: Job? = null
private var jobToMatch: Job? = null
private var customer: Customer? = null
private var overScroll = 0
private val sliderAdapter = SliderAdapter()
private var lastUpdateTime = 0L
private lateinit var matchParam: FrameLayout.LayoutParams
private lateinit var changedParam: FrameLayout.LayoutParams
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
viewModel.mainIndex()
viewModel.mainRoaming()
matchParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
changedParam = FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentMotionBinding.bind(view)
isProgressing = true
requireActivity().window.decorView.systemUiVisibility = View.VISIBLE
setUpUI()
collects()
}
override fun setUpUI() {
bn.btnMenu.setOnClickListener {
showMessage("click")
}
// bn.apply {
// slider.adapter = sliderAdapter
//
// sliderAdapter.setOnClickListener {
// pref.isShowPin = false
// val uri = Uri.parse(it.url)
// val intent = Intent(Intent.ACTION_VIEW)
// intent.data = uri
// startActivity(intent)
// }
//
// TabLayoutMediator(tabIndicator, slider) { _, _ -> }.attach()
//
// slider.offscreenPageLimit = 3
// slider.getChildAt(0).overScrollMode = RecyclerView.OVER_SCROLL_NEVER
//
// btnAddSum.setOnClickListener {
// pref.isShowPin = false
// if (checkInternet()) {
// navController.navigate(R.id.billingFragment)
// }
//
// }
//
// val number = pref.userPhone.customMasketHome().replace("-", " ")
// txtMyNumber.text = number
// toolbarMyNumber.text = number
//
// toolbar.setNavigationOnClickListener {
// mainViewModel.openDrawer(System.currentTimeMillis())
// }
//
// bounceScrollView.setOnOverScrollListener { fromStart, overScrolledDistance ->
// if (!fromStart) {
// lastUpdateTime = System.currentTimeMillis()
// }
// if (fromStart && overScrolledDistance > 140.52632 && (lastUpdateTime < System.currentTimeMillis() - 1000)) {
//
// if (checkInternet() && !isProgressing) {
// viewModel.mainIndex()
// vibrate(requireContext())
// }
// lastUpdateTime = System.currentTimeMillis()
// }
//
// if (fromStart) {
// changedParam.width = homeImage.width + (overScrolledDistance - overScroll)
// changedParam.height = homeImage.height + (overScrolledDistance - overScroll)
// homeImage.layoutParams = changedParam
// } else {
// changedParam.width = homeImage.width - (overScroll - overScrolledDistance)
// changedParam.height = homeImage.height - (overScroll - overScrolledDistance)
// homeImage.layoutParams = changedParam
// changeToParam()
// }
// overScroll = overScrolledDistance
//
//
// }
//
// bounceScrollView.setOnScrollListener { _, scrollY ->
// if (scrollY < 100) {
// toolbarInsideLayout.isVisible = false
// topDiv.setBackgroundColor(Color.TRANSPARENT)
// toolbar.setBackgroundColor(Color.TRANSPARENT)
// }
// if (scrollY > 20) {
// toolbar.setBackgroundColor(getColorCompat(R.color.primary100))
// topDiv.setBackgroundColor(getColorCompat(R.color.primary100))
// }
// if (scrollY > 90) {
// toolbarInsideLayout.isVisible = true
// }
// }
// }
}
override fun collects() {
// viewLifecycleOwner.lifecycleScope.launchWhenStarted {
// viewModel.mainIndexUiState.collect {
// when (it) {
// is UiStateObject.SUCCESS -> {
// bn.lottie.isVisible = false
// isProgressing = false
// customer = it.data
// loadData()
// showProgressDialog(false)
// }
// is UiStateObject.ERROR -> {
// isProgressing = false
// showProgressDialog(false)
// bn.lottie.isVisible = false
// }
// is UiStateObject.LOADING -> {
// bn.lottie.isVisible = true
// isProgressing = true
// }
// else -> Unit
// }
// }
// }
//
// viewLifecycleOwner.lifecycleScope.launchWhenStarted {
// viewModel.mainRoamingUiState.collect {
// when (it) {
// is UiStateObject.SUCCESS -> {
// showProgressDialog(false)
// bn.cardRoaming.isVisible = it.data.name != null
// bn.txtRoaming.text = it.data.name ?: ""
// }
// is UiStateObject.ERROR -> {
// showProgressDialog(false)
// bn.cardRoaming.isVisible = false
// }
// is UiStateObject.LOADING -> {
// bn.cardRoaming.isVisible = false
// }
// else -> Unit
// }
// }
// }
}
// @SuppressLint("SetTextI18n")
// private fun loadData() {
// try {
// sliderAdapter.submitList(customer?.events ?: emptyList())
// customer?.customer?.info?.let {
// bn.apply {
//
// txtBalance.text = "${it.balance?.amount?.toMoneyFormat()} ${it.balance?.currency}"
// pref.userBirthday = customer?.customer?.date_of_birth ?: ""
// it.counters?.let {
//
// txtCountMb.text = it.BYTE?.value?.toMoneyFormat() ?: "0"
// txtTypeMb.text = it.BYTE?.unit ?: "mb"
//
// txtCountMinut.text = it.SECOND?.value?.toMoneyFormat() ?: "0"
// txtTypeMinut.text = it.SECOND?.unit ?: "min"
//
// txtTarif.text = customer?.customer?.tariff?.name
// val priceTariff = customer?.customer?.tariff?.total_price ?: 0
// if (priceTariff > 0) {
// txtSumTariff.text = getString(R.string.sum_month, priceTariff.toMoneyFormat())
// }
//
// txtTarifTo.text = customer?.customer?.tariff?.next_tariffication_date
//
// txtCountSms.text = it.ITEM?.value?.toMoneyFormat() ?: "0"
// txtTypeSms.text = it.ITEM?.unit ?: "sms"
// }
// mainViewModel.setUserName(customer?.customer?.name ?: "Unnamed User")
// }
// }
// } catch (e: Exception) {
//// showSnackMessage(it.message)
// }
// }
override fun onResume() {
super.onResume()
mainViewModel.bottomSheet(true)
mainViewModel.swipeDrawer(true)
}
override fun onStop() {
super.onStop()
mainViewModel.bottomSheet(false)
mainViewModel.swipeDrawer(false)
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.home
package uz.mobiuz.mobiservice.dev.ui.home
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import coil.load
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ItemHomeBinding
import com.mobiuz.app.dev.network.model.Events
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.ItemHomeBinding
import uz.mobiuz.mobiservice.dev.network.model.Events
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.utils.extensions.SingleBlock
class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() {
private var listener: SingleBlock<String>? = null
private val sliderItems: ArrayList<String> = ArrayList()
private var listener: SingleBlock<Events>? = null
private val sliderItems: ArrayList<Events> = ArrayList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SliderViewHolder {
return SliderViewHolder(
......@@ -26,20 +24,20 @@ class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() {
override fun onBindViewHolder(holder: SliderViewHolder, position: Int) = holder.onBind(position)
override fun getItemCount(): Int = 4
override fun getItemCount(): Int = sliderItems.size
inner class SliderViewHolder(val view: ItemHomeBinding) : RecyclerView.ViewHolder(view.root) {
fun onBind(position: Int) {
val d = sliderItems[position]
view.apply {
if(position % 2 != 0){
imageSlider.setImageResource(R.drawable.image_slider2)
txtDescription.setTextColor(Color.WHITE)
txtDescription.text = itemView.context.getString(R.string.misic_all_with_you)
imageSlider.load(d.image) {
placeholder(R.drawable.ic_placeholder)
error(R.drawable.ic_placeholder)
}
btnSeeMore.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
listener?.invoke(CONSTANTS.HTTP_MOBI_UZ)
listener?.invoke(d)
}
})
......@@ -48,11 +46,11 @@ class SliderAdapter : RecyclerView.Adapter<SliderAdapter.SliderViewHolder>() {
}
fun setOnClickListener(block: SingleBlock<String>) {
fun setOnClickListener(block: SingleBlock<Events>) {
listener = block
}
fun submitList(ls: List<String>) {
fun submitList(ls: List<Events>) {
sliderItems.clear()
sliderItems.addAll(ls)
notifyDataSetChanged()
......
package uz.mobiuz.mobiservice.dev.ui.home
import android.content.Context
import android.util.AttributeSet
import com.makeramen.roundedimageview.RoundedImageView
class SliderImageView(context: Context, atr: AttributeSet) : RoundedImageView(context,atr) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
val width = measuredWidth
setMeasuredDimension(width, (width.toFloat() / 1.633333333).toInt())
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.home
package uz.mobiuz.mobiservice.dev.ui.home
import android.content.Context
import android.util.AttributeSet
import android.view.View
import com.mobiuz.app.dev.utils.extensions.getStatusBarHeight
import uz.mobiuz.mobiservice.dev.utils.extensions.getStatusBarHeight
class StatusBarSpacer @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
View(context, attrs) {
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.google.gson.Gson
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentSendUssdBinding
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.InnerData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.MainViewModel
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentSendUssdBinding
import uz.mobiuz.mobiservice.dev.model.InnerData
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......@@ -48,8 +48,6 @@ class SendUssdFragment : BaseFragment(R.layout.fragment_send_ussd) {
override fun setUpUI() {
bn.apply {
// OverScrollDecoratorHelper.setUpStaticOverScroll(bn.rvUssdCommand, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
rvUssdCommand.adapter = adapter
adapter.setOnClickListener {
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.mobiuz.app.databinding.ItemServiceBinding
import com.mobiuz.app.dev.model.ServiceData
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import com.mobiuz.app.dev.utils.extensions.getCurrentName
import uz.mobiuz.mobiservice.dev.databinding.ItemServiceBinding
import uz.mobiuz.mobiservice.dev.model.ServiceData
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.utils.extensions.SingleBlock
import uz.mobiuz.mobiservice.dev.utils.extensions.getCurrentName
class ServicesAdapter(val lang: String) : RecyclerView.Adapter<ServicesAdapter.VHolder>() {
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import android.os.Bundle
import android.view.View
......@@ -9,13 +9,13 @@ import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentServicesBinding
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.model.ServiceData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.MainViewModel
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentServicesBinding
import uz.mobiuz.mobiservice.dev.model.ServiceData
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.google.gson.Gson
import com.mobiuz.app.dev.model.ServiceData
import com.mobiuz.app.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.model.ServiceData
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
class ServicesPagerAdapter(fragment: Fragment, private val service: ServiceData): FragmentStateAdapter(fragment) {
override fun getItemCount() = service.data.size
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.mobiuz.app.databinding.ItemActionBinding
import com.mobiuz.app.dev.model.UssdData
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.utils.extensions.SingleBlock
import com.mobiuz.app.dev.utils.extensions.getCurrentName
import uz.mobiuz.mobiservice.dev.databinding.ItemActionBinding
import uz.mobiuz.mobiservice.dev.model.UssdData
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.utils.extensions.SingleBlock
import uz.mobiuz.mobiservice.dev.utils.extensions.getCurrentName
class UssdAdapter(val lang: String) : RecyclerView.Adapter<UssdAdapter.VHolder>() {
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import android.Manifest
import android.content.Intent
......@@ -9,12 +9,12 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.mobiuz.app.databinding.BottomSheetUssdBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.model.UssdData
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.utils.extensions.checkPermission
import com.mobiuz.app.dev.utils.extensions.getCurrentName
import uz.mobiuz.mobiservice.dev.databinding.BottomSheetUssdBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.model.UssdData
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.utils.extensions.checkPermission
import uz.mobiuz.mobiservice.dev.utils.extensions.getCurrentName
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.service
package uz.mobiuz.mobiservice.dev.ui.service
import android.os.Bundle
import android.view.View
......@@ -8,13 +8,13 @@ import androidx.navigation.fragment.NavHostFragment
import com.google.android.material.tabs.TabLayout.MODE_SCROLLABLE
import com.google.android.material.tabs.TabLayoutMediator
import com.google.gson.Gson
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentUssdBinding
import com.mobiuz.app.dev.model.ServiceData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.extensions.getCurrentName
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentUssdBinding
import uz.mobiuz.mobiservice.dev.model.ServiceData
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.extensions.getCurrentName
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.settings
package uz.mobiuz.mobiservice.dev.ui.settings
import android.content.Intent
import android.os.Bundle
......@@ -6,14 +6,14 @@ import android.view.View
import androidx.core.view.isVisible
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentLanguageBinding
import com.mobiuz.app.dev.MainActivity
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.LocaleHelper
import uz.mobiuz.mobiservice.dev.MainActivity
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentLanguageBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.LocaleHelper
import dagger.hilt.android.AndroidEntryPoint
import uz.agr.mobiuz.AGRBilling
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.settings
package uz.mobiuz.mobiservice.dev.ui.settings
import android.os.Bundle
import android.view.View
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentProfileBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.utils.extensions.customMasket
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentProfileBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.utils.extensions.customMasket
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.settings
package uz.mobiuz.mobiservice.dev.ui.settings
import android.content.Intent
import android.net.Uri
......@@ -6,14 +6,13 @@ import android.os.Bundle
import android.view.View
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentSupportBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentSupportBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import dagger.hilt.android.AndroidEntryPoint
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
import javax.inject.Inject
@AndroidEntryPoint
......
package com.mobiuz.app.dev.ui.settings.security
package uz.mobiuz.mobiservice.dev.ui.settings.security
import android.content.Intent
import android.os.Bundle
......@@ -9,24 +9,24 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
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.model.SharedPref
import com.mobiuz.app.dev.model.UserAuth
import com.mobiuz.app.dev.network.model.ChangePassword
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
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.checkInternet
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 uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentChangePasswordBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.model.UserAuth
import uz.mobiuz.mobiservice.dev.network.model.ChangePassword
import uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import uz.mobiuz.mobiservice.dev.ui.auth.AuthActivity
import uz.mobiuz.mobiservice.dev.ui.auth.AuthViewModel
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.global.TextWatcherWrapper
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.checkInternet
import uz.mobiuz.mobiservice.dev.utils.extensions.getColorCompat
import uz.mobiuz.mobiservice.dev.utils.extensions.showCustomDialog
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import javax.inject.Inject
......
package com.mobiuz.app.dev.ui.settings.security
package uz.mobiuz.mobiservice.dev.ui.settings.security
import android.content.Intent
import android.os.Build
......@@ -12,14 +12,14 @@ import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentSecurityBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.showMessage
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.databinding.FragmentSecurityBinding
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.utils.Utils
import uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
......
package com.mobiuz.app.dev.utils
package uz.mobiuz.mobiservice.dev.utils
import android.annotation.TargetApi
import android.content.Context
import android.os.Build
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.model.SharedPref
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import java.util.*
object LocaleHelper {
......
package com.mobiuz.app.dev.utils
package uz.mobiuz.mobiservice.dev.utils
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
class NetworkChangeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val status = NetworkUtil.getConnectivityStatusString(context)
if ("android.net.conn.CONNECTIVITY_CHANGE" == intent.action) {
if (CONSTANTS.CONNECTIVITY_CHANGE == intent.action) {
if (status == NetworkUtil.NETWORK_STATUS_NOT_CONNECTED) {
Log.e("AAA", "NETWORK_STATUS_NOT_CONNECTED")
} else {
......
package com.mobiuz.app.dev.utils;
package uz.mobiuz.mobiservice.dev.utils;
import android.content.Context;
import android.net.ConnectivityManager;
......
package com.mobiuz.app.dev.utils
package uz.mobiuz.mobiservice.dev.utils
import android.content.Context
import android.view.View
......
package com.mobiuz.app.dev.utils
package uz.mobiuz.mobiservice.dev.utils
import android.os.Build
import android.text.TextUtils
import androidx.navigation.NavOptions
import com.mobiuz.app.R
import uz.mobiuz.mobiservice.dev.R
import java.util.*
object Utils {
......
......@@ -14,9 +14,8 @@
* limitations under the License.
*/
package com.mobiuz.app.dev.utils.extensions
package uz.mobiuz.mobiservice.dev.utils.extensions
import android.annotation.SuppressLint
import android.content.Intent
import android.util.SparseArray
import androidx.fragment.app.FragmentManager
......@@ -25,8 +24,8 @@ import androidx.lifecycle.MutableLiveData
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.mobiuz.app.R
import com.mobiuz.app.dev.utils.extensions.BackButtonBehaviour.SHOW_STARTING_FRAGMENT
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.utils.extensions.BackButtonBehaviour.SHOW_STARTING_FRAGMENT
/**
* Manages the various graphs needed for a [BottomNavigationView].
......
package com.mobiuz.app.dev.utils.extensions
package uz.mobiuz.mobiservice.dev.utils.extensions
import java.text.DecimalFormat
import java.text.DecimalFormatSymbols
......
......@@ -14,8 +14,9 @@
* limitations under the License.
*/
package com.mobiuz.app.dev.utils.extensions
package uz.mobiuz.mobiservice.dev.utils.extensions
import android.annotation.SuppressLint
import android.content.Intent
import android.util.SparseArray
import androidx.core.util.forEach
......@@ -25,13 +26,14 @@ import androidx.lifecycle.MutableLiveData
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.mobiuz.app.R
import uz.mobiuz.mobiservice.dev.R
/**
* Manages the various graphs needed for a [BottomNavigationView].
*
* This sample is a workaround until the Navigation Component supports multiple back stacks.
*/
@SuppressLint("NewApi")
fun BottomNavigationView.setupWithNavController(
navGraphIds: List<Int>,
fragmentManager: FragmentManager,
......
package com.mobiuz.app.dev.utils.extensions
package uz.mobiuz.mobiservice.dev.utils.extensions
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
......
package com.mobiuz.app.dev.utils.extensions
package uz.mobiuz.mobiservice.dev.utils.extensions
import android.app.Activity
import android.content.Context
......@@ -21,17 +21,15 @@ import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.textfield.TextInputEditText
import com.google.gson.JsonSyntaxException
import com.mobiuz.app.R
import com.mobiuz.app.dev.model.SharedPref
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.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.ExitDialog
import com.mobiuz.app.dev.ui.global.OfflineBottomSheet
import com.mobiuz.app.dev.ui.global.SenderDialog
import com.mobiuz.app.dev.utils.NetworkUtil
import uz.mobiuz.mobiservice.dev.R
import uz.mobiuz.mobiservice.dev.model.Translate
import uz.mobiuz.mobiservice.dev.network.model.Errors
import uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import uz.mobiuz.mobiservice.dev.ui.global.ExitDialog
import uz.mobiuz.mobiservice.dev.ui.global.OfflineBottomSheet
import uz.mobiuz.mobiservice.dev.ui.global.SenderDialog
import retrofit2.HttpException
import uz.mobiuz.mobiservice.dev.utils.NetworkUtil
import java.io.IOException
import java.net.ConnectException
import java.sql.Timestamp
......@@ -42,12 +40,12 @@ fun Fragment.showMessage(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
}
fun Fragment.showCustomDialog(description:String,status:Boolean, block: () -> Unit){
val dialog = SenderDialog(description,status)
fun Fragment.showCustomDialog(description: String, status: Boolean, block: () -> Unit) {
val dialog = SenderDialog(description, status)
dialog.setOnClickListener {
block()
}
dialog.show(childFragmentManager,"tab")
dialog.show(childFragmentManager, "tab")
}
fun String.getDateTime(): String? {
......@@ -60,10 +58,11 @@ fun String.getDateTime(): String? {
}
}
fun FragmentActivity.showOfflineBottomSheetDialog(){
fun FragmentActivity.showOfflineBottomSheetDialog() {
val fragment = supportFragmentManager.findFragmentByTag(CONSTANTS.FULL_SCREEN_DIALOG)
if(fragment == null) OfflineBottomSheet().show(supportFragmentManager,CONSTANTS.FULL_SCREEN_DIALOG)
if (fragment == null) OfflineBottomSheet().show(supportFragmentManager, CONSTANTS.FULL_SCREEN_DIALOG)
}
fun Activity.showMessage(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
......@@ -86,7 +85,10 @@ fun Throwable.userMessage(context: Context) = when (this) {
is HttpException -> when (this.code()) {
304 -> context.getString(R.string.ex304)
400 -> context.getString(R.string.ex400)
401 -> context.getString(R.string.ex401)
401 -> {
context.sendBroadcast(Intent(CONSTANTS.UNAUTHORIZED))
context.getString(R.string.ex401)
}
403 -> context.getString(R.string.ex403)
404 -> context.getString(R.string.ex404)
405 -> context.getString(R.string.ex405)
......@@ -120,18 +122,18 @@ fun FragmentActivity.showCustomExitDialog(block: () -> Unit) {
dialog.show(supportFragmentManager, "childFragmentManager")
}
fun String.checkChangedPosition(new:String):Int{
for (i in this.indices){
if(i == new.length){
fun String.checkChangedPosition(new: String): Int {
for (i in this.indices) {
if (i == new.length) {
return new.length
}else if (this[i] != new[i]){
} else if (this[i] != new[i]) {
return i
}
}
return new.length
}
fun View.getStatusBarHeight(): Int {
fun View.getStatusBarHeight(): Int {
var result = 0
val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
if (resourceId > 0) {
......@@ -141,7 +143,7 @@ fun String.checkChangedPosition(new:String):Int{
return result
}
fun String.maskedTextMobi():String{
fun String.maskedTextMobi(): String {
var newText = ""
for (i in this.indices){
if(i == 2 || i == 5 || i == 7){
......@@ -193,12 +195,12 @@ fun FragmentActivity.showCustomDialog(string: String, status: Boolean, block: ()
dialog.show(supportFragmentManager, "supportFragmentManager")
}
fun Fragment.checkInternet():Boolean{
fun Fragment.checkInternet(): Boolean {
val type = NetworkUtil.getConnectivityStatus(context)
return if(type == 0){
return if (type == 0) {
requireActivity().sendBroadcast(Intent(CONSTANTS.MY_CONNECTIVITY_CHANGE))
false
}else{
} else {
true
}
}
......@@ -237,18 +239,18 @@ fun TextInputEditText.clearText(): View {
return this
}
fun String.customMasket():String{
val text = this.replace(" ","")
fun String.customMasket(): String {
val text = this.replace(" ", "")
var new = ""
for (i in text.indices){
if (i == 4){
for (i in text.indices) {
if (i == 4) {
new += " ("
}
if (i == 6){
if (i == 6) {
new += ") "
}
if (i == 9 || i == 11){
if (i == 9 || i == 11) {
new += "-"
}
......@@ -257,18 +259,18 @@ fun String.customMasket():String{
return new
}
fun String.customMasketHome():String{
val text = this.replace(" ","")
fun String.customMasketHome(): String {
val text = this.replace(" ", "")
var new = ""
for (i in text.indices){
if (i == 4){
for (i in text.indices) {
if (i == 4) {
new += " "
}
if (i == 6){
if (i == 6) {
new += " "
}
if (i == 9 || i == 11){
if (i == 9 || i == 11) {
new += "-"
}
new += text[i]
......@@ -282,7 +284,7 @@ fun vibrate(context: Context) {
vibrate.vibrate(100)
}
fun List<Errors>.getMessage():String{
fun List<Errors>.getMessage(): String {
var message = ""
this.forEach {
message += "${it.message}\n"
......@@ -290,8 +292,8 @@ fun List<Errors>.getMessage():String{
return message
}
fun Translate.getCurrentName(lang:String):String{
return when(lang){
fun Translate.getCurrentName(lang: String): String {
return when (lang) {
CONSTANTS.EN -> this.en
CONSTANTS.RU -> this.ru
else -> this.uz
......
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="375dp"
android:height="163dp"
android:viewportWidth="375"
android:viewportHeight="163">
<path
android:pathData="M0,0h375v163h-375z"
android:fillColor="#E1E8ED"/>
<path
android:pathData="M210.909,71.079V91.793C210.909,99.469 206.105,104.883 198.429,104.883H176.444C168.768,104.883 163.99,99.469 163.99,91.793V71.079C163.99,63.403 168.793,57.992 176.444,57.992H198.429C206.105,57.992 210.909,63.403 210.909,71.079Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:fillType="evenOdd"
android:strokeColor="#0080F6"
android:strokeLineCap="round"/>
<path
android:pathData="M170.423,92.765L174.309,88.665C175.71,87.186 178.061,87.178 179.474,88.645L181.723,90.94C183.241,92.488 185.765,92.376 187.14,90.701L192.805,83.811C194.432,81.831 197.416,81.709 199.197,83.546L204.474,88.991"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#0080F6"
android:strokeLineCap="round"/>
<path
android:pathData="M183.213,74.216C183.213,76.676 181.215,78.674 178.755,78.674C176.295,78.674 174.3,76.676 174.3,74.216C174.3,71.756 176.295,69.758 178.755,69.758C181.215,69.758 183.213,71.756 183.213,74.216Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:fillType="evenOdd"
android:strokeColor="#0080F6"
android:strokeLineCap="round"/>
</vector>
......@@ -7,7 +7,7 @@
android:background="@color/white100"
tools:context=".dev.LanguageActivity">
<com.mobiuz.app.dev.ui.global.SquareImageView
<uz.mobiuz.mobiservice.dev.ui.global.SquareImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
......
......@@ -20,15 +20,6 @@
android:layout_height="0dp"
android:layout_weight="1" />
<Button
android:id="@+id/btn_try_again"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="4dp"
android:text="@string/to_offline"
android:visibility="gone" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav_view"
android:layout_width="match_parent"
......
......@@ -31,7 +31,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
<uz.mobiuz.mobiservice.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -78,10 +78,10 @@
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie"
android:layout_width="@dimen/_90sdp"
android:layout_height="@dimen/_90sdp"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_70sdp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/_24sdp"
android:layout_marginTop="@dimen/_36sdp"
android:adjustViewBounds="true"
android:visibility="invisible"
app:lottie_autoPlay="true"
......@@ -146,7 +146,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginTop="@dimen/_12sdp"
android:layout_marginTop="@dimen/_22sdp"
android:paddingHorizontal="16dp">
<LinearLayout
......@@ -411,10 +411,33 @@
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.facebook.shimmer.ShimmerFrameLayout
android:layout_width="match_parent"
android:id="@+id/shimmer"
android:layout_marginTop="@dimen/_16sdp"
android:layout_marginHorizontal="16dp"
android:layout_height="wrap_content">
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="match_parent"
app:riv_corner_radius="6dp"
android:background="@color/grey100"
android:layout_height="200dp"/>
</com.facebook.shimmer.ShimmerFrameLayout>
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="match_parent"
android:id="@+id/image_place_holder"
android:visibility="gone"
android:layout_marginTop="@dimen/_16sdp"
android:layout_marginHorizontal="16dp"
android:src="@drawable/image_slider2"
android:layout_height="200dp"/>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_height="200dp"
android:layout_marginStart="16dp"
android:layout_marginTop="@dimen/_16sdp" />
......
......@@ -121,7 +121,7 @@
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:textSize="13sp"
android:text="@string/helper_mobiuz"
android:text="@string/helper_mobiuz_login"
android:textColor="@color/black100"
android:textStyle="bold"
android:textColorLink="@color/primary100"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
app:layoutDescription="@xml/fragment_motion_scene"
tools:context=".ui.home.MotionFragment">
<uz.mobiuz.mobiservice.dev.ui.home.StatusBarSpacer
android:id="@+id/spacer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primary100"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/primary100"
app:layout_constraintTop_toBottomOf="@id/spacer"
app:navigationIcon="@drawable/ic_menu" />
<ImageView
android:id="@+id/home_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/bgn_home" />
<ImageView
android:id="@+id/btn_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:background="?android:selectableItemBackgroundBorderless"
android:padding="5dp"
android:src="@drawable/ic_menu"
app:layout_constraintBottom_toBottomOf="@id/toolbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/toolbar" />
<View
android:id="@+id/div"
android:layout_width="wrap_content"
android:layout_height="?actionBarSize"
android:layout_marginTop="10dp"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/balance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/balance"
android:textColor="@color/white100"
app:layout_constraintBottom_toTopOf="@id/txt_summa"
app:layout_constraintStart_toStartOf="@id/txt_summa"
app:layout_constraintTop_toTopOf="@id/div"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/txt_summa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="150 000 SUM"
android:textColor="@color/white100"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/div"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/balance" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/_16sdp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
app:layout_constraintTop_toBottomOf="@id/home_image" />
</androidx.constraintlayout.motion.widget.MotionLayout>
\ No newline at end of file
......@@ -7,13 +7,14 @@
app:cardCornerRadius="@dimen/_10sdp"
app:cardUseCompatPadding="true"
android:layout_height="wrap_content"
android:padding="18dp">
>
<com.airbnb.lottie.LottieAnimationView
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_70sdp"
android:layout_width="@dimen/_50sdp"
android:layout_height="@dimen/_50sdp"
android:adjustViewBounds="true"
app:lottie_autoPlay="true"
android:layout_margin="@dimen/_10sdp"
app:lottie_loop="true"
app:lottie_rawRes="@raw/rifki_loading"
app:lottie_speed="1"
......
......@@ -13,7 +13,7 @@
android:fitsSystemWindows="false"
android:orientation="vertical">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
<uz.mobiuz.mobiservice.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
......@@ -11,7 +11,7 @@
android:layout_height="wrap_content"
android:background="@color/white100">
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
<uz.mobiuz.mobiservice.dev.ui.home.StatusBarSpacer
android:id="@+id/top_div"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
......@@ -3,16 +3,18 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/btn_see_more"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
<uz.mobiuz.mobiservice.dev.ui.home.SliderImageView
android:layout_width="match_parent"
android:id="@+id/image_slider"
app:riv_corner_radius="4dp"
android:scaleType="centerCrop"
android:layout_marginEnd="16dp"
android:src="@drawable/image_slider1"
android:layout_height="200dp"/>
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
......@@ -24,6 +26,7 @@
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:src="@drawable/ic_mobiuz_logo_red"
android:textColor="@color/primary100"
android:textSize="24sp"
......@@ -36,6 +39,7 @@
android:layout_marginBottom="8dp"
android:id="@+id/txt_description"
android:maxWidth="@dimen/_120sdp"
android:visibility="invisible"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dui, risus"
android:textColor="@color/black80"
android:textSize="10sp"
......@@ -44,8 +48,8 @@
<com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_see_more"
android:layout_marginTop="16dp"
android:visibility="invisible"
app:cardCornerRadius="4dp">
<LinearLayout
......
......@@ -7,39 +7,39 @@
<fragment
android:id="@+id/checkPhoneFragment"
android:name="com.mobiuz.app.dev.ui.auth.check.CheckPhoneFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.check.CheckPhoneFragment"
android:label="fragment_login"
tools:layout="@layout/fragment_check_phone" />
<fragment
android:id="@+id/registerFragment"
android:name="com.mobiuz.app.dev.ui.auth.register.RegisterFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.register.RegisterFragment"
android:label="EnterPasswordFragment"
tools:layout="@layout/fragment_register" />
<fragment
android:id="@+id/loginFragment"
android:name="com.mobiuz.app.dev.ui.auth.login.LoginFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.login.LoginFragment"
android:label="fragment_password"
tools:layout="@layout/fragment_login" />
<fragment
android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment"
tools:layout="@layout/fragment_install_pin" />
<fragment
android:id="@+id/biometricFragment"
android:name="com.mobiuz.app.dev.ui.auth.biometric.BiometricFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.biometric.BiometricFragment"
android:label="fragment_biometric"
tools:layout="@layout/fragment_biometric" />
<fragment
android:id="@+id/verificationFragment"
android:name="com.mobiuz.app.dev.ui.auth.verification.VerificationFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.verification.VerificationFragment"
android:label="MyVerificationFragment" />
<fragment
android:id="@+id/mainFragment"
android:name="com.mobiuz.app.dev.MainFragment"
android:name="uz.mobiuz.mobiservice.dev.MainFragment"
android:label="MainFragment" >
<deepLink
android:id="@+id/deepLink"
......
......@@ -7,51 +7,57 @@
<fragment
android:id="@+id/homeFragment"
android:name="com.mobiuz.app.dev.ui.home.HomeFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment"
tools:layout="@layout/fragment_install_pin" />
<fragment
android:id="@+id/languageFragment"
android:name="com.mobiuz.app.dev.ui.settings.LanguageFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.LanguageFragment"
android:label="fragment_language"
tools:layout="@layout/fragment_language" />
<fragment
android:id="@+id/supportFragment"
tools:layout="@layout/fragment_support"
android:name="com.mobiuz.app.dev.ui.settings.SupportFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.SupportFragment"
android:label="SupportFragment" />
<fragment
android:id="@+id/securityFragment"
android:name="com.mobiuz.app.dev.ui.settings.security.SecurityFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.security.SecurityFragment"
android:label="fragment_safety"
tools:layout="@layout/fragment_security" />
<fragment
android:id="@+id/profileFragment"
android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.ProfileFragment"
android:label="fragment_profile"
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.security.ChangePasswordFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.security.ChangePasswordFragment"
android:label="CurrentPasswordFragment" />
<fragment
android:id="@+id/billingFragment"
android:name="com.mobiuz.app.dev.ui.home.BillingFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.home.BillingFragment"
android:label="fragment_billing"
tools:layout="@layout/fragment_billing" />
<fragment
android:id="@+id/pinFragment"
tools:layout="@layout/fragment_pin"
android:name="com.mobiuz.app.dev.ui.global.PinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.global.PinFragment"
android:label="FullScreenFragment" />
<fragment
android:id="@+id/motionFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.home.MotionFragment"
android:label="fragment_motion"
tools:layout="@layout/fragment_motion" />
</navigation>
\ No newline at end of file
......@@ -8,11 +8,11 @@
<fragment
android:id="@+id/serviceFragment"
tools:layout="@layout/fragment_services"
android:name="com.mobiuz.app.dev.ui.service.ServicesFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.service.ServicesFragment"
android:label="MotionFragment" />
<fragment
android:id="@+id/ussdFragment"
android:name="com.mobiuz.app.dev.ui.service.UssdFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.service.UssdFragment"
android:label="ServicesFragmentActivity" />
</navigation>
\ No newline at end of file
......@@ -8,48 +8,48 @@
<fragment
android:id="@+id/pinFragment"
tools:layout="@layout/fragment_pin"
android:name="com.mobiuz.app.dev.ui.global.PinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.global.PinFragment"
android:label="FullScreenFragment" />
<fragment
android:id="@+id/serviceFragment"
tools:layout="@layout/fragment_services"
android:name="com.mobiuz.app.dev.ui.service.ServicesFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.service.ServicesFragment"
android:label="MotionFragment" />
<fragment
android:id="@+id/ussdFragment"
tools:layout="@layout/fragment_ussd"
android:name="com.mobiuz.app.dev.ui.service.UssdFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.service.UssdFragment"
android:label="ServicesFragmentActivity" />
<fragment
android:id="@+id/languageFragment"
android:name="com.mobiuz.app.dev.ui.settings.LanguageFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.LanguageFragment"
android:label="fragment_language"
tools:layout="@layout/fragment_language" />
<fragment
android:id="@+id/supportFragment"
tools:layout="@layout/fragment_support"
android:name="com.mobiuz.app.dev.ui.settings.SupportFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.SupportFragment"
android:label="SupportFragment" />
<fragment
android:id="@+id/securityFragment"
android:name="com.mobiuz.app.dev.ui.settings.security.SecurityFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.security.SecurityFragment"
android:label="fragment_safety"
tools:layout="@layout/fragment_security" />
<fragment
android:id="@+id/profileFragment"
android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.ProfileFragment"
android:label="fragment_profile"
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.security.ChangePasswordFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.security.ChangePasswordFragment"
android:label="CurrentPasswordFragment" />
<fragment
android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment"
tools:layout="@layout/fragment_install_pin" />
......
......@@ -3,53 +3,54 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph_test"
app:startDestination="@id/mainFragment2">
app:startDestination="@id/pinFragment">
<fragment
android:id="@+id/mainFragment2"
android:name="com.mobiuz.app.dev.MainFragment"
android:id="@+id/mainFragment"
android:name="uz.mobiuz.mobiservice.dev.MainFragment"
android:label="MainFragment" />
<fragment
android:id="@+id/installPinFragment"
android:name="com.mobiuz.app.dev.ui.auth.pin.InstallPinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.auth.pin.InstallPinFragment"
android:label="PinFragment"
tools:layout="@layout/fragment_install_pin" />
<fragment
android:id="@+id/languageFragment"
android:name="com.mobiuz.app.dev.ui.settings.LanguageFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.LanguageFragment"
android:label="fragment_language"
tools:layout="@layout/fragment_language" />
<fragment
android:id="@+id/supportFragment"
tools:layout="@layout/fragment_support"
android:name="com.mobiuz.app.dev.ui.settings.SupportFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.SupportFragment"
android:label="SupportFragment" />
<fragment
android:id="@+id/securityFragment"
android:name="com.mobiuz.app.dev.ui.settings.security.SecurityFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.security.SecurityFragment"
android:label="fragment_safety"
tools:layout="@layout/fragment_security" />
<fragment
android:id="@+id/profileFragment"
android:name="com.mobiuz.app.dev.ui.settings.ProfileFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.ProfileFragment"
android:label="fragment_profile"
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/changePasswordFragment"
android:name="com.mobiuz.app.dev.ui.settings.security.ChangePasswordFragment"
tools:layout="@layout/fragment_change_password"
android:name="uz.mobiuz.mobiservice.dev.ui.settings.security.ChangePasswordFragment"
android:label="CurrentPasswordFragment" />
<fragment
android:id="@+id/billingFragment"
android:name="com.mobiuz.app.dev.ui.home.BillingFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.home.BillingFragment"
android:label="fragment_billing"
tools:layout="@layout/fragment_billing" />
<fragment
android:id="@+id/pinFragment"
tools:layout="@layout/fragment_pin"
android:name="com.mobiuz.app.dev.ui.global.PinFragment"
android:name="uz.mobiuz.mobiservice.dev.ui.global.PinFragment"
android:label="FullScreenFragment" />
</navigation>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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