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
785858b0
Commit
785858b0
authored
Dec 18, 2021
by
shohboz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[UPD]
MUS-195
Feature, updated change pin screen to one screen
parent
bafee89e
Changes
27
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
193 additions
and
1285 deletions
+193
-1285
MainActivity.kt
app/src/main/java/com/mobiuz/app/dev/MainActivity.kt
+1
-7
ApiService.kt
...rc/main/java/com/mobiuz/app/dev/network/api/ApiService.kt
+4
-4
Customer.kt
...rc/main/java/com/mobiuz/app/dev/network/model/Customer.kt
+6
-2
Response.kt
...rc/main/java/com/mobiuz/app/dev/network/model/Response.kt
+7
-0
AuthActivity.kt
app/src/main/java/com/mobiuz/app/dev/ui/auth/AuthActivity.kt
+1
-3
ConfirmPinFragment.kt
...java/com/mobiuz/app/dev/ui/auth/pin/ConfirmPinFragment.kt
+0
-125
PinFragment.kt
...c/main/java/com/mobiuz/app/dev/ui/auth/pin/PinFragment.kt
+124
-5
RegisterFragment.kt
...a/com/mobiuz/app/dev/ui/auth/register/RegisterFragment.kt
+1
-1
MyVerificationFragment.kt
...uz/app/dev/ui/auth/verification/MyVerificationFragment.kt
+1
-1
CONSTANTS.kt
app/src/main/java/com/mobiuz/app/dev/ui/global/CONSTANTS.kt
+12
-10
HomeFragment.kt
app/src/main/java/com/mobiuz/app/dev/ui/home/HomeFragment.kt
+1
-1
SafetyFragment.kt
...a/com/mobiuz/app/dev/ui/settings/safety/SafetyFragment.kt
+1
-1
ChangePasswordFragment.kt
...dev/ui/settings/safety/password/ChangePasswordFragment.kt
+7
-15
ConfirmNewPinFragment.kt
...z/app/dev/ui/settings/safety/pin/ConfirmNewPinFragment.kt
+0
-131
NewPinFragment.kt
...m/mobiuz/app/dev/ui/settings/safety/pin/NewPinFragment.kt
+0
-104
OldPinFragment.kt
...m/mobiuz/app/dev/ui/settings/safety/pin/OldPinFragment.kt
+0
-145
shake.xml
app/src/main/res/anim/shake.xml
+3
-3
activity_main.xml
app/src/main/res/layout/activity_main.xml
+4
-21
fragment_confirm_new_pin.xml
app/src/main/res/layout/fragment_confirm_new_pin.xml
+0
-227
fragment_new_pin.xml
app/src/main/res/layout/fragment_new_pin.xml
+0
-207
fragment_old_pin.xml
app/src/main/res/layout/fragment_old_pin.xml
+0
-235
fragment_pin.xml
app/src/main/res/layout/fragment_pin.xml
+2
-0
fragment_safety.xml
app/src/main/res/layout/fragment_safety.xml
+1
-1
nav_graph_auth.xml
app/src/main/res/navigation/nav_graph_auth.xml
+0
-5
nav_graph_home.xml
app/src/main/res/navigation/nav_graph_home.xml
+6
-13
nav_graph_profile.xml
app/src/main/res/navigation/nav_graph_profile.xml
+5
-12
strings.xml
app/src/main/res/values/strings.xml
+6
-6
No files found.
app/src/main/java/com/mobiuz/app/dev/MainActivity.kt
View file @
785858b0
...
@@ -79,9 +79,7 @@ class MainActivity : AppCompatActivity() {
...
@@ -79,9 +79,7 @@ class MainActivity : AppCompatActivity() {
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@MainActivity
)
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@MainActivity
)
bn
.
btnTryAgain
.
isVisible
=
type
==
0
bn
.
btnTryAgain
.
isVisible
=
type
==
0
if
(
type
!=
0
){
if
(
type
==
0
){
showMessage
(
getString
(
R
.
string
.
yes_internet_connect
))
}
else
{
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
}
}
}
}
...
@@ -155,9 +153,6 @@ class MainActivity : AppCompatActivity() {
...
@@ -155,9 +153,6 @@ class MainActivity : AppCompatActivity() {
txtPublicOferta
.
setOnClickListener
{
txtPublicOferta
.
setOnClickListener
{
navigateUri
(
"https://www.mobi.uz/"
)
navigateUri
(
"https://www.mobi.uz/"
)
}
}
txtConfidensialnost
.
setOnClickListener
{
navigateUri
(
"https://www.mobi.uz/"
)
}
}
}
}
}
...
@@ -185,7 +180,6 @@ class MainActivity : AppCompatActivity() {
...
@@ -185,7 +180,6 @@ class MainActivity : AppCompatActivity() {
override
fun
onResume
()
{
override
fun
onResume
()
{
super
.
onResume
()
super
.
onResume
()
customLog
(
"onResume: pref.isShowPin:${pref.isShowPin}"
)
if
(
pref
.
isShowPin
)
{
if
(
pref
.
isShowPin
)
{
showPinCode
()
showPinCode
()
}
else
{
}
else
{
...
...
app/src/main/java/com/mobiuz/app/dev/network/api/ApiService.kt
View file @
785858b0
...
@@ -40,7 +40,7 @@ interface ApiService {
...
@@ -40,7 +40,7 @@ interface ApiService {
@POST
(
"customer/check-reset-code"
)
@POST
(
"customer/check-reset-code"
)
suspend
fun
checkResetCode
(
suspend
fun
checkResetCode
(
@Body
req
:
UserAuth
@Body
req
:
UserAuth
):
Response
List
<
Any
>
):
Response
@POST
(
"customer/reset-password"
)
@POST
(
"customer/reset-password"
)
suspend
fun
resetPassword
(
suspend
fun
resetPassword
(
...
@@ -48,7 +48,7 @@ interface ApiService {
...
@@ -48,7 +48,7 @@ interface ApiService {
):
ResponseObject
<
GenerateToken
>
):
ResponseObject
<
GenerateToken
>
@POST
(
"customer/log-out"
)
@POST
(
"customer/log-out"
)
suspend
fun
logOut
():
Response
List
<
Any
>
suspend
fun
logOut
():
Response
@POST
(
"customer/send-sms-code"
)
@POST
(
"customer/send-sms-code"
)
suspend
fun
reSendSms
(
suspend
fun
reSendSms
(
...
@@ -58,12 +58,12 @@ interface ApiService {
...
@@ -58,12 +58,12 @@ interface ApiService {
@POST
(
"customer/check-password"
)
@POST
(
"customer/check-password"
)
suspend
fun
checkPassword
(
suspend
fun
checkPassword
(
@Body
req
:
UserAuth
@Body
req
:
UserAuth
):
Response
Object
<
Any
>
):
Response
@POST
(
"customer/change-password"
)
@POST
(
"customer/change-password"
)
suspend
fun
installPassword
(
suspend
fun
installPassword
(
@Body
req
:
ChangePassword
@Body
req
:
ChangePassword
):
Response
Object
<
Any
>
):
Response
@POST
(
"service/index"
)
@POST
(
"service/index"
)
suspend
fun
getServices
():
ResponseList
<
ServiceData
>
suspend
fun
getServices
():
ResponseList
<
ServiceData
>
...
...
app/src/main/java/com/mobiuz/app/dev/network/model/Customer.kt
View file @
785858b0
...
@@ -7,12 +7,12 @@ data class Customer(
...
@@ -7,12 +7,12 @@ data class Customer(
data class
CustomerData
(
data class
CustomerData
(
var
info
:
CustomerInfo
?,
var
info
:
CustomerInfo
?,
var
name
:
String
,
var
name
:
String
,
val
tarif
i
:
TarifCodeName
?
val
tarif
f
:
TarifCodeName
?
)
)
data class
TarifCodeName
(
data class
TarifCodeName
(
var
code
:
String
,
var
code
:
String
,
var
name
:
String
var
name
:
Any
)
)
data class
CustomerInfo
(
data class
CustomerInfo
(
...
@@ -32,7 +32,11 @@ data class CustomerInfoCounters(
...
@@ -32,7 +32,11 @@ data class CustomerInfoCounters(
)
)
data class
CodeValueUnit
(
data class
CodeValueUnit
(
var
base_value
:
Int
?,
var
code
:
String
?,
var
code
:
String
?,
var
value
:
Int
?,
var
value
:
Int
?,
var
date_from
:
String
?,
var
date_to
:
String
?,
var
name
:
String
?,
var
unit
:
String
?,
var
unit
:
String
?,
)
)
\ No newline at end of file
app/src/main/java/com/mobiuz/app/dev/network/model/Response.kt
0 → 100644
View file @
785858b0
package
com.mobiuz.app.dev.network.model
data class
Response
(
var
status
:
Boolean
,
var
message
:
String
,
var
errors
:
List
<
Errors
>,
)
\ No newline at end of file
app/src/main/java/com/mobiuz/app/dev/ui/auth/AuthActivity.kt
View file @
785858b0
...
@@ -84,9 +84,7 @@ class AuthActivity : AppCompatActivity() {
...
@@ -84,9 +84,7 @@ class AuthActivity : AppCompatActivity() {
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
override
fun
onReceive
(
context
:
Context
?,
intent
:
Intent
?)
{
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@AuthActivity
)
type
=
NetworkUtil
.
getConnectivityStatus
(
this
@AuthActivity
)
bn
.
btnTryAgain
.
isVisible
=
type
==
0
bn
.
btnTryAgain
.
isVisible
=
type
==
0
if
(
type
!=
0
){
if
(
type
==
0
){
showMessage
(
getString
(
R
.
string
.
yes_internet_connect
))
}
else
{
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
showMessage
(
getString
(
R
.
string
.
not_internet_connect
))
}
}
}
}
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/pin/ConfirmPinFragment.kt
deleted
100644 → 0
View file @
bafee89e
package
com.mobiuz.app.dev.ui.auth.pin
import
android.content.Intent
import
android.os.Bundle
import
android.view.View
import
android.view.animation.AnimationUtils
import
android.widget.TextView
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentPinBinding
import
com.mobiuz.app.dev.MainActivity
import
com.mobiuz.app.dev.model.PinData
import
com.mobiuz.app.dev.model.SharedPref
import
com.mobiuz.app.dev.ui.base.BaseFragment
import
com.mobiuz.app.dev.ui.global.CONSTANTS
import
com.mobiuz.app.dev.utils.Utils
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
javax.inject.Inject
@AndroidEntryPoint
class
ConfirmPinFragment
:
BaseFragment
(
R
.
layout
.
fragment_pin
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPinBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
var
pinCode
=
""
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
pinCode
=
it
.
getString
(
"pinCode"
,
""
)
?:
""
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentPinBinding
.
bind
(
view
)
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
bn
.
apply
{
loadData
()
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
adapter
=
pinAdapter
txtEnterPin
.
text
=
getString
(
R
.
string
.
confirm_pin
)
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
delay
(
50
)
if
(
pinCode
==
it
)
{
pref
.
pinCode
=
pinCode
txtNotPin
.
isVisible
=
false
navigate
()
}
else
{
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
txtNotPin
.
isVisible
=
true
}
}
}
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
if
(
it
.
id
==
R
.
id
.
btn_remove
)
{
pinAdapter
.
removeItem
()
txtNotPin
.
isVisible
=
false
}
else
{
val
text
=
it
as
TextView
pinAdapter
.
addItem
(
text
.
text
.
toString
().
toInt
())
}
}
}
}
}
private
fun
navigate
()
{
pref
.
pinCode
=
pinCode
val
manager
=
FingerprintManagerCompat
.
from
(
requireContext
())
val
isEnabled
=
manager
.
isHardwareDetected
&&
manager
.
hasEnrolledFingerprints
()
if
(
isEnabled
)
{
navController
.
navigate
(
R
.
id
.
biometricFragment
,
null
,
Utils
.
navOptions
())
}
else
{
startActivity
(
Intent
(
requireContext
(),
MainActivity
::
class
.
java
).
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
))
requireActivity
().
finish
()
}
}
private
fun
loadData
()
{
data
.
clear
()
for
(
i
in
0
..
3
)
{
data
.
add
(
PinData
(-
1
))
}
pinAdapter
.
submitList
(
data
)
}
override
fun
collects
()
{
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
app/src/main/java/com/mobiuz/app/dev/ui/auth/pin/PinFragment.kt
View file @
785858b0
package
com.mobiuz.app.dev.ui.auth.pin
package
com.mobiuz.app.dev.ui.auth.pin
import
android.content.Intent
import
android.graphics.Color
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
android.view.animation.AnimationUtils
import
android.widget.TextView
import
android.widget.TextView
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
androidx.core.os.bundleOf
import
androidx.core.os.bundleOf
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.LinearLayoutManager
import
co.infinum.goldfinger.Goldfinger
import
com.mobiuz.app.R
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentPinBinding
import
com.mobiuz.app.databinding.FragmentPinBinding
import
com.mobiuz.app.dev.MainActivity
import
com.mobiuz.app.dev.model.PinData
import
com.mobiuz.app.dev.model.PinData
import
com.mobiuz.app.dev.model.SharedPref
import
com.mobiuz.app.dev.model.SharedPref
import
com.mobiuz.app.dev.ui.auth.AuthActivity
import
com.mobiuz.app.dev.ui.base.BaseFragment
import
com.mobiuz.app.dev.ui.base.BaseFragment
import
com.mobiuz.app.dev.ui.global.CONSTANTS
import
com.mobiuz.app.dev.utils.Utils
import
com.mobiuz.app.dev.utils.Utils
import
com.mobiuz.app.dev.utils.extensions.customLog
import
com.mobiuz.app.dev.utils.extensions.getColorCompat
import
com.mobiuz.app.dev.utils.extensions.showMessage
import
com.mobiuz.app.dev.utils.extensions.vibrate
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.delay
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -29,6 +41,19 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -29,6 +41,19 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
data
=
ArrayList
<
PinData
>()
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
val
pinAdapter
=
PinAdapter
()
private
var
type
=
""
private
var
titleText
=
""
private
var
pinCode
=
""
private
var
count
=
3
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
type
=
it
.
getString
(
CONSTANTS
.
TYPE_PIN
,
""
)
?:
""
customLog
(
"pin type = $type"
)
pinCode
=
it
.
getString
(
CONSTANTS
.
PIN_CODE
,
""
)
?:
""
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
...
@@ -49,22 +74,81 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -49,22 +74,81 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
adapter
=
pinAdapter
rvPin
.
adapter
=
pinAdapter
titleText
=
when
(
type
)
{
CONSTANTS
.
NEW_PIN
->
{
getString
(
R
.
string
.
install_pin
)
}
CONSTANTS
.
CONFIRM_NEW_PIN
->
{
getString
(
R
.
string
.
confirm_pin
)
}
CONSTANTS
.
CURRENT_PIN
->
{
getString
(
R
.
string
.
enter_old_pin
)
}
CONSTANTS
.
CHANGE_NEW_PIN
->
{
getString
(
R
.
string
.
enter_new_pin
)
}
CONSTANTS
.
CONFIRM_CHANGE_NEW_PIN
->
{
getString
(
R
.
string
.
confirm_new_pin
)
}
else
->
{
getString
(
R
.
string
.
install_pin
)
}
}
txtEnterPin
.
text
=
getString
(
R
.
string
.
install_pin
)
txtEnterPin
.
text
=
titleText
txtNotPin
.
isVisible
=
false
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
lifecycleScope
.
launchWhenCreated
{
customLog
(
"done type: $type"
)
delay
(
50
)
delay
(
50
)
navController
.
navigate
(
R
.
id
.
confirmPinFragment
,
bundleOf
(
"pinCode"
to
it
),
Utils
.
navOptions
())
when
(
type
)
{
CONSTANTS
.
NEW_PIN
->
{
navController
.
navigate
(
R
.
id
.
pinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CONFIRM_NEW_PIN
,
CONSTANTS
.
PIN_CODE
to
it
),
Utils
.
navOptions
())
}
}
CONSTANTS
.
CONFIRM_NEW_PIN
->
{
if
(
pinCode
==
it
){
pref
.
pinCode
=
pinCode
navigate
()
}
else
{
vibrate
(
requireContext
())
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
txtNotPin
.
isVisible
=
true
}
}
}
CONSTANTS
.
CURRENT_PIN
->
{
if
(
pref
.
pinCode
==
it
){
navController
.
navigate
(
R
.
id
.
pinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CHANGE_NEW_PIN
),
Utils
.
navOptions
())
}
else
{
loadError
()
}
}
CONSTANTS
.
CHANGE_NEW_PIN
->
{
navController
.
navigate
(
R
.
id
.
pinFragment
,
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
showMessage
(
getString
(
R
.
string
.
pin_code_updated
))
navController
.
popBackStack
(
R
.
id
.
safetyFragment
,
false
)
}
else
{
vibrate
(
requireContext
())
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
txtNotPin
.
isVisible
=
true
}
}
else
->
{
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
}
}
}
}
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
bn
.
txtNotPin
.
isVisible
=
false
if
(
it
.
id
==
R
.
id
.
btn_remove
)
{
if
(
it
.
id
==
R
.
id
.
btn_remove
)
{
pinAdapter
.
removeItem
()
pinAdapter
.
removeItem
()
}
else
{
}
else
{
...
@@ -77,6 +161,41 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -77,6 +161,41 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
}
}
}
}
private
fun
loadError
(){
bn
.
apply
{
count
--
if
(
count
==
0
){
showMessage
(
getString
(
R
.
string
.
popitok_error
))
navigateToLogin
()
}
else
{
vibrate
(
requireContext
())
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
showMessage
(
getString
(
R
.
string
.
popitok
,
count
.
toString
()))
}
}
}
private
fun
navigateToLogin
()
{
pref
.
clearUserData
()
val
intent
=
Intent
(
requireContext
(),
AuthActivity
::
class
.
java
)
intent
.
putExtra
(
CONSTANTS
.
TYPE_AUTH
,
CONSTANTS
.
LOGIN
)
intent
.
putExtra
(
CONSTANTS
.
PHONE
,
pref
.
userPhone
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
requireActivity
().
finish
()
}
private
fun
navigate
()
{
val
golfing
=
Goldfinger
.
Builder
(
requireContext
()).
build
()
if
(
golfing
.
canAuthenticate
())
{
navController
.
navigate
(
R
.
id
.
biometricFragment
,
null
,
Utils
.
navOptions
())
}
else
{
startActivity
(
Intent
(
requireContext
(),
MainActivity
::
class
.
java
).
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
))
requireActivity
().
finish
()
}
}
private
fun
loadData
()
{
private
fun
loadData
()
{
data
.
clear
()
data
.
clear
()
for
(
i
in
0
..
3
)
{
for
(
i
in
0
..
3
)
{
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/register/RegisterFragment.kt
View file @
785858b0
...
@@ -188,7 +188,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -188,7 +188,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
showProgressDialog
(
false
)
showProgressDialog
(
false
)
showToastMessage
(
getString
(
R
.
string
.
password_successfully_updated
))
showToastMessage
(
getString
(
R
.
string
.
password_successfully_updated
))
navController
.
popBackStack
(
R
.
id
.
loginFragment
,
false
)
navController
.
popBackStack
(
R
.
id
.
loginFragment
,
false
)
navController
.
navigate
(
R
.
id
.
pinFragment
,
null
,
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
pinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
NEW_PIN
)
,
Utils
.
navOptions
())
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
...
...
app/src/main/java/com/mobiuz/app/dev/ui/auth/verification/MyVerificationFragment.kt
View file @
785858b0
...
@@ -218,7 +218,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
...
@@ -218,7 +218,7 @@ class MyVerificationFragment : BaseFragment(R.layout.fragment_my_verification) {
is
UiStateObject
.
SUCCESS
->
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
pref
.
userPhone
=
phone
pref
.
userPhone
=
phone
navController
.
navigate
(
R
.
id
.
pinFragment
,
null
,
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
pinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
NEW_PIN
)
,
Utils
.
navOptions
())
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
...
...
app/src/main/java/com/mobiuz/app/dev/ui/global/CONSTANTS.kt
View file @
785858b0
...
@@ -3,24 +3,14 @@ package com.mobiuz.app.dev.ui.global
...
@@ -3,24 +3,14 @@ package com.mobiuz.app.dev.ui.global
object
CONSTANTS
{
object
CONSTANTS
{
const
val
LOGIN
=
"login"
const
val
LOGIN
=
"login"
const
val
BASE_URL
=
"http://10.160.45.60/api/v1/"
const
val
BASE_URL
=
"http://10.160.45.60/api/v1/"
const
val
ROOM
=
"room"
const
val
RU
=
"ru"
const
val
RU
=
"ru"
const
val
UZ
=
"uz"
const
val
UZ
=
"uz"
const
val
EN
=
"en"
const
val
EN
=
"en"
const
val
PHONE
=
"phone"
const
val
PHONE
=
"phone"
const
val
PIN_CODE
=
"pin_code"
const
val
TYPE_AUTH
=
"type_auth"
const
val
TYPE_AUTH
=
"type_auth"
const
val
TYPE_SETTINGS
=
"type_settings"
const
val
TYPE_SERVICE
=
"type_service"
const
val
TYPE_SERVICE
=
"type_service"
const
val
SUPPORT
=
"support"
const
val
PROFILE
=
"profile"
const
val
SAFETY
=
"safety"
const
val
TARIFFS
=
"tariffs"
const
val
PACKETS
=
"packets"
const
val
PASSWORD
=
"password"
const
val
OLD_PASSWORD
=
"old_password"
const
val
OLD_PASSWORD
=
"old_password"
const
val
LATEST_PASSWORD
=
"latest_password"
const
val
LATEST_PASSWORD
=
"latest_password"
const
val
MINUTES
=
"minutes"
const
val
TYPE_VERIFICATION
=
"type_verification"
const
val
TYPE_VERIFICATION
=
"type_verification"
const
val
TYPE_FORGET
=
"type_forget"
const
val
TYPE_FORGET
=
"type_forget"
const
val
FIRST
=
"first"
const
val
FIRST
=
"first"
...
@@ -41,6 +31,18 @@ object CONSTANTS {
...
@@ -41,6 +31,18 @@ object CONSTANTS {
const
val
RESEND_CODE_TIME
=
10000L
const
val
RESEND_CODE_TIME
=
10000L
const
val
BLOCKED_TIME
=
6000
const
val
BLOCKED_TIME
=
6000
//pin types
const
val
PIN_CODE
=
"PIN_CODE"
const
val
TYPE_PIN
=
"TYPE_PIN"
const
val
NEW_PIN
=
"NEW_PIN"
const
val
CONFIRM_NEW_PIN
=
"CONFIRM_NEW_PIN"
const
val
CURRENT_PIN
=
"CURRENT_PIN"
const
val
CHANGE_NEW_PIN
=
"CHANGE_NEW_PIN"
const
val
CONFIRM_CHANGE_NEW_PIN
=
"CONFIRM_CHANGE_NEW_PIN"
const
val
LONGITUDE
=
69.2602108116081
const
val
LONGITUDE
=
69.2602108116081
const
val
LATITUDE
=
41.34823322480444
const
val
LATITUDE
=
41.34823322480444
...
...
app/src/main/java/com/mobiuz/app/dev/ui/home/HomeFragment.kt
View file @
785858b0
...
@@ -150,7 +150,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
...
@@ -150,7 +150,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
txtTypeSms
.
text
=
it
?.
ITEM
?.
unit
?:
"sms"
txtTypeSms
.
text
=
it
?.
ITEM
?.
unit
?:
"sms"
}
}
mainViewModel
.
setUserName
(
customer
?.
customer
?.
name
?:
"Unnamed User"
)
mainViewModel
.
setUserName
(
customer
?.
customer
?.
name
?:
"Unnamed User"
)
txtTarif
.
text
=
customer
?.
customer
?.
tarif
i
?.
name
?:
getString
(
R
.
string
.
my_tarif
)
txtTarif
.
text
=
customer
?.
customer
?.
tarif
f
?.
name
.
toString
()
?:
getString
(
R
.
string
.
my_tarif
)
txtMyNumber
.
text
=
pref
.
userPhone
.
customMasketHome
().
replace
(
"-"
,
" "
)
txtMyNumber
.
text
=
pref
.
userPhone
.
customMasketHome
().
replace
(
"-"
,
" "
)
toolbarMyNumber
.
text
=
pref
.
userPhone
.
customMasketHome
().
replace
(
"-"
,
" "
)
toolbarMyNumber
.
text
=
pref
.
userPhone
.
customMasketHome
().
replace
(
"-"
,
" "
)
}
}
...
...
app/src/main/java/com/mobiuz/app/dev/ui/settings/safety/SafetyFragment.kt
View file @
785858b0
...
@@ -55,7 +55,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
...
@@ -55,7 +55,7 @@ class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
})
})
btnChangePin
.
setOnClickListener
(
object
:
ButtonClick
(){
btnChangePin
.
setOnClickListener
(
object
:
ButtonClick
(){
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
navController
.
navigate
(
R
.
id
.
oldPinFragment
,
null
,
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
pinFragment
,
bundleOf
(
CONSTANTS
.
TYPE_PIN
to
CONSTANTS
.
CURRENT_PIN
)
,
Utils
.
navOptions
())
}
}
})
})
btnChangePassword
.
setOnClickListener
(
object
:
ButtonClick
(){
btnChangePassword
.
setOnClickListener
(
object
:
ButtonClick
(){
...
...
app/src/main/java/com/mobiuz/app/dev/ui/settings/safety/password/ChangePasswordFragment.kt
View file @
785858b0
...
@@ -117,7 +117,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
...
@@ -117,7 +117,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
imageCheck
.
isVisible
=
true
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
}
else
{
}
else
{
loadError
(
false
)
loadError
()
btnLogin
.
isEnabled
=
s
.
toString
().
length
>
3
btnLogin
.
isEnabled
=
s
.
toString
().
length
>
3
imageCheck
.
isVisible
=
false
imageCheck
.
isVisible
=
false
txtCheckConfirm
.
isVisible
=
false
txtCheckConfirm
.
isVisible
=
false
...
@@ -151,7 +151,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
...
@@ -151,7 +151,7 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
CONSTANTS
.
NEW_PASSWORD
->
{
CONSTANTS
.
NEW_PASSWORD
->
{
navController
.
navigate
(
navController
.
navigate
(
R
.
id
.
c
urrent
PasswordFragment
,
R
.
id
.
c
hange
PasswordFragment
,
bundleOf
(
bundleOf
(
CONSTANTS
.
TYPE_PASSWORD
to
CONSTANTS
.
CONFIRM_NEW_PASSWORD
,
CONSTANTS
.
TYPE_PASSWORD
to
CONSTANTS
.
CONFIRM_NEW_PASSWORD
,
CONSTANTS
.
OLD_PASSWORD
to
oldPassword
,
CONSTANTS
.
OLD_PASSWORD
to
oldPassword
,
...
@@ -180,18 +180,13 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
...
@@ -180,18 +180,13 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
}
}
private
fun
loadError
(
status
:
Boolean
){
private
fun
loadError
(){
bn
.
apply
{
bn
.
apply
{
if
(
count
==
0
){
if
(
count
==
0
){
errorTitle
.
text
=
getString
(
R
.
string
.
impossible_change_password
)
showMessage
(
getString
(
R
.
string
.
popitok_error_password
))
errorText
.
text
=
getString
(
R
.
string
.
popitok_error_password
)
}
else
{
}
else
{
errorText
.
text
=
getString
(
R
.
string
.
popitok
,
count
.
toString
(
))
showMessage
(
getString
(
R
.
string
.
popitok_password
,
count
.
toString
()
))
}
}
errorLayout
.
isVisible
=
status
div
.
setBackgroundColor
(
if
(
status
)
getColorCompat
(
R
.
color
.
primary100
)
else
Color
.
TRANSPARENT
)
decorView
=
requireActivity
().
window
.
decorView
decorView
.
systemUiVisibility
=
if
(
status
)
View
.
VISIBLE
else
{
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
}
}
}
}
...
@@ -201,21 +196,19 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
...
@@ -201,21 +196,19 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
when
(
it
)
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
is
UiStateObject
.
SUCCESS
->
{
navController
.
navigate
(
navController
.
navigate
(
R
.
id
.
c
urrent
PasswordFragment
,
R
.
id
.
c
hange
PasswordFragment
,
bundleOf
(
bundleOf
(
CONSTANTS
.
OLD_PASSWORD
to
oldPassword
,
CONSTANTS
.
OLD_PASSWORD
to
oldPassword
,
CONSTANTS
.
TYPE_PASSWORD
to
CONSTANTS
.
NEW_PASSWORD
CONSTANTS
.
TYPE_PASSWORD
to
CONSTANTS
.
NEW_PASSWORD
),
),
Utils
.
navOptions
()
Utils
.
navOptions
()
)
)
showProgressDialog
(
false
)
showProgressDialog
(
false
)
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
if
(
it
.
message
==
"Invalid password"
){
if
(
it
.
message
==
"Invalid password"
){
count
--
count
--
if
(
count
==
0
){
if
(
count
==
0
){
loadError
(
true
)
showCustomDialog
(
getString
(
R
.
string
.
impossible_change_password
),
false
){
showCustomDialog
(
getString
(
R
.
string
.
impossible_change_password
),
false
){
pref
.
clearUserData
()
pref
.
clearUserData
()
val
intent
=
Intent
(
requireContext
(),
AuthActivity
::
class
.
java
)
val
intent
=
Intent
(
requireContext
(),
AuthActivity
::
class
.
java
)
...
@@ -224,9 +217,8 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
...
@@ -224,9 +217,8 @@ class ChangePasswordFragment : BaseFragment(R.layout.fragment_change_password) {
startActivity
(
intent
)
startActivity
(
intent
)
requireActivity
().
finish
()
requireActivity
().
finish
()
}
}
}
else
{
}
else
{
loadError
(
true
)
loadError
()
}
}
}
else
{
}
else
{
showToastMessage
(
it
.
message
)
showToastMessage
(
it
.
message
)
...
...
app/src/main/java/com/mobiuz/app/dev/ui/settings/safety/pin/ConfirmNewPinFragment.kt
deleted
100644 → 0
View file @
bafee89e
package
com.mobiuz.app.dev.ui.settings.safety.pin
import
android.graphics.Color
import
android.os.Bundle
import
android.view.View
import
android.view.animation.AnimationUtils
import
android.widget.TextView
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentConfirmNewPinBinding
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.ui.base.BaseFragment
import
com.mobiuz.app.dev.utils.extensions.getColorCompat
import
com.mobiuz.app.dev.utils.extensions.showMessage
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
javax.inject.Inject
@AndroidEntryPoint
class
ConfirmNewPinFragment
:
BaseFragment
(
R
.
layout
.
fragment_confirm_new_pin
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentConfirmNewPinBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
var
pinCode
=
""
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
lateinit
var
decorView
:
View
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
pinCode
=
it
.
getString
(
"pinCode"
,
""
)
?:
""
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentConfirmNewPinBinding
.
bind
(
view
)
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
bn
.
apply
{
loadData
()
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
adapter
=
pinAdapter
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
delay
(
50
)
if
(
pinCode
==
it
)
{
navigate
()
}
else
{
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
loadError
(
true
)
}
}
}
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
when
(
it
.
id
)
{
R
.
id
.
btn_remove
->
{
loadError
(
false
)
pinAdapter
.
removeItem
()
}
R
.
id
.
btn_forget_pin
->
{
}
else
->
{
loadError
(
false
)
val
text
=
it
as
TextView
pinAdapter
.
addItem
(
text
.
text
.
toString
().
toInt
())
}
}
}
}
}
}
private
fun
loadError
(
status
:
Boolean
)
{
bn
.
apply
{
errorLayout
.
isVisible
=
status
div
.
setBackgroundColor
(
if
(
status
)
getColorCompat
(
R
.
color
.
primary100
)
else
Color
.
TRANSPARENT
)
decorView
=
requireActivity
().
window
.
decorView
decorView
.
systemUiVisibility
=
if
(
status
)
View
.
VISIBLE
else
{
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
}
}
private
fun
navigate
()
{
showMessage
(
getString
(
R
.
string
.
pin_code_updated
))
navController
.
popBackStack
(
R
.
id
.
safetyFragment
,
false
)
}
private
fun
loadData
()
{
data
.
clear
()
for
(
i
in
0
..
3
)
{
data
.
add
(
PinData
(-
1
))
}
pinAdapter
.
submitList
(
data
)
}
override
fun
collects
()
{
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/java/com/mobiuz/app/dev/ui/settings/safety/pin/NewPinFragment.kt
deleted
100644 → 0
View file @
bafee89e
package
com.mobiuz.app.dev.ui.settings.safety.pin
import
android.os.Bundle
import
android.view.View
import
android.widget.TextView
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
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentNewPinBinding
import
com.mobiuz.app.databinding.FragmentOldPinBinding
import
com.mobiuz.app.databinding.FragmentPinBinding
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.ui.base.BaseFragment
import
com.mobiuz.app.dev.utils.Utils
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
javax.inject.Inject
@AndroidEntryPoint
class
NewPinFragment
:
BaseFragment
(
R
.
layout
.
fragment_new_pin
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentNewPinBinding
?
=
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
()
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentNewPinBinding
.
bind
(
view
)
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
bn
.
apply
{
loadData
()
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
adapter
=
pinAdapter
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
delay
(
50
)
navController
.
navigate
(
R
.
id
.
confirmNewPinFragment
,
bundleOf
(
"pinCode"
to
it
),
Utils
.
navOptions
())
}
}
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
when
(
it
.
id
)
{
R
.
id
.
btn_remove
->
{
pinAdapter
.
removeItem
()
}
R
.
id
.
btn_forget_pin
->
{
}
else
->
{
val
text
=
it
as
TextView
pinAdapter
.
addItem
(
text
.
text
.
toString
().
toInt
())
}
}
}
}
}
}
private
fun
loadData
()
{
data
.
clear
()
for
(
i
in
0
..
3
)
{
data
.
add
(
PinData
(-
1
))
}
pinAdapter
.
submitList
(
data
)
}
override
fun
collects
()
{
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/java/com/mobiuz/app/dev/ui/settings/safety/pin/OldPinFragment.kt
deleted
100644 → 0
View file @
bafee89e
package
com.mobiuz.app.dev.ui.settings.safety.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.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.mobiuz.app.R
import
com.mobiuz.app.databinding.FragmentOldPinBinding
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.base.BaseFragment
import
com.mobiuz.app.dev.ui.global.CONSTANTS
import
com.mobiuz.app.dev.utils.Utils
import
com.mobiuz.app.dev.utils.extensions.getColorCompat
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
javax.inject.Inject
@AndroidEntryPoint
class
OldPinFragment
:
BaseFragment
(
R
.
layout
.
fragment_old_pin
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentOldPinBinding
?
=
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
var
count
=
3
private
lateinit
var
decorView
:
View
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentOldPinBinding
.
bind
(
view
)
count
=
3
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
bn
.
apply
{
loadData
()
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
adapter
=
pinAdapter
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
delay
(
50
)
if
(
pref
.
pinCode
==
it
)
{
navController
.
navigate
(
R
.
id
.
newPinFragment
,
null
,
Utils
.
navOptions
())
}
else
{
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
count
--
if
(
count
==
0
){
lifecycleScope
.
launchWhenCreated
{
loadError
(
true
)
delay
(
1000
)
pref
.
clearUserData
()
val
intent
=
Intent
(
requireContext
(),
AuthActivity
::
class
.
java
)
intent
.
putExtra
(
CONSTANTS
.
TYPE_AUTH
,
CONSTANTS
.
LOGIN
)
intent
.
putExtra
(
CONSTANTS
.
PHONE
,
pref
.
userPhone
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
requireActivity
().
finish
()
}
}
else
{
loadError
(
true
)
}
}
}
}
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
for
(
i
in
0
until
btnViewGroup
.
childCount
)
{
btnViewGroup
.
getChildAt
(
i
).
setOnClickListener
{
when
(
it
.
id
)
{
R
.
id
.
btn_remove
->
{
loadError
(
false
)
pinAdapter
.
removeItem
()
}
R
.
id
.
btn_forget_pin
->
{
}
else
->
{
loadError
(
false
)
val
text
=
it
as
TextView
pinAdapter
.
addItem
(
text
.
text
.
toString
().
toInt
())
}
}
}
}
}
}
private
fun
loadError
(
status
:
Boolean
){
bn
.
apply
{
if
(
count
==
0
){
errorTitle
.
text
=
getString
(
R
.
string
.
impossible_change_pin
)
errorText
.
text
=
getString
(
R
.
string
.
popitok_error
)
}
else
{
errorText
.
text
=
getString
(
R
.
string
.
popitok
,
count
.
toString
())
}
errorLayout
.
isVisible
=
status
div
.
setBackgroundColor
(
if
(
status
)
getColorCompat
(
R
.
color
.
primary100
)
else
Color
.
TRANSPARENT
)
decorView
=
requireActivity
().
window
.
decorView
decorView
.
systemUiVisibility
=
if
(
status
)
View
.
VISIBLE
else
{
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
}
}
private
fun
loadData
()
{
data
.
clear
()
for
(
i
in
0
..
3
)
{
data
.
add
(
PinData
(-
1
))
}
pinAdapter
.
submitList
(
data
)
}
override
fun
collects
()
{
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/res/anim/shake.xml
View file @
785858b0
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<translate
<translate
android:fromXDelta=
"-1
0
"
android:fromXDelta=
"-1
5
"
android:toXDelta=
"1
0
"
android:toXDelta=
"1
5
"
android:repeatCount=
"5"
android:repeatCount=
"5"
android:repeatMode=
"reverse"
android:repeatMode=
"reverse"
android:interpolator=
"@android:anim/linear_interpolator"
android:interpolator=
"@android:anim/linear_interpolator"
android:duration=
"
7
0"
/>
android:duration=
"
10
0"
/>
</set>
</set>
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
785858b0
...
@@ -163,7 +163,7 @@
...
@@ -163,7 +163,7 @@
android:layout_marginTop=
"@dimen/_10sdp"
android:layout_marginTop=
"@dimen/_10sdp"
android:background=
"?android:selectableItemBackground"
android:background=
"?android:selectableItemBackground"
android:orientation=
"horizontal"
android:orientation=
"horizontal"
android:paddingVertical=
"
18
dp"
android:paddingVertical=
"
20
dp"
android:paddingStart=
"30dp"
android:paddingStart=
"30dp"
android:paddingEnd=
"10dp"
>
android:paddingEnd=
"10dp"
>
...
@@ -200,12 +200,10 @@
...
@@ -200,12 +200,10 @@
android:id=
"@+id/txt_redact_data"
android:id=
"@+id/txt_redact_data"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_margin
Start
=
"32dp"
android:layout_margin
Horizontal
=
"32dp"
android:layout_marginTop=
"30dp"
android:layout_marginTop=
"30dp"
android:background=
"?android:selectableItemBackground"
android:background=
"?android:selectableItemBackground"
android:ellipsize=
"end"
android:text=
"@string/oferta_finans"
android:maxLines=
"1"
android:text=
"@string/redact_data"
android:textColor=
"@color/link"
android:textColor=
"@color/link"
android:textSize=
"14sp"
/>
android:textSize=
"14sp"
/>
...
@@ -213,28 +211,13 @@
...
@@ -213,28 +211,13 @@
android:id=
"@+id/txt_public_oferta"
android:id=
"@+id/txt_public_oferta"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_margin
Start
=
"32dp"
android:layout_margin
Horizontal
=
"32dp"
android:layout_marginTop=
"12dp"
android:layout_marginTop=
"12dp"
android:background=
"?android:selectableItemBackground"
android:background=
"?android:selectableItemBackground"
android:ellipsize=
"end"
android:maxLines=
"1"
android:text=
"@string/public_oferta"
android:text=
"@string/public_oferta"
android:textColor=
"@color/link"
android:textColor=
"@color/link"
android:textSize=
"14sp"
/>
android:textSize=
"14sp"
/>
<TextView
android:id=
"@+id/txt_confidensialnost"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"32dp"
android:layout_marginTop=
"12dp"
android:layout_marginBottom=
"20dp"
android:background=
"?android:selectableItemBackground"
android:ellipsize=
"end"
android:maxLines=
"1"
android:text=
"@string/txt_confidensialnost"
android:textColor=
"@color/link"
android:textSize=
"14sp"
/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.core.widget.NestedScrollView>
...
...
app/src/main/res/layout/fragment_confirm_new_pin.xml
deleted
100644 → 0
View file @
bafee89e
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:fitsSystemWindows=
"false"
android:layout_height=
"match_parent"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<View
android:layout_width=
"match_parent"
android:id=
"@+id/div"
android:background=
"@android:color/transparent"
android:layout_height=
"24dp"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<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"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:gravity=
"center"
android:visibility=
"invisible"
android:id=
"@+id/error_layout"
android:orientation=
"vertical"
android:background=
"@color/primary100"
android:layout_height=
"match_parent"
>
<TextView
android:layout_width=
"wrap_content"
android:textColor=
"@color/white100"
android:id=
"@+id/error_title"
android:layout_height=
"wrap_content"
android:text=
"@string/pin_not_same"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
</LinearLayout>
</FrameLayout>
<TextView
android:id=
"@+id/txt_enter_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/_14sdp"
android:layout_marginTop=
"@dimen/_14sdp"
android:text=
"@string/confirm_new_pin"
android:textSize=
"29sp"
android:textStyle=
"bold"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"0.8"
>
<LinearLayout
android:layout_width=
"@dimen/_100sdp"
android:layout_gravity=
"center"
android:orientation=
"vertical"
android:gravity=
"center"
android:layout_height=
"wrap_content"
>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/card_pin"
android:layout_width=
"wrap_content"
android:layout_gravity=
"center"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"0dp"
android:minWidth=
"@dimen/_100sdp"
android:minHeight=
"@dimen/_32sdp"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_pin"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_gravity=
"center"
android:orientation=
"horizontal"
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/_120sdp"
android:background=
"@color/grey30"
android:layout_height=
"2dp"
/>
</LinearLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/btn_view_group"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"3"
android:paddingStart=
"@dimen/_44sdp"
android:paddingEnd=
"@dimen/_44sdp"
>
<TextView
android:id=
"@+id/btn_1"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_1"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_2"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_2"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_3"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_3"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_4"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_4"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
<TextView
android:id=
"@+id/btn_5"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_5"
app:layout_constraintEnd_toStartOf=
"@id/btn_6"
app:layout_constraintStart_toEndOf=
"@id/btn_4"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_6"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_6"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_7"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_7"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_8"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_8"
app:layout_constraintEnd_toStartOf=
"@id/btn_9"
app:layout_constraintStart_toEndOf=
"@id/btn_7"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<TextView
android:id=
"@+id/btn_9"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_9"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<TextView
android:id=
"@+id/btn_0"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_0"
app:layout_constraintEnd_toEndOf=
"@id/btn_8"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
app:layout_constraintTop_toBottomOf=
"@id/btn_7"
/>
<ImageView
android:id=
"@+id/btn_remove"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:padding=
"@dimen/_4sdp"
android:src=
"@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintEnd_toEndOf=
"@id/btn_9"
app:layout_constraintStart_toStartOf=
"@id/btn_9"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:layout_width=
"match_parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_0"
android:text=
"@string/forget_pin"
android:gravity=
"center"
android:paddingVertical=
"12dp"
android:textSize=
"14sp"
android:background=
"?android:selectableItemBackground"
android:textStyle=
"bold"
android:id=
"@+id/btn_forget_pin"
android:layout_marginTop=
"@dimen/_20sdp"
android:textColor=
"@color/primary100"
android:layout_height=
"wrap_content"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_new_pin.xml
deleted
100644 → 0
View file @
bafee89e
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"false"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
android:layout_marginTop=
"24dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:navigationIcon=
"@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id=
"@+id/txt_enter_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/_14sdp"
android:layout_marginTop=
"@dimen/_14sdp"
android:text=
"@string/enter_new_pin"
android:textSize=
"29sp"
android:textStyle=
"bold"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"0.8"
>
<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/_10sdp"
android:layout_marginBottom=
"@dimen/_30sdp"
android:text=
"@string/pin_not_same"
android:textColor=
"@color/primary100"
android:textSize=
"16sp"
android:textStyle=
"bold"
android:visibility=
"gone"
/>
<LinearLayout
android:layout_width=
"@dimen/_100sdp"
android:layout_gravity=
"center"
android:orientation=
"vertical"
android:gravity=
"center"
android:layout_height=
"wrap_content"
>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/card_pin"
android:layout_width=
"wrap_content"
android:layout_gravity=
"center"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"0dp"
android:minWidth=
"@dimen/_100sdp"
android:minHeight=
"@dimen/_32sdp"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_pin"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_gravity=
"center"
android:orientation=
"horizontal"
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/_120sdp"
android:background=
"@color/grey30"
android:layout_height=
"2dp"
/>
</LinearLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/btn_view_group"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"3"
android:paddingStart=
"@dimen/_44sdp"
android:paddingEnd=
"@dimen/_44sdp"
>
<TextView
android:id=
"@+id/btn_1"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_1"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_2"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_2"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_3"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_3"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_4"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_4"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
<TextView
android:id=
"@+id/btn_5"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_5"
app:layout_constraintEnd_toStartOf=
"@id/btn_6"
app:layout_constraintStart_toEndOf=
"@id/btn_4"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_6"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_6"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_7"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_7"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_8"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_8"
app:layout_constraintEnd_toStartOf=
"@id/btn_9"
app:layout_constraintStart_toEndOf=
"@id/btn_7"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<TextView
android:id=
"@+id/btn_9"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_9"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<TextView
android:id=
"@+id/btn_0"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_0"
app:layout_constraintEnd_toEndOf=
"@id/btn_8"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
app:layout_constraintTop_toBottomOf=
"@id/btn_7"
/>
<ImageView
android:id=
"@+id/btn_remove"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:padding=
"@dimen/_4sdp"
android:src=
"@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintEnd_toEndOf=
"@id/btn_9"
app:layout_constraintStart_toStartOf=
"@id/btn_9"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:layout_width=
"match_parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_0"
android:text=
"@string/forget_pin"
android:gravity=
"center"
android:id=
"@+id/btn_forget_pin"
android:paddingVertical=
"12dp"
android:background=
"?android:selectableItemBackground"
android:textSize=
"14sp"
android:textStyle=
"bold"
android:layout_marginTop=
"@dimen/_20sdp"
android:textColor=
"@color/primary100"
android:layout_height=
"wrap_content"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_old_pin.xml
deleted
100644 → 0
View file @
bafee89e
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:fitsSystemWindows=
"false"
android:layout_height=
"match_parent"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<View
android:layout_width=
"match_parent"
android:id=
"@+id/div"
android:background=
"@android:color/transparent"
android:layout_height=
"24dp"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<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"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:gravity=
"center"
android:visibility=
"invisible"
android:id=
"@+id/error_layout"
android:orientation=
"vertical"
android:background=
"@color/primary100"
android:layout_height=
"match_parent"
>
<TextView
android:layout_width=
"wrap_content"
android:textColor=
"@color/white100"
android:id=
"@+id/error_title"
android:layout_height=
"wrap_content"
android:text=
"@string/wrong_pin"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
<TextView
android:layout_width=
"wrap_content"
android:textColor=
"@color/white100"
android:id=
"@+id/error_text"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/_14sdp"
android:text=
"@string/popitok"
android:textSize=
"14sp"
/>
</LinearLayout>
</FrameLayout>
<TextView
android:id=
"@+id/txt_enter_pin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/_14sdp"
android:layout_marginTop=
"@dimen/_14sdp"
android:text=
"@string/enter_old_pin"
android:textSize=
"29sp"
android:textStyle=
"bold"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"0.8"
>
<LinearLayout
android:layout_width=
"@dimen/_100sdp"
android:layout_gravity=
"center"
android:orientation=
"vertical"
android:gravity=
"center"
android:layout_height=
"wrap_content"
>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/card_pin"
android:layout_width=
"wrap_content"
android:layout_gravity=
"center"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"0dp"
android:minWidth=
"@dimen/_100sdp"
android:minHeight=
"@dimen/_32sdp"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_pin"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_gravity=
"center"
android:orientation=
"horizontal"
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/_120sdp"
android:background=
"@color/grey30"
android:layout_height=
"2dp"
/>
</LinearLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/btn_view_group"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"3"
android:paddingStart=
"@dimen/_44sdp"
android:paddingEnd=
"@dimen/_44sdp"
>
<TextView
android:id=
"@+id/btn_1"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_1"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_2"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_2"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_3"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_3"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/btn_4"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_4"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
<TextView
android:id=
"@+id/btn_5"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_5"
app:layout_constraintEnd_toStartOf=
"@id/btn_6"
app:layout_constraintStart_toEndOf=
"@id/btn_4"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_6"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_6"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_7"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_7"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
<TextView
android:id=
"@+id/btn_8"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_8"
app:layout_constraintEnd_toStartOf=
"@id/btn_9"
app:layout_constraintStart_toEndOf=
"@id/btn_7"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<TextView
android:id=
"@+id/btn_9"
style=
"@style/BtnStyle"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_9"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
<TextView
android:id=
"@+id/btn_0"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:background=
"@drawable/bgn_pin_btn"
android:text=
"@string/_0"
app:layout_constraintEnd_toEndOf=
"@id/btn_8"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
app:layout_constraintTop_toBottomOf=
"@id/btn_7"
/>
<ImageView
android:id=
"@+id/btn_remove"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackgroundBorderless"
android:contentDescription=
"@string/remove"
android:padding=
"@dimen/_4sdp"
android:src=
"@drawable/ic_vector_remove"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintEnd_toEndOf=
"@id/btn_9"
app:layout_constraintStart_toStartOf=
"@id/btn_9"
app:layout_constraintTop_toTopOf=
"@id/btn_0"
/>
<TextView
android:layout_width=
"match_parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_0"
android:text=
"@string/forget_pin"
android:gravity=
"center"
android:paddingVertical=
"12dp"
android:textSize=
"14sp"
android:background=
"?android:selectableItemBackground"
android:textStyle=
"bold"
android:id=
"@+id/btn_forget_pin"
android:layout_marginTop=
"@dimen/_20sdp"
android:textColor=
"@color/primary100"
android:layout_height=
"wrap_content"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_pin.xml
View file @
785858b0
...
@@ -4,11 +4,13 @@
...
@@ -4,11 +4,13 @@
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"false"
android:background=
"@color/white"
android:background=
"@color/white"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<com.google.android.material.appbar.MaterialToolbar
<com.google.android.material.appbar.MaterialToolbar
android:id=
"@+id/toolbar"
android:id=
"@+id/toolbar"
android:layout_marginTop=
"24dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
app:navigationIcon=
"@drawable/ic_baseline_arrow_back"
/>
app:navigationIcon=
"@drawable/ic_baseline_arrow_back"
/>
...
...
app/src/main/res/layout/fragment_safety.xml
View file @
785858b0
...
@@ -119,7 +119,7 @@
...
@@ -119,7 +119,7 @@
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
android:background=
"?android:selectableItemBackground"
android:background=
"?android:selectableItemBackground"
android:paddingHorizontal=
"@dimen/_16sdp"
android:paddingHorizontal=
"@dimen/_16sdp"
android:paddingVertical=
"
@dimen/_10s
dp"
>
android:paddingVertical=
"
16
dp"
>
<TextView
<TextView
android:layout_width=
"0dp"
android:layout_width=
"0dp"
...
...
app/src/main/res/navigation/nav_graph_auth.xml
View file @
785858b0
...
@@ -34,11 +34,6 @@
...
@@ -34,11 +34,6 @@
tools:layout=
"@layout/fragment_biometric"
/>
tools:layout=
"@layout/fragment_biometric"
/>
<fragment
<fragment
android:id=
"@+id/confirmPinFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.ConfirmPinFragment"
android:label=
"ConfirmPinFragment"
tools:layout=
"@layout/fragment_pin"
/>
<fragment
android:id=
"@+id/myVerificationFragment"
android:id=
"@+id/myVerificationFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.verification.MyVerificationFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.verification.MyVerificationFragment"
android:label=
"MyVerificationFragment"
/>
android:label=
"MyVerificationFragment"
/>
...
...
app/src/main/res/navigation/nav_graph_home.xml
View file @
785858b0
...
@@ -11,6 +11,11 @@
...
@@ -11,6 +11,11 @@
android:label=
"fragment_home"
android:label=
"fragment_home"
tools:layout=
"@layout/fragment_home"
/>
tools:layout=
"@layout/fragment_home"
/>
<fragment
android:id=
"@+id/pinFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.PinFragment"
android:label=
"PinFragment"
tools:layout=
"@layout/fragment_pin"
/>
<fragment
<fragment
android:id=
"@+id/languageFragment"
android:id=
"@+id/languageFragment"
...
@@ -33,23 +38,11 @@
...
@@ -33,23 +38,11 @@
android:label=
"fragment_profile"
android:label=
"fragment_profile"
tools:layout=
"@layout/fragment_profile"
/>
tools:layout=
"@layout/fragment_profile"
/>
<fragment
<fragment
android:id=
"@+id/c
urrent
PasswordFragment"
android:id=
"@+id/c
hange
PasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.password.ChangePasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.password.ChangePasswordFragment"
android:label=
"CurrentPasswordFragment"
/>
android:label=
"CurrentPasswordFragment"
/>
<fragment
<fragment
android:id=
"@+id/oldPinFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.pin.OldPinFragment"
android:label=
"OldPinFragment"
/>
<fragment
android:id=
"@+id/newPinFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.pin.NewPinFragment"
android:label=
"NewPinFragment"
/>
<fragment
android:id=
"@+id/confirmNewPinFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.pin.ConfirmNewPinFragment"
android:label=
"ConfirmNewPinFragment"
/>
<fragment
android:id=
"@+id/billingFragment"
android:id=
"@+id/billingFragment"
android:name=
"com.mobiuz.app.BillingFragment"
android:name=
"com.mobiuz.app.BillingFragment"
android:label=
"fragment_billing"
android:label=
"fragment_billing"
...
...
app/src/main/res/navigation/nav_graph_profile.xml
View file @
785858b0
...
@@ -36,21 +36,14 @@
...
@@ -36,21 +36,14 @@
android:label=
"fragment_profile"
android:label=
"fragment_profile"
tools:layout=
"@layout/fragment_profile"
/>
tools:layout=
"@layout/fragment_profile"
/>
<fragment
<fragment
android:id=
"@+id/c
urrent
PasswordFragment"
android:id=
"@+id/c
hange
PasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.password.ChangePasswordFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.password.ChangePasswordFragment"
android:label=
"CurrentPasswordFragment"
/>
android:label=
"CurrentPasswordFragment"
/>
<fragment
<fragment
android:id=
"@+id/oldPinFragment"
android:id=
"@+id/pinFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.pin.OldPinFragment"
android:name=
"com.mobiuz.app.dev.ui.auth.pin.PinFragment"
android:label=
"OldPinFragment"
/>
android:label=
"PinFragment"
<fragment
tools:layout=
"@layout/fragment_pin"
/>
android:id=
"@+id/newPinFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.pin.NewPinFragment"
android:label=
"NewPinFragment"
/>
<fragment
android:id=
"@+id/confirmNewPinFragment"
android:name=
"com.mobiuz.app.dev.ui.settings.safety.pin.ConfirmNewPinFragment"
android:label=
"ConfirmNewPinFragment"
/>
</navigation>
</navigation>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
785858b0
...
@@ -89,7 +89,7 @@
...
@@ -89,7 +89,7 @@
<string
name=
"tx3"
>
Политика конфиденциальности
</string>
<string
name=
"tx3"
>
Политика конфиденциальности
</string>
<string
name=
"error_code"
>
Неверный код
</string>
<string
name=
"error_code"
>
Неверный код
</string>
<string
name=
"redact_data"
><u>
Согласие на обработку данных
</u></string>
<string
name=
"redact_data"
><u>
Согласие на обработку данных
</u></string>
<string
name=
"public_oferta"
><u>
Публичная оферта
</u></string>
<string
name=
"public_oferta"
><u>
Оферта на обработку персональных данных
</u></string>
<string
name=
"txt_confidensialnost"
><u>
Политика конфиденциальности
</u></string>
<string
name=
"txt_confidensialnost"
><u>
Политика конфиденциальности
</u></string>
<string
name=
"safety"
>
Безопасность
</string>
<string
name=
"safety"
>
Безопасность
</string>
<string
name=
"profile"
>
Профиль
</string>
<string
name=
"profile"
>
Профиль
</string>
...
@@ -107,10 +107,9 @@
...
@@ -107,10 +107,9 @@
<string
name=
"forget_pin"
>
Забыли PIN?
</string>
<string
name=
"forget_pin"
>
Забыли PIN?
</string>
<string
name=
"enter_new_pin"
>
Введите новый PIN-код
</string>
<string
name=
"enter_new_pin"
>
Введите новый PIN-код
</string>
<string
name=
"confirm_new_pin"
>
Подтвердите PIN-код
</string>
<string
name=
"confirm_new_pin"
>
Подтвердите PIN-код
</string>
<string
name=
"wrong_pin"
>
Неверный PIN-код
</string>
<string
name=
"popitok"
>
Неверный PIN-код \nОсталось %1$s попытки
</string>
<string
name=
"popitok"
>
Осталось %1$s попытки
</string>
<string
name=
"popitok_password"
>
Неверный Пароль \nОсталось %1$s попытки
</string>
<string
name=
"impossible_change_pin"
>
Смена ПИН кода невозможна
</string>
<string
name=
"popitok_error"
>
Смена ПИН кода невозможна \nВы ввели неправильный PIN код 3 раза
</string>
<string
name=
"popitok_error"
>
Вы ввели неправильный PIN код 3 раза
</string>
<string
name=
"pin_code_updated"
>
Пин-код успешно обновлен
</string>
<string
name=
"pin_code_updated"
>
Пин-код успешно обновлен
</string>
<string
name=
"for_abonent"
>
Для абонентов
</string>
<string
name=
"for_abonent"
>
Для абонентов
</string>
<string
name=
"all_nomer"
>
Со всех номеров
</string>
<string
name=
"all_nomer"
>
Со всех номеров
</string>
...
@@ -126,7 +125,7 @@
...
@@ -126,7 +125,7 @@
<string
name=
"impossible_change_password"
>
Замена пароля невозможна
</string>
<string
name=
"impossible_change_password"
>
Замена пароля невозможна
</string>
<string
name=
"login_register"
>
Авторизация/Регистрация
</string>
<string
name=
"login_register"
>
Авторизация/Регистрация
</string>
<string
name=
"close_process"
>
Закрыть
</string>
<string
name=
"close_process"
>
Закрыть
</string>
<string
name=
"popitok_error_password"
>
Вы ввели неправильный пароль 3 раза
</string>
<string
name=
"popitok_error_password"
>
Замена пароля невозможна \n
Вы ввели неправильный пароль 3 раза
</string>
<string
name=
"settings_safety"
>
Настройки безопасности действуют только для основного номера +998 97 999-99-99
</string>
<string
name=
"settings_safety"
>
Настройки безопасности действуют только для основного номера +998 97 999-99-99
</string>
<string
name=
"title_activity_offline"
>
OfflineActivity
</string>
<string
name=
"title_activity_offline"
>
OfflineActivity
</string>
<string
name=
"title_home"
>
Home
</string>
<string
name=
"title_home"
>
Home
</string>
...
@@ -140,5 +139,6 @@
...
@@ -140,5 +139,6 @@
<string
name=
"to_offline"
>
Перейти в офлайн режим
</string>
<string
name=
"to_offline"
>
Перейти в офлайн режим
</string>
<string
name=
"not_internet_connect"
>
Отсутствует активное подключение
</string>
<string
name=
"not_internet_connect"
>
Отсутствует активное подключение
</string>
<string
name=
"yes_internet_connect"
>
Интернет соединение восстановлено
</string>
<string
name=
"yes_internet_connect"
>
Интернет соединение восстановлено
</string>
<string
name=
"oferta_finans"
><u>
Оферта на предоставление \nфинансовых услуг
</u></string>
</resources>
</resources>
\ No newline at end of file
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