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