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
a714b180
Commit
a714b180
authored
Dec 03, 2021
by
shohboz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ADD]
MUS-125
Feature, add registration api and server connection
parent
9212468a
Changes
43
Hide whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
657 additions
and
390 deletions
+657
-390
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+8
-0
AuthActivity.kt
app/src/main/java/uz/ssd/mobiuz/AuthActivity.kt
+8
-0
BlankFragment.kt
app/src/main/java/uz/ssd/mobiuz/BlankFragment.kt
+0
-39
LanguageActivity.kt
app/src/main/java/uz/ssd/mobiuz/LanguageActivity.kt
+0
-5
PinActivity.kt
app/src/main/java/uz/ssd/mobiuz/PinActivity.kt
+0
-2
PinLockFragment.kt
app/src/main/java/uz/ssd/mobiuz/PinLockFragment.kt
+0
-48
SplashActivity.kt
app/src/main/java/uz/ssd/mobiuz/SplashActivity.kt
+2
-4
ServerModule.kt
app/src/main/java/uz/ssd/mobiuz/di/ServerModule.kt
+3
-0
UserAuth.kt
app/src/main/java/uz/ssd/mobiuz/model/UserAuth.kt
+3
-2
ApiService.kt
app/src/main/java/uz/ssd/mobiuz/network/api/ApiService.kt
+20
-2
Action.kt
app/src/main/java/uz/ssd/mobiuz/network/model/Action.kt
+5
-0
Errors.kt
app/src/main/java/uz/ssd/mobiuz/network/model/Errors.kt
+6
-0
GenerateToken.kt
...rc/main/java/uz/ssd/mobiuz/network/model/GenerateToken.kt
+5
-0
ResponseList.kt
...src/main/java/uz/ssd/mobiuz/network/model/ResponseList.kt
+4
-2
ResponseObject.kt
...c/main/java/uz/ssd/mobiuz/network/model/ResponseObject.kt
+3
-1
AuthRepository.kt
...n/java/uz/ssd/mobiuz/network/repository/AuthRepository.kt
+40
-8
AuthViewModel.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/AuthViewModel.kt
+19
-4
BiometricFragment.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/BiometricFragment.kt
+32
-51
ConfirmPinFragment.kt
...src/main/java/uz/ssd/mobiuz/ui/auth/ConfirmPinFragment.kt
+125
-0
EnterPasswordFragment.kt
.../main/java/uz/ssd/mobiuz/ui/auth/EnterPasswordFragment.kt
+25
-6
LoginFragment.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/LoginFragment.kt
+14
-21
PinAdapter.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/PinAdapter.kt
+6
-13
PinFragment.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/PinFragment.kt
+7
-20
ForgetLoginFragment.kt
.../main/java/uz/ssd/mobiuz/ui/forget/ForgetLoginFragment.kt
+1
-1
ForgetPasswordFragment.kt
...in/java/uz/ssd/mobiuz/ui/forget/ForgetPasswordFragment.kt
+4
-4
ForgetVerificationFragment.kt
...ava/uz/ssd/mobiuz/ui/forget/ForgetVerificationFragment.kt
+48
-58
CONSTANTS.kt
app/src/main/java/uz/ssd/mobiuz/utils/CONSTANTS.kt
+1
-1
activity_pin.xml
app/src/main/res/layout/activity_pin.xml
+1
-1
fragment_biometric.xml
app/src/main/res/layout/fragment_biometric.xml
+7
-8
fragment_blank.xml
app/src/main/res/layout/fragment_blank.xml
+0
-14
fragment_enter_password.xml
app/src/main/res/layout/fragment_enter_password.xml
+9
-7
fragment_forget_password.xml
app/src/main/res/layout/fragment_forget_password.xml
+1
-1
fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+5
-4
fragment_login.xml
app/src/main/res/layout/fragment_login.xml
+1
-1
fragment_pin.xml
app/src/main/res/layout/fragment_pin.xml
+27
-14
fragment_pin_lock.xml
app/src/main/res/layout/fragment_pin_lock.xml
+0
-14
item_confirm.xml
app/src/main/res/layout/item_confirm.xml
+0
-12
nav_graph_auth.xml
app/src/main/res/navigation/nav_graph_auth.xml
+15
-10
strings.xml
app/src/main/res/values-en/strings.xml
+55
-0
strings.xml
app/src/main/res/values-ru/strings.xml
+55
-0
strings.xml
app/src/main/res/values-uz/strings.xml
+55
-0
strings.xml
app/src/main/res/values/strings.xml
+34
-8
themes.xml
app/src/main/res/values/themes.xml
+3
-4
No files found.
app/src/main/AndroidManifest.xml
View file @
a714b180
...
@@ -4,6 +4,8 @@
...
@@ -4,6 +4,8 @@
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<uses-permission
android:name=
"android.permission.USE_BIOMETRIC"
/>
<uses-permission
android:name=
"android.permission.USE_BIOMETRIC"
/>
<uses-permission
android:name=
"android.permission.USE_FINGERPRINT"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<application
<application
android:name=
".app.App"
android:name=
".app.App"
...
@@ -16,14 +18,20 @@
...
@@ -16,14 +18,20 @@
android:usesCleartextTraffic=
"true"
>
android:usesCleartextTraffic=
"true"
>
<activity
<activity
android:name=
".LanguageActivity"
android:name=
".LanguageActivity"
android:screenOrientation=
"portrait"
android:configChanges=
"orientation"
android:windowSoftInputMode=
"adjustResize"
android:windowSoftInputMode=
"adjustResize"
android:exported=
"false"
/>
android:exported=
"false"
/>
<activity
<activity
android:name=
".MainActivity"
android:name=
".MainActivity"
android:screenOrientation=
"portrait"
android:configChanges=
"orientation"
android:windowSoftInputMode=
"adjustResize"
android:windowSoftInputMode=
"adjustResize"
android:exported=
"false"
/>
android:exported=
"false"
/>
<activity
<activity
android:name=
".AuthActivity"
android:name=
".AuthActivity"
android:screenOrientation=
"portrait"
android:configChanges=
"orientation"
android:windowSoftInputMode=
"adjustResize"
android:windowSoftInputMode=
"adjustResize"
android:exported=
"false"
/>
android:exported=
"false"
/>
<activity
<activity
...
...
app/src/main/java/uz/ssd/mobiuz/AuthActivity.kt
View file @
a714b180
...
@@ -3,8 +3,12 @@ package uz.ssd.mobiuz
...
@@ -3,8 +3,12 @@ package uz.ssd.mobiuz
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.biometric.BiometricManager
import
androidx.biometric.BiometricPrompt
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
uz.ssd.mobiuz.databinding.ActivityAuthBinding
import
uz.ssd.mobiuz.databinding.ActivityAuthBinding
import
uz.ssd.mobiuz.utils.extensions.customLog
@AndroidEntryPoint
@AndroidEntryPoint
class
AuthActivity
:
AppCompatActivity
()
{
class
AuthActivity
:
AppCompatActivity
()
{
...
@@ -18,6 +22,10 @@ class AuthActivity : AppCompatActivity() {
...
@@ -18,6 +22,10 @@ class AuthActivity : AppCompatActivity() {
setContentView
(
bn
.
root
)
setContentView
(
bn
.
root
)
window
.
decorView
.
systemUiVisibility
=
window
.
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window
.
decorView
.
systemUiVisibility
=
window
.
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
// val bio = BiometricManager.from(this).canAuthenticate()
// val man = FingerprintManagerCompat.from(this)
// val manager = man.isHardwareDetected && man.hasEnrolledFingerprints()
// customLog("bio:$bio $manager")
}
}
override
fun
onDestroy
()
{
override
fun
onDestroy
()
{
...
...
app/src/main/java/uz/ssd/mobiuz/BlankFragment.kt
deleted
100644 → 0
View file @
9212468a
package
uz.ssd.mobiuz
import
android.os.Bundle
import
android.view.View
import
androidx.fragment.app.viewModels
import
dagger.hilt.android.AndroidEntryPoint
import
uz.ssd.mobiuz.databinding.FragmentBlankBinding
import
uz.ssd.mobiuz.ui.auth.AuthViewModel
import
uz.ssd.mobiuz.ui.base.BaseFragment
@AndroidEntryPoint
class
BlankFragment
:
BaseFragment
(
R
.
layout
.
fragment_blank
)
{
private
var
_bn
:
FragmentBlankBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
viewModel
:
AuthViewModel
by
viewModels
()
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentBlankBinding
.
bind
(
view
)
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
}
override
fun
collects
()
{
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/LanguageActivity.kt
View file @
a714b180
...
@@ -25,11 +25,6 @@ class LanguageActivity : AppCompatActivity() {
...
@@ -25,11 +25,6 @@ class LanguageActivity : AppCompatActivity() {
setContentView
(
bn
.
root
)
setContentView
(
bn
.
root
)
window
.
decorView
.
systemUiVisibility
=
window
.
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window
.
decorView
.
systemUiVisibility
=
window
.
decorView
.
systemUiVisibility
or
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
// window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
// window.setTitleColor(Color.BLACK)
bn
.
apply
{
bn
.
apply
{
uzbekLang
.
setOnClickListener
{
uzbekLang
.
setOnClickListener
{
setLangAndNavigate
(
CONSTANTS
.
UZ
)
setLangAndNavigate
(
CONSTANTS
.
UZ
)
...
...
app/src/main/java/uz/ssd/mobiuz/PinActivity.kt
View file @
a714b180
...
@@ -25,8 +25,6 @@ class PinActivity : AppCompatActivity() {
...
@@ -25,8 +25,6 @@ class PinActivity : AppCompatActivity() {
_bn
=
ActivityPinBinding
.
inflate
(
layoutInflater
)
_bn
=
ActivityPinBinding
.
inflate
(
layoutInflater
)
setContentView
(
bn
.
root
)
setContentView
(
bn
.
root
)
executor
=
ContextCompat
.
getMainExecutor
(
this
)
executor
=
ContextCompat
.
getMainExecutor
(
this
)
biometricPrompt
=
BiometricPrompt
(
this
,
executor
,
biometricPrompt
=
BiometricPrompt
(
this
,
executor
,
object
:
BiometricPrompt
.
AuthenticationCallback
()
{
object
:
BiometricPrompt
.
AuthenticationCallback
()
{
...
...
app/src/main/java/uz/ssd/mobiuz/PinLockFragment.kt
deleted
100644 → 0
View file @
9212468a
package
uz.ssd.mobiuz
import
android.os.Bundle
import
android.view.View
import
androidx.fragment.app.viewModels
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
dagger.hilt.android.AndroidEntryPoint
import
uz.ssd.mobiuz.databinding.FragmentPinLockBinding
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.ui.auth.AuthViewModel
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
javax.inject.Inject
@AndroidEntryPoint
class
PinLockFragment
:
BaseFragment
(
R
.
layout
.
fragment_pin_lock
)
{
@Inject
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPinLockBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentPinLockBinding
.
bind
(
view
)
//200281 svet h shuhrat 50
// 0700268 100 gaz shuhrat
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
}
override
fun
collects
()
{
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/SplashActivity.kt
View file @
a714b180
package
uz.ssd.mobiuz
package
uz.ssd.mobiuz
import
android.content.Intent
import
android.content.Intent
import
android.graphics.Color
import
android.os.Bundle
import
android.os.Bundle
import
android.view.WindowManager
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
...
@@ -14,6 +12,7 @@ import javax.inject.Inject
...
@@ -14,6 +12,7 @@ import javax.inject.Inject
@AndroidEntryPoint
@AndroidEntryPoint
class
SplashActivity
:
AppCompatActivity
()
{
class
SplashActivity
:
AppCompatActivity
()
{
private
var
_bn
:
ActivitySplashBinding
?
=
null
private
var
_bn
:
ActivitySplashBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
...
@@ -25,13 +24,12 @@ class SplashActivity : AppCompatActivity() {
...
@@ -25,13 +24,12 @@ class SplashActivity : AppCompatActivity() {
_bn
=
ActivitySplashBinding
.
inflate
(
layoutInflater
)
_bn
=
ActivitySplashBinding
.
inflate
(
layoutInflater
)
setContentView
(
bn
.
root
)
setContentView
(
bn
.
root
)
window
.
navigationBarColor
=
this
.
resources
.
getColor
(
R
.
color
.
red_dark
)
lifecycleScope
.
launchWhenCreated
{
lifecycleScope
.
launchWhenCreated
{
delay
(
1000
)
delay
(
1000
)
if
(
pref
.
language
.
isEmpty
())
{
if
(
pref
.
language
.
isEmpty
())
{
startActivity
(
Intent
(
this
@SplashActivity
,
LanguageActivity
::
class
.
java
))
startActivity
(
Intent
(
this
@SplashActivity
,
LanguageActivity
::
class
.
java
))
}
else
{
}
else
{
startActivity
(
Intent
(
this
@SplashActivity
,
Language
Activity
::
class
.
java
))
startActivity
(
Intent
(
this
@SplashActivity
,
Auth
Activity
::
class
.
java
))
}
}
finish
()
finish
()
}
}
...
...
app/src/main/java/uz/ssd/mobiuz/di/ServerModule.kt
View file @
a714b180
package
uz.ssd.mobiuz.di
package
uz.ssd.mobiuz.di
import
android.content.Context
import
android.content.Context
import
android.os.Build
import
com.readystatesoftware.chuck.ChuckInterceptor
import
com.readystatesoftware.chuck.ChuckInterceptor
import
dagger.Module
import
dagger.Module
import
dagger.Provides
import
dagger.Provides
...
@@ -50,6 +51,8 @@ class ServerModule {
...
@@ -50,6 +51,8 @@ class ServerModule {
.
addInterceptor
(
Interceptor
{
chain
->
.
addInterceptor
(
Interceptor
{
chain
->
val
builder
=
chain
.
request
().
newBuilder
()
val
builder
=
chain
.
request
().
newBuilder
()
builder
.
header
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
builder
.
header
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
builder
.
header
(
"Lang"
,
sharedPref
.
language
)
builder
.
header
(
"device-id"
,
Build
.
DEVICE
)
builder
.
header
(
"Accept"
,
"application/json"
)
builder
.
header
(
"Accept"
,
"application/json"
)
builder
.
header
(
"Authorization"
,
"Bearer ${sharedPref.getUserToken()}"
)
builder
.
header
(
"Authorization"
,
"Bearer ${sharedPref.getUserToken()}"
)
chain
.
proceed
(
builder
.
build
())
chain
.
proceed
(
builder
.
build
())
...
...
app/src/main/java/uz/ssd/mobiuz/model/UserAuth.kt
View file @
a714b180
package
uz.ssd.mobiuz.model
package
uz.ssd.mobiuz.model
data class
UserAuth
(
data class
UserAuth
(
val
phoneNumber
:
String
,
val
phone
:
String
,
val
password
:
String
val
password
:
String
?
=
null
,
val
code
:
String
?
=
null
)
)
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/network/api/ApiService.kt
View file @
a714b180
...
@@ -3,12 +3,30 @@ package uz.ssd.mobiuz.network.api
...
@@ -3,12 +3,30 @@ package uz.ssd.mobiuz.network.api
import
retrofit2.http.Body
import
retrofit2.http.Body
import
retrofit2.http.POST
import
retrofit2.http.POST
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.network.model.Action
import
uz.ssd.mobiuz.network.model.GenerateToken
import
uz.ssd.mobiuz.network.model.ResponseList
import
uz.ssd.mobiuz.network.model.ResponseObject
import
uz.ssd.mobiuz.network.model.ResponseObject
interface
ApiService
{
interface
ApiService
{
@POST
(
"
auth
/login"
)
@POST
(
"
customer
/login"
)
suspend
fun
login
(
suspend
fun
login
(
@Body
req
:
UserAuth
@Body
req
:
UserAuth
):
ResponseObject
<
String
>
):
ResponseList
<
Any
>
@POST
(
"customer/register"
)
suspend
fun
register
(
@Body
req
:
UserAuth
):
ResponseList
<
Any
>
@POST
(
"customer/check-phone"
)
suspend
fun
checkPhone
(
@Body
req
:
UserAuth
):
ResponseObject
<
Action
>
@POST
(
"customer/check-sms-code"
)
suspend
fun
checkSMSCode
(
@Body
req
:
UserAuth
):
ResponseObject
<
GenerateToken
>
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/network/model/Action.kt
0 → 100644
View file @
a714b180
package
uz.ssd.mobiuz.network.model
data class
Action
(
var
action
:
String
=
""
)
app/src/main/java/uz/ssd/mobiuz/network/model/Errors.kt
0 → 100644
View file @
a714b180
package
uz.ssd.mobiuz.network.model
data class
Errors
(
var
key
:
String
,
var
message
:
String
)
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/network/model/GenerateToken.kt
0 → 100644
View file @
a714b180
package
uz.ssd.mobiuz.network.model
data class
GenerateToken
(
var
token
:
String
)
app/src/main/java/uz/ssd/mobiuz/network/model/ResponseList.kt
View file @
a714b180
...
@@ -2,7 +2,9 @@ package uz.ssd.mobiuz.network.model
...
@@ -2,7 +2,9 @@ package uz.ssd.mobiuz.network.model
class
ResponseList
<
T
>(
class
ResponseList
<
T
>(
var
data
:
List
<
T
>?,
var
status
:
Boolean
,
var
status
:
Status
var
message
:
String
,
var
errors
:
List
<
Errors
>,
var
data
:
List
<
T
>?
)
)
app/src/main/java/uz/ssd/mobiuz/network/model/ResponseObject.kt
View file @
a714b180
...
@@ -2,7 +2,9 @@ package uz.ssd.mobiuz.network.model
...
@@ -2,7 +2,9 @@ package uz.ssd.mobiuz.network.model
class
ResponseObject
<
T
>(
class
ResponseObject
<
T
>(
var
status
:
Status
,
var
status
:
Boolean
,
var
message
:
String
,
var
errors
:
List
<
Errors
>,
var
data
:
T
?
var
data
:
T
?
)
)
app/src/main/java/uz/ssd/mobiuz/network/repository/AuthRepository.kt
View file @
a714b180
...
@@ -2,32 +2,64 @@ package uz.ssd.mobiuz.network.repository
...
@@ -2,32 +2,64 @@ package uz.ssd.mobiuz.network.repository
import
android.content.Context
import
android.content.Context
import
dagger.hilt.android.qualifiers.ApplicationContext
import
dagger.hilt.android.qualifiers.ApplicationContext
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.network.api.ApiService
import
uz.ssd.mobiuz.network.api.ApiService
import
uz.ssd.mobiuz.network.model.Action
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.utils.extensions.userMessage
import
javax.inject.Inject
import
javax.inject.Inject
import
javax.inject.Singleton
import
javax.inject.Singleton
@Singleton
@Singleton
class
AuthRepository
@Inject
constructor
(
class
AuthRepository
@Inject
constructor
(
private
val
apiService
:
ApiService
,
private
val
apiService
:
ApiService
,
private
val
pref
:
SharedPref
,
@ApplicationContext
val
context
:
Context
@ApplicationContext
val
context
:
Context
)
{
)
{
suspend
fun
loginUser
(
data
:
UserAuth
):
UiStateObject
<
String
>
{
suspend
fun
loginUser
(
data
:
UserAuth
):
UiStateObject
<
Action
>
{
return
try
{
return
try
{
val
res
=
apiService
.
login
(
data
)
val
res
=
apiService
.
checkPhone
(
data
)
when
(
res
.
status
.
code
)
{
if
(
res
.
status
)
200
->
{
UiStateObject
.
SUCCESS
(
res
.
data
?:
Action
())
UiStateObject
.
SUCCESS
(
res
.
status
.
message
)
else
{
var
error
=
""
res
.
errors
.
forEach
{
error
+=
it
.
message
}
}
UiStateObject
.
ERROR
(
error
)
else
->
UiStateObject
.
SUCCESS
(
res
.
status
.
message
)
}
}
}
catch
(
e
:
Exception
)
{
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
))
}
}
suspend
fun
registerUser
(
data
:
UserAuth
):
UiStateObject
<
String
>
{
return
try
{
val
res
=
apiService
.
register
(
data
)
if
(
res
.
status
)
UiStateObject
.
SUCCESS
(
res
.
message
)
else
UiStateObject
.
ERROR
(
res
.
message
)
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
UiStateObject
.
SUCCESS
(
"res.message"
)
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
)
)
}
}
}
suspend
fun
checkSMSCode
(
data
:
UserAuth
):
UiStateObject
<
String
>
{
return
try
{
val
res
=
apiService
.
checkSMSCode
(
data
)
if
(
res
.
status
){
pref
.
setUserToken
(
res
.
data
?.
token
)
UiStateObject
.
SUCCESS
(
res
.
message
)
}
else
UiStateObject
.
ERROR
(
res
.
message
)
}
catch
(
e
:
Exception
)
{
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
))
}
}
}
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/auth/AuthViewModel.kt
View file @
a714b180
...
@@ -3,11 +3,11 @@ package uz.ssd.mobiuz.ui.auth
...
@@ -3,11 +3,11 @@ package uz.ssd.mobiuz.ui.auth
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.lifecycle.HiltViewModel
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.flow.MutableStateFlow
import
kotlinx.coroutines.flow.MutableStateFlow
import
kotlinx.coroutines.flow.StateFlow
import
kotlinx.coroutines.flow.StateFlow
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.network.model.Action
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.network.repository.AuthRepository
import
uz.ssd.mobiuz.network.repository.AuthRepository
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -17,13 +17,28 @@ class AuthViewModel @Inject constructor(
...
@@ -17,13 +17,28 @@ class AuthViewModel @Inject constructor(
private
val
repository
:
AuthRepository
private
val
repository
:
AuthRepository
)
:
ViewModel
()
{
)
:
ViewModel
()
{
private
val
_loginUiState
=
MutableStateFlow
<
UiStateObject
<
String
>>(
UiStateObject
.
EMPTY
)
private
val
_loginUiState
=
MutableStateFlow
<
UiStateObject
<
Action
>>(
UiStateObject
.
EMPTY
)
val
loginUiState
:
StateFlow
<
UiStateObject
<
String
>>
=
_loginUiState
val
loginUiState
:
StateFlow
<
UiStateObject
<
Action
>>
=
_loginUiState
fun
login
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
fun
login
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
_loginUiState
.
value
=
UiStateObject
.
LOADING
_loginUiState
.
value
=
UiStateObject
.
LOADING
delay
(
1000
)
_loginUiState
.
value
=
repository
.
loginUser
(
data
)
_loginUiState
.
value
=
repository
.
loginUser
(
data
)
_loginUiState
.
value
=
UiStateObject
.
EMPTY
_loginUiState
.
value
=
UiStateObject
.
EMPTY
}
}
private
val
_registerUiState
=
MutableStateFlow
<
UiStateObject
<
String
>>(
UiStateObject
.
EMPTY
)
val
registerUiState
:
StateFlow
<
UiStateObject
<
String
>>
=
_registerUiState
fun
register
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
_registerUiState
.
value
=
UiStateObject
.
LOADING
_registerUiState
.
value
=
repository
.
registerUser
(
data
)
}
private
val
_verificationUiState
=
MutableStateFlow
<
UiStateObject
<
String
>>(
UiStateObject
.
EMPTY
)
val
verificationUiState
:
StateFlow
<
UiStateObject
<
String
>>
=
_verificationUiState
fun
verification
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
_verificationUiState
.
value
=
UiStateObject
.
LOADING
_verificationUiState
.
value
=
repository
.
checkSMSCode
(
data
)
}
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/auth/BiometricFragment.kt
View file @
a714b180
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
import
android.Manifest
import
android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.content.pm.PackageManager
import
android.os.Build
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
uz.ssd.mobiuz.R
import
androidx.core.app.ActivityCompat
import
androidx.core.app.ActivityCompat.requestPermissions
import
androidx.core.content.ContextCompat
import
androidx.core.os.bundleOf
import
androidx.core.os.bundleOf
import
androidx.fragment.app.viewModels
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
...
@@ -12,17 +17,15 @@ import androidx.navigation.NavController
...
@@ -12,17 +17,15 @@ import androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.flow.collect
import
kotlinx.coroutines.flow.collect
import
uz.ssd.mobiuz.BuildConfig
import
uz.ssd.mobiuz.MainActivity
import
uz.ssd.mobiuz.MainActivity
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentBiometricBinding
import
uz.ssd.mobiuz.databinding.FragmentBiometricBinding
import
uz.ssd.mobiuz.databinding.FragmentLoginBinding
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import
uz.ssd.mobiuz.utils.ButtonClick
import
uz.ssd.mobiuz.utils.ButtonClick
import
uz.ssd.mobiuz.utils.CONSTANTS
import
uz.ssd.mobiuz.utils.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.customLog
import
uz.ssd.mobiuz.utils.extensions.showMessage
import
uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
@AndroidEntryPoint
...
@@ -36,6 +39,17 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
...
@@ -36,6 +39,17 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
val
viewModel
:
AuthViewModel
by
viewModels
()
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
if
(
BuildConfig
.
VERSION_CODE
>=
Build
.
VERSION_CODES
.
P
)
{
if
(
ContextCompat
.
checkSelfPermission
(
requireContext
(),
Manifest
.
permission
.
USE_BIOMETRIC
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
requestPermissions
(
requireActivity
(),
arrayOf
(
Manifest
.
permission
.
ACCESS_FINE_LOCATION
),
101
)
}
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentBiometricBinding
.
bind
(
view
)
_bn
=
FragmentBiometricBinding
.
bind
(
view
)
...
@@ -47,23 +61,27 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
...
@@ -47,23 +61,27 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
override
fun
setUpUI
()
{
override
fun
setUpUI
()
{
bn
.
apply
{
bn
.
apply
{
btnBack
.
setOnClickListener
(
object
:
ButtonClick
(){
btnBack
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
navController
.
navigateUp
()
navController
.
navigateUp
()
}
}
})
})
txtSkip
.
setOnClickListener
(
object
:
ButtonClick
(){
txtSkip
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
requireActivity
().
finish
()
val
intent
=
Intent
(
requireContext
(),
MainActivity
::
class
.
java
)
startActivity
(
Intent
(
requireContext
(),
MainActivity
::
class
.
java
))
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
requireActivity
().
finish
()
}
}
})
})
btnNext
.
setOnClickListener
(
object
:
ButtonClick
(){
btnNext
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
val
intent
=
Intent
(
requireContext
(),
MainActivity
::
class
.
java
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
requireActivity
().
finish
()
requireActivity
().
finish
()
startActivity
(
Intent
(
requireContext
(),
MainActivity
::
class
.
java
))
}
}
})
})
...
@@ -75,47 +93,10 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
...
@@ -75,47 +93,10 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
}
}
}
}
override
fun
collects
()
{
override
fun
collects
()
{}
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
loginUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
if
(
phone
!=
"+998949125150"
)
{
navController
.
navigate
(
R
.
id
.
enterPasswordFragment
,
null
,
Utils
.
navOptions
())
}
else
{
navController
.
navigate
(
R
.
id
.
passwordFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phoneRaw
),
Utils
.
navOptions
())
}
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showMessage
(
it
.
message
)
}
is
UiStateObject
.
LOADING
->
{
showProgressDialog
(
true
)
}
else
->
Unit
}
}
}
}
override
fun
onDestroy
()
{
override
fun
onDestroy
()
{
_bn
=
null
_bn
=
null
super
.
onDestroy
()
super
.
onDestroy
()
}
}
}
}
\ No newline at end of file
//fun main(){
// var ss = -421
// if(ss.toString().startsWith("-")){
// ss = ss.toString().replace("-","").toInt()
// val dd = (ss.toString().reversed().toInt()) * -1
// print(dd)
// }else{
// val dd = ss.toString().reversed().toInt()
// print(dd)
// }
//
//}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/auth/ConfirmPinFragment.kt
0 → 100644
View file @
a714b180
package
uz.ssd.mobiuz.ui.auth
import
android.content.Intent
import
android.os.Bundle
import
android.view.View
import
android.widget.TextView
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
uz.ssd.mobiuz.MainActivity
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentPinBinding
import
uz.ssd.mobiuz.model.PinData
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.showMessage
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
()
private
val
viewModel
:
AuthViewModel
by
viewModels
()
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
(
500
)
if
(
pinCode
==
it
)
{
pref
.
pin_code
=
pinCode
txtNotPin
.
isVisible
=
false
navigate
()
}
else
{
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
()
{
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
))
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/uz/ssd/mobiuz/ui/auth/EnterPasswordFragment.kt
View file @
a714b180
...
@@ -2,6 +2,7 @@ package uz.ssd.mobiuz.ui.auth
...
@@ -2,6 +2,7 @@ package uz.ssd.mobiuz.ui.auth
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
androidx.core.os.bundleOf
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
...
@@ -16,6 +17,7 @@ import uz.ssd.mobiuz.network.model.UiStateObject
...
@@ -16,6 +17,7 @@ import uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import
uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import
uz.ssd.mobiuz.utils.ButtonClick
import
uz.ssd.mobiuz.utils.ButtonClick
import
uz.ssd.mobiuz.utils.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.showMessage
import
uz.ssd.mobiuz.utils.extensions.showMessage
...
@@ -27,6 +29,14 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -27,6 +29,14 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
var
phone
=
""
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
phone
=
it
.
getString
(
CONSTANTS
.
PHONE
)
?:
""
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentEnterPasswordBinding
.
bind
(
view
)
_bn
=
FragmentEnterPasswordBinding
.
bind
(
view
)
...
@@ -49,12 +59,12 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -49,12 +59,12 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
if
(
s
.
toString
().
length
>
5
&&
s
.
toString
()
==
inputPassword
.
text
.
toString
().
trim
())
{
if
(
s
.
toString
().
length
>
5
&&
s
.
toString
()
==
inputPassword
.
text
.
toString
().
trim
())
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
"Пароли совпали"
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green
))
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green
))
btnLogin
.
isEnabled
=
true
btnLogin
.
isEnabled
=
true
}
else
{
}
else
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
txtCheckConfirm
.
text
=
"Пароли не совпали"
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_not_same
)
btnLogin
.
isEnabled
=
true
btnLogin
.
isEnabled
=
true
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
red
))
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
red
))
}
}
...
@@ -66,8 +76,17 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -66,8 +76,17 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
val
phone
=
inputPassword
.
text
.
toString
().
trim
()
val
password
=
inputPassword
.
text
.
toString
().
trim
()
viewModel
.
login
(
UserAuth
(
phone
,
"password"
))
val
confirm
=
inputConfirm
.
text
.
toString
().
trim
()
when
{
password
.
length
<
5
||
password
!=
confirm
->{
}
else
->{
viewModel
.
register
(
UserAuth
(
phone
.
replace
(
" "
,
""
),
password
))
}
}
}
}
})
})
...
@@ -79,11 +98,11 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -79,11 +98,11 @@ class EnterPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
override
fun
collects
()
{
override
fun
collects
()
{
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
login
UiState
.
collect
{
viewModel
.
register
UiState
.
collect
{
when
(
it
)
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
navController
.
navigate
(
R
.
id
.
verificationFragment
,
null
,
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
verificationFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phone
)
,
Utils
.
navOptions
())
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/LoginFragment.kt
View file @
a714b180
...
@@ -2,6 +2,7 @@ package uz.ssd.mobiuz.ui.auth
...
@@ -2,6 +2,7 @@ package uz.ssd.mobiuz.ui.auth
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
android.view.animation.AnimationUtils
import
androidx.core.os.bundleOf
import
androidx.core.os.bundleOf
import
androidx.fragment.app.viewModels
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
...
@@ -43,7 +44,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -43,7 +44,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
override
fun
setUpUI
()
{
override
fun
setUpUI
()
{
bn
.
apply
{
bn
.
apply
{
inputPhone
.
addTextChangedListener
(
object
:
TextWatcherWrapper
(){
inputPhone
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
customLog
(
"s=${s?.toString()?.length}"
)
customLog
(
"s=${s?.toString()?.length}"
)
...
@@ -55,11 +56,17 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -55,11 +56,17 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
phone
=
"+998"
+
inputPhone
.
unmaskedText
.
toString
().
trim
()
phone
=
"+998"
+
inputPhone
.
unmaskedText
.
toString
().
trim
()
phoneRaw
=
inputPhone
.
text
.
toString
().
trim
()
phoneRaw
=
inputPhone
.
text
.
toString
().
trim
()
viewModel
.
login
(
UserAuth
(
phone
,
"password"
))
when
{
phone
.
length
<
13
->
{
inputPhone
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
}
else
->
viewModel
.
login
(
UserAuth
(
phone
,
null
))
}
}
}
})
})
toolbar
.
setNavigationOnClickListener
{
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
requireActivity
().
finish
()
}
}
}
}
}
}
...
@@ -70,11 +77,10 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -70,11 +77,10 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
when
(
it
)
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
if
(
it
.
data
.
action
==
"login"
)
{
if
(
phone
!=
"+998999999999"
)
{
navController
.
navigate
(
R
.
id
.
enterPasswordFragment
,
null
,
Utils
.
navOptions
())
}
else
{
navController
.
navigate
(
R
.
id
.
passwordFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phoneRaw
),
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
passwordFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phoneRaw
),
Utils
.
navOptions
())
}
else
if
(
it
.
data
.
action
==
"register"
){
navController
.
navigate
(
R
.
id
.
enterPasswordFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phone
),
Utils
.
navOptions
())
}
}
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
...
@@ -94,17 +100,4 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -94,17 +100,4 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
_bn
=
null
_bn
=
null
super
.
onDestroy
()
super
.
onDestroy
()
}
}
}
}
\ No newline at end of file
//fun main(){
// var ss = -421
// if(ss.toString().startsWith("-")){
// ss = ss.toString().replace("-","").toInt()
// val dd = (ss.toString().reversed().toInt()) * -1
// print(dd)
// }else{
// val dd = ss.toString().reversed().toInt()
// print(dd)
// }
//
//}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/auth/PinAdapter.kt
View file @
a714b180
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
android.view.ViewGroup
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
...
@@ -11,8 +10,7 @@ import uz.ssd.mobiuz.utils.extensions.SingleBlock
...
@@ -11,8 +10,7 @@ import uz.ssd.mobiuz.utils.extensions.SingleBlock
class
PinAdapter
:
RecyclerView
.
Adapter
<
PinAdapter
.
VHolder
>()
{
class
PinAdapter
:
RecyclerView
.
Adapter
<
PinAdapter
.
VHolder
>()
{
private
val
list
:
ArrayList
<
PinData
>
by
lazy
{
ArrayList
()
}
private
val
list
=
ArrayList
<
PinData
>()
private
var
listener
:
SingleBlock
<
String
>?
=
null
private
var
listener
:
SingleBlock
<
String
>?
=
null
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
VHolder
{
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
VHolder
{
...
@@ -31,9 +29,7 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
...
@@ -31,9 +29,7 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
fun
submitList
(
ls
:
List
<
PinData
>)
{
fun
submitList
(
ls
:
List
<
PinData
>)
{
list
.
clear
()
list
.
clear
()
Log
.
e
(
"AAA"
,
"list $list"
)
list
.
addAll
(
ls
)
list
.
addAll
(
ls
)
Log
.
e
(
"AAA"
,
"list $list"
)
notifyDataSetChanged
()
notifyDataSetChanged
()
}
}
...
@@ -42,18 +38,17 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
...
@@ -42,18 +38,17 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
if
(
index
!=
-
1
)
{
if
(
index
!=
-
1
)
{
list
[
index
].
count
=
id
list
[
index
].
count
=
id
notifyItemChanged
(
index
)
notifyItemChanged
(
index
)
Log
.
e
(
"AAA"
,
"add index ${getAddItem()}"
)
if
(
index
==
3
)
checkDone
()
if
(
index
==
3
)
checkDone
()
}
}
}
}
private
fun
checkDone
(){
private
fun
checkDone
()
{
var
pin
=
""
var
pin
=
""
list
.
forEach
{
list
.
forEach
{
pin
+=
it
.
count
.
toString
()
pin
+=
it
.
count
.
toString
()
}
}
if
(
pin
.
length
==
4
)
{
if
(
pin
.
length
==
4
)
{
listener
?.
invoke
(
pin
)
listener
?.
invoke
(
pin
)
}
}
}
}
...
@@ -63,7 +58,6 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
...
@@ -63,7 +58,6 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
if
(
index
!=
-
1
)
{
if
(
index
!=
-
1
)
{
list
[
index
].
count
=
-
1
list
[
index
].
count
=
-
1
notifyItemChanged
(
index
)
notifyItemChanged
(
index
)
Log
.
e
(
"AAA"
,
" remove index ${getCheckedItem()}"
)
}
}
}
}
...
@@ -73,7 +67,6 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
...
@@ -73,7 +67,6 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
if
(
list
[
i
].
count
!=
-
1
)
if
(
list
[
i
].
count
!=
-
1
)
pos
=
i
pos
=
i
}
}
return
pos
return
pos
}
}
...
@@ -81,7 +74,7 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
...
@@ -81,7 +74,7 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
private
fun
getAddItem
():
Int
{
private
fun
getAddItem
():
Int
{
var
pos
=
-
1
var
pos
=
-
1
for
(
i
in
list
.
indices
)
{
for
(
i
in
list
.
indices
)
{
if
(
list
[
i
].
count
==
-
1
){
if
(
list
[
i
].
count
==
-
1
)
{
pos
=
i
pos
=
i
return
pos
return
pos
}
}
...
@@ -89,7 +82,7 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
...
@@ -89,7 +82,7 @@ class PinAdapter : RecyclerView.Adapter<PinAdapter.VHolder>() {
return
pos
return
pos
}
}
fun
setOnDoneListener
(
block
:
SingleBlock
<
String
>)
{
fun
setOnDoneListener
(
block
:
SingleBlock
<
String
>)
{
listener
=
block
listener
=
block
}
}
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/PinFragment.kt
View file @
a714b180
...
@@ -3,6 +3,8 @@ package uz.ssd.mobiuz.ui.auth
...
@@ -3,6 +3,8 @@ package uz.ssd.mobiuz.ui.auth
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
android.widget.TextView
import
android.widget.TextView
import
androidx.core.os.bundleOf
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.NavController
...
@@ -22,14 +24,11 @@ import javax.inject.Inject
...
@@ -22,14 +24,11 @@ import javax.inject.Inject
@AndroidEntryPoint
@AndroidEntryPoint
class
PinFragment
:
BaseFragment
(
R
.
layout
.
fragment_pin
)
{
class
PinFragment
:
BaseFragment
(
R
.
layout
.
fragment_pin
)
{
@Inject
@Inject
lateinit
var
pref
:
SharedPref
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPinBinding
?
=
null
private
var
_bn
:
FragmentPinBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
var
phone
=
""
private
var
pinCode
=
""
private
val
data
=
ArrayList
<
PinData
>()
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
val
pinAdapter
=
PinAdapter
()
...
@@ -52,26 +51,14 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -52,26 +51,14 @@ class PinFragment : BaseFragment(R.layout.fragment_pin) {
rvPin
.
adapter
=
pinAdapter
rvPin
.
adapter
=
pinAdapter
txtEnterPin
.
text
=
getString
(
R
.
string
.
install_pin
)
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
lifecycleScope
.
launchWhenCreated
{
delay
(
500
)
delay
(
100
)
loadData
()
navController
.
navigate
(
R
.
id
.
confirmPinFragment
,
bundleOf
(
"pinCode"
to
it
),
Utils
.
navOptions
())
if
(
pinCode
.
isEmpty
())
{
pinCode
=
it
txtEnterPin
.
text
=
getString
(
R
.
string
.
confirm_pin
)
showMessage
(
it
)
}
else
{
if
(
pinCode
==
it
)
{
pref
.
pin_code
=
pinCode
navController
.
navigate
(
R
.
id
.
biometricFragment
,
null
,
Utils
.
navOptions
())
}
else
{
pinCode
=
""
txtEnterPin
.
text
=
getString
(
R
.
string
.
install_pin
)
}
}
}
}
}
}
toolbar
.
setNavigationOnClickListener
{
toolbar
.
setNavigationOnClickListener
{
...
...
app/src/main/java/uz/ssd/mobiuz/ui/forget/ForgetLoginFragment.kt
View file @
a714b180
...
@@ -44,7 +44,7 @@ class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -44,7 +44,7 @@ class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
override
fun
setUpUI
()
{
override
fun
setUpUI
()
{
bn
.
apply
{
bn
.
apply
{
txtEnterPhone
.
text
=
"Забыли пароль?"
//
txtEnterPhone.text = "Забыли пароль?"
inputPhone
.
addTextChangedListener
(
object
:
TextWatcherWrapper
(){
inputPhone
.
addTextChangedListener
(
object
:
TextWatcherWrapper
(){
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
...
...
app/src/main/java/uz/ssd/mobiuz/ui/forget/ForgetPasswordFragment.kt
View file @
a714b180
...
@@ -42,7 +42,7 @@ class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -42,7 +42,7 @@ class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
inputPassword
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
inputPassword
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
txtCheckPassword
.
isVisible
=
(
s
.
toString
().
length
<
5
)
txtCheckPassword
.
isVisible
=
(
s
.
toString
().
length
<
6
)
}
}
})
})
...
@@ -51,12 +51,12 @@ class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -51,12 +51,12 @@ class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
if
(
s
.
toString
().
length
>
5
&&
s
.
toString
()
==
inputPassword
.
text
.
toString
().
trim
())
{
if
(
s
.
toString
().
length
>
5
&&
s
.
toString
()
==
inputPassword
.
text
.
toString
().
trim
())
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
"Пароли совпали"
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green
))
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green
))
btnLogin
.
isEnabled
=
true
btnLogin
.
isEnabled
=
true
}
else
{
}
else
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
txtCheckConfirm
.
text
=
"Пароли не совпали"
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_not_same
)
btnLogin
.
isEnabled
=
true
btnLogin
.
isEnabled
=
true
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
red
))
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
red
))
}
}
...
@@ -69,7 +69,7 @@ class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
...
@@ -69,7 +69,7 @@ class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
val
phone
=
inputPassword
.
text
.
toString
().
trim
()
val
phone
=
inputPassword
.
text
.
toString
().
trim
()
viewModel
.
login
(
UserAuth
(
phone
,
"password"
))
viewModel
.
login
(
UserAuth
(
"phone"
,
phone
))
}
}
})
})
...
...
app/src/main/java/uz/ssd/mobiuz/ui/forget/ForgetVerificationFragment.kt
View file @
a714b180
...
@@ -33,6 +33,8 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
...
@@ -33,6 +33,8 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
var
code
=
""
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentVerificationBinding
.
bind
(
view
)
_bn
=
FragmentVerificationBinding
.
bind
(
view
)
setUpUI
()
setUpUI
()
...
@@ -47,15 +49,26 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
...
@@ -47,15 +49,26 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
navController
.
navigateUp
()
navController
.
navigateUp
()
}
}
viewGroup
.
setOnClickListener
(
object
:
ButtonClick
(){
override
fun
onSingleClick
(
v
:
View
?)
{
v
?.
hideKeyboard
()
}
})
loadEdited
()
loadEdited
()
frame
.
setOnClickListener
{
clearPins
()
}
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
viewModel
.
login
(
UserAuth
(
"phone"
,
"password"
))
getLinePinCodes
()
if
(
code
.
length
==
6
){
viewModel
.
login
(
UserAuth
(
"phone"
,
"password"
))
}
else
{
clearPins
()
}
}
}
})
})
...
@@ -64,7 +77,6 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
...
@@ -64,7 +77,6 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
sentCodeAgain
.
setTextColor
(
Color
.
parseColor
(
"#FF9500"
))
sentCodeAgain
.
setTextColor
(
Color
.
parseColor
(
"#FF9500"
))
sentCodeAgain
.
setOnClickListener
{
sentCodeAgain
.
setOnClickListener
{
// viewModel.login(UserAuth("",""))
count
(
true
)
count
(
true
)
}
}
coutdownView
.
setOnCountdownEndListener
{
coutdownView
.
setOnCountdownEndListener
{
...
@@ -76,25 +88,6 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
...
@@ -76,25 +88,6 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
private
fun
loadEdited
()
{
private
fun
loadEdited
()
{
bn
.
apply
{
bn
.
apply
{
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
viewGroup
.
setOnClickListener
{
it
.
hideKeyboard
()
}
frame
.
setOnClickListener
{
pin1
.
text
?.
clear
()
pin2
.
text
?.
clear
()
pin3
.
text
?.
clear
()
pin4
.
text
?.
clear
()
pin5
.
text
?.
clear
()
pin6
.
text
?.
clear
()
pin1
.
showKeyboard
()
}
pin1
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
pin1
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
...
@@ -175,45 +168,42 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
...
@@ -175,45 +168,42 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
})
})
pin1
.
setOnKeyListener
{
_
,
keyCode
,
_
->
for
(
i
in
0
until
pinView
.
childCount
){
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
pinView
.
getChildAt
(
i
).
setOnKeyListener
{
_
,
keyCode
,
_
->
checkFocus
().
requestFocus
()
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
}
checkFocus
().
requestFocus
()
false
}
}
false
pin2
.
setOnKeyListener
{
_
,
keyCode
,
_
->
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
checkFocus
().
requestFocus
()
}
false
}
pin3
.
setOnKeyListener
{
_
,
keyCode
,
_
->
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
checkFocus
().
requestFocus
()
}
false
}
pin4
.
setOnKeyListener
{
_
,
keyCode
,
_
->
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
checkFocus
().
requestFocus
()
}
false
}
pin5
.
setOnKeyListener
{
_
,
keyCode
,
_
->
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
checkFocus
().
requestFocus
()
}
false
}
pin6
.
setOnKeyListener
{
_
,
keyCode
,
_
->
if
(
keyCode
==
KeyEvent
.
KEYCODE_DEL
)
{
checkFocus
().
requestFocus
()
}
}
false
}
}
}
}
}
}
private
fun
getLinePinCodes
()
{
bn
.
apply
{
code
=
""
code
+=
pin1
.
text
.
toString
()
code
+=
pin2
.
text
.
toString
()
code
+=
pin3
.
text
.
toString
()
code
+=
pin4
.
text
.
toString
()
code
+=
pin5
.
text
.
toString
()
code
+=
pin6
.
text
.
toString
()
}
}
private
fun
clearPins
()
{
bn
.
apply
{
pin1
.
text
?.
clear
()
pin2
.
text
?.
clear
()
pin3
.
text
?.
clear
()
pin4
.
text
?.
clear
()
pin5
.
text
?.
clear
()
pin6
.
text
?.
clear
()
pin1
.
showKeyboard
()
}
}
private
fun
checkFocus
():
View
{
private
fun
checkFocus
():
View
{
bn
.
apply
{
bn
.
apply
{
return
when
{
return
when
{
...
@@ -271,7 +261,7 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
...
@@ -271,7 +261,7 @@ class ForgetVerificationFragment : BaseFragment(R.layout.fragment_verification)
sentCodeAgain
.
isVisible
=
!
status
sentCodeAgain
.
isVisible
=
!
status
countWaitText
.
isVisible
=
status
countWaitText
.
isVisible
=
status
coutdownView
.
isVisible
=
status
coutdownView
.
isVisible
=
status
if
(
status
)
coutdownView
.
start
(
12
0000
)
if
(
status
)
coutdownView
.
start
(
6
0000
)
}
}
}
}
...
...
app/src/main/java/uz/ssd/mobiuz/utils/CONSTANTS.kt
View file @
a714b180
package
uz.ssd.mobiuz.utils
package
uz.ssd.mobiuz.utils
object
CONSTANTS
{
object
CONSTANTS
{
const
val
BASE_URL
=
"http://1
57.230.7.9:9098/api
/"
const
val
BASE_URL
=
"http://1
0.160.45.60/api/v1
/"
const
val
BASE_URL_WITHOUT_API
=
"http://157.230.7.9:9098"
const
val
BASE_URL_WITHOUT_API
=
"http://157.230.7.9:9098"
const
val
IMAGE_URL
=
"http://157.230.7.9:9098/api/attach/"
const
val
IMAGE_URL
=
"http://157.230.7.9:9098/api/attach/"
const
val
IMAGE_URL_GET
=
"http://157.230.7.9:9098/api/attach/get/"
const
val
IMAGE_URL_GET
=
"http://157.230.7.9:9098/api/attach/get/"
...
...
app/src/main/res/layout/activity_pin.xml
View file @
a714b180
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:cursorVisible=
"true"
android:cursorVisible=
"true"
android:hint=
"
00000
"
android:hint=
"
*****
"
android:inputType=
"text"
android:inputType=
"text"
android:padding=
"@dimen/_1sdp"
android:padding=
"@dimen/_1sdp"
android:textColor=
"@color/black"
android:textColor=
"@color/black"
...
...
app/src/main/res/layout/fragment_biometric.xml
View file @
a714b180
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
android:layout_gravity=
"center|end"
android:layout_gravity=
"center|end"
android:background=
"?android:selectableItemBackground"
android:background=
"?android:selectableItemBackground"
android:padding=
"@dimen/_4sdp"
android:padding=
"@dimen/_4sdp"
android:text=
"
Пропустить
"
android:text=
"
@string/skip
"
android:textColor=
"@color/red_dark"
android:textColor=
"@color/red_dark"
android:textSize=
"16sp"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_12sdp"
android:text=
"
Биометрический вход
"
android:text=
"
@string/biometric_enter
"
android:textSize=
"@dimen/_20sdp"
android:textSize=
"@dimen/_20sdp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -64,8 +64,7 @@
...
@@ -64,8 +64,7 @@
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_12sdp"
android:text=
"Быстро войти в систему с помощью отпечатка пальца
android:text=
"@string/subtitle_biometric"
или Face ID."
android:textColor=
"@color/text_color_77"
android:textColor=
"@color/text_color_77"
android:textSize=
"@dimen/_14sdp"
/>
android:textSize=
"@dimen/_14sdp"
/>
...
@@ -82,7 +81,7 @@
...
@@ -82,7 +81,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:textSize=
"17sp"
android:textSize=
"17sp"
android:text=
"
Активировать
"
android:text=
"
@string/avtorization
"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
<Switch
<Switch
...
@@ -103,7 +102,7 @@
...
@@ -103,7 +102,7 @@
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:textSize=
"15sp"
android:textSize=
"15sp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:text=
"
Измените это в любое время в настройках
"
android:text=
"
@string/change_all_time
"
/>
/>
</LinearLayout>
</LinearLayout>
...
@@ -120,11 +119,11 @@
...
@@ -120,11 +119,11 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end"
android:layout_gravity=
"end"
android:layout_marginEnd=
"@dimen/_12sdp"
android:layout_marginEnd=
"@dimen/_12sdp"
android:paddingHorizontal=
"@dimen/_
18
sdp"
android:paddingHorizontal=
"@dimen/_
22
sdp"
android:paddingVertical=
"@dimen/_10sdp"
android:paddingVertical=
"@dimen/_10sdp"
android:textStyle=
"bold"
android:textStyle=
"bold"
android:textSize=
"16sp"
android:textSize=
"16sp"
android:text=
"@string/continuoue
_task
"
android:text=
"@string/continuoue"
android:textAllCaps=
"false"
android:textAllCaps=
"false"
android:textColor=
"@color/red"
android:textColor=
"@color/red"
app:backgroundTint=
"@color/white"
/>
app:backgroundTint=
"@color/white"
/>
...
...
app/src/main/res/layout/fragment_blank.xml
deleted
100644 → 0
View file @
9212468a
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
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"
tools:context=
".BlankFragment"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:text=
"@string/hello_blank_fragment"
/>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_enter_password.xml
View file @
a714b180
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
android:layout_marginStart=
"@dimen/_12sdp"
android:layout_marginStart=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_16sdp"
android:layout_marginTop=
"@dimen/_16sdp"
android:layout_marginBottom=
"@dimen/_4sdp"
android:layout_marginBottom=
"@dimen/_4sdp"
android:text=
"
Введите пароль:
"
android:text=
"
@string/enter_parol
"
android:textColor=
"@color/black"
android:textColor=
"@color/black"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
...
@@ -59,7 +59,8 @@
...
@@ -59,7 +59,8 @@
android:background=
"@drawable/edit_text_bgn"
android:background=
"@drawable/edit_text_bgn"
android:imeOptions=
"actionNext"
android:imeOptions=
"actionNext"
android:textSize=
"@dimen/_12sdp"
android:textSize=
"@dimen/_12sdp"
android:inputType=
"textPassword"
android:inputType=
"number"
android:maxLength=
"7"
android:paddingVertical=
"@dimen/_12sdp"
android:paddingVertical=
"@dimen/_12sdp"
android:paddingStart=
"@dimen/_12sdp"
/>
android:paddingStart=
"@dimen/_12sdp"
/>
</com.google.android.material.textfield.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
...
@@ -70,7 +71,7 @@
...
@@ -70,7 +71,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/_6sdp"
android:layout_marginTop=
"@dimen/_6sdp"
android:visibility=
"invisible"
android:visibility=
"invisible"
android:text=
"
Должно быть не менее 6 символов
"
android:text=
"
@string/min_6
"
android:textColor=
"@color/light"
android:textColor=
"@color/light"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"@id/layout_input_confirm"
app:layout_constraintStart_toStartOf=
"@id/layout_input_confirm"
...
@@ -82,7 +83,7 @@
...
@@ -82,7 +83,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/_34sdp"
android:layout_marginTop=
"@dimen/_34sdp"
android:layout_marginBottom=
"@dimen/_4sdp"
android:layout_marginBottom=
"@dimen/_4sdp"
android:text=
"
Введите пароль повторно:
"
android:text=
"
@string/confirm_parol
"
android:textColor=
"@color/black"
android:textColor=
"@color/black"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"@id/layout_input_confirm"
app:layout_constraintStart_toStartOf=
"@id/layout_input_confirm"
...
@@ -104,7 +105,8 @@
...
@@ -104,7 +105,8 @@
android:background=
"@drawable/edit_text_bgn"
android:background=
"@drawable/edit_text_bgn"
android:imeOptions=
"actionDone"
android:imeOptions=
"actionDone"
android:textSize=
"@dimen/_12sdp"
android:textSize=
"@dimen/_12sdp"
android:inputType=
"textPassword"
android:inputType=
"number"
android:maxLength=
"7"
android:paddingVertical=
"@dimen/_12sdp"
android:paddingVertical=
"@dimen/_12sdp"
android:paddingStart=
"@dimen/_12sdp"
android:paddingStart=
"@dimen/_12sdp"
/>
/>
...
@@ -125,7 +127,7 @@
...
@@ -125,7 +127,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/_10sdp"
android:layout_marginTop=
"@dimen/_10sdp"
android:text=
"
Пароли должны совпадать
"
android:text=
"
@string/must_same
"
android:textColor=
"@color/light"
android:textColor=
"@color/light"
android:textStyle=
"bold"
android:textStyle=
"bold"
android:visibility=
"invisible"
android:visibility=
"invisible"
...
@@ -142,7 +144,7 @@
...
@@ -142,7 +144,7 @@
android:textSize=
"@dimen/_12sdp"
android:textSize=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_34sdp"
android:layout_marginTop=
"@dimen/_34sdp"
android:text=
"@string/continuoue
_task
"
android:text=
"@string/continuoue"
app:layout_constraintTop_toBottomOf=
"@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf=
"@id/layout_input_confirm"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
app:layout_constraintBottom_toBottomOf=
"parent"
/>
...
...
app/src/main/res/layout/fragment_forget_password.xml
View file @
a714b180
...
@@ -68,7 +68,7 @@
...
@@ -68,7 +68,7 @@
android:textSize=
"@dimen/_12sdp"
android:textSize=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_24sdp"
android:layout_marginTop=
"@dimen/_24sdp"
android:text=
"@string/continuoue
_task
"
android:text=
"@string/continuoue"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/layout_input"
/>
app:layout_constraintTop_toBottomOf=
"@id/layout_input"
/>
...
...
app/src/main/res/layout/fragment_home.xml
View file @
a714b180
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
android:fitsSystemWindows=
"false"
android:fitsSystemWindows=
"false"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<FrameLayout
<FrameLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/_240sdp"
android:layout_height=
"@dimen/_240sdp"
...
@@ -55,7 +56,7 @@
...
@@ -55,7 +56,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/light"
android:textColor=
"@color/light"
android:text=
"
Мой номер
"
/>
android:text=
"
@string/my_number
"
/>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
...
@@ -84,7 +85,7 @@
...
@@ -84,7 +85,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/light"
android:textColor=
"@color/light"
android:text=
"
Баланс
"
/>
android:text=
"
@string/balance
"
/>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
...
@@ -150,7 +151,7 @@
...
@@ -150,7 +151,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginTop=
"10dp"
android:layout_marginTop=
"10dp"
android:text=
"
Остаток по тарифу
"
android:text=
"
@string/oatatok_tarifu
"
android:textColor=
"@color/light"
/>
android:textColor=
"@color/light"
/>
<LinearLayout
<LinearLayout
...
@@ -262,7 +263,7 @@
...
@@ -262,7 +263,7 @@
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
Следующее списание:
"
android:text=
"
@string/next_spisanie
"
android:textSize=
"14sp"
android:textSize=
"14sp"
android:textColor=
"@color/light"
/>
android:textColor=
"@color/light"
/>
...
...
app/src/main/res/layout/fragment_login.xml
View file @
a714b180
...
@@ -77,7 +77,7 @@
...
@@ -77,7 +77,7 @@
android:textSize=
"@dimen/_12sdp"
android:textSize=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginHorizontal=
"@dimen/_12sdp"
android:layout_marginTop=
"@dimen/_24sdp"
android:layout_marginTop=
"@dimen/_24sdp"
android:text=
"@string/continuoue
_task
"
/>
android:text=
"@string/continuoue"
/>
</LinearLayout>
</LinearLayout>
...
...
app/src/main/res/layout/fragment_pin.xml
View file @
a714b180
...
@@ -17,18 +17,31 @@
...
@@ -17,18 +17,31 @@
android:id=
"@+id/txt_enter_pin"
android:id=
"@+id/txt_enter_pin"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/_1
2
sdp"
android:layout_marginStart=
"@dimen/_1
4
sdp"
android:layout_marginTop=
"@dimen/_14sdp"
android:layout_marginTop=
"@dimen/_14sdp"
android:text=
"@string/install_pin"
android:text=
"@string/install_pin"
android:textSize=
"@dimen/_16sdp"
android:textSize=
"@dimen/_16sdp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
<
Linear
Layout
<
Frame
Layout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"center"
>
android:gravity=
"center"
>
<TextView
android:layout_width=
"wrap_content"
android:text=
"@string/pin_not_same"
android:id=
"@+id/txt_not_pin"
android:visibility=
"gone"
android:textSize=
"@dimen/_10sdp"
android:layout_gravity=
"top|center"
android:layout_marginTop=
"@dimen/_20sdp"
android:textStyle=
"bold"
android:layout_marginBottom=
"@dimen/_20sdp"
android:textColor=
"@color/red"
android:layout_height=
"wrap_content"
/>
<com.google.android.material.card.MaterialCardView
<com.google.android.material.card.MaterialCardView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
...
@@ -45,7 +58,7 @@
...
@@ -45,7 +58,7 @@
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
android:layout_height=
"wrap_content"
/>
android:layout_height=
"wrap_content"
/>
</com.google.android.material.card.MaterialCardView>
</com.google.android.material.card.MaterialCardView>
</
Linear
Layout>
</
Frame
Layout>
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout
...
@@ -58,7 +71,7 @@
...
@@ -58,7 +71,7 @@
<TextView
<TextView
android:id=
"@+id/btn_1"
android:id=
"@+id/btn_1"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"1"
android:text=
"
@string/_
1"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
...
@@ -66,7 +79,7 @@
...
@@ -66,7 +79,7 @@
<TextView
<TextView
android:id=
"@+id/btn_2"
android:id=
"@+id/btn_2"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"2"
android:text=
"
@string/_
2"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
...
@@ -75,7 +88,7 @@
...
@@ -75,7 +88,7 @@
<TextView
<TextView
android:id=
"@+id/btn_3"
android:id=
"@+id/btn_3"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"3"
android:text=
"
@string/_
3"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
...
@@ -84,7 +97,7 @@
...
@@ -84,7 +97,7 @@
android:id=
"@+id/btn_4"
android:id=
"@+id/btn_4"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:layout_marginTop=
"@dimen/_16sdp"
android:text=
"4"
android:text=
"
@string/_
4"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
app:layout_constraintTop_toBottomOf=
"@id/btn_1"
/>
...
@@ -92,7 +105,7 @@
...
@@ -92,7 +105,7 @@
<TextView
<TextView
android:id=
"@+id/btn_5"
android:id=
"@+id/btn_5"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"5"
android:text=
"
@string/_
5"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
...
@@ -101,7 +114,7 @@
...
@@ -101,7 +114,7 @@
<TextView
<TextView
android:id=
"@+id/btn_6"
android:id=
"@+id/btn_6"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"6"
android:text=
"
@string/_
6"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
app:layout_constraintTop_toTopOf=
"@id/btn_4"
/>
...
@@ -110,7 +123,7 @@
...
@@ -110,7 +123,7 @@
android:id=
"@+id/btn_7"
android:id=
"@+id/btn_7"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:layout_marginTop=
"@dimen/_16sdp"
android:text=
"7"
android:text=
"
@string/_
7"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
app:layout_constraintTop_toBottomOf=
"@id/btn_4"
/>
...
@@ -118,7 +131,7 @@
...
@@ -118,7 +131,7 @@
<TextView
<TextView
android:id=
"@+id/btn_8"
android:id=
"@+id/btn_8"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"8"
android:text=
"
@string/_
8"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintEnd_toStartOf=
"@id/btn_3"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
app:layout_constraintStart_toEndOf=
"@id/btn_1"
...
@@ -127,7 +140,7 @@
...
@@ -127,7 +140,7 @@
<TextView
<TextView
android:id=
"@+id/btn_9"
android:id=
"@+id/btn_9"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:text=
"9"
android:text=
"
@string/_
9"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
app:layout_constraintTop_toTopOf=
"@id/btn_7"
/>
...
@@ -137,7 +150,7 @@
...
@@ -137,7 +150,7 @@
android:id=
"@+id/btn_0"
android:id=
"@+id/btn_0"
style=
"@style/BtnStyle"
style=
"@style/BtnStyle"
android:layout_marginTop=
"@dimen/_16sdp"
android:layout_marginTop=
"@dimen/_16sdp"
android:text=
"0"
android:text=
"
@string/_
0"
android:background=
"@drawable/bgn_pin_btn"
android:background=
"@drawable/bgn_pin_btn"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
app:layout_constraintStart_toStartOf=
"@id/btn_8"
app:layout_constraintTop_toBottomOf=
"@id/btn_7"
/>
app:layout_constraintTop_toBottomOf=
"@id/btn_7"
/>
...
@@ -148,8 +161,8 @@
...
@@ -148,8 +161,8 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"@dimen/_12sdp"
android:padding=
"@dimen/_12sdp"
android:contentDescription=
"@string/remove"
android:src=
"@drawable/ic_vector_remove"
android:src=
"@drawable/ic_vector_remove"
android:text=
"9"
android:background=
"?selectableItemBackgroundBorderless"
android:background=
"?selectableItemBackgroundBorderless"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintBottom_toBottomOf=
"@id/btn_0"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
...
...
app/src/main/res/layout/fragment_pin_lock.xml
deleted
100644 → 0
View file @
9212468a
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
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"
tools:context=
".PinLockFragment"
>
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/item_confirm.xml
deleted
100644 → 0
View file @
9212468a
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<EditText
android:layout_width=
"wrap_content"
android:inputType=
"number"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/navigation/nav_graph_auth.xml
View file @
a714b180
...
@@ -18,9 +18,9 @@
...
@@ -18,9 +18,9 @@
tools:layout=
"@layout/fragment_verification"
/>
tools:layout=
"@layout/fragment_verification"
/>
<fragment
<fragment
android:id=
"@+id/enterPasswordFragment"
android:id=
"@+id/enterPasswordFragment"
tools:layout=
"@layout/fragment_enter_password"
android:name=
"uz.ssd.mobiuz.ui.auth.EnterPasswordFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.EnterPasswordFragment"
android:label=
"EnterPasswordFragment"
/>
android:label=
"EnterPasswordFragment"
tools:layout=
"@layout/fragment_enter_password"
/>
<fragment
<fragment
android:id=
"@+id/passwordFragment"
android:id=
"@+id/passwordFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.PasswordFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.PasswordFragment"
...
@@ -28,14 +28,14 @@
...
@@ -28,14 +28,14 @@
tools:layout=
"@layout/fragment_password"
/>
tools:layout=
"@layout/fragment_password"
/>
<fragment
<fragment
android:id=
"@+id/forgetPasswordFragment"
android:id=
"@+id/forgetPasswordFragment"
tools:layout=
"@layout/fragment_forget_password"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetPasswordFragment"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetPasswordFragment"
android:label=
"ForgetPasswordFragment"
/>
android:label=
"ForgetPasswordFragment"
tools:layout=
"@layout/fragment_forget_password"
/>
<fragment
<fragment
android:id=
"@+id/pinFragment"
android:id=
"@+id/pinFragment"
tools:layout=
"@layout/fragment_pin"
android:name=
"uz.ssd.mobiuz.ui.auth.PinFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.PinFragment"
android:label=
"PinFragment"
/>
android:label=
"PinFragment"
tools:layout=
"@layout/fragment_pin"
/>
<fragment
<fragment
android:id=
"@+id/biometricFragment"
android:id=
"@+id/biometricFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.BiometricFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.BiometricFragment"
...
@@ -43,12 +43,17 @@
...
@@ -43,12 +43,17 @@
tools:layout=
"@layout/fragment_biometric"
/>
tools:layout=
"@layout/fragment_biometric"
/>
<fragment
<fragment
android:id=
"@+id/forgetLoginFragment"
android:id=
"@+id/forgetLoginFragment"
tools:layout=
"@layout/fragment_login"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetLoginFragment"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetLoginFragment"
android:label=
"ForgetLoginFragment"
/>
android:label=
"ForgetLoginFragment"
tools:layout=
"@layout/fragment_login"
/>
<fragment
<fragment
android:id=
"@+id/forgetVerificationFragment"
android:id=
"@+id/forgetVerificationFragment"
tools:layout=
"@layout/fragment_pin"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetVerificationFragment"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetVerificationFragment"
android:label=
"ForgetPinFragment"
/>
android:label=
"ForgetPinFragment"
tools:layout=
"@layout/fragment_pin"
/>
<fragment
android:id=
"@+id/confirmPinFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.ConfirmPinFragment"
android:label=
"ConfirmPinFragment"
tools:layout=
"@layout/fragment_pin"
/>
</navigation>
</navigation>
\ No newline at end of file
app/src/main/res/values-en/strings.xml
0 → 100644
View file @
a714b180
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"login"
>
Login
</string>
<string
name=
"phone_number"
>
Phone Number
</string>
<string
name=
"ex304"
>
Не исправимая ошибка
</string>
<string
name=
"ex400"
>
неверный запрос
</string>
<string
name=
"ex401"
>
Пользователь не зарегистрирован
</string>
<string
name=
"ex403"
>
Запрещено
</string>
<string
name=
"ex404"
>
Не Найдено
</string>
<string
name=
"ex405"
>
Метод запрещен
</string>
<string
name=
"ex406"
>
Неприемлемо
</string>
<string
name=
"ex408"
>
Тайм-аут запроса
</string>
<string
name=
"ex409"
>
Конфликт
</string>
<string
name=
"ex413"
>
Тайм-аут запроса
</string>
<string
name=
"ex422"
>
Необработанный
</string>
<string
name=
"ex429"
>
Необработанный
</string>
<string
name=
"ex500"
>
Ошибка сервера
</string>
<string
name=
"ex502"
>
Неверный шлюз
</string>
<string
name=
"exelse"
>
Непредвиденная ошибка, повторите попытку позже
</string>
<string
name=
"ioexception"
>
Ошибка сетевого подключения
</string>
<string
name=
"jsonsyntaxexception"
>
Ma\'lumot olishda xatolik
</string>
<string
name=
"connect_exception"
>
Internet yo\'q
</string>
<string
name=
"ex_nothing"
>
Неизвестная ошибка
</string>
<string
name=
"register"
>
Registration
</string>
<string
name=
"password"
>
Password
</string>
<string
name=
"choose_lang"
>
Tilni tanlang
</string>
<string
name=
"back"
>
Back
</string>
<string
name=
"enter_number"
>
Введите номер
</string>
<string
name=
"phone"
>
Телефон:
</string>
<string
name=
"continuoue"
>
Далее
</string>
<string
name=
"think_password"
>
Придумайте пароль
</string>
<string
name=
"enter"
>
Войти
</string>
<string
name=
"enter_verification"
>
"Ведите код "
</string>
<string
name=
"sent_code_again"
>
Sent code again
</string>
<string
name=
"install_pin"
>
Установите PIN-код
</string>
<string
name=
"confirm_pin"
>
Повторите этот PIN-код
</string>
<string
name=
"biometric_enter"
>
Биометрический вход
</string>
<string
name=
"subtitle_biometric"
>
Быстро войти в систему с помощью отпечатка пальца или Face ID.
</string>
<string
name=
"avtorization"
>
Активировать
</string>
<string
name=
"change_all_time"
>
Измените это в любое время в настройках
</string>
<string
name=
"skip"
>
Пропустить
</string>
<string
name=
"enter_parol"
>
Введите пароль:
</string>
<string
name=
"min_6"
>
Должно быть не менее 6 символов
</string>
<string
name=
"confirm_parol"
>
Введите пароль повторно:
</string>
<string
name=
"must_same"
>
Пароли должны совпадать
</string>
<string
name=
"my_number"
>
Мой номер
</string>
<string
name=
"balance"
>
Баланс
</string>
<string
name=
"oatatok_tarifu"
>
Остаток по тарифу
</string>
<string
name=
"next_spisanie"
>
Следующее списание:
</string>
<string
name=
"forget_password"
>
Забыли пароль?
</string>
<string
name=
"pin_not_same"
>
Значения не совпадают
</string>
<string
name=
"remove"
>
remove
</string>
<string
name=
"password_same"
>
Пароли совпали
</string>
<string
name=
"password_not_same"
>
Пароли не совпали
</string>
</resources>
\ No newline at end of file
app/src/main/res/values-ru/strings.xml
0 → 100644
View file @
a714b180
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"login"
>
Login
</string>
<string
name=
"phone_number"
>
Phone Number
</string>
<string
name=
"ex304"
>
Не исправимая ошибка
</string>
<string
name=
"ex400"
>
неверный запрос
</string>
<string
name=
"ex401"
>
Пользователь не зарегистрирован
</string>
<string
name=
"ex403"
>
Запрещено
</string>
<string
name=
"ex404"
>
Не Найдено
</string>
<string
name=
"ex405"
>
Метод запрещен
</string>
<string
name=
"ex406"
>
Неприемлемо
</string>
<string
name=
"ex408"
>
Тайм-аут запроса
</string>
<string
name=
"ex409"
>
Конфликт
</string>
<string
name=
"ex413"
>
Тайм-аут запроса
</string>
<string
name=
"ex422"
>
Необработанный
</string>
<string
name=
"ex429"
>
Необработанный
</string>
<string
name=
"ex500"
>
Ошибка сервера
</string>
<string
name=
"ex502"
>
Неверный шлюз
</string>
<string
name=
"exelse"
>
Непредвиденная ошибка, повторите попытку позже
</string>
<string
name=
"ioexception"
>
Ошибка сетевого подключения
</string>
<string
name=
"jsonsyntaxexception"
>
Ma\'lumot olishda xatolik
</string>
<string
name=
"connect_exception"
>
Internet yo\'q
</string>
<string
name=
"ex_nothing"
>
Неизвестная ошибка
</string>
<string
name=
"register"
>
Registration
</string>
<string
name=
"password"
>
Password
</string>
<string
name=
"choose_lang"
>
Tilni tanlang
</string>
<string
name=
"back"
>
Back
</string>
<string
name=
"enter_number"
>
Введите номер
</string>
<string
name=
"continuoue"
>
Далее
</string>
<string
name=
"phone"
>
Телефон:
</string>
<string
name=
"think_password"
>
Придумайте пароль
</string>
<string
name=
"enter"
>
Войти
</string>
<string
name=
"enter_verification"
>
"Ведите код "
</string>
<string
name=
"sent_code_again"
>
Sent code again
</string>
<string
name=
"install_pin"
>
Установите PIN-код
</string>
<string
name=
"confirm_pin"
>
Повторите этот PIN-код
</string>
<string
name=
"biometric_enter"
>
Биометрический вход
</string>
<string
name=
"subtitle_biometric"
>
Быстро войти в систему с помощью отпечатка пальца или Face ID.
</string>
<string
name=
"avtorization"
>
Активировать
</string>
<string
name=
"change_all_time"
>
Измените это в любое время в настройках
</string>
<string
name=
"skip"
>
Пропустить
</string>
<string
name=
"enter_parol"
>
Введите пароль:
</string>
<string
name=
"min_6"
>
Должно быть не менее 6 символов
</string>
<string
name=
"confirm_parol"
>
Введите пароль повторно:
</string>
<string
name=
"must_same"
>
Пароли должны совпадать
</string>
<string
name=
"my_number"
>
Мой номер
</string>
<string
name=
"balance"
>
Баланс
</string>
<string
name=
"oatatok_tarifu"
>
Остаток по тарифу
</string>
<string
name=
"next_spisanie"
>
Следующее списание:
</string>
<string
name=
"forget_password"
>
Забыли пароль?
</string>
<string
name=
"pin_not_same"
>
Значения не совпадают
</string>
<string
name=
"remove"
>
remove
</string>
<string
name=
"password_same"
>
Пароли совпали
</string>
<string
name=
"password_not_same"
>
Пароли не совпали
</string>
</resources>
\ No newline at end of file
app/src/main/res/values-uz/strings.xml
0 → 100644
View file @
a714b180
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"login"
>
Login
</string>
<string
name=
"phone_number"
>
Phone Number
</string>
<string
name=
"ex304"
>
Не исправимая ошибка
</string>
<string
name=
"ex400"
>
неверный запрос
</string>
<string
name=
"ex401"
>
Пользователь не зарегистрирован
</string>
<string
name=
"ex403"
>
Запрещено
</string>
<string
name=
"ex404"
>
Не Найдено
</string>
<string
name=
"ex405"
>
Метод запрещен
</string>
<string
name=
"ex406"
>
Неприемлемо
</string>
<string
name=
"ex408"
>
Тайм-аут запроса
</string>
<string
name=
"ex409"
>
Конфликт
</string>
<string
name=
"ex413"
>
Тайм-аут запроса
</string>
<string
name=
"ex422"
>
Необработанный
</string>
<string
name=
"ex429"
>
Необработанный
</string>
<string
name=
"ex500"
>
Ошибка сервера
</string>
<string
name=
"ex502"
>
Неверный шлюз
</string>
<string
name=
"exelse"
>
Непредвиденная ошибка, повторите попытку позже
</string>
<string
name=
"ioexception"
>
Ошибка сетевого подключения
</string>
<string
name=
"jsonsyntaxexception"
>
Ma\'lumot olishda xatolik
</string>
<string
name=
"connect_exception"
>
Internet yo\'q
</string>
<string
name=
"ex_nothing"
>
Неизвестная ошибка
</string>
<string
name=
"register"
>
Registration
</string>
<string
name=
"password"
>
Password
</string>
<string
name=
"choose_lang"
>
Tilni tanlang
</string>
<string
name=
"back"
>
Back
</string>
<string
name=
"enter_number"
>
Введите номер
</string>
<string
name=
"continuoue"
>
Далее
</string>
<string
name=
"phone"
>
Телефон:
</string>
<string
name=
"think_password"
>
Придумайте пароль
</string>
<string
name=
"enter"
>
Войти
</string>
<string
name=
"enter_verification"
>
"Ведите код "
</string>
<string
name=
"sent_code_again"
>
Sent code again
</string>
<string
name=
"install_pin"
>
Установите PIN-код
</string>
<string
name=
"confirm_pin"
>
Повторите этот PIN-код
</string>
<string
name=
"biometric_enter"
>
Биометрический вход
</string>
<string
name=
"subtitle_biometric"
>
Быстро войти в систему с помощью отпечатка пальца или Face ID.
</string>
<string
name=
"avtorization"
>
Активировать
</string>
<string
name=
"change_all_time"
>
Измените это в любое время в настройках
</string>
<string
name=
"skip"
>
Пропустить
</string>
<string
name=
"enter_parol"
>
Введите пароль:
</string>
<string
name=
"min_6"
>
Должно быть не менее 6 символов
</string>
<string
name=
"confirm_parol"
>
Введите пароль повторно:
</string>
<string
name=
"must_same"
>
Пароли должны совпадать
</string>
<string
name=
"my_number"
>
Мой номер
</string>
<string
name=
"balance"
>
Баланс
</string>
<string
name=
"oatatok_tarifu"
>
Остаток по тарифу
</string>
<string
name=
"next_spisanie"
>
Следующее списание:
</string>
<string
name=
"forget_password"
>
Забыли пароль?
</string>
<string
name=
"pin_not_same"
>
Значения не совпадают
</string>
<string
name=
"remove"
>
remove
</string>
<string
name=
"password_same"
>
Пароли совпали
</string>
<string
name=
"password_not_same"
>
Пароли не совпали
</string>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
a714b180
<resources>
<resources>
<string
name=
"app_name"
>
MobiUz-Android
</string>
<string
name=
"app_name"
translatable=
"false"
>
MobiUz-Android
</string>
<!-- TODO: Remove or change this placeholder text -->
<!-- TODO: Remove or change this placeholder text -->
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
<string
name=
"hello_blank_fragment"
translatable=
"false"
>
Hello blank fragment
</string>
<string
name=
"login"
>
Login
</string>
<string
name=
"login"
>
Login
</string>
<string
name=
"phone_number"
>
Phone Number
</string>
<string
name=
"phone_number"
>
Phone Number
</string>
<string
name=
"ex304"
>
Не исправимая ошибка
</string>
<string
name=
"ex304"
>
Не исправимая ошибка
</string>
<string
name=
"ex400"
>
неверный запрос
</string>
<string
name=
"ex400"
>
неверный запрос
</string>
<string
name=
"ex401"
>
Пользователь не зарегистрирован
</string>
<string
name=
"ex401"
>
Пользователь не зарегистрирован
</string>
...
@@ -24,23 +23,50 @@
...
@@ -24,23 +23,50 @@
<string
name=
"jsonsyntaxexception"
>
Ma\'lumot olishda xatolik
</string>
<string
name=
"jsonsyntaxexception"
>
Ma\'lumot olishda xatolik
</string>
<string
name=
"connect_exception"
>
Internet yo\'q
</string>
<string
name=
"connect_exception"
>
Internet yo\'q
</string>
<string
name=
"ex_nothing"
>
Неизвестная ошибка
</string>
<string
name=
"ex_nothing"
>
Неизвестная ошибка
</string>
<string
name=
"home_fragment"
>
This is home page
</string>
<string
name=
"home_fragment"
translatable=
"false"
>
This is home page
</string>
<string
name=
"register"
>
Registration
</string>
<string
name=
"register"
>
Registration
</string>
<string
name=
"password"
>
Password
</string>
<string
name=
"password"
>
Password
</string>
<string
name=
"choose_lang"
>
Tilni tanlang
</string>
<string
name=
"choose_lang"
>
Tilni tanlang
</string>
<string
name=
"uzbek"
>
O\'zbek
</string>
<string
name=
"uzbek"
translatable=
"false"
>
O\'zbek
</string>
<string
name=
"english"
>
English
</string>
<string
name=
"english"
translatable=
"false"
>
English
</string>
<string
name=
"russian"
>
Russian
</string>
<string
name=
"russian"
translatable=
"false"
>
Russian
</string>
<string
name=
"back"
>
Back
</string>
<string
name=
"back"
>
Back
</string>
<string
name=
"enter_number"
>
Введите номер
</string>
<string
name=
"enter_number"
>
Введите номер
</string>
<string
name=
"continuoue"
>
Далее
</string>
<string
name=
"continuoue"
>
Далее
</string>
<string
name=
"phone"
>
Телефон:
</string>
<string
name=
"phone"
>
Телефон:
</string>
<string
name=
"continuoue_task"
>
Далее
</string>
<string
name=
"think_password"
>
Придумайте пароль
</string>
<string
name=
"think_password"
>
Придумайте пароль
</string>
<string
name=
"enter"
>
Войти
</string>
<string
name=
"enter"
>
Войти
</string>
<string
name=
"enter_verification"
>
Ведите код \nподтверждения
</string>
<string
name=
"enter_verification"
>
Ведите код \nподтверждения
</string>
<string
name=
"sent_code_again"
>
Sent code again
</string>
<string
name=
"sent_code_again"
>
Sent code again
</string>
<string
name=
"install_pin"
>
Установите PIN-код
</string>
<string
name=
"install_pin"
>
Установите PIN-код
</string>
<string
name=
"confirm_pin"
>
Повторите этот PIN-код
</string>
<string
name=
"confirm_pin"
>
Повторите этот PIN-код
</string>
<string
name=
"biometric_enter"
>
Биометрический вход
</string>
<string
name=
"subtitle_biometric"
>
Быстро войти в систему с помощью отпечатка пальца или Face ID.
</string>
<string
name=
"avtorization"
>
Активировать
</string>
<string
name=
"change_all_time"
>
Измените это в любое время в настройках
</string>
<string
name=
"skip"
>
Пропустить
</string>
<string
name=
"enter_parol"
>
Введите пароль:
</string>
<string
name=
"min_6"
>
Должно быть не менее 6 символов
</string>
<string
name=
"confirm_parol"
>
Введите пароль повторно:
</string>
<string
name=
"must_same"
>
Пароли должны совпадать
</string>
<string
name=
"my_number"
>
Мой номер
</string>
<string
name=
"balance"
>
Баланс
</string>
<string
name=
"oatatok_tarifu"
>
Остаток по тарифу
</string>
<string
name=
"next_spisanie"
>
Следующее списание:
</string>
<string
name=
"forget_password"
>
Забыли пароль?
</string>
<string
name=
"pin_not_same"
>
Значения не совпадают
</string>
<string
name=
"_1"
translatable=
"false"
>
1
</string>
<string
name=
"_2"
translatable=
"false"
>
2
</string>
<string
name=
"_3"
translatable=
"false"
>
3
</string>
<string
name=
"_4"
translatable=
"false"
>
4
</string>
<string
name=
"_5"
translatable=
"false"
>
5
</string>
<string
name=
"_6"
translatable=
"false"
>
6
</string>
<string
name=
"_7"
translatable=
"false"
>
7
</string>
<string
name=
"_8"
translatable=
"false"
>
8
</string>
<string
name=
"_9"
translatable=
"false"
>
9
</string>
<string
name=
"_0"
translatable=
"false"
>
0
</string>
<string
name=
"remove"
>
remove
</string>
<string
name=
"password_same"
>
Пароли совпали
</string>
<string
name=
"password_not_same"
>
Пароли не совпали
</string>
</resources>
</resources>
\ No newline at end of file
app/src/main/res/values/themes.xml
View file @
a714b180
...
@@ -59,15 +59,15 @@
...
@@ -59,15 +59,15 @@
<item
name=
"android:layout_height"
>
wrap_content
</item>
<item
name=
"android:layout_height"
>
wrap_content
</item>
<item
name=
"android:layout_width"
>
wrap_content
</item>
<item
name=
"android:layout_width"
>
wrap_content
</item>
<item
name=
"background"
>
@drawable/bgn_pin_btn
</item>
<item
name=
"background"
>
@drawable/bgn_pin_btn
</item>
<item
name=
"android:paddingTop"
>
@dimen/_1
6
sdp
</item>
<item
name=
"android:paddingTop"
>
@dimen/_1
4
sdp
</item>
<item
name=
"android:paddingBottom"
>
@dimen/_1
6
sdp
</item>
<item
name=
"android:paddingBottom"
>
@dimen/_1
4
sdp
</item>
<item
name=
"android:paddingStart"
>
@dimen/_20sdp
</item>
<item
name=
"android:paddingStart"
>
@dimen/_20sdp
</item>
<item
name=
"android:paddingEnd"
>
@dimen/_20sdp
</item>
<item
name=
"android:paddingEnd"
>
@dimen/_20sdp
</item>
<item
name=
"android:clickable"
>
true
</item>
<item
name=
"android:clickable"
>
true
</item>
<item
name=
"android:focusable"
>
true
</item>
<item
name=
"android:focusable"
>
true
</item>
<item
name=
"android:gravity"
>
center
</item>
<item
name=
"android:gravity"
>
center
</item>
<item
name=
"android:textStyle"
>
bold
</item>
<item
name=
"android:textStyle"
>
bold
</item>
<item
name=
"android:textSize"
>
18
sp
</item>
<item
name=
"android:textSize"
>
20
sp
</item>
</style>
</style>
<style
name=
"PinStyle"
>
<style
name=
"PinStyle"
>
...
@@ -78,7 +78,6 @@
...
@@ -78,7 +78,6 @@
<item
name=
"android:focusable"
>
true
</item>
<item
name=
"android:focusable"
>
true
</item>
<item
name=
"android:hint"
>
*
</item>
<item
name=
"android:hint"
>
*
</item>
<item
name=
"android:inputType"
>
number
</item>
<item
name=
"android:inputType"
>
number
</item>
<item
name=
"android:imeOptions"
>
actionNext
</item>
<item
name=
"android:layout_marginStart"
>
@dimen/_4sdp
</item>
<item
name=
"android:layout_marginStart"
>
@dimen/_4sdp
</item>
<item
name=
"android:layout_marginEnd"
>
@dimen/_4sdp
</item>
<item
name=
"android:layout_marginEnd"
>
@dimen/_4sdp
</item>
<item
name=
"android:textColorHint"
>
@color/black
</item>
<item
name=
"android:textColorHint"
>
@color/black
</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