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
5101f34d
Commit
5101f34d
authored
Dec 24, 2021
by
shohboz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[UPD]
MUS-322
Feature, updated sdk and code rafactoring
parent
be371d26
Changes
41
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
2071 additions
and
481 deletions
+2071
-481
misc.xml
.idea/misc.xml
+4
-0
agr-sdk-core-release-1.7.0.aar
app/aars/agr-sdk-core-release-1.7.0.aar
+0
-0
agr-sdk-mobi-uz-release-1.0.0.aar
app/aars/agr-sdk-mobi-uz-release-1.0.0.aar
+0
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+1
-1
BillingFragment.kt
app/src/main/java/com/mobiuz/app/dev/BillingFragment.kt
+104
-0
MainActivity.kt
app/src/main/java/com/mobiuz/app/dev/MainActivity.kt
+7
-9
OfflineActivity.kt
app/src/main/java/com/mobiuz/app/dev/OfflineActivity.kt
+6
-51
SplashActivity.kt
app/src/main/java/com/mobiuz/app/dev/SplashActivity.kt
+3
-7
ServiceData.kt
app/src/main/java/com/mobiuz/app/dev/model/ServiceData.kt
+3
-1
AuthActivity.kt
app/src/main/java/com/mobiuz/app/dev/ui/auth/AuthActivity.kt
+12
-18
CheckPhoneFragment.kt
...va/com/mobiuz/app/dev/ui/auth/check/CheckPhoneFragment.kt
+7
-6
InstallPinAdapter.kt
.../java/com/mobiuz/app/dev/ui/auth/pin/InstallPinAdapter.kt
+97
-0
InstallPinFragment.kt
...java/com/mobiuz/app/dev/ui/auth/pin/InstallPinFragment.kt
+231
-0
RegisterFragment.kt
...a/com/mobiuz/app/dev/ui/auth/register/RegisterFragment.kt
+56
-58
VerificationFragment.kt
...biuz/app/dev/ui/auth/verification/VerificationFragment.kt
+1
-1
FullScreenDialog.kt
...ain/java/com/mobiuz/app/dev/ui/global/FullScreenDialog.kt
+0
-142
OfflineBottomSheet.kt
...n/java/com/mobiuz/app/dev/ui/global/OfflineBottomSheet.kt
+71
-0
PinFragment.kt
...src/main/java/com/mobiuz/app/dev/ui/global/PinFragment.kt
+214
-0
HomeFragment.kt
app/src/main/java/com/mobiuz/app/dev/ui/home/HomeFragment.kt
+10
-16
ServiceFragment.kt
...ain/java/com/mobiuz/app/dev/ui/service/ServiceFragment.kt
+7
-5
LanguageFragment.kt
...n/java/com/mobiuz/app/dev/ui/settings/LanguageFragment.kt
+5
-7
ChangePasswordFragment.kt
...uz/app/dev/ui/settings/security/ChangePasswordFragment.kt
+289
-0
SecurityFragment.kt
...m/mobiuz/app/dev/ui/settings/security/SecurityFragment.kt
+147
-0
StringExtension.kt
...va/com/mobiuz/app/dev/utils/extensions/StringExtension.kt
+7
-40
fragment_pin.xml
app/src/main/res/layout-large/fragment_pin.xml
+221
-0
activity_auth.xml
app/src/main/res/layout/activity_auth.xml
+3
-13
fragment_billing.xml
app/src/main/res/layout/fragment_billing.xml
+1
-1
fragment_change_password.xml
app/src/main/res/layout/fragment_change_password.xml
+15
-21
fragment_install_pin.xml
app/src/main/res/layout/fragment_install_pin.xml
+200
-0
fragment_language.xml
app/src/main/res/layout/fragment_language.xml
+1
-5
fragment_pin.xml
app/src/main/res/layout/fragment_pin.xml
+63
-44
fragment_profile.xml
app/src/main/res/layout/fragment_profile.xml
+1
-7
fragment_security.xml
app/src/main/res/layout/fragment_security.xml
+156
-0
fragment_support.xml
app/src/main/res/layout/fragment_support.xml
+1
-5
layout_offline_bottom_sheet.xml
app/src/main/res/layout/layout_offline_bottom_sheet.xml
+52
-0
bottom_nav_menu.xml
app/src/main/res/menu/bottom_nav_menu.xml
+1
-1
nav_graph_auth.xml
app/src/main/res/navigation/nav_graph_auth.xml
+3
-3
nav_graph_home.xml
app/src/main/res/navigation/nav_graph_home.xml
+12
-12
nav_graph_offline.xml
app/src/main/res/navigation/nav_graph_offline.xml
+2
-7
nav_graph_services.xml
app/src/main/res/navigation/nav_graph_services.xml
+56
-0
themes.xml
app/src/main/res/values/themes.xml
+1
-0
No files found.
.idea/misc.xml
View file @
5101f34d
...
...
@@ -43,6 +43,7 @@
<entry
key=
"app/src/main/res/drawable/radius_top.xml"
value=
"0.25416666666666665"
/>
<entry
key=
"app/src/main/res/drawable/tab_indicator.xml"
value=
"0.2756756756756757"
/>
<entry
key=
"app/src/main/res/drawable/text_handle.xml"
value=
"1.4214285714285715"
/>
<entry
key=
"app/src/main/res/layout-large/fragment_pin.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/activity_auth.xml"
value=
"0.15853658536585366"
/>
<entry
key=
"app/src/main/res/layout/activity_language.xml"
value=
"0.25"
/>
<entry
key=
"app/src/main/res/layout/activity_main.xml"
value=
"0.22"
/>
...
...
@@ -69,6 +70,7 @@
<entry
key=
"app/src/main/res/layout/fragment_forget_password.xml"
value=
"0.21174863387978143"
/>
<entry
key=
"app/src/main/res/layout/fragment_home.xml"
value=
"0.18385416666666668"
/>
<entry
key=
"app/src/main/res/layout/fragment_home_content.xml"
value=
"0.266796875"
/>
<entry
key=
"app/src/main/res/layout/fragment_install_pin.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/fragment_language.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/fragment_login.xml"
value=
"0.2"
/>
<entry
key=
"app/src/main/res/layout/fragment_main.xml"
value=
"0.25625"
/>
...
...
@@ -87,6 +89,7 @@
<entry
key=
"app/src/main/res/layout/fragment_progress.xml"
value=
"0.33242753623188404"
/>
<entry
key=
"app/src/main/res/layout/fragment_register.xml"
value=
"0.25"
/>
<entry
key=
"app/src/main/res/layout/fragment_safety.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/fragment_security.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/fragment_service.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/fragment_support.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/fragment_tarifs.xml"
value=
"0.25625"
/>
...
...
@@ -104,6 +107,7 @@
<entry
key=
"app/src/main/res/layout/layout_ask_create_task.xml"
value=
"0.22643442622950818"
/>
<entry
key=
"app/src/main/res/layout/layout_exit.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/layout_home_header.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/layout_offline_bottom_sheet.xml"
value=
"0.266051912568306"
/>
<entry
key=
"app/src/main/res/layout/layout_sender.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/motion_layout.xml"
value=
"0.266796875"
/>
<entry
key=
"app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.3416666666666667"
/>
...
...
app/aars/agr-sdk-core-release-1.7.0.aar
View file @
5101f34d
No preview for this file type
app/aars/agr-sdk-mobi-uz-release-1.0.0.aar
View file @
5101f34d
No preview for this file type
app/src/main/AndroidManifest.xml
View file @
5101f34d
...
...
@@ -64,7 +64,7 @@
android:windowSoftInputMode=
"adjustResize"
/>
<activity
android:name=
".dev.Billing
Activity
"
android:name=
".dev.Billing
Fragment
"
android:configChanges=
"orientation"
android:exported=
"false"
android:screenOrientation=
"portrait"
...
...
app/src/main/java/com/mobiuz/app/dev/Billing
Activity
.kt
→
app/src/main/java/com/mobiuz/app/dev/Billing
Fragment
.kt
View file @
5101f34d
...
...
@@ -3,38 +3,39 @@ package com.mobiuz.app.dev
import
android.os.Bundle
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
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.LocaleHelper
import
com.mobiuz.app.dev.utils.extensions.showMessage
import
dagger.hilt.android.AndroidEntryPoint
import
uz.agr.mobiuz.AGRBilling
import
uz.agr.sdk.coreui.extension.showMessage
import
javax.inject.Inject
@AndroidEntryPoint
class
Billing
Activity
:
AppCompatActivity
(
)
{
class
Billing
Fragment
:
BaseFragment
(
R
.
layout
.
fragment_billing
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentBillingBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
LocaleHelper
.
setLocale
(
this
)
super
.
onCreate
(
savedInstanceState
)
_bn
=
FragmentBillingBinding
.
inflate
(
layoutInflater
)
setContentView
(
bn
.
root
)
val
window
=
window
.
decorView
window
.
systemUiVisibility
=
window
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentBillingBinding
.
bind
(
view
)
setUpUI
()
val
window
=
requireActivity
().
window
.
decorView
window
.
systemUiVisibility
=
window
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
fun
setUpUI
()
{
override
fun
setUpUI
()
{
bn
.
apply
{
toolbar
.
setNavigationOnClickListener
{
finish
()
navController
.
navigateUp
()
}
AGRBilling
.
hasCards
().
subscribe
({
...
...
@@ -48,7 +49,7 @@ class BillingActivity : AppCompatActivity() {
override
fun
invoke
(
phoneNumber
:
String
)
{
pref
.
isShowPin
=
false
startActivity
(
AGRBilling
.
createCardsListIntent
(
this
@BillingActivity
,
pref
.
userPhone
.
filter
{
it
.
isDigit
()
})
AGRBilling
.
createCardsListIntent
(
requireContext
()
,
pref
.
userPhone
.
filter
{
it
.
isDigit
()
})
)
}
})
...
...
@@ -63,7 +64,7 @@ class BillingActivity : AppCompatActivity() {
)
*/
startActivity
(
AGRBilling
.
createReplenishBalanceIntent
(
this
@BillingActivity
,
phoneNumber
)
AGRBilling
.
createReplenishBalanceIntent
(
requireContext
()
,
phoneNumber
)
)
}
})
...
...
@@ -73,7 +74,7 @@ class BillingActivity : AppCompatActivity() {
override
fun
invoke
(
phoneNumber
:
String
)
{
pref
.
isShowPin
=
false
startActivity
(
AGRBilling
.
createHistoryIntent
(
this
@BillingActivity
,
phoneNumber
)
AGRBilling
.
createHistoryIntent
(
requireContext
()
,
phoneNumber
)
)
}
})
...
...
@@ -81,8 +82,7 @@ class BillingActivity : AppCompatActivity() {
}
}
override
fun
collects
()
{}
private
fun
getPhoneNumber
(
listener
:
LoadPhoneNumber
)
{
val
number
=
pref
.
userPhone
.
filter
{
it
.
isDigit
()
}
...
...
app/src/main/java/com/mobiuz/app/dev/MainActivity.kt
View file @
5101f34d
...
...
@@ -10,7 +10,6 @@ import android.view.View
import
androidx.activity.viewModels
import
androidx.annotation.IdRes
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatDelegate
import
androidx.core.os.bundleOf
import
androidx.core.view.GravityCompat
import
androidx.core.view.isVisible
...
...
@@ -53,6 +52,7 @@ class MainActivity : AppCompatActivity() {
private
var
currentNavController
:
LiveData
<
NavController
>?
=
null
private
val
viewModel
:
MainViewModel
by
viewModels
()
private
lateinit
var
receiver
:
BroadcastReceiver
private
val
intentFilter
=
IntentFilter
()
// if offline type == 0
private
var
type
=
0
...
...
@@ -77,9 +77,7 @@ class MainActivity : AppCompatActivity() {
currentNavController
?.
value
?.
navigate
(
R
.
id
.
homeFragment
)
}
AppCompatDelegate
.
setDefaultNightMode
(
AppCompatDelegate
.
MODE_NIGHT_NO
)
FirebaseApp
.
initializeApp
(
this
@MainActivity
)
// throw java.lang.NullPointerException("cannot")
mFirebaseAnalytics
=
FirebaseAnalytics
.
getInstance
(
this
@MainActivity
)
FirebaseMessaging
.
getInstance
().
token
.
addOnCompleteListener
{
...
...
@@ -96,14 +94,14 @@ class MainActivity : AppCompatActivity() {
}
if
(
intent
?.
action
==
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
){
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@MainActivity
)
bn
.
btnTryAgain
.
isVisible
=
(
type
==
0
)
&&
(
currentNavController
?.
value
?.
currentDestination
?.
id
!=
R
.
id
.
fullScree
nFragment
)
bn
.
btnTryAgain
.
isVisible
=
(
type
==
0
)
&&
(
currentNavController
?.
value
?.
currentDestination
?.
id
!=
R
.
id
.
pi
nFragment
)
if
(
type
==
0
)
{
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
}
}
}
}
val
intentFilter
=
IntentFilter
()
intentFilter
.
addAction
(
CONSTANTS
.
CONNECTIVITY_CHANGE
)
intentFilter
.
addAction
(
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
)
registerReceiver
(
receiver
,
intentFilter
)
...
...
@@ -156,7 +154,7 @@ class MainActivity : AppCompatActivity() {
btnSafety
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
navigateToSettingsScreen
(
R
.
id
.
s
afe
tyFragment
)
navigateToSettingsScreen
(
R
.
id
.
s
ecuri
tyFragment
)
}
})
...
...
@@ -218,10 +216,10 @@ class MainActivity : AppCompatActivity() {
private
fun
showPinCode
()
{
if
(
pref
.
blockedTime
<
System
.
currentTimeMillis
()
-
CONSTANTS
.
BLOCKED_TIME
){
if
(
currentNavController
?.
value
?.
currentDestination
?.
id
!=
R
.
id
.
fullScree
nFragment
&&
if
(
currentNavController
?.
value
?.
currentDestination
?.
id
!=
R
.
id
.
pi
nFragment
&&
currentNavController
?.
value
?.
currentDestination
?.
id
!=
R
.
id
.
ussdFragment
){
bn
.
btnTryAgain
.
isVisible
=
false
currentNavController
?.
value
?.
navigate
(
R
.
id
.
fullScree
nFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
TYPE_AFTER
))
currentNavController
?.
value
?.
navigate
(
R
.
id
.
pi
nFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
TYPE_AFTER
))
}
}
}
...
...
@@ -293,7 +291,7 @@ class MainActivity : AppCompatActivity() {
bottomNavigationView
=
findViewById
(
R
.
id
.
bottom_nav_view
)
val
navGraphIds
=
listOf
(
R
.
navigation
.
nav_graph_home
,
R
.
navigation
.
nav_graph_
profile
R
.
navigation
.
nav_graph_
services
)
val
controller
=
bottomNavigationView
.
setupWithNavController
(
...
...
app/src/main/java/com/mobiuz/app/dev/OfflineActivity.kt
View file @
5101f34d
...
...
@@ -46,45 +46,29 @@ class OfflineActivity : AppCompatActivity() {
super
.
onCreate
(
savedInstanceState
)
_bn
=
ActivityOfflineBinding
.
inflate
(
layoutInflater
)
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
)
// if(intent )
intent
?.
let
{
val
type
=
it
.
getStringExtra
(
CONSTANTS
.
TYPE_SERVICE
)
navController
.
popBackStack
()
if
(
pref
.
isRegistered
&&
pref
.
pinCode
.
isNotEmpty
()
&&
type
!=
CONSTANTS
.
FROM_ONLINE
)
{
navController
.
navigate
(
R
.
id
.
fullScreenFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
OFFLINE
))
}
else
{
navController
.
navigate
(
R
.
id
.
serviceFragment
,
bundleOf
(
CONSTANTS
.
TYPE_SERVICE
to
CONSTANTS
.
OFFLINE
))
}
}
navController
.
popBackStack
()
navController
.
navigate
(
R
.
id
.
serviceFragment
,
bundleOf
(
CONSTANTS
.
TYPE_SERVICE
to
CONSTANTS
.
OFFLINE
))
receiver
=
object
:
BroadcastReceiver
()
{
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
if
(
intent
?.
action
==
CONSTANTS
.
CONNECTIVITY_CHANGE
)
{
sendBroadcast
(
Intent
(
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
))
}
if
(
intent
?.
action
==
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
)
{
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@OfflineActivity
)
bn
.
btnTryAgain
.
isVisible
=
(
type
!=
0
)
&&
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
fullScreenFragment
)
bn
.
btnTryAgain
.
isVisible
=
(
type
!=
0
)
if
(
type
!=
0
)
{
showMessage
(
getString
(
R
.
string
.
yes_internet_connect
))
}
}
}
}
intentFilter
.
addAction
(
CONSTANTS
.
CONNECTIVITY_CHANGE
)
intentFilter
.
addAction
(
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
)
registerReceiver
(
receiver
,
intentFilter
)
bn
.
btnTryAgain
.
setOnClickListener
{
...
...
@@ -95,34 +79,6 @@ class OfflineActivity : AppCompatActivity() {
}
override
fun
onResume
()
{
super
.
onResume
()
if
(
pref
.
isRegistered
&&
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
()
{
if
(
pref
.
blockedTime
<
System
.
currentTimeMillis
()
-
CONSTANTS
.
BLOCKED_TIME
)
{
if
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
fullScreenFragment
&&
navController
.
currentDestination
?.
id
!=
R
.
id
.
ussdFragment
)
{
customLog
(
"fullScreenFragment"
)
bn
.
btnTryAgain
.
isVisible
=
false
navController
.
navigate
(
R
.
id
.
fullScreenFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
TYPE_AFTER
))
}
}
}
fun
navigate
()
{
when
{
!
pref
.
isRegistered
->
{
...
...
@@ -135,7 +91,7 @@ class OfflineActivity : AppCompatActivity() {
else
->
{
val
intent
=
Intent
(
this
,
MainActivity
::
class
.
java
)
intent
.
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
)
//
intent.putExtra(CONSTANTS.FIRST, CONSTANTS.FIRST)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
}
...
...
@@ -147,7 +103,6 @@ class OfflineActivity : AppCompatActivity() {
override
fun
onDestroy
()
{
unregisterReceiver
(
receiver
)
_bn
=
null
pref
.
blockedTime
=
0
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/java/com/mobiuz/app/dev/SplashActivity.kt
View file @
5101f34d
...
...
@@ -42,20 +42,19 @@ class SplashActivity : AppCompatActivity() {
@Inject
lateinit
var
pref
:
SharedPref
private
lateinit
var
receiver
:
BroadcastReceiver
private
val
intentFilter
=
IntentFilter
()
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
_bn
=
ActivitySplashBinding
.
inflate
(
layoutInflater
)
setContentView
(
bn
.
root
)
AppCompatDelegate
.
setDefaultNightMode
(
AppCompatDelegate
.
MODE_NIGHT_NO
)
// customLog("rect.top: ${getStatusBarHeight() / resources.displayMetrics.density}")
window
.
decorView
.
systemUiVisibility
=
View
.
VISIBLE
receiver
=
object
:
BroadcastReceiver
()
{
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
val
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@SplashActivity
)
if
(
type
==
0
)
{
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
if
(
pref
.
services
.
isNotEmpty
())
{
lifecycleScope
.
launchWhenCreated
{
delay
(
1500
)
...
...
@@ -70,7 +69,7 @@ class SplashActivity : AppCompatActivity() {
}
}
}
val
intentFilter
=
IntentFilter
(
"android.net.conn.CONNECTIVITY_CHANGE"
)
intentFilter
.
addAction
(
CONSTANTS
.
CONNECTIVITY_CHANGE
)
registerReceiver
(
receiver
,
intentFilter
)
...
...
@@ -83,17 +82,14 @@ class SplashActivity : AppCompatActivity() {
viewModel
.
servicesUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
// bn.progress.isVisible = false
bn
.
btnTryAgain
.
isVisible
=
false
navigate
()
}
is
UiStateObject
.
ERROR
->
{
// bn.progress.isVisible = false
bn
.
btnTryAgain
.
isVisible
=
true
showMessage
(
it
.
message
)
}
is
UiStateObject
.
LOADING
->
{
// bn.progress.isVisible = true
bn
.
btnTryAgain
.
isVisible
=
false
}
else
->
Unit
...
...
app/src/main/java/com/mobiuz/app/dev/model/ServiceData.kt
View file @
5101f34d
...
...
@@ -11,7 +11,9 @@ data class Translate(
val
uz
:
String
,
val
ru
:
String
,
val
en
:
String
)
){
}
data class
InnerData
(
val
title
:
Translate
,
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/AuthActivity.kt
View file @
5101f34d
...
...
@@ -25,6 +25,7 @@ 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
dagger.hilt.android.AndroidEntryPoint
import
javax.inject.Inject
...
...
@@ -39,25 +40,29 @@ class AuthActivity : AppCompatActivity() {
private
lateinit
var
navController
:
NavController
private
lateinit
var
mFirebaseAnalytics
:
FirebaseAnalytics
private
lateinit
var
receiver
:
BroadcastReceiver
private
var
type
=
0
private
var
verificationCode
:
String
?
=
null
private
val
intentFilter
=
IntentFilter
()
private
var
phone
=
""
// if offline type == 0
private
var
type
=
0
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
LocaleHelper
.
setLocale
(
this
)
super
.
onCreate
(
savedInstanceState
)
_bn
=
ActivityAuthBinding
.
inflate
(
layoutInflater
)
setContentView
(
bn
.
root
)
val
fragment
=
supportFragmentManager
.
findFragmentById
(
R
.
id
.
auth_container
)
as
NavHostFragment
navController
=
NavHostFragment
.
findNavController
(
fragment
)
FirebaseApp
.
initializeApp
(
this
)
mFirebaseAnalytics
=
FirebaseAnalytics
.
getInstance
(
this
)
AppCompatDelegate
.
setDefaultNightMode
(
AppCompatDelegate
.
MODE_NIGHT_NO
)
FirebaseMessaging
.
getInstance
().
token
.
addOnCompleteListener
{
if
(
it
.
isSuccessful
)
pref
.
deviceToken
=
it
.
result
.
toString
()
}
window
.
decorView
.
systemUiVisibility
=
window
.
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
intent
?.
let
{
phone
=
it
.
getStringExtra
(
CONSTANTS
.
PHONE
)
?:
""
...
...
@@ -78,31 +83,20 @@ class AuthActivity : AppCompatActivity() {
}
}
}
bn
.
btnTryAgain
.
setOnClickListener
{
if
(
type
==
0
){
navigate
()
}
}
receiver
=
object
:
BroadcastReceiver
(){
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
if
(
intent
?.
action
==
CONSTANTS
.
CONNECTIVITY_CHANGE
){
sendBroadcast
(
Intent
(
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
))
}
if
(
intent
?.
action
==
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
){
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@AuthActivity
)
bn
.
btnTryAgain
.
isVisible
=
(
type
==
0
)
&&
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
pinFragment
)
&&
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
biometricFragment
)
if
(
type
==
0
){
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
}
if
((
type
==
0
)
&&
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
pinFragment
)
&&
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
biometricFragment
))
showOfflineBottomSheetDialog
()
}
}
}
val
intentFilter
=
IntentFilter
()
intentFilter
.
addAction
(
CONSTANTS
.
CONNECTIVITY_CHANGE
)
intentFilter
.
addAction
(
CONSTANTS
.
MY_CONNECTIVITY_CHANGE
)
registerReceiver
(
receiver
,
intentFilter
)
}
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/check/CheckPhoneFragment.kt
View file @
5101f34d
...
...
@@ -36,9 +36,9 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
var
phone
=
""
var
phoneRaw
=
""
var
oldText
=
""
var
newText
=
""
var
phoneRaw
=
""
private
val
viewModel
:
AuthViewModel
by
viewModels
()
...
...
@@ -53,14 +53,17 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
override
fun
setUpUI
()
{
bn
.
apply
{
toolbar
.
setNavigationOnClickListener
{
requireActivity
().
finish
()
}
viewGroup
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
bn
.
viewGroup
.
hideKeyboard
()
}
})
inputPhone
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
beforeTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
count
:
Int
,
after
:
Int
)
{
...
...
@@ -97,9 +100,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
}
})
toolbar
.
setNavigationOnClickListener
{
requireActivity
().
finish
()
}
}
}
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/pin/PinAdapter.kt
→
app/src/main/java/com/mobiuz/app/dev/ui/auth/pin/
Install
PinAdapter.kt
View file @
5101f34d
...
...
@@ -8,7 +8,7 @@ import com.mobiuz.app.databinding.ItemPinBinding
import
com.mobiuz.app.dev.model.PinData
import
com.mobiuz.app.dev.utils.extensions.SingleBlock
class
PinAdapter
:
RecyclerView
.
Adapter
<
PinAdapter
.
VHolder
>()
{
class
InstallPinAdapter
:
RecyclerView
.
Adapter
<
Install
PinAdapter
.
VHolder
>()
{
private
val
list
:
ArrayList
<
PinData
>
by
lazy
{
ArrayList
()
}
private
var
listener
:
SingleBlock
<
String
>?
=
null
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/pin/PinFragment.kt
→
app/src/main/java/com/mobiuz/app/dev/ui/auth/pin/
Install
PinFragment.kt
View file @
5101f34d
package
com.mobiuz.app.dev.ui.auth.pin
import
android.content.Intent
import
android.graphics.Color
import
android.os.Bundle
import
android.view.View
import
android.view.animation.AnimationUtils
import
android.widget.TextView
import
androidx.biometric.BiometricManager
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG
import
androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
import
androidx.core.os.bundleOf
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
co.infinum.goldfinger.Goldfinger
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentPinBinding
import
com.mobiuz.app.databinding.Fragment
Install
PinBinding
import
com.mobiuz.app.dev.MainActivity
import
com.mobiuz.app.dev.model.PinData
import
com.mobiuz.app.dev.model.SharedPref
...
...
@@ -26,19 +24,18 @@ import com.mobiuz.app.dev.ui.global.CONSTANTS
import
com.mobiuz.app.dev.utils.Utils
import
com.mobiuz.app.dev.utils.extensions.*
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
javax.inject.Inject
@AndroidEntryPoint
class
PinFragment
:
BaseFragment
(
R
.
layout
.
fragment
_pin
)
{
class
InstallPinFragment
:
BaseFragment
(
R
.
layout
.
fragment_install
_pin
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPinBinding
?
=
null
private
var
_bn
:
Fragment
Install
PinBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
val
pinAdapter
=
Install
PinAdapter
()
private
var
type
=
""
private
var
titleText
=
""
private
var
pinCode
=
""
...
...
@@ -56,7 +53,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentPinBinding
.
bind
(
view
)
_bn
=
Fragment
Install
PinBinding
.
bind
(
view
)
biometricManager
=
BiometricManager
.
from
(
requireContext
())
setUpUI
()
...
...
@@ -84,23 +81,18 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
rvPin
.
adapter
=
pinAdapter
titleText
=
when
(
type
)
{
CONSTANTS
.
NEW_PIN
->
{
topDiv
.
isVisible
=
false
getString
(
R
.
string
.
install_pin
)
}
CONSTANTS
.
CONFIRM_NEW_PIN
->
{
topDiv
.
isVisible
=
false
getString
(
R
.
string
.
confirm_pin
)
}
CONSTANTS
.
CURRENT_PIN
->
{
topDiv
.
isVisible
=
true
getString
(
R
.
string
.
enter_old_pin
)
}
CONSTANTS
.
CHANGE_NEW_PIN
->
{
topDiv
.
isVisible
=
true
getString
(
R
.
string
.
enter_new_pin
)
}
CONSTANTS
.
CONFIRM_CHANGE_NEW_PIN
->
{
topDiv
.
isVisible
=
true
getString
(
R
.
string
.
confirm_new_pin
)
}
else
->
{
...
...
@@ -114,7 +106,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
pinAdapter
.
setOnDoneListener
{
when
(
type
)
{
CONSTANTS
.
NEW_PIN
->
{
navController
.
navigate
(
R
.
id
.
p
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CONFIRM_NEW_PIN
,
CONSTANTS
.
PIN_CODE
to
it
),
navController
.
navigate
(
R
.
id
.
installP
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CONFIRM_NEW_PIN
,
CONSTANTS
.
PIN_CODE
to
it
),
Utils
.
navOptions
())
}
CONSTANTS
.
CONFIRM_NEW_PIN
->
{
...
...
@@ -129,7 +121,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
}
CONSTANTS
.
CURRENT_PIN
->
{
if
(
pref
.
pinCode
==
it
){
navController
.
navigate
(
R
.
id
.
p
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CHANGE_NEW_PIN
),
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
installP
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CHANGE_NEW_PIN
),
Utils
.
navOptions
())
}
else
{
loadError
()
}
...
...
@@ -138,14 +130,15 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
if
(
pref
.
pinCode
==
it
){
showMessage
(
getString
(
R
.
string
.
cannot_change_pin
))
}
else
{
navController
.
navigate
(
R
.
id
.
pinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CONFIRM_CHANGE_NEW_PIN
,
CONSTANTS
.
PIN_CODE
to
it
),
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
installPinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CONFIRM_CHANGE_NEW_PIN
,
CONSTANTS
.
PIN_CODE
to
it
),
Utils
.
navOptions
())
}
}
CONSTANTS
.
CONFIRM_CHANGE_NEW_PIN
->
{
if
(
pinCode
==
it
){
pref
.
pinCode
=
pinCode
showCustomDialog
(
getString
(
R
.
string
.
pin_code_updated
),
true
){
navController
.
popBackStack
(
R
.
id
.
s
afe
tyFragment
,
false
)
navController
.
popBackStack
(
R
.
id
.
s
ecuri
tyFragment
,
false
)
}
}
else
{
...
...
@@ -176,7 +169,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
}
private
fun
checkBiometric
()
:
Boolean
{
return
when
(
biometricManager
.
canAuthenticate
(
B
iometricManager
.
Authenticators
.
BIOMETRIC_STRONG
or
BiometricManager
.
Authenticators
.
BIOMETRIC_WEAK
))
{
return
when
(
biometricManager
.
canAuthenticate
(
B
IOMETRIC_STRONG
or
BIOMETRIC_WEAK
))
{
BiometricManager
.
BIOMETRIC_SUCCESS
->
true
else
->
false
}
...
...
@@ -229,9 +222,7 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
pinAdapter
.
submitList
(
data
)
}
override
fun
collects
()
{
}
override
fun
collects
()
{}
override
fun
onDestroy
()
{
_bn
=
null
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/register/RegisterFragment.kt
View file @
5101f34d
...
...
@@ -21,6 +21,7 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import
com.mobiuz.app.dev.ui.global.CONSTANTS
import
com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import
com.mobiuz.app.dev.utils.Utils
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
...
...
@@ -38,6 +39,8 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
var
password
=
""
private
var
confirmPassword
=
""
private
var
phone
=
""
private
var
type
=
""
private
var
code
=
""
...
...
@@ -61,6 +64,10 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
override
fun
setUpUI
()
{
bn
.
apply
{
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
viewGroup
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
bn
.
viewGroup
.
hideKeyboard
()
...
...
@@ -79,22 +86,26 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
txtAgree
.
makeLinks
(
Pair
(
"Terms of Use"
,
View
.
OnClickListener
{
val
uri
=
Uri
.
parse
(
when
(
pref
.
language
){
CONSTANTS
.
UZ
->
CONSTANTS
.
LICENSE_UZ
CONSTANTS
.
RU
->
CONSTANTS
.
LICENSE_RU
else
->
CONSTANTS
.
LICENSE_EN
})
val
uri
=
Uri
.
parse
(
when
(
pref
.
language
)
{
CONSTANTS
.
UZ
->
CONSTANTS
.
LICENSE_UZ
CONSTANTS
.
RU
->
CONSTANTS
.
LICENSE_RU
else
->
CONSTANTS
.
LICENSE_EN
}
)
val
intent
=
Intent
(
Intent
.
ACTION_VIEW
)
intent
.
data
=
uri
startActivity
(
intent
)
}),
Pair
(
"Privacy Policy"
,
View
.
OnClickListener
{
val
uri
=
Uri
.
parse
(
when
(
pref
.
language
){
CONSTANTS
.
UZ
->
CONSTANTS
.
PRIVACY_POLICY_UZ
CONSTANTS
.
RU
->
CONSTANTS
.
PRIVACY_POLICY_RU
else
->
CONSTANTS
.
PRIVACY_POLICY_EN
})
val
uri
=
Uri
.
parse
(
when
(
pref
.
language
)
{
CONSTANTS
.
UZ
->
CONSTANTS
.
PRIVACY_POLICY_UZ
CONSTANTS
.
RU
->
CONSTANTS
.
PRIVACY_POLICY_RU
else
->
CONSTANTS
.
PRIVACY_POLICY_EN
}
)
val
intent
=
Intent
(
Intent
.
ACTION_VIEW
)
intent
.
data
=
uri
startActivity
(
intent
)
...
...
@@ -106,26 +117,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
inputPassword
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
txtCheckPassword
.
isVisible
=
(
s
.
toString
().
length
<
4
)
val
confirmText
=
inputConfirm
.
text
.
toString
().
trim
()
if
(
confirmText
.
isNotEmpty
())
{
if
(
s
.
toString
()
==
confirmText
)
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green100
))
btnLogin
.
isEnabled
=
true
}
else
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_not_same
)
btnLogin
.
isEnabled
=
false
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
primary100
))
}
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
}
else
{
imageCheck
.
isVisible
=
false
txtCheckConfirm
.
isVisible
=
false
}
checkPasswordAndConfirm
()
}
})
...
...
@@ -133,46 +125,52 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
inputConfirm
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
if
(
s
.
toString
()
==
inputPassword
.
text
.
toString
().
trim
())
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green100
))
btnLogin
.
isEnabled
=
true
}
else
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_not_same
)
btnLogin
.
isEnabled
=
false
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
primary100
))
}
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
checkPasswordAndConfirm
()
}
})
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
val
password
=
inputPassword
.
text
.
toString
().
trim
()
val
confirm
=
inputConfirm
.
text
.
toString
().
trim
()
when
{
password
.
length
<
4
||
password
!=
confirm
->
{
}
else
->
{
if
(
type
==
CONSTANTS
.
TYPE_FORGET
)
{
viewModel
.
resetPassword
(
UserAuth
(
phone
.
filter
{
it
.
isDigit
()
},
password
,
code
))
}
else
{
viewModel
.
register
(
UserAuth
(
phone
.
filter
{
it
.
isDigit
()
},
password
))
}
password
=
inputPassword
.
text
.
toString
().
trim
()
confirmPassword
=
inputConfirm
.
text
.
toString
().
trim
()
if
(
password
==
confirmPassword
){
if
(
type
==
CONSTANTS
.
TYPE_FORGET
)
{
viewModel
.
resetPassword
(
UserAuth
(
phone
.
filter
{
it
.
isDigit
()
},
password
,
code
))
}
else
{
viewModel
.
register
(
UserAuth
(
phone
.
filter
{
it
.
isDigit
()
},
password
))
}
}
}
})
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
}
private
fun
checkPasswordAndConfirm
(){
bn
.
apply
{
password
=
inputPassword
.
text
.
toString
().
trim
()
confirmPassword
=
inputConfirm
.
text
.
toString
().
trim
()
btnLogin
.
isEnabled
=
(
password
.
length
>
3
)
&&
(
password
==
confirmPassword
)
txtCheckPassword
.
isVisible
=
password
.
length
<
4
if
(
password
.
isNotEmpty
()
&&
confirmPassword
.
isNotEmpty
()){
if
(
password
==
confirmPassword
){
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
setTextColor
(
getColorCompat
(
R
.
color
.
green100
))
}
else
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_not_same
)
txtCheckConfirm
.
setTextColor
(
getColorCompat
(
R
.
color
.
primary100
))
}
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
}
}
}
override
fun
collects
()
{
...
...
@@ -207,7 +205,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
showProgressDialog
(
false
)
showCustomDialog
(
getString
(
R
.
string
.
password_successfully_updated
),
true
){
navController
.
popBackStack
(
R
.
id
.
loginFragment
,
false
)
navController
.
navigate
(
R
.
id
.
p
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
NEW_PIN
),
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
installP
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
NEW_PIN
),
Utils
.
navOptions
())
}
}
is
UiStateObject
.
ERROR
->
{
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/verification/VerificationFragment.kt
View file @
5101f34d
...
...
@@ -218,7 +218,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
pref
.
userPhone
=
phone
navController
.
navigate
(
R
.
id
.
p
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
NEW_PIN
),
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
installP
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
NEW_PIN
),
Utils
.
navOptions
())
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
...
...
app/src/main/java/com/mobiuz/app/dev/ui/global/FullScreenDialog.kt
deleted
100644 → 0
View file @
be371d26
package
com.mobiuz.app.dev.ui.global
import
android.os.Bundle
import
android.view.View
import
android.view.animation.AnimationUtils
import
android.widget.TextView
import
androidx.core.view.isVisible
import
androidx.fragment.app.DialogFragment
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
co.infinum.goldfinger.Goldfinger
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentPinDialogBinding
import
com.mobiuz.app.dev.model.PinData
import
com.mobiuz.app.dev.model.SharedPref
import
com.mobiuz.app.dev.ui.auth.pin.PinAdapter
import
com.mobiuz.app.dev.utils.extensions.SingleBlock
import
com.mobiuz.app.dev.utils.extensions.customLog
import
com.mobiuz.app.dev.utils.extensions.vibrate
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
java.lang.Exception
import
javax.inject.Inject
@AndroidEntryPoint
class
FullScreenDialog
:
DialogFragment
(
R
.
layout
.
fragment_pin_dialog
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPinDialogBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
var
listener
:
SingleBlock
<
Boolean
>?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setStyle
(
STYLE_NO_TITLE
,
R
.
style
.
FullScreenDialog
)
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentPinDialogBinding
.
bind
(
view
)
isCancelable
=
false
setUpUI
()
if
(
pref
.
isUseFingerPrint
)
loadFingerPrint
()
}
private
fun
loadFingerPrint
()
{
val
golfing
=
Goldfinger
.
Builder
(
requireContext
()).
build
()
if
(
golfing
.
canAuthenticate
())
{
val
params
=
Goldfinger
.
PromptParams
.
Builder
(
this
)
.
title
(
getString
(
R
.
string
.
enter_from_finger_or_face
))
.
negativeButtonText
(
getString
(
R
.
string
.
cancel
))
.
build
()
golfing
.
authenticate
(
params
,
object
:
Goldfinger
.
Callback
{
override
fun
onResult
(
result
:
Goldfinger
.
Result
)
{
if
(
result
.
type
()
==
Goldfinger
.
Type
.
SUCCESS
){
dismiss
()
}
customLog
(
"onResult:${result.type()}, ${result.reason()}"
)
}
override
fun
onError
(
e
:
Exception
)
{
customLog
(
"onError"
)
}
})
}
}
fun
setUpUI
()
{
bn
.
apply
{
loadData
()
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
adapter
=
pinAdapter
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
delay
(
50
)
if
(
pref
.
pinCode
==
it
)
{
txtNotPin
.
isVisible
=
false
dismiss
()
}
else
{
vibrate
(
requireContext
())
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
context
,
R
.
anim
.
shake
))
txtNotPin
.
isVisible
=
true
}
}
}
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
when
(
it
.
id
)
{
R
.
id
.
btn_remove
->
{
pinAdapter
.
removeItem
()
txtNotPin
.
isVisible
=
false
}
R
.
id
.
with_password
->
{
listener
?.
invoke
(
true
)
}
R
.
id
.
btn_finger_print
->
{
loadFingerPrint
()
}
else
->
{
val
text
=
it
as
TextView
txtNotPin
.
isVisible
=
false
pinAdapter
.
addItem
(
text
.
text
.
toString
().
toInt
())
}
}
}
}
}
}
private
fun
loadData
()
{
data
.
clear
()
for
(
i
in
0
..
3
)
{
data
.
add
(
PinData
(-
1
))
}
pinAdapter
.
submitList
(
data
)
}
fun
setOnPinDoneListener
(
block
:
SingleBlock
<
Boolean
>)
{
listener
=
block
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
app/src/main/java/com/mobiuz/app/dev/ui/global/OfflineBottomSheet.kt
0 → 100644
View file @
5101f34d
package
com.mobiuz.app.dev.ui.global
import
android.Manifest
import
android.content.Intent
import
android.net.Uri
import
android.os.Bundle
import
android.view.LayoutInflater
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.databinding.LayoutOfflineBottomSheetBinding
import
com.mobiuz.app.dev.OfflineActivity
import
com.mobiuz.app.dev.model.SharedPref
import
com.mobiuz.app.dev.model.UssdData
import
com.mobiuz.app.dev.utils.extensions.checkPermission
import
com.mobiuz.app.dev.utils.extensions.getCurrentName
import
dagger.hilt.android.AndroidEntryPoint
import
javax.inject.Inject
@AndroidEntryPoint
class
OfflineBottomSheet
()
:
BottomSheetDialogFragment
()
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
LayoutOfflineBottomSheetBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
var
lng
=
""
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
{
_bn
=
LayoutOfflineBottomSheetBinding
.
inflate
(
inflater
)
return
bn
.
root
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
setUpUI
()
}
private
fun
setUpUI
()
{
bn
.
apply
{
lng
=
pref
.
language
btnZapros
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
pref
.
isShowPin
=
false
navigate
()
}
})
btnOtmena
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
dismiss
()
}
})
}
}
fun
navigate
(){
val
intent
=
Intent
(
requireContext
(),
OfflineActivity
::
class
.
java
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
requireActivity
().
finishAffinity
()
dismiss
()
}
override
fun
onDestroy
()
{
super
.
onDestroy
()
_bn
=
null
}
}
\ No newline at end of file
app/src/main/java/com/mobiuz/app/dev/ui/global/
FullScree
nFragment.kt
→
app/src/main/java/com/mobiuz/app/dev/ui/global/
Pi
nFragment.kt
View file @
5101f34d
...
...
@@ -16,14 +16,13 @@ import androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
co.infinum.goldfinger.Goldfinger
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentPin
Dialog
Binding
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.PinAdapter
import
com.mobiuz.app.dev.ui.auth.pin.
Install
PinAdapter
import
com.mobiuz.app.dev.ui.base.BaseFragment
import
com.mobiuz.app.dev.utils.NetworkUtil
import
com.mobiuz.app.dev.utils.extensions.showCustomDialog
...
...
@@ -35,14 +34,14 @@ import javax.inject.Inject
@AndroidEntryPoint
class
FullScreenFragment
:
BaseFragment
(
R
.
layout
.
fragment_pin_dialog
)
{
class
PinFragment
:
BaseFragment
(
R
.
layout
.
fragment_pin
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPin
Dialog
Binding
?
=
null
private
var
_bn
:
FragmentPinBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
val
pinAdapter
=
Install
PinAdapter
()
private
lateinit
var
mainViewModel
:
MainViewModel
private
var
type
=
""
private
var
errorCount
=
3
...
...
@@ -59,7 +58,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentPin
Dialog
Binding
.
bind
(
view
)
_bn
=
FragmentPinBinding
.
bind
(
view
)
val
window
=
requireActivity
().
window
.
decorView
window
.
systemUiVisibility
=
window
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
...
...
@@ -197,9 +196,7 @@ class FullScreenFragment : BaseFragment(R.layout.fragment_pin_dialog) {
}
override
fun
collects
()
{
}
override
fun
collects
()
{}
private
fun
loadData
()
{
data
.
clear
()
...
...
app/src/main/java/com/mobiuz/app/dev/ui/home/HomeFragment.kt
View file @
5101f34d
...
...
@@ -11,11 +11,13 @@ import androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.RecyclerView
import
com.google.android.material.tabs.TabLayoutMediator
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentHomeBinding
import
com.mobiuz.app.dev.Billing
Activity
import
com.mobiuz.app.dev.Billing
Fragment
import
com.mobiuz.app.dev.MainViewModel
import
com.mobiuz.app.dev.model.SharedPref
import
com.mobiuz.app.dev.network.model.Customer
...
...
@@ -48,20 +50,22 @@ 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
)
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
mainViewModel
=
ViewModelProvider
(
requireActivity
())[
MainViewModel
::
class
.
java
]
viewModel
.
mainIndex
()
viewModel
.
mainRoaming
()
lastUpdateTime
=
System
.
currentTimeMillis
()
matchParam
=
FrameLayout
.
LayoutParams
(
LinearLayout
.
LayoutParams
.
MATCH_PARENT
,
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
)
changedParam
=
FrameLayout
.
LayoutParams
(
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
,
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
)
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentHomeBinding
.
bind
(
view
)
val
window
=
requireActivity
().
window
.
decorView
window
.
systemUiVisibility
=
View
.
VISIBLE
requireActivity
().
window
.
decorView
.
systemUiVisibility
=
View
.
VISIBLE
setUpUI
()
collects
()
...
...
@@ -70,9 +74,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
override
fun
setUpUI
()
{
bn
.
apply
{
matchParam
=
FrameLayout
.
LayoutParams
(
LinearLayout
.
LayoutParams
.
MATCH_PARENT
,
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
)
changedParam
=
FrameLayout
.
LayoutParams
(
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
,
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
)
slider
.
adapter
=
sliderAdapter
TabLayoutMediator
(
tabIndicator
,
slider
)
{
_
,
_
->
}.
attach
()
...
...
@@ -99,8 +100,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
btnAddSum
.
setOnClickListener
{
pref
.
isShowPin
=
false
pref
.
blockedTime
=
System
.
currentTimeMillis
()
startActivity
(
Intent
(
requireContext
(),
BillingActivity
::
class
.
java
))
navController
.
navigate
(
R
.
id
.
billingFragment
)
}
val
number
=
pref
.
userPhone
.
customMasketHome
().
replace
(
"-"
,
" "
)
...
...
@@ -112,9 +112,6 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
}
bounceScrollView
.
setOnOverScrollListener
{
fromStart
,
overScrolledDistance
->
// customLog("fromStart:$fromStart, overScroll:$overScroll, overScrolledDistance: $overScrolledDistance")
if
(!
fromStart
)
{
lastUpdateTime
=
System
.
currentTimeMillis
()
}
...
...
@@ -190,16 +187,13 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
bn
.
cardRoaming
.
isVisible
=
it
.
data
.
name
!=
null
customLog
(
"mainRoamingUiState SUCCESS${it.data}"
)
}
is
UiStateObject
.
ERROR
->
{
customLog
(
"mainRoamingUiState ERROR${it.message}"
)
showProgressDialog
(
false
)
bn
.
cardRoaming
.
isVisible
=
false
}
is
UiStateObject
.
LOADING
->
{
bn
.
cardRoaming
.
isVisible
=
false
customLog
(
"mainRoamingUiState LOADING"
)
}
else
->
Unit
}
...
...
@@ -242,11 +236,11 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
super
.
onResume
()
mainViewModel
.
bottomSheet
(
true
)
mainViewModel
.
swipeDrawer
(
true
)
customLog
(
"onResume"
)
}
override
fun
onStop
()
{
super
.
onStop
()
mainViewModel
.
bottomSheet
(
false
)
mainViewModel
.
swipeDrawer
(
false
)
}
...
...
app/src/main/java/com/mobiuz/app/dev/ui/service/ServiceFragment.kt
View file @
5101f34d
...
...
@@ -58,6 +58,13 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
mainViewModel
.
swipeDrawer
(
true
)
}
override
fun
onStop
()
{
super
.
onStop
()
mainViewModel
.
bottomSheet
(
false
)
mainViewModel
.
swipeDrawer
(
false
)
}
override
fun
setUpUI
()
{
bn
.
apply
{
...
...
@@ -89,11 +96,6 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
}
}
override
fun
onStop
()
{
super
.
onStop
()
mainViewModel
.
swipeDrawer
(
false
)
}
private
fun
navigateToServiceScreen
(
key
:
ServiceData
)
{
navController
.
navigate
(
R
.
id
.
ussdFragment
,
bundleOf
(
CONSTANTS
.
SERVICE
to
Gson
().
toJson
(
key
)))
...
...
app/src/main/java/com/mobiuz/app/dev/ui/settings/LanguageFragment.kt
View file @
5101f34d
...
...
@@ -14,9 +14,7 @@ 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
com.mobiuz.app.dev.utils.extensions.SingleBlock
import
dagger.hilt.android.AndroidEntryPoint
import
me.everything.android.ui.overscroll.OverScrollDecoratorHelper
import
uz.agr.mobiuz.AGRBilling
import
javax.inject.Inject
...
...
@@ -42,7 +40,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
override
fun
setUpUI
()
{
bn
.
apply
{
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
navController
.
navigateUp
()
}
bn
.
apply
{
when
(
pref
.
language
)
{
...
...
@@ -50,19 +48,19 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
CONSTANTS
.
RU
->
imageRussian
.
isVisible
=
true
CONSTANTS
.
EN
->
imageEnglish
.
isVisible
=
true
}
uzbekLang
.
setOnClickListener
(
object
:
ButtonClick
(){
uzbekLang
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
setLangAndNavigate
(
CONSTANTS
.
UZ
)
}
})
russianLang
.
setOnClickListener
(
object
:
ButtonClick
(){
russianLang
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
setLangAndNavigate
(
CONSTANTS
.
RU
)
}
})
englishLang
.
setOnClickListener
(
object
:
ButtonClick
(){
englishLang
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
setLangAndNavigate
(
CONSTANTS
.
EN
)
}
...
...
@@ -73,7 +71,7 @@ class LanguageFragment : BaseFragment(R.layout.fragment_language) {
private
fun
setLangAndNavigate
(
lang
:
String
)
{
pref
.
language
=
lang
AGRBilling
.
changeLanguage
(
requireContext
(),
lang
)
AGRBilling
.
setLanguage
(
requireContext
(),
lang
)
LocaleHelper
.
setLocale
(
requireContext
())
val
intent
=
Intent
(
requireContext
(),
MainActivity
::
class
.
java
)
intent
.
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
)
...
...
app/src/main/java/com/mobiuz/app/dev/ui/settings/s
afe
ty/ChangePasswordFragment.kt
→
app/src/main/java/com/mobiuz/app/dev/ui/settings/s
ecuri
ty/ChangePasswordFragment.kt
View file @
5101f34d
package
com.mobiuz.app.dev.ui.settings.s
afe
ty
package
com.mobiuz.app.dev.ui.settings.s
ecuri
ty
import
android.content.Intent
import
android.os.Bundle
import
android.util.Log
import
android.view.View
import
androidx.core.os.bundleOf
import
androidx.core.view.isVisible
...
...
@@ -23,7 +22,6 @@ import com.mobiuz.app.dev.ui.global.ButtonClick
import
com.mobiuz.app.dev.ui.global.CONSTANTS
import
com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import
com.mobiuz.app.dev.utils.Utils
import
com.mobiuz.app.dev.utils.extensions.customLog
import
com.mobiuz.app.dev.utils.extensions.getColorCompat
import
com.mobiuz.app.dev.utils.extensions.showCustomDialog
import
com.mobiuz.app.dev.utils.extensions.showMessage
...
...
@@ -68,7 +66,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
val
text
=
when
(
type
)
{
CONSTANTS
.
CURRENT_PASSWORD
->{
CONSTANTS
.
CURRENT_PASSWORD
->
{
txtForgetPassword
.
isVisible
=
true
getString
(
R
.
string
.
enter_current_password
)
}
...
...
@@ -81,7 +79,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
}
txtPassword
.
text
=
text
viewGroup
.
setOnClickListener
(
object
:
ButtonClick
(){
viewGroup
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
bn
.
viewGroup
.
hideKeyboard
()
}
...
...
@@ -89,7 +87,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
txtForgetPassword
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
if
(
type
==
CONSTANTS
.
CURRENT_PASSWORD
)
{
if
(
type
==
CONSTANTS
.
CURRENT_PASSWORD
)
{
viewModel
.
forgetPassword
(
UserAuth
(
pref
.
userPhone
.
replace
(
" "
,
""
).
replace
(
"+"
,
""
)))
}
}
...
...
@@ -98,7 +96,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
inputPassword
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
if
(
type
==
CONSTANTS
.
CONFIRM_NEW_PASSWORD
)
{
if
(
type
==
CONSTANTS
.
CONFIRM_NEW_PASSWORD
)
{
if
(
s
.
toString
()
==
newPassword
)
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
...
...
@@ -113,7 +111,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
}
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
}
else
{
}
else
{
btnLogin
.
isEnabled
=
s
.
toString
().
length
>
3
imageCheck
.
isVisible
=
false
txtCheckConfirm
.
isVisible
=
false
...
...
@@ -145,9 +143,9 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
}
CONSTANTS
.
NEW_PASSWORD
->
{
if
(
oldPassword
==
password
)
{
if
(
oldPassword
==
password
)
{
showMessage
(
getString
(
R
.
string
.
cannot_change_password
))
}
else
{
}
else
{
navController
.
navigate
(
R
.
id
.
changePasswordFragment
,
bundleOf
(
...
...
@@ -163,7 +161,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
CONSTANTS
.
CONFIRM_NEW_PASSWORD
->
{
if
(
newPassword
==
password
)
{
viewModel
.
changePassword
(
ChangePassword
(
oldPassword
,
newPassword
))
viewModel
.
changePassword
(
ChangePassword
(
oldPassword
,
newPassword
))
}
}
}
...
...
@@ -180,14 +178,14 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
}
private
fun
loadError
(){
private
fun
loadError
()
{
bn
.
apply
{
if
(
count
==
0
){
showCustomDialog
(
getString
(
R
.
string
.
popitok_error_password
),
false
)
{
if
(
count
==
0
)
{
showCustomDialog
(
getString
(
R
.
string
.
popitok_error_password
),
false
)
{
}
}
else
{
showMessage
(
getString
(
R
.
string
.
popitok_password
,
count
.
toString
()))
}
else
{
showMessage
(
getString
(
R
.
string
.
popitok_password
,
count
.
toString
()))
}
}
}
...
...
@@ -208,20 +206,20 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
showProgressDialog
(
false
)
}
is
UiStateObject
.
ERROR
->
{
if
(
it
.
fromServer
)
{
if
(
it
.
fromServer
)
{
count
--
if
(
count
==
0
)
{
showCustomDialog
(
getString
(
R
.
string
.
popitok_error_password
),
false
){
if
(
count
==
0
)
{
showCustomDialog
(
getString
(
R
.
string
.
popitok_error_password
),
false
)
{
pref
.
clearUserData
()
val
intent
=
Intent
(
requireContext
(),
AuthActivity
::
class
.
java
)
intent
.
putExtra
(
CONSTANTS
.
TYPE_AUTH
,
CONSTANTS
.
LOGIN
)
startActivity
(
intent
)
requireActivity
().
finish
()
}
}
else
{
}
else
{
loadError
()
}
}
else
{
}
else
{
showToastMessage
(
it
.
message
)
}
...
...
@@ -241,8 +239,8 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
showCustomDialog
(
getString
(
R
.
string
.
password_updated
),
true
)
{
navController
.
popBackStack
(
R
.
id
.
s
afe
tyFragment
,
false
)
showCustomDialog
(
getString
(
R
.
string
.
password_updated
),
true
)
{
navController
.
popBackStack
(
R
.
id
.
s
ecuri
tyFragment
,
false
)
}
}
is
UiStateObject
.
ERROR
->
{
...
...
app/src/main/java/com/mobiuz/app/dev/ui/settings/s
afety/Safe
tyFragment.kt
→
app/src/main/java/com/mobiuz/app/dev/ui/settings/s
ecurity/Securi
tyFragment.kt
View file @
5101f34d
package
com.mobiuz.app.dev.ui.settings.s
afe
ty
package
com.mobiuz.app.dev.ui.settings.s
ecuri
ty
import
android.content.Intent
import
android.os.Build
...
...
@@ -12,40 +12,33 @@ import androidx.core.os.bundleOf
import
androidx.core.view.isVisible
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
com.mobiuz.app.BuildConfig
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentS
afe
tyBinding
import
com.mobiuz.app.databinding.FragmentS
ecuri
tyBinding
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.customLog
import
com.mobiuz.app.dev.utils.extensions.showMessage
import
dagger.hilt.android.AndroidEntryPoint
import
uz.agr.sdk.core.entity.synxron.VersionSdk
// 35
// 93 320 36 00 = 30
import
javax.inject.Inject
@AndroidEntryPoint
class
S
afetyFragment
:
BaseFragment
(
R
.
layout
.
fragment_safe
ty
)
{
class
S
ecurityFragment
:
BaseFragment
(
R
.
layout
.
fragment_securi
ty
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
lateinit
var
biometricManager
:
BiometricManager
private
var
_bn
:
FragmentS
afe
tyBinding
?
=
null
private
var
_bn
:
FragmentS
ecuri
tyBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentS
afe
tyBinding
.
bind
(
view
)
_bn
=
FragmentS
ecuri
tyBinding
.
bind
(
view
)
setUpUI
()
collects
()
biometricManager
=
BiometricManager
.
from
(
requireContext
())
...
...
@@ -91,7 +84,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
btnChangePin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
navController
.
navigate
(
R
.
id
.
p
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CURRENT_PIN
),
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
installP
inFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CURRENT_PIN
),
Utils
.
navOptions
())
}
})
btnChangePassword
.
setOnClickListener
(
object
:
ButtonClick
()
{
...
...
@@ -105,19 +98,15 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
private
fun
checkBiometricAfter
(
toSettings
:
Boolean
)
{
when
(
biometricManager
.
canAuthenticate
(
BIOMETRIC_STRONG
or
BIOMETRIC_WEAK
))
{
BiometricManager
.
BIOMETRIC_SUCCESS
->
{
customLog
(
"BIOMETRIC_SUCCESS"
)
bn
.
btnBiometric
.
isVisible
=
true
}
BiometricManager
.
BIOMETRIC_ERROR_NO_HARDWARE
->
{
customLog
(
"BIOMETRIC_ERROR_NO_HARDWARE"
)
pref
.
isUseFingerPrint
=
false
bn
.
btnBiometric
.
isVisible
=
false
}
BiometricManager
.
BIOMETRIC_ERROR_NONE_ENROLLED
->
{
customLog
(
"BIOMETRIC_ERROR_NONE_ENROLLED"
)
customLog
(
"${Build.VERSION.SDK_INT} >= ${Build.VERSION_CODES.R}"
)
if
(
toSettings
){
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
R
){
...
...
@@ -125,7 +114,6 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
putExtra
(
Settings
.
EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED
,
BIOMETRIC_STRONG
or
BIOMETRIC_WEAK
)
}
pref
.
isShowPin
=
false
customLog
(
"BIOMETRIC_ERROR_NONE_ENROLLED INTENT"
)
startActivityForResult
(
enrollIntent
,
1
)
}
else
{
showMessage
(
getString
(
R
.
string
.
to_settings
))
...
...
@@ -135,14 +123,12 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
pref
.
isUseFingerPrint
=
false
}
else
->
Unit
else
->
{
if
(
toSettings
)
showMessage
(
getString
(
R
.
string
.
to_settings
))
}
}
}
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
)
}
private
fun
checkBiometric
():
Boolean
{
return
when
(
biometricManager
.
canAuthenticate
(
BIOMETRIC_STRONG
or
BIOMETRIC_WEAK
))
{
...
...
app/src/main/java/com/mobiuz/app/dev/utils/extensions/StringExtension.kt
View file @
5101f34d
...
...
@@ -26,7 +26,7 @@ import com.mobiuz.app.dev.model.Translate
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.
FullScreenDialog
import
com.mobiuz.app.dev.ui.global.
OfflineBottomSheet
import
com.mobiuz.app.dev.ui.global.SenderDialog
import
retrofit2.HttpException
import
java.io.IOException
...
...
@@ -57,20 +57,8 @@ fun String.getDateTime(): String? {
}
}
fun
FragmentActivity
.
showFullScreenDialog
(
block
:
(
dialog
:
FullScreenDialog
)
->
Unit
){
val
time
=
SharedPref
(
this
).
blockedTime
if
(
time
<
System
.
currentTimeMillis
()
-
CONSTANTS
.
BLOCKED_TIME
){
val
fragment
=
supportFragmentManager
.
findFragmentByTag
(
CONSTANTS
.
FULL_SCREEN_DIALOG
)
if
(
fragment
==
null
){
val
dialog
=
FullScreenDialog
()
dialog
.
setOnPinDoneListener
{
block
(
dialog
)
}
dialog
.
show
(
supportFragmentManager
,
CONSTANTS
.
FULL_SCREEN_DIALOG
)
}
}
fun
FragmentActivity
.
showOfflineBottomSheetDialog
(){
OfflineBottomSheet
().
show
(
supportFragmentManager
,
CONSTANTS
.
FULL_SCREEN_DIALOG
)
}
fun
Activity
.
showMessage
(
message
:
String
)
{
Toast
.
makeText
(
this
,
message
,
Toast
.
LENGTH_SHORT
).
show
()
...
...
@@ -151,15 +139,8 @@ fun String.checkChangedPosition(new:String):Int{
fun
String
.
maskedTextMobi
():
String
{
var
newText
=
""
for
(
i
in
this
.
indices
){
if
(
i
==
2
){
newText
+=
" "
}
if
(
i
==
5
){
newText
+=
" "
}
if
(
i
==
7
){
if
(
i
==
2
||
i
==
5
||
i
==
7
){
newText
+=
" "
}
newText
+=
this
[
i
]
...
...
@@ -169,15 +150,6 @@ fun String.maskedTextMobi():String{
return
newText
}
//fun Fragment.showCustomDialog(string: String, status: Boolean, block: () -> Unit) {
// val snackBar = Snackbar.make(this.requireView(),string, Snackbar.LENGTH_LONG)
// .setBackgroundTint(Color.GRAY)
// .setTextColor(Color.WHITE)
// .setText(string)
// snackBar.show()
//
//}
fun
TextView
.
makeLinks
(
vararg
links
:
Pair
<
String
,
View
.
OnClickListener
>)
{
val
spannableString
=
SpannableString
(
this
.
text
)
var
startIndexOfLink
=
-
1
...
...
@@ -262,12 +234,10 @@ fun String.customMasket():String{
new
+=
") "
}
if
(
i
==
9
){
new
+=
"-"
}
if
(
i
==
11
){
if
(
i
==
9
||
i
==
11
){
new
+=
"-"
}
new
+=
text
[
i
]
}
return
new
...
...
@@ -284,10 +254,7 @@ fun String.customMasketHome():String{
new
+=
" "
}
if
(
i
==
9
){
new
+=
"-"
}
if
(
i
==
11
){
if
(
i
==
9
||
i
==
11
){
new
+=
"-"
}
new
+=
text
[
i
]
...
...
app/src/main/res/layout-large/fragment_pin
_dialog
.xml
→
app/src/main/res/layout-large/fragment_pin.xml
View file @
5101f34d
File moved
app/src/main/res/layout/activity_auth.xml
View file @
5101f34d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:background=
"@color/white100"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows=
"true"
>
...
...
@@ -12,19 +12,9 @@
android:id=
"@+id/auth_container"
android:name=
"androidx.navigation.fragment.NavHostFragment"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
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_marginVertical=
"30dp"
android:text=
"@string/to_offline"
android:visibility=
"gone"
/>
</LinearLayout>
app/src/main/res/layout/fragment_billing.xml
View file @
5101f34d
...
...
@@ -6,7 +6,7 @@
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:orientation=
"vertical"
tools:context=
".dev.Billing
Activity
"
>
tools:context=
".dev.Billing
Fragment
"
>
<com.google.android.material.appbar.MaterialToolbar
...
...
app/src/main/res/layout/fragment_change_password.xml
View file @
5101f34d
...
...
@@ -2,24 +2,18 @@
<androidx.constraintlayout.widget.ConstraintLayout
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:id=
"@+id/view_group"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"
fals
e"
android:fitsSystemWindows=
"
tru
e"
android:orientation=
"vertical"
>
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id=
"@+id/div"
app:layout_constraintTop_toTopOf=
"parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@android:color/transparent"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:id=
"@+id/frame"
app:layout_constraintTop_toBottomOf=
"@id/div"
android:layout_height=
"wrap_content"
>
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:layout_constraintTop_toTopOf=
"parent"
>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
...
...
@@ -28,30 +22,30 @@
app:navigationIcon=
"@drawable/ic_baseline_arrow_back"
/>
<LinearLayout
android:id=
"@+id/error_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/primary100"
android:gravity=
"center"
android:visibility=
"invisible"
android:id=
"@+id/error_layout"
android:orientation=
"vertical"
android:background=
"@color/primary100"
android:layout_height=
"match_parent"
>
android:visibility=
"invisible"
>
<TextView
android:layout_width=
"wrap_content"
android:textColor=
"@color/white100"
android:id=
"@+id/error_title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/wrong_password"
android:textColor=
"@color/white100"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
<TextView
android:layout_width=
"wrap_content"
android:textColor=
"@color/white100"
android:id=
"@+id/error_text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/_14sdp"
android:text=
"@string/popitok"
android:textColor=
"@color/white100"
android:textSize=
"14sp"
/>
</LinearLayout>
...
...
@@ -107,10 +101,10 @@
android:id=
"@+id/image_check"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/_6sdp"
android:paddingHorizontal=
"6dp"
android:src=
"@drawable/ic_vector_error"
android:visibility=
"gone"
android:layout_marginTop=
"@dimen/_6sdp"
app:layout_constraintEnd_toStartOf=
"@id/txt_check_confirm"
app:layout_constraintStart_toStartOf=
"@id/layout_input_password"
app:layout_constraintTop_toBottomOf=
"@id/layout_input_password"
/>
...
...
@@ -122,8 +116,8 @@
android:layout_marginTop=
"@dimen/_6sdp"
android:text=
"@string/must_same"
android:textColor=
"@color/grey110"
android:visibility=
"gone"
android:textSize=
"13sp"
android:visibility=
"gone"
app:layout_constraintStart_toEndOf=
"@id/image_check"
app:layout_constraintTop_toBottomOf=
"@id/layout_input_password"
/>
...
...
app/src/main/res/layout/fragment_
pin_dialog
.xml
→
app/src/main/res/layout/fragment_
install_pin
.xml
View file @
5101f34d
...
...
@@ -5,48 +5,55 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/white"
android:fitsSystemWindows=
"
fals
e"
android:fitsSystemWindows=
"
tru
e"
android:orientation=
"vertical"
>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:navigationIcon=
"@drawable/ic_baseline_arrow_back"
/>
<TextView
style=
"@style/TitleTextStyle"
android:textSize=
"@dimen/_20sdp"
android:id=
"@+id/txt_enter_pin"
android:layout_marginTop=
"@dimen/_44sdp
"
android:text=
"@string/
enter_pin_code
"
/>
style=
"@style/TitleTextStyle
"
android:text=
"@string/
install_pin
"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:id=
"@+id/frame"
android:layout_weight=
"0.9"
>
android:layout_weight=
"1"
>
<TextView
android:id=
"@+id/txt_not_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"top|center"
android:layout_marginTop=
"@dimen/_
2
0sdp"
android:layout_marginBottom=
"@dimen/_
2
0sdp"
android:layout_marginTop=
"@dimen/_
1
0sdp"
android:layout_marginBottom=
"@dimen/_
3
0sdp"
android:text=
"@string/pin_not_same"
android:textColor=
"@color/primary100"
android:textSize=
"
@dimen/_10sd
p"
android:textSize=
"
16s
p"
android:textStyle=
"bold"
android:visibility=
"gone"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_width=
"@dimen/_100sdp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:
orientation=
"vertical
"
android:
layout_height=
"wrap_content
"
>
android:
gravity=
"center
"
android:
orientation=
"vertical
"
>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/card_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"0dp"
android:minWidth=
"@dimen/_110sdp"
android:minHeight=
"@dimen/_32sdp"
>
android:layout_gravity=
"center"
android:minWidth=
"@dimen/_100sdp"
android:minHeight=
"@dimen/_32sdp"
app:cardCornerRadius=
"0dp"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_pin"
...
...
@@ -54,33 +61,31 @@
android:layout_height=
"match_parent"
android:layout_gravity=
"center"
android:orientation=
"horizontal"
android:paddingHorizontal=
"18dp"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount=
"4"
tools:listitem=
"@layout/item_pin"
/>
</com.google.android.material.card.MaterialCardView>
<View
android:layout_width=
"@dimen/_1
1
0sdp"
android:
background=
"@color/grey30
"
android:
layout_height=
"2dp"
/>
android:layout_width=
"@dimen/_1
2
0sdp"
android:
layout_height=
"2dp
"
android:
background=
"@color/grey30"
/>
</LinearLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/btn_view_group"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"2.8"
>
android:layout_weight=
"2.5"
>
<TextView
android:id=
"@+id/btn_1"
style=
"@style/BtnStyle"
app:layout_constraintHorizontal_chainStyle=
"packed"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_1"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintEnd_toStartOf=
"@id/btn_2"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
...
...
@@ -88,10 +93,11 @@
<TextView
android:id=
"@+id/btn_2"
style=
"@style/BtnStyle"
android:layout_marginHorizontal=
"@dimen/_26sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_2"
android:layout_marginHorizontal=
"@dimen/_26sdp"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintTop_toTopOf=
"parent"
/>
...
...
@@ -113,7 +119,8 @@
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintEnd_toStartOf=
"@id/btn_5"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
app:layout_constraintVertical_chainStyle=
"packed"
/>
<TextView
android:id=
"@+id/btn_5"
...
...
@@ -140,8 +147,8 @@
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_7"
app:layout_constraintEnd_toStartOf=
"@id/btn_8"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintEnd_toStartOf=
"@id/btn_8"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
...
...
@@ -164,24 +171,11 @@
app:layout_constraintStart_toEndOf=
"@id/btn_8"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<ImageView
android:id=
"@+id/btn_finger_print"
android:visibility=
"invisible"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:src=
"@drawable/ic_finger_print"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintStart_toStartOf=
"@id/btn_7"
app:layout_constraintEnd_toEndOf=
"@id/btn_7"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:id=
"@+id/btn_0"
style=
"@style/BtnStyle"
android:layout_marginTop=
"
24
dp"
android:layout_marginTop=
"
@dimen/_16s
dp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_0"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
...
...
@@ -194,31 +188,13 @@
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:padding=
"@dimen/_
12
sdp"
android:padding=
"@dimen/_
4
sdp"
android:src=
"@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintStart_toStartOf=
"@id/btn_9"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:id=
"@+id/with_password"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:layout_marginTop=
"@dimen/_20sdp"
android:background=
"?android:selectableItemBackground"
android:text=
"@string/open_with_password"
android:textColor=
"@color/primary100"
android:textSize=
"14sp"
android:textStyle=
"bold"
android:paddingHorizontal=
"@dimen/_20sdp"
android:paddingVertical=
"@dimen/_12sdp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_0"
/>
app:layout_constraintStart_toEndOf=
"@id/btn_0"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_language.xml
View file @
5101f34d
...
...
@@ -3,13 +3,9 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:orientation=
"vertical"
>
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id=
"@+id/top_div"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@android:color/transparent"
/>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
...
...
app/src/main/res/layout/fragment_pin.xml
View file @
5101f34d
...
...
@@ -5,60 +5,48 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/white"
android:fitsSystemWindows=
"
fals
e"
android:fitsSystemWindows=
"
tru
e"
android:orientation=
"vertical"
>
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id=
"@+id/top_div"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@android:color/transparent"
/>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:navigationIcon=
"@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id=
"@+id/txt_enter_pin"
style=
"@style/TitleTextStyle"
android:text=
"@string/install_pin"
/>
android:textSize=
"@dimen/_20sdp"
android:id=
"@+id/txt_enter_pin"
android:layout_marginTop=
"@dimen/_34sdp"
android:text=
"@string/enter_pin_code"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
>
android:id=
"@+id/frame"
android:layout_weight=
"0.9"
>
<TextView
android:id=
"@+id/txt_not_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"top|center"
android:layout_marginTop=
"@dimen/_
1
0sdp"
android:layout_marginBottom=
"@dimen/_
3
0sdp"
android:layout_marginTop=
"@dimen/_
2
0sdp"
android:layout_marginBottom=
"@dimen/_
2
0sdp"
android:text=
"@string/pin_not_same"
android:textColor=
"@color/primary100"
android:textSize=
"
16s
p"
android:textSize=
"
@dimen/_10sd
p"
android:textStyle=
"bold"
android:visibility=
"gone"
/>
<LinearLayout
android:layout_width=
"@dimen/_100sdp"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_gravity=
"center"
android:
gravity=
"center
"
android:
orientation=
"vertical
"
>
android:
orientation=
"vertical
"
android:
layout_height=
"wrap_content
"
>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/card_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:minWidth=
"@dimen/_100sdp"
android:minHeight=
"@dimen/_32sdp"
app:cardCornerRadius=
"0dp"
>
app:cardCornerRadius=
"0dp"
android:minWidth=
"@dimen/_110sdp"
android:minHeight=
"@dimen/_32sdp"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_pin"
...
...
@@ -66,31 +54,33 @@
android:layout_height=
"match_parent"
android:layout_gravity=
"center"
android:orientation=
"horizontal"
android:paddingHorizontal=
"18dp"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount=
"4"
tools:listitem=
"@layout/item_pin"
/>
</com.google.android.material.card.MaterialCardView>
<View
android:layout_width=
"@dimen/_1
2
0sdp"
android:
layout_height=
"2dp
"
android:
background=
"@color/grey30"
/>
android:layout_width=
"@dimen/_1
1
0sdp"
android:
background=
"@color/grey30
"
android:
layout_height=
"2dp"
/>
</LinearLayout>
</FrameLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/btn_view_group"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"2.5"
>
android:layout_weight=
"2.8"
>
<TextView
android:id=
"@+id/btn_1"
style=
"@style/BtnStyle"
app:layout_constraintHorizontal_chainStyle=
"packed"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_1"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintEnd_toStartOf=
"@id/btn_2"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
...
...
@@ -98,11 +88,10 @@
<TextView
android:id=
"@+id/btn_2"
style=
"@style/BtnStyle"
android:layout_marginHorizontal=
"@dimen/_26sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_2"
android:layout_marginHorizontal=
"@dimen/_26sdp"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintTop_toTopOf=
"parent"
/>
...
...
@@ -124,8 +113,7 @@
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintEnd_toStartOf=
"@id/btn_5"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
app:layout_constraintVertical_chainStyle=
"packed"
/>
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
<TextView
android:id=
"@+id/btn_5"
...
...
@@ -152,8 +140,8 @@
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_7"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintEnd_toStartOf=
"@id/btn_8"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
...
...
@@ -176,11 +164,24 @@
app:layout_constraintStart_toEndOf=
"@id/btn_8"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<ImageView
android:id=
"@+id/btn_finger_print"
android:visibility=
"invisible"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:src=
"@drawable/ic_finger_print"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintStart_toStartOf=
"@id/btn_7"
app:layout_constraintEnd_toEndOf=
"@id/btn_7"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:id=
"@+id/btn_0"
style=
"@style/BtnStyle"
android:layout_marginTop=
"
@dimen/_16s
dp"
android:layout_marginTop=
"
24
dp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_0"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
...
...
@@ -193,13 +194,31 @@
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:padding=
"@dimen/_
4
sdp"
android:padding=
"@dimen/_
12
sdp"
android:src=
"@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/btn_0"
app:layout_constraintStart_toStartOf=
"@id/btn_9"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:id=
"@+id/with_password"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:layout_marginTop=
"@dimen/_20sdp"
android:background=
"?android:selectableItemBackground"
android:text=
"@string/open_with_password"
android:textColor=
"@color/primary100"
android:textSize=
"14sp"
android:textStyle=
"bold"
android:paddingHorizontal=
"@dimen/_20sdp"
android:paddingVertical=
"@dimen/_12sdp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_0"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_profile.xml
View file @
5101f34d
...
...
@@ -4,16 +4,10 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
xmlns:tools=
"http://schemas.android.com/tools"
android:fitsSystemWindows=
"
fals
e"
android:fitsSystemWindows=
"
tru
e"
android:orientation=
"vertical"
>
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id=
"@+id/top_div"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@android:color/transparent"
/>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/fragment_s
afe
ty.xml
→
app/src/main/res/layout/fragment_s
ecuri
ty.xml
View file @
5101f34d
...
...
@@ -4,14 +4,9 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"
fals
e"
android:fitsSystemWindows=
"
tru
e"
android:orientation=
"vertical"
>
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id=
"@+id/top_div"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@android:color/transparent"
/>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
...
...
app/src/main/res/layout/fragment_support.xml
View file @
5101f34d
...
...
@@ -4,13 +4,9 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:fitsSystemWindows=
"true"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<com.mobiuz.app.dev.ui.home.StatusBarSpacer
android:id=
"@+id/top_div"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@android:color/transparent"
/>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
...
...
app/src/main/res/layout/layout_offline_bottom_sheet.xml
0 → 100644
View file @
5101f34d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:orientation=
"vertical"
android:layout_height=
"wrap_content"
>
<ImageView
android:layout_width=
"wrap_content"
android:src=
"@drawable/ic_rectangle_122"
android:layout_gravity=
"center"
android:layout_marginTop=
"12dp"
android:layout_height=
"wrap_content"
/>
<TextView
style=
"@style/ServicesTextStyle"
android:id=
"@+id/txt_title"
android:layout_width=
"match_parent"
android:gravity=
"center"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginTop=
"20dp"
android:layout_marginHorizontal=
"@dimen/_20sdp"
android:text=
"@string/not_internet_connect"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
<Button
android:id=
"@+id/btn_zapros"
style=
"@style/ButtonPrimary"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_margin=
"24dp"
android:paddingVertical=
"12dp"
android:text=
"@string/to_offline"
android:textSize=
"14sp"
/>
<TextView
android:id=
"@+id/btn_otmena"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:gravity=
"center"
android:textStyle=
"bold"
android:background=
"?android:selectableItemBackground"
android:layout_marginHorizontal=
"24dp"
android:layout_marginBottom=
"@dimen/_16sdp"
android:paddingVertical=
"12dp"
android:text=
"@string/close_process"
android:textSize=
"14sp"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/menu/bottom_nav_menu.xml
View file @
5101f34d
...
...
@@ -7,7 +7,7 @@
android:title=
"@string/my_mobi"
/>
<item
android:id=
"@+id/nav_graph_
profile
"
android:id=
"@+id/nav_graph_
services
"
android:icon=
"@drawable/ic_vector_service"
android:title=
"@string/services"
/>
...
...
app/src/main/res/navigation/nav_graph_auth.xml
View file @
5101f34d
...
...
@@ -23,10 +23,10 @@
tools:layout=
"@layout/fragment_login"
/>
<fragment
android:id=
"@+id/
p
inFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.PinFragment"
android:id=
"@+id/
installP
inFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.
Install
PinFragment"
android:label=
"PinFragment"
tools:layout=
"@layout/fragment_pin"
/>
tools:layout=
"@layout/fragment_
install_
pin"
/>
<fragment
android:id=
"@+id/biometricFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.biometric.BiometricFragment"
...
...
app/src/main/res/navigation/nav_graph_home.xml
View file @
5101f34d
...
...
@@ -2,7 +2,7 @@
<navigation
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"
app:startDestination=
"@id/
fullScree
nFragment"
app:startDestination=
"@id/
pi
nFragment"
android:id=
"@+id/nav_graph_home"
>
<fragment
...
...
@@ -12,10 +12,10 @@
tools:layout=
"@layout/fragment_home"
/>
<fragment
android:id=
"@+id/
p
inFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.PinFragment"
android:id=
"@+id/
installP
inFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.
Install
PinFragment"
android:label=
"PinFragment"
tools:layout=
"@layout/fragment_pin"
/>
tools:layout=
"@layout/fragment_
install_
pin"
/>
<fragment
android:id=
"@+id/languageFragment"
...
...
@@ -28,10 +28,10 @@
android:name=
"com.mobiuz.app.dev.ui.settings.SupportFragment"
android:label=
"SupportFragment"
/>
<fragment
android:id=
"@+id/s
afe
tyFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
afety.Safe
tyFragment"
android:id=
"@+id/s
ecuri
tyFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
ecurity.Securi
tyFragment"
android:label=
"fragment_safety"
tools:layout=
"@layout/fragment_s
afe
ty"
/>
tools:layout=
"@layout/fragment_s
ecuri
ty"
/>
<fragment
android:id=
"@+id/profileFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.ProfileFragment"
...
...
@@ -39,19 +39,19 @@
tools:layout=
"@layout/fragment_profile"
/>
<fragment
android:id=
"@+id/changePasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
afe
ty.ChangePasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
ecuri
ty.ChangePasswordFragment"
android:label=
"CurrentPasswordFragment"
/>
<fragment
android:id=
"@+id/billingFragment"
android:name=
"com.mobiuz.app.dev.Billing
Activity
"
android:name=
"com.mobiuz.app.dev.Billing
Fragment
"
android:label=
"fragment_billing"
tools:layout=
"@layout/fragment_billing"
/>
<fragment
android:id=
"@+id/
fullScree
nFragment"
tools:layout=
"@layout/fragment_pin
_dialog
"
android:name=
"com.mobiuz.app.dev.ui.global.
FullScree
nFragment"
android:id=
"@+id/
pi
nFragment"
tools:layout=
"@layout/fragment_pin"
android:name=
"com.mobiuz.app.dev.ui.global.
Pi
nFragment"
android:label=
"FullScreenFragment"
/>
</navigation>
\ No newline at end of file
app/src/main/res/navigation/nav_graph_offline.xml
View file @
5101f34d
...
...
@@ -3,7 +3,8 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/nav_graph_settings"
app:startDestination=
"@id/fullScreenFragment"
>
app:startDestination=
"@id/serviceFragment"
>
<fragment
android:id=
"@+id/serviceFragment"
tools:layout=
"@layout/fragment_service"
...
...
@@ -14,10 +15,4 @@
android:name=
"com.mobiuz.app.dev.ui.service.UssdFragment"
android:label=
"ServicesFragmentActivity"
/>
<fragment
android:id=
"@+id/fullScreenFragment"
tools:layout=
"@layout/fragment_pin_dialog"
android:name=
"com.mobiuz.app.dev.ui.global.FullScreenFragment"
android:label=
"FullScreenFragment"
/>
</navigation>
\ No newline at end of file
app/src/main/res/navigation/nav_graph_
profile
.xml
→
app/src/main/res/navigation/nav_graph_
services
.xml
View file @
5101f34d
...
...
@@ -3,12 +3,12 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
app:startDestination=
"@id/serviceFragment"
android:id=
"@+id/nav_graph_
profile
"
>
android:id=
"@+id/nav_graph_
services
"
>
<fragment
android:id=
"@+id/
fullScree
nFragment"
tools:layout=
"@layout/fragment_pin
_dialog
"
android:name=
"com.mobiuz.app.dev.ui.global.
FullScree
nFragment"
android:id=
"@+id/
pi
nFragment"
tools:layout=
"@layout/fragment_pin"
android:name=
"com.mobiuz.app.dev.ui.global.
Pi
nFragment"
android:label=
"FullScreenFragment"
/>
<fragment
...
...
@@ -33,10 +33,10 @@
android:name=
"com.mobiuz.app.dev.ui.settings.SupportFragment"
android:label=
"SupportFragment"
/>
<fragment
android:id=
"@+id/s
afe
tyFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
afety.Safe
tyFragment"
android:id=
"@+id/s
ecuri
tyFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
ecurity.Securi
tyFragment"
android:label=
"fragment_safety"
tools:layout=
"@layout/fragment_s
afe
ty"
/>
tools:layout=
"@layout/fragment_s
ecuri
ty"
/>
<fragment
android:id=
"@+id/profileFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.ProfileFragment"
...
...
@@ -44,13 +44,13 @@
tools:layout=
"@layout/fragment_profile"
/>
<fragment
android:id=
"@+id/changePasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
afe
ty.ChangePasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.s
ecuri
ty.ChangePasswordFragment"
android:label=
"CurrentPasswordFragment"
/>
<fragment
android:id=
"@+id/
p
inFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.PinFragment"
android:id=
"@+id/
installP
inFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.
Install
PinFragment"
android:label=
"PinFragment"
tools:layout=
"@layout/fragment_pin"
/>
tools:layout=
"@layout/fragment_
install_
pin"
/>
</navigation>
\ No newline at end of file
app/src/main/res/values/themes.xml
View file @
5101f34d
...
...
@@ -11,6 +11,7 @@
<item
name=
"colorPrimaryDark"
>
@android:color/transparent
</item>
<item
name=
"android:statusBarColor"
>
@android:color/transparent
</item>
<item
name=
"android:windowTranslucentStatus"
>
true
</item>
<item
name=
"android:windowLightStatusBar"
tools:targetApi=
"m"
>
true
</item>
<item
name=
"android:windowAnimationStyle"
>
@style/WindowAnimationStyle
</item>
<item
name=
"android:forceDarkAllowed"
tools:targetApi=
"q"
>
false
</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