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
47267ca3
Commit
47267ca3
authored
Dec 07, 2021
by
shohboz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[UPD]
MUS-136
Feature, forget password updated and success and some changes
parent
a7cfcb82
Changes
38
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
1559 additions
and
411 deletions
+1559
-411
misc.xml
.idea/misc.xml
+1
-0
AuthActivity.kt
app/src/main/java/uz/ssd/mobiuz/AuthActivity.kt
+1
-2
LanguageActivity.kt
app/src/main/java/uz/ssd/mobiuz/LanguageActivity.kt
+1
-1
MainActivity.kt
app/src/main/java/uz/ssd/mobiuz/MainActivity.kt
+13
-3
SplashActivity.kt
app/src/main/java/uz/ssd/mobiuz/SplashActivity.kt
+2
-2
ServerModule.kt
app/src/main/java/uz/ssd/mobiuz/di/ServerModule.kt
+1
-4
ApiService.kt
app/src/main/java/uz/ssd/mobiuz/network/api/ApiService.kt
+15
-0
Customer.kt
app/src/main/java/uz/ssd/mobiuz/network/model/Customer.kt
+10
-10
AuthRepository.kt
...n/java/uz/ssd/mobiuz/network/repository/AuthRepository.kt
+56
-1
AuthViewModel.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/AuthViewModel.kt
+27
-0
PinDialogFragment.kt
app/src/main/java/uz/ssd/mobiuz/ui/auth/PinDialogFragment.kt
+0
-84
BiometricFragment.kt
...java/uz/ssd/mobiuz/ui/auth/biometric/BiometricFragment.kt
+92
-0
CheckPhoneFragment.kt
...in/java/uz/ssd/mobiuz/ui/auth/check/CheckPhoneFragment.kt
+121
-0
LoginFragment.kt
...rc/main/java/uz/ssd/mobiuz/ui/auth/login/LoginFragment.kt
+172
-0
ConfirmPinFragment.kt
...main/java/uz/ssd/mobiuz/ui/auth/pin/ConfirmPinFragment.kt
+125
-0
RegisterFragment.kt
...n/java/uz/ssd/mobiuz/ui/auth/register/RegisterFragment.kt
+196
-0
VerificationFragment.kt
...z/ssd/mobiuz/ui/auth/verification/VerificationFragment.kt
+196
-0
ForgetPasswordFragment.kt
...in/java/uz/ssd/mobiuz/ui/forget/ForgetPasswordFragment.kt
+0
-106
ForgetVerificationFragment.kt
...ava/uz/ssd/mobiuz/ui/forget/ForgetVerificationFragment.kt
+0
-141
ButtonClick.kt
app/src/main/java/uz/ssd/mobiuz/ui/global/ButtonClick.kt
+21
-0
CONSTANTS.kt
app/src/main/java/uz/ssd/mobiuz/ui/global/CONSTANTS.kt
+19
-0
ExitDialog.kt
app/src/main/java/uz/ssd/mobiuz/ui/global/ExitDialog.kt
+55
-0
FullScreenDialog.kt
...src/main/java/uz/ssd/mobiuz/ui/global/FullScreenDialog.kt
+106
-0
SenderDialog.kt
app/src/main/java/uz/ssd/mobiuz/ui/global/SenderDialog.kt
+62
-0
HomeFragment.kt
app/src/main/java/uz/ssd/mobiuz/ui/home/HomeFragment.kt
+22
-23
SoftKeyboard.kt
app/src/main/java/uz/ssd/mobiuz/utils/SoftKeyboard.kt
+21
-0
PermissionExtensions.kt
...va/uz/ssd/mobiuz/utils/extensions/PermissionExtensions.kt
+72
-0
StringExtension.kt
...in/java/uz/ssd/mobiuz/utils/extensions/StringExtension.kt
+19
-1
fragment_biometric.xml
app/src/main/res/layout/fragment_biometric.xml
+1
-1
fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+10
-10
fragment_login.xml
app/src/main/res/layout/fragment_login.xml
+14
-0
fragment_progress.xml
app/src/main/res/layout/fragment_progress.xml
+4
-2
fragment_register.xml
app/src/main/res/layout/fragment_register.xml
+14
-0
fragment_verification.xml
app/src/main/res/layout/fragment_verification.xml
+3
-3
layout_exit.xml
app/src/main/res/layout/layout_exit.xml
+1
-0
layout_sender.xml
app/src/main/res/layout/layout_sender.xml
+74
-0
nav_graph_auth.xml
app/src/main/res/navigation/nav_graph_auth.xml
+8
-17
strings.xml
app/src/main/res/values/strings.xml
+4
-0
No files found.
.idea/misc.xml
View file @
47267ca3
...
@@ -54,6 +54,7 @@
...
@@ -54,6 +54,7 @@
<entry
key=
"app/src/main/res/layout/item_pin.xml"
value=
"0.23497267759562843"
/>
<entry
key=
"app/src/main/res/layout/item_pin.xml"
value=
"0.23497267759562843"
/>
<entry
key=
"app/src/main/res/layout/layout_ask_create_task.xml"
value=
"0.22643442622950818"
/>
<entry
key=
"app/src/main/res/layout/layout_ask_create_task.xml"
value=
"0.22643442622950818"
/>
<entry
key=
"app/src/main/res/layout/layout_exit.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/layout_exit.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/layout_sender.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/motion_layout.xml"
value=
"0.266796875"
/>
<entry
key=
"app/src/main/res/layout/motion_layout.xml"
value=
"0.266796875"
/>
<entry
key=
"app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.3416666666666667"
/>
<entry
key=
"app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.3416666666666667"
/>
<entry
key=
"app/src/main/res/xml/layout_description.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/xml/layout_description.xml"
value=
"0.25625"
/>
...
...
app/src/main/java/uz/ssd/mobiuz/AuthActivity.kt
View file @
47267ca3
...
@@ -4,11 +4,10 @@ import android.os.Bundle
...
@@ -4,11 +4,10 @@ import android.os.Bundle
import
android.view.View
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.navigation.NavController
import
androidx.navigation.NavController
import
androidx.navigation.findNavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
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.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
@AndroidEntryPoint
@AndroidEntryPoint
...
...
app/src/main/java/uz/ssd/mobiuz/LanguageActivity.kt
View file @
47267ca3
...
@@ -7,7 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
...
@@ -7,7 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
uz.ssd.mobiuz.databinding.ActivityLanguageBinding
import
uz.ssd.mobiuz.databinding.ActivityLanguageBinding
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
javax.inject.Inject
import
javax.inject.Inject
@AndroidEntryPoint
@AndroidEntryPoint
...
...
app/src/main/java/uz/ssd/mobiuz/MainActivity.kt
View file @
47267ca3
package
uz.ssd.mobiuz
package
uz.ssd.mobiuz
import
android.content.Intent
import
android.graphics.Color
import
android.graphics.Color
import
android.os.Bundle
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.content.ContentProviderCompat.requireContext
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.LiveData
import
androidx.navigation.NavController
import
androidx.navigation.NavController
import
com.google.android.material.bottomnavigation.BottomNavigationView
import
com.google.android.material.bottomnavigation.BottomNavigationView
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
uz.ssd.mobiuz.databinding.ActivityMainBinding
import
uz.ssd.mobiuz.databinding.ActivityMainBinding
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.ui.
auth
.FullScreenDialog
import
uz.ssd.mobiuz.ui.
global
.FullScreenDialog
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
uz.ssd.mobiuz.utils.extensions.customLog
import
uz.ssd.mobiuz.utils.extensions.customLog
import
uz.ssd.mobiuz.utils.extensions.setupWithNavController
import
uz.ssd.mobiuz.utils.extensions.setupWithNavController
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -43,7 +45,15 @@ class MainActivity : AppCompatActivity() {
...
@@ -43,7 +45,15 @@ class MainActivity : AppCompatActivity() {
val
arg
=
it
.
getStringExtra
(
CONSTANTS
.
FIRST
)
?:
""
val
arg
=
it
.
getStringExtra
(
CONSTANTS
.
FIRST
)
?:
""
if
(
arg
.
isEmpty
())
{
if
(
arg
.
isEmpty
())
{
val
dialog
=
FullScreenDialog
()
val
dialog
=
FullScreenDialog
()
dialog
.
setOnPinDoneListener
{
}
dialog
.
setOnPinDoneListener
{
pref
.
setUserToken
(
""
)
pref
.
isRegistered
=
false
pref
.
pin_code
=
""
val
intent
=
Intent
(
this
,
AuthActivity
::
class
.
java
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
finish
()
}
dialog
.
show
(
supportFragmentManager
,
"tag"
)
dialog
.
show
(
supportFragmentManager
,
"tag"
)
}
}
}
}
...
...
app/src/main/java/uz/ssd/mobiuz/SplashActivity.kt
View file @
47267ca3
...
@@ -8,7 +8,7 @@ import dagger.hilt.android.AndroidEntryPoint
...
@@ -8,7 +8,7 @@ import dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.delay
import
uz.ssd.mobiuz.databinding.ActivitySplashBinding
import
uz.ssd.mobiuz.databinding.ActivitySplashBinding
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
javax.inject.Inject
import
javax.inject.Inject
@AndroidEntryPoint
@AndroidEntryPoint
...
@@ -37,7 +37,7 @@ class SplashActivity : AppCompatActivity() {
...
@@ -37,7 +37,7 @@ class SplashActivity : AppCompatActivity() {
}
}
pref
.
pin_code
.
isEmpty
()
->
{
pref
.
pin_code
.
isEmpty
()
->
{
startActivity
(
Intent
(
this
@SplashActivity
,
AuthActivity
::
class
.
java
).
putExtra
(
CONSTANTS
.
TYPE_AUTH
,
CONSTANTS
.
PIN_CODE
))
startActivity
(
Intent
(
this
@SplashActivity
,
AuthActivity
::
class
.
java
).
putExtra
(
CONSTANTS
.
TYPE_AUTH
,
CONSTANTS
.
PIN_CODE
))
}
}
else
->
{
else
->
{
...
...
app/src/main/java/uz/ssd/mobiuz/di/ServerModule.kt
View file @
47267ca3
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
...
@@ -14,12 +13,10 @@ import okhttp3.logging.HttpLoggingInterceptor
...
@@ -14,12 +13,10 @@ import okhttp3.logging.HttpLoggingInterceptor
import
retrofit2.Retrofit
import
retrofit2.Retrofit
import
retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
import
retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
import
retrofit2.converter.gson.GsonConverterFactory
import
retrofit2.converter.gson.GsonConverterFactory
import
uz.ssd.mobiuz.BuildConfig
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.network.api.ApiService
import
uz.ssd.mobiuz.network.api.ApiService
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
java.util.*
import
javax.inject.Singleton
import
javax.inject.Singleton
@Module
@Module
...
...
app/src/main/java/uz/ssd/mobiuz/network/api/ApiService.kt
View file @
47267ca3
...
@@ -30,4 +30,19 @@ interface ApiService {
...
@@ -30,4 +30,19 @@ interface ApiService {
@POST
(
"main/index"
)
@POST
(
"main/index"
)
suspend
fun
mainIndex
():
ResponseObject
<
Customer
>
suspend
fun
mainIndex
():
ResponseObject
<
Customer
>
@POST
(
"customer/forget-password"
)
suspend
fun
forgetPassword
(
@Body
req
:
UserAuth
):
ResponseList
<
Any
>
@POST
(
"customer/check-reset-code"
)
suspend
fun
checkResetCode
(
@Body
req
:
UserAuth
):
ResponseList
<
Any
>
@POST
(
"customer/reset-password"
)
suspend
fun
resetPassword
(
@Body
req
:
UserAuth
):
ResponseObject
<
GenerateToken
>
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/network/model/Customer.kt
View file @
47267ca3
package
uz.ssd.mobiuz.network.model
package
uz.ssd.mobiuz.network.model
data class
Customer
(
data class
Customer
(
var
customer
:
CustomerData
var
customer
:
CustomerData
?
)
)
data class
CustomerData
(
data class
CustomerData
(
var
info
:
CustomerInfo
,
var
info
:
CustomerInfo
?
,
var
name
:
String
var
name
:
String
)
)
data class
CustomerInfo
(
data class
CustomerInfo
(
var
balance
:
CustomerInfoBalance
,
var
balance
:
CustomerInfoBalance
?
,
var
counters
:
CustomerInfoCounters
var
counters
:
CustomerInfoCounters
?
)
)
data class
CustomerInfoBalance
(
data class
CustomerInfoBalance
(
...
@@ -20,13 +20,13 @@ data class CustomerInfoBalance(
...
@@ -20,13 +20,13 @@ data class CustomerInfoBalance(
)
)
data class
CustomerInfoCounters
(
data class
CustomerInfoCounters
(
var
BYTE
:
CodeValueUnit
,
var
BYTE
:
CodeValueUnit
?
,
var
ITEM
:
CodeValueUnit
,
var
ITEM
:
CodeValueUnit
?
,
var
SECOND
:
CodeValueUnit
var
SECOND
:
CodeValueUnit
?
)
)
data class
CodeValueUnit
(
data class
CodeValueUnit
(
var
code
:
String
,
var
code
:
String
?
,
var
value
:
Int
,
var
value
:
Int
?
,
var
unit
:
String
,
var
unit
:
String
?
,
)
)
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/network/repository/AuthRepository.kt
View file @
47267ca3
...
@@ -7,6 +7,7 @@ import uz.ssd.mobiuz.model.UserAuth
...
@@ -7,6 +7,7 @@ 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.Action
import
uz.ssd.mobiuz.network.model.Customer
import
uz.ssd.mobiuz.network.model.Customer
import
uz.ssd.mobiuz.network.model.GenerateToken
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.utils.extensions.userMessage
import
uz.ssd.mobiuz.utils.extensions.userMessage
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -30,7 +31,6 @@ class AuthRepository @Inject constructor(
...
@@ -30,7 +31,6 @@ class AuthRepository @Inject constructor(
else
->
UiStateObject
.
ERROR
(
res
.
message
)
else
->
UiStateObject
.
ERROR
(
res
.
message
)
}
}
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
))
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
))
}
}
...
@@ -108,4 +108,59 @@ class AuthRepository @Inject constructor(
...
@@ -108,4 +108,59 @@ class AuthRepository @Inject constructor(
}
}
}
}
suspend
fun
checkResetCode
(
data
:
UserAuth
):
UiStateObject
<
String
>
{
return
try
{
val
res
=
apiService
.
checkResetCode
(
data
)
when
{
res
.
status
->
{
UiStateObject
.
SUCCESS
(
res
.
message
)
}
res
.
errors
.
isNotEmpty
()
->
{
UiStateObject
.
ERRORS
(
res
.
errors
)
}
else
->
UiStateObject
.
ERROR
(
res
.
message
)
}
}
catch
(
e
:
Exception
)
{
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
))
}
}
suspend
fun
resetPassword
(
data
:
UserAuth
):
UiStateObject
<
String
>
{
return
try
{
val
res
=
apiService
.
resetPassword
(
data
)
when
{
res
.
status
->
{
pref
.
setUserToken
(
res
.
data
?.
token
)
UiStateObject
.
SUCCESS
(
res
.
message
)
}
res
.
errors
.
isNotEmpty
()
->
{
UiStateObject
.
ERRORS
(
res
.
errors
)
}
else
->
UiStateObject
.
ERROR
(
res
.
message
)
}
}
catch
(
e
:
Exception
)
{
UiStateObject
.
ERROR
(
e
.
userMessage
(
context
))
}
}
suspend
fun
forgetPassword
(
data
:
UserAuth
):
UiStateObject
<
String
>
{
return
try
{
val
res
=
apiService
.
forgetPassword
(
data
)
when
{
res
.
status
->
{
UiStateObject
.
SUCCESS
(
res
.
message
)
}
res
.
errors
.
isNotEmpty
()
->
{
UiStateObject
.
ERRORS
(
res
.
errors
)
}
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 @
47267ca3
...
@@ -52,4 +52,31 @@ class AuthViewModel @Inject constructor(
...
@@ -52,4 +52,31 @@ class AuthViewModel @Inject constructor(
_loginUiState
.
value
=
repository
.
loginUser
(
data
)
_loginUiState
.
value
=
repository
.
loginUser
(
data
)
_loginUiState
.
value
=
UiStateObject
.
EMPTY
_loginUiState
.
value
=
UiStateObject
.
EMPTY
}
}
private
val
_forgetPasswordUiState
=
MutableStateFlow
<
UiStateObject
<
String
>>(
UiStateObject
.
EMPTY
)
val
forgetPasswordUiState
:
StateFlow
<
UiStateObject
<
String
>>
=
_forgetPasswordUiState
fun
forgetPassword
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
_forgetPasswordUiState
.
value
=
UiStateObject
.
LOADING
_forgetPasswordUiState
.
value
=
repository
.
forgetPassword
(
data
)
_forgetPasswordUiState
.
value
=
UiStateObject
.
EMPTY
}
private
val
_checkResetCodeUiState
=
MutableStateFlow
<
UiStateObject
<
String
>>(
UiStateObject
.
EMPTY
)
val
checkResetCodeUiState
:
StateFlow
<
UiStateObject
<
String
>>
=
_checkResetCodeUiState
fun
checkResetCode
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
_checkResetCodeUiState
.
value
=
UiStateObject
.
LOADING
_checkResetCodeUiState
.
value
=
repository
.
checkResetCode
(
data
)
_checkResetCodeUiState
.
value
=
UiStateObject
.
EMPTY
}
private
val
_resetPasswordUiState
=
MutableStateFlow
<
UiStateObject
<
String
>>(
UiStateObject
.
EMPTY
)
val
resetPasswordUiState
:
StateFlow
<
UiStateObject
<
String
>>
=
_resetPasswordUiState
fun
resetPassword
(
data
:
UserAuth
)
=
viewModelScope
.
launch
{
_resetPasswordUiState
.
value
=
UiStateObject
.
LOADING
_resetPasswordUiState
.
value
=
repository
.
resetPassword
(
data
)
_resetPasswordUiState
.
value
=
UiStateObject
.
EMPTY
}
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/auth/PinDialogFragment.kt
deleted
100644 → 0
View file @
a7cfcb82
package
uz.ssd.mobiuz.ui.auth
import
android.app.AlertDialog
import
android.content.Context
import
android.view.LayoutInflater
import
android.view.animation.AnimationUtils
import
android.widget.TextView
import
androidx.core.view.isVisible
import
androidx.recyclerview.widget.LinearLayoutManager
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentPinDialogBinding
import
uz.ssd.mobiuz.model.PinData
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.utils.extensions.SingleBlock
class
PinDialogFragment
(
context
:
Context
)
:
AlertDialog
(
context
,
R
.
style
.
FullScreenDialog
)
{
lateinit
var
pref
:
SharedPref
private
var
_bn
:
FragmentPinDialogBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
var
listener
:
SingleBlock
<
Unit
>?
=
null
init
{
_bn
=
FragmentPinDialogBinding
.
inflate
(
LayoutInflater
.
from
(
context
))
pref
=
SharedPref
(
context
)
setView
(
bn
.
root
)
setCancelable
(
false
)
setUpUI
()
}
fun
setUpUI
()
{
bn
.
apply
{
loadData
()
rvPin
.
layoutManager
=
LinearLayoutManager
(
context
,
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
setHasFixedSize
(
true
)
rvPin
.
adapter
=
pinAdapter
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
if
(
pref
.
pin_code
==
it
)
{
listener
?.
invoke
(
Unit
)
txtNotPin
.
isVisible
=
false
dismiss
()
}
else
{
cardPin
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
context
,
R
.
anim
.
shake
))
txtNotPin
.
isVisible
=
true
}
}
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
())
}
}
}
}
}
fun
setOnPinDoneListener
(
block
:
SingleBlock
<
Unit
>)
{
listener
=
block
}
private
fun
loadData
()
{
data
.
clear
()
for
(
i
in
0
..
3
)
{
data
.
add
(
PinData
(-
1
))
}
pinAdapter
.
submitList
(
data
)
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/auth/BiometricFragment.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/auth/
biometric/
BiometricFragment.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
.biometric
import
android.Manifest
import
android.Manifest
import
android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.content.pm.PackageManager
import
android.content.pm.PackageManager
import
android.os.Build
import
android.os.Build
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
androidx.core.app.ActivityCompat
import
androidx.core.app.ActivityCompat.requestPermissions
import
androidx.core.app.ActivityCompat.requestPermissions
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
import
androidx.core.os.bundleOf
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
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
uz.ssd.mobiuz.BuildConfig
import
uz.ssd.mobiuz.BuildConfig
import
uz.ssd.mobiuz.MainActivity
import
uz.ssd.mobiuz.MainActivity
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentBiometricBinding
import
uz.ssd.mobiuz.databinding.FragmentBiometricBinding
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.utils.ButtonClick
import
uz.ssd.mobiuz.ui.global.ButtonClick
import
uz.ssd.mobiuz.utils.CONSTANTS
import
uz.ssd.mobiuz.ui.global.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
@AndroidEntryPoint
class
BiometricFragment
:
BaseFragment
(
R
.
layout
.
fragment_biometric
)
{
class
BiometricFragment
:
BaseFragment
(
R
.
layout
.
fragment_biometric
)
{
...
@@ -86,7 +77,7 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
...
@@ -86,7 +77,7 @@ class BiometricFragment : BaseFragment(R.layout.fragment_biometric) {
private
fun
navigate
()
{
private
fun
navigate
()
{
val
intent
=
Intent
(
requireContext
(),
MainActivity
::
class
.
java
)
val
intent
=
Intent
(
requireContext
(),
MainActivity
::
class
.
java
)
intent
.
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
)
intent
.
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
or
Intent
.
FLAG_ACTIVITY_TASK_ON_HOME
startActivity
(
intent
)
startActivity
(
intent
)
requireActivity
().
finish
()
requireActivity
().
finish
()
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/CheckPhoneFragment.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/auth/
check/
CheckPhoneFragment.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
.check
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
...
@@ -15,13 +15,14 @@ import uz.ssd.mobiuz.R
...
@@ -15,13 +15,14 @@ import uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentCheckPhoneBinding
import
uz.ssd.mobiuz.databinding.FragmentCheckPhoneBinding
import
uz.ssd.mobiuz.model.UserAuth
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.auth.AuthViewModel
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.u
tils
.ButtonClick
import
uz.ssd.mobiuz.u
i.global
.ButtonClick
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.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.customLog
import
uz.ssd.mobiuz.utils.extensions.show
Message
import
uz.ssd.mobiuz.utils.extensions.show
CustomDialog
@AndroidEntryPoint
@AndroidEntryPoint
class
CheckPhoneFragment
:
BaseFragment
(
R
.
layout
.
fragment_check_phone
)
{
class
CheckPhoneFragment
:
BaseFragment
(
R
.
layout
.
fragment_check_phone
)
{
...
@@ -89,7 +90,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
...
@@ -89,7 +90,7 @@ class CheckPhoneFragment : BaseFragment(R.layout.fragment_check_phone) {
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
bn
.
helperPhone
.
isVisible
=
false
bn
.
helperPhone
.
isVisible
=
false
showProgressDialog
(
false
)
showProgressDialog
(
false
)
show
Message
(
it
.
message
)
show
CustomDialog
(
it
.
message
,
false
){}
}
}
is
UiStateObject
.
ERRORS
->
{
is
UiStateObject
.
ERRORS
->
{
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/LoginFragment.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/auth/
login/
LoginFragment.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
.login
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
...
@@ -14,12 +14,13 @@ import uz.ssd.mobiuz.R
...
@@ -14,12 +14,13 @@ import uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentLoginBinding
import
uz.ssd.mobiuz.databinding.FragmentLoginBinding
import
uz.ssd.mobiuz.model.UserAuth
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.auth.AuthViewModel
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.u
tils
.ButtonClick
import
uz.ssd.mobiuz.u
i.global
.ButtonClick
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.show
Message
import
uz.ssd.mobiuz.utils.extensions.show
CustomDialog
@AndroidEntryPoint
@AndroidEntryPoint
class
LoginFragment
:
BaseFragment
(
R
.
layout
.
fragment_login
)
{
class
LoginFragment
:
BaseFragment
(
R
.
layout
.
fragment_login
)
{
...
@@ -52,7 +53,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -52,7 +53,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
txtForgetPassword
.
setOnClickListener
(
object
:
ButtonClick
()
{
txtForgetPassword
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
navController
.
navigate
(
R
.
id
.
forgetVerificationFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phone
),
Utils
.
navOptions
(
))
viewModel
.
forgetPassword
(
UserAuth
(
phone
.
replace
(
" "
,
""
).
replace
(
"+"
,
""
)
))
}
}
})
})
...
@@ -104,7 +105,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -104,7 +105,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
show
Message
(
it
.
message
)
show
CustomDialog
(
it
.
message
,
false
){}
bn
.
helperPassword
.
isVisible
=
false
bn
.
helperPassword
.
isVisible
=
false
bn
.
helperPhone
.
isVisible
=
false
bn
.
helperPhone
.
isVisible
=
false
}
}
...
@@ -135,6 +136,33 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
...
@@ -135,6 +136,33 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
}
}
}
}
}
}
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
forgetPasswordUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
navController
.
navigate
(
R
.
id
.
verificationFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phone
,
CONSTANTS
.
TYPE_VERIFICATION
to
CONSTANTS
.
TYPE_FORGET
),
Utils
.
navOptions
())
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showCustomDialog
(
it
.
message
,
false
){}
}
is
UiStateObject
.
ERRORS
->
{
showProgressDialog
(
false
)
}
is
UiStateObject
.
LOADING
->
{
showProgressDialog
(
true
)
}
else
->
Unit
}
}
}
}
}
override
fun
onDestroy
()
{
override
fun
onDestroy
()
{
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/ConfirmPinFragment.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/auth/
pin/
ConfirmPinFragment.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
.pin
import
android.content.Intent
import
android.content.Intent
import
android.os.Bundle
import
android.os.Bundle
...
@@ -7,7 +7,6 @@ import android.view.animation.AnimationUtils
...
@@ -7,7 +7,6 @@ import android.view.animation.AnimationUtils
import
android.widget.TextView
import
android.widget.TextView
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
androidx.core.hardware.fingerprint.FingerprintManagerCompat
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
...
@@ -20,7 +19,7 @@ import uz.ssd.mobiuz.databinding.FragmentPinBinding
...
@@ -20,7 +19,7 @@ import uz.ssd.mobiuz.databinding.FragmentPinBinding
import
uz.ssd.mobiuz.model.PinData
import
uz.ssd.mobiuz.model.PinData
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -36,8 +35,6 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -36,8 +35,6 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
private
val
data
=
ArrayList
<
PinData
>()
private
val
data
=
ArrayList
<
PinData
>()
private
val
pinAdapter
=
PinAdapter
()
private
val
pinAdapter
=
PinAdapter
()
private
val
viewModel
:
AuthViewModel
by
viewModels
()
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
arguments
?.
let
{
...
@@ -65,7 +62,7 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -65,7 +62,7 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
txtNotPin
.
isVisible
=
false
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
lifecycleScope
.
launchWhenCreated
{
delay
(
5
00
)
delay
(
2
00
)
if
(
pinCode
==
it
)
{
if
(
pinCode
==
it
)
{
pref
.
pin_code
=
pinCode
pref
.
pin_code
=
pinCode
txtNotPin
.
isVisible
=
false
txtNotPin
.
isVisible
=
false
...
@@ -104,7 +101,7 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
...
@@ -104,7 +101,7 @@ class ConfirmPinFragment : BaseFragment(R.layout.fragment_pin) {
if
(
isEnabled
)
{
if
(
isEnabled
)
{
navController
.
navigate
(
R
.
id
.
biometricFragment
,
null
,
Utils
.
navOptions
())
navController
.
navigate
(
R
.
id
.
biometricFragment
,
null
,
Utils
.
navOptions
())
}
else
{
}
else
{
startActivity
(
Intent
(
requireContext
(),
MainActivity
::
class
.
java
).
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
))
startActivity
(
Intent
(
requireContext
(),
MainActivity
::
class
.
java
).
putExtra
(
CONSTANTS
.
FIRST
,
CONSTANTS
.
FIRST
))
requireActivity
().
finish
()
requireActivity
().
finish
()
}
}
}
}
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/RegisterFragment.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/auth/
register/
RegisterFragment.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
.register
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
...
@@ -14,12 +14,13 @@ import uz.ssd.mobiuz.R
...
@@ -14,12 +14,13 @@ import uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentRegisterBinding
import
uz.ssd.mobiuz.databinding.FragmentRegisterBinding
import
uz.ssd.mobiuz.model.UserAuth
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.auth.AuthViewModel
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.ui.global.ButtonClick
import
uz.ssd.mobiuz.ui.global.CONSTANTS
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.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.show
Message
import
uz.ssd.mobiuz.utils.extensions.show
CustomDialog
@AndroidEntryPoint
@AndroidEntryPoint
class
RegisterFragment
:
BaseFragment
(
R
.
layout
.
fragment_register
)
{
class
RegisterFragment
:
BaseFragment
(
R
.
layout
.
fragment_register
)
{
...
@@ -30,11 +31,15 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -30,11 +31,15 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
val
viewModel
:
AuthViewModel
by
viewModels
()
private
var
phone
=
""
private
var
phone
=
""
private
var
type
=
""
private
var
code
=
""
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
arguments
?.
let
{
phone
=
it
.
getString
(
CONSTANTS
.
PHONE
)
?:
""
phone
=
it
.
getString
(
CONSTANTS
.
PHONE
)
?:
""
type
=
it
.
getString
(
CONSTANTS
.
TYPE_VERIFICATION
)
?:
""
code
=
it
.
getString
(
CONSTANTS
.
PIN_CODE
)
?:
""
}
}
}
}
...
@@ -52,7 +57,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -52,7 +57,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
txtCheckPassword
.
isVisible
=
(
s
.
toString
().
length
<
5
)
txtCheckPassword
.
isVisible
=
(
s
.
toString
().
length
<
5
)
val
confirmText
=
inputConfirm
.
text
.
toString
().
trim
()
val
confirmText
=
inputConfirm
.
text
.
toString
().
trim
()
if
(
confirmText
.
isNotEmpty
())
{
if
(
confirmText
.
isNotEmpty
())
{
if
(
s
.
toString
()
==
confirmText
)
{
if
(
s
.
toString
()
==
confirmText
)
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
...
@@ -66,7 +71,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -66,7 +71,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
}
}
imageCheck
.
isVisible
=
true
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
}
else
{
}
else
{
imageCheck
.
isVisible
=
false
imageCheck
.
isVisible
=
false
txtCheckConfirm
.
isVisible
=
false
txtCheckConfirm
.
isVisible
=
false
}
}
...
@@ -101,10 +106,14 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -101,10 +106,14 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
when
{
when
{
password
.
length
<
5
||
password
!=
confirm
->
{
password
.
length
<
5
||
password
!=
confirm
->
{
// 0700224 50 gaz
}
}
else
->
{
else
->
{
viewModel
.
register
(
UserAuth
(
phone
.
replace
(
" "
,
""
).
replace
(
"+"
,
""
),
password
))
if
(
type
==
CONSTANTS
.
TYPE_FORGET
)
{
viewModel
.
resetPassword
(
UserAuth
(
phone
.
replace
(
" "
,
""
).
replace
(
"+"
,
""
),
password
,
code
))
}
else
{
viewModel
.
register
(
UserAuth
(
phone
.
replace
(
" "
,
""
).
replace
(
"+"
,
""
),
password
))
}
}
}
}
}
...
@@ -127,7 +136,39 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -127,7 +136,39 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
showMessage
(
it
.
message
)
showCustomDialog
(
it
.
message
,
false
)
{}
}
is
UiStateObject
.
ERRORS
->
{
showProgressDialog
(
false
)
var
message
=
""
it
.
errors
.
forEach
{
message
+=
it
.
message
}
// 97 756 5078
showCustomDialog
(
message
,
false
)
{}
}
is
UiStateObject
.
LOADING
->
{
showProgressDialog
(
true
)
}
else
->
Unit
}
}
}
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
resetPasswordUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
showCustomDialog
(
"Password successfully updated"
,
true
)
{
navController
.
popBackStack
()
navController
.
navigate
(
R
.
id
.
pinFragment
,
null
,
Utils
.
navOptions
())
}
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showCustomDialog
(
it
.
message
,
false
)
{}
}
}
is
UiStateObject
.
ERRORS
->
{
is
UiStateObject
.
ERRORS
->
{
...
@@ -137,7 +178,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
...
@@ -137,7 +178,7 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
message
+=
it
.
message
message
+=
it
.
message
}
}
// 97 756 5078
// 97 756 5078
show
Message
(
message
)
show
CustomDialog
(
message
,
false
)
{}
}
}
is
UiStateObject
.
LOADING
->
{
is
UiStateObject
.
LOADING
->
{
showProgressDialog
(
true
)
showProgressDialog
(
true
)
...
...
app/src/main/java/uz/ssd/mobiuz/ui/auth/VerificationFragment.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/auth/
verification/
VerificationFragment.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.auth
package
uz.ssd.mobiuz.ui.auth
.verification
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
import
android.view.animation.AnimationUtils
import
android.view.animation.AnimationUtils
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
...
@@ -15,13 +16,14 @@ import uz.ssd.mobiuz.databinding.FragmentVerificationBinding
...
@@ -15,13 +16,14 @@ import uz.ssd.mobiuz.databinding.FragmentVerificationBinding
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.UserAuth
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.auth.AuthViewModel
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.u
tils
.ButtonClick
import
uz.ssd.mobiuz.u
i.global
.ButtonClick
import
uz.ssd.mobiuz.u
tils
.CONSTANTS
import
uz.ssd.mobiuz.u
i.global
.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.
extensions.
hideKeyboard
import
uz.ssd.mobiuz.utils.hideKeyboard
import
uz.ssd.mobiuz.utils.extensions.show
Message
import
uz.ssd.mobiuz.utils.extensions.show
CustomDialog
import
javax.inject.Inject
import
javax.inject.Inject
@AndroidEntryPoint
@AndroidEntryPoint
...
@@ -38,11 +40,13 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -38,11 +40,13 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
private
var
phone
=
""
private
var
phone
=
""
private
var
type
=
""
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
arguments
?.
let
{
arguments
?.
let
{
phone
=
it
.
getString
(
CONSTANTS
.
PHONE
)
?:
""
phone
=
it
.
getString
(
CONSTANTS
.
PHONE
)
?:
""
type
=
it
.
getString
(
CONSTANTS
.
TYPE_VERIFICATION
)
?:
""
}
}
}
}
...
@@ -77,9 +81,13 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -77,9 +81,13 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
getLinePinCodes
()
getLinePinCodes
()
if
(
code
.
length
==
6
)
{
val
auth
=
UserAuth
(
phone
.
replace
(
"+"
,
""
).
replace
(
" "
,
""
),
null
,
code
)
viewModel
.
verification
(
UserAuth
(
phone
.
replace
(
"+"
,
""
).
replace
(
" "
,
""
),
null
,
code
))
if
(
type
==
CONSTANTS
.
TYPE_FORGET
){
viewModel
.
checkResetCode
(
auth
)
}
else
{
viewModel
.
verification
(
auth
)
}
}
}
}
})
})
...
@@ -110,7 +118,46 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -110,7 +118,46 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
showProgressDialog
(
false
)
showProgressDialog
(
false
)
bn
.
lineField
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
bn
.
lineField
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
bn
.
helperLineField
.
isVisible
=
false
bn
.
helperLineField
.
isVisible
=
false
showMessage
(
it
.
message
)
showCustomDialog
(
it
.
message
,
false
){}
}
is
UiStateObject
.
ERRORS
->
{
showProgressDialog
(
false
)
it
.
errors
.
forEach
{
if
(
it
.
key
==
"code"
)
{
bn
.
helperLineField
.
isVisible
=
true
bn
.
helperLineField
.
text
=
it
.
message
}
else
bn
.
helperLineField
.
isVisible
=
false
}
bn
.
lineField
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
}
is
UiStateObject
.
LOADING
->
{
bn
.
helperLineField
.
isVisible
=
false
showProgressDialog
(
true
)
}
else
->
Unit
}
}
}
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
checkResetCodeUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
bn
.
helperLineField
.
isVisible
=
false
pref
.
userPhone
=
phone
navController
.
navigate
(
R
.
id
.
registerFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
phone
,
CONSTANTS
.
TYPE_VERIFICATION
to
CONSTANTS
.
TYPE_FORGET
,
CONSTANTS
.
PIN_CODE
to
code
,
),
Utils
.
navOptions
())
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
bn
.
lineField
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
bn
.
helperLineField
.
isVisible
=
false
showCustomDialog
(
it
.
message
,
false
){}
}
}
is
UiStateObject
.
ERRORS
->
{
is
UiStateObject
.
ERRORS
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
...
@@ -121,7 +168,6 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -121,7 +168,6 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
}
else
bn
.
helperLineField
.
isVisible
=
false
}
else
bn
.
helperLineField
.
isVisible
=
false
}
}
bn
.
lineField
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
bn
.
lineField
.
startAnimation
(
AnimationUtils
.
loadAnimation
(
requireContext
(),
R
.
anim
.
shake
))
// showMessage(it.message)
}
}
is
UiStateObject
.
LOADING
->
{
is
UiStateObject
.
LOADING
->
{
bn
.
helperLineField
.
isVisible
=
false
bn
.
helperLineField
.
isVisible
=
false
...
...
app/src/main/java/uz/ssd/mobiuz/ui/forget/ForgetPasswordFragment.kt
deleted
100644 → 0
View file @
a7cfcb82
package
uz.ssd.mobiuz.ui.forget
import
android.os.Bundle
import
android.view.View
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.flow.collect
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentRegisterBinding
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.ui.auth.AuthViewModel
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.Utils
import
uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class
ForgetPasswordFragment
:
BaseFragment
(
R
.
layout
.
fragment_register
)
{
private
var
_bn
:
FragmentRegisterBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
viewModel
:
AuthViewModel
by
viewModels
()
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentRegisterBinding
.
bind
(
view
)
setUpUI
()
collects
()
}
override
fun
setUpUI
()
{
bn
.
apply
{
inputPassword
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
txtCheckPassword
.
isVisible
=
(
s
.
toString
().
length
<
6
)
}
})
inputConfirm
.
addTextChangedListener
(
object
:
TextWatcherWrapper
()
{
override
fun
onTextChanged
(
s
:
CharSequence
?,
start
:
Int
,
before
:
Int
,
count
:
Int
)
{
super
.
onTextChanged
(
s
,
start
,
before
,
count
)
if
(
s
.
toString
().
length
>
5
&&
s
.
toString
()
==
inputPassword
.
text
.
toString
().
trim
())
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_baseline_check_circle
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_same
)
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
green
))
btnLogin
.
isEnabled
=
true
}
else
{
imageCheck
.
setImageResource
(
R
.
drawable
.
ic_vector_error
)
txtCheckConfirm
.
text
=
getString
(
R
.
string
.
password_not_same
)
btnLogin
.
isEnabled
=
true
txtCheckConfirm
.
setTextColor
(
requireActivity
().
resources
.
getColor
(
R
.
color
.
red
))
}
imageCheck
.
isVisible
=
true
txtCheckConfirm
.
isVisible
=
true
}
})
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
val
phone
=
inputPassword
.
text
.
toString
().
trim
()
viewModel
.
login
(
UserAuth
(
"phone"
,
phone
))
}
})
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
}
}
override
fun
collects
()
{
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
loginUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
navController
.
navigate
(
R
.
id
.
pinFragment
,
null
,
Utils
.
navOptions
())
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showMessage
(
it
.
message
)
}
is
UiStateObject
.
LOADING
->
{
showProgressDialog
(
true
)
}
else
->
Unit
}
}
}
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
\ No newline at end of file
app/src/main/java/uz/ssd/mobiuz/ui/forget/ForgetVerificationFragment.kt
deleted
100644 → 0
View file @
a7cfcb82
package
uz.ssd.mobiuz.ui.forget
import
android.graphics.Color
import
android.os.Bundle
import
android.view.View
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.flow.collect
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentVerificationBinding
import
uz.ssd.mobiuz.model.UserAuth
import
uz.ssd.mobiuz.network.model.UiStateObject
import
uz.ssd.mobiuz.ui.auth.AuthViewModel
import
uz.ssd.mobiuz.ui.base.BaseFragment
import
uz.ssd.mobiuz.utils.ButtonClick
import
uz.ssd.mobiuz.utils.CONSTANTS
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.hideKeyboard
import
uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class
ForgetVerificationFragment
:
BaseFragment
(
R
.
layout
.
fragment_verification
)
{
private
var
_bn
:
FragmentVerificationBinding
?
=
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
)
}
var
code
=
""
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
?)
{
_bn
=
FragmentVerificationBinding
.
bind
(
view
)
setUpUI
()
count
(
true
)
collects
()
}
override
fun
setUpUI
()
{
bn
.
apply
{
toolbar
.
setNavigationOnClickListener
{
navController
.
navigateUp
()
}
viewGroup
.
setOnClickListener
(
object
:
ButtonClick
(){
override
fun
onSingleClick
(
v
:
View
?)
{
v
?.
hideKeyboard
()
}
})
loadEdited
()
btnLogin
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
getLinePinCodes
()
if
(
code
.
length
==
6
){
viewModel
.
login
(
UserAuth
(
"phone"
,
"password"
))
}
else
{
clearPins
()
}
}
})
countWaitText
.
setTextColor
(
Color
.
parseColor
(
"#97ADB6"
))
sentCodeAgain
.
setTextColor
(
Color
.
parseColor
(
"#FF9500"
))
sentCodeAgain
.
setOnClickListener
{
count
(
true
)
}
coutdownView
.
setOnCountdownEndListener
{
count
(
false
)
}
}
}
private
fun
loadEdited
()
{
}
private
fun
getLinePinCodes
()
{
}
private
fun
clearPins
()
{
}
override
fun
collects
()
{
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
viewModel
.
loginUiState
.
collect
{
when
(
it
)
{
is
UiStateObject
.
SUCCESS
->
{
showProgressDialog
(
false
)
navController
.
navigate
(
R
.
id
.
forgetPasswordFragment
,
null
,
Utils
.
navOptions
())
}
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showMessage
(
it
.
message
)
}
is
UiStateObject
.
LOADING
->
{
showProgressDialog
(
true
)
}
else
->
Unit
}
}
}
}
private
fun
count
(
status
:
Boolean
)
{
bn
.
apply
{
sentCodeAgain
.
isVisible
=
!
status
countWaitText
.
isVisible
=
status
coutdownView
.
isVisible
=
status
if
(
status
)
coutdownView
.
start
(
60000
)
}
}
override
fun
onDestroy
()
{
_bn
=
null
super
.
onDestroy
()
}
}
app/src/main/java/uz/ssd/mobiuz/u
tils
/ButtonClick.kt
→
app/src/main/java/uz/ssd/mobiuz/u
i/global
/ButtonClick.kt
View file @
47267ca3
package
uz.ssd.mobiuz.u
tils
package
uz.ssd.mobiuz.u
i.global
import
android.os.SystemClock
import
android.os.SystemClock
import
android.view.View
import
android.view.View
...
...
app/src/main/java/uz/ssd/mobiuz/u
tils
/CONSTANTS.kt
→
app/src/main/java/uz/ssd/mobiuz/u
i/global
/CONSTANTS.kt
View file @
47267ca3
package
uz.ssd.mobiuz.u
tils
package
uz.ssd.mobiuz.u
i.global
object
CONSTANTS
{
object
CONSTANTS
{
const
val
BASE_URL
=
"http://10.160.45.60/api/v1/"
const
val
BASE_URL
=
"http://10.160.45.60/api/v1/"
...
@@ -9,6 +9,8 @@ object CONSTANTS {
...
@@ -9,6 +9,8 @@ object CONSTANTS {
const
val
PHONE
=
"phone"
const
val
PHONE
=
"phone"
const
val
PIN_CODE
=
"pin_code"
const
val
PIN_CODE
=
"pin_code"
const
val
TYPE_AUTH
=
"type_auth"
const
val
TYPE_AUTH
=
"type_auth"
const
val
TYPE_VERIFICATION
=
"type_verification"
const
val
TYPE_FORGET
=
"type_forget"
const
val
FIRST
=
"first"
const
val
FIRST
=
"first"
const
val
LONGITUDE
=
69.2602108116081
const
val
LONGITUDE
=
69.2602108116081
...
...
app/src/main/java/uz/ssd/mobiuz/ui/
base
/ExitDialog.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/
global
/ExitDialog.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.
base
package
uz.ssd.mobiuz.ui.
global
import
android.os.Bundle
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.LayoutInflater
...
...
app/src/main/java/uz/ssd/mobiuz/ui/
auth
/FullScreenDialog.kt
→
app/src/main/java/uz/ssd/mobiuz/ui/
global
/FullScreenDialog.kt
View file @
47267ca3
package
uz.ssd.mobiuz.ui.
auth
package
uz.ssd.mobiuz.ui.
global
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
android.view.View
...
@@ -14,6 +14,7 @@ import uz.ssd.mobiuz.R
...
@@ -14,6 +14,7 @@ import uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentPinDialogBinding
import
uz.ssd.mobiuz.databinding.FragmentPinDialogBinding
import
uz.ssd.mobiuz.model.PinData
import
uz.ssd.mobiuz.model.PinData
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.ui.auth.pin.PinAdapter
import
uz.ssd.mobiuz.utils.extensions.SingleBlock
import
uz.ssd.mobiuz.utils.extensions.SingleBlock
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -37,6 +38,7 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
...
@@ -37,6 +38,7 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
_bn
=
FragmentPinDialogBinding
.
bind
(
view
)
_bn
=
FragmentPinDialogBinding
.
bind
(
view
)
isCancelable
=
false
setUpUI
()
setUpUI
()
}
}
...
@@ -46,13 +48,17 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
...
@@ -46,13 +48,17 @@ class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
loadData
()
loadData
()
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
rvPin
.
layoutManager
=
LinearLayoutManager
(
requireContext
(),
LinearLayoutManager
.
HORIZONTAL
,
false
)
withPassword
.
setOnClickListener
(
object
:
ButtonClick
(){
override
fun
onSingleClick
(
v
:
View
?)
{
listener
?.
invoke
(
Unit
)
}
})
rvPin
.
adapter
=
pinAdapter
rvPin
.
adapter
=
pinAdapter
txtNotPin
.
isVisible
=
false
txtNotPin
.
isVisible
=
false
pinAdapter
.
setOnDoneListener
{
pinAdapter
.
setOnDoneListener
{
lifecycleScope
.
launchWhenCreated
{
lifecycleScope
.
launchWhenCreated
{
delay
(
200
)
delay
(
200
)
if
(
pref
.
pin_code
==
it
)
{
if
(
pref
.
pin_code
==
it
)
{
listener
?.
invoke
(
Unit
)
txtNotPin
.
isVisible
=
false
txtNotPin
.
isVisible
=
false
dismiss
()
dismiss
()
}
else
{
}
else
{
...
...
app/src/main/java/uz/ssd/mobiuz/ui/global/SenderDialog.kt
0 → 100644
View file @
47267ca3
package
uz.ssd.mobiuz.ui.global
import
android.graphics.Color
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.fragment.app.DialogFragment
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.LayoutSenderBinding
import
uz.ssd.mobiuz.utils.extensions.SingleBlock
class
SenderDialog
(
private
val
txtDescription
:
String
,
private
val
status
:
Boolean
)
:
DialogFragment
()
{
private
var
listener
:
SingleBlock
<
Unit
>?
=
null
private
var
_bn
:
LayoutSenderBinding
?
=
null
private
val
bn
get
()
=
_bn
!!
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setStyle
(
STYLE_NO_TITLE
,
R
.
style
.
CustomDialog
)
}
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
{
_bn
=
LayoutSenderBinding
.
inflate
(
inflater
,
container
,
false
)
return
bn
.
root
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
isCancelable
=
false
bn
.
apply
{
if
(!
status
)
{
title
.
text
=
getString
(
R
.
string
.
error_data
)
description
.
setTextColor
(
Color
.
RED
)
title
.
setTextColor
(
Color
.
RED
)
lottie
.
setAnimation
(
R
.
raw
.
error_lottie
)
}
description
.
text
=
txtDescription
btnOk
.
setOnClickListener
{
listener
?.
invoke
(
Unit
)
dismiss
()
}
}
}
fun
setOnClickListener
(
block
:
SingleBlock
<
Unit
>)
{
listener
=
block
}
override
fun
onDestroy
()
{
super
.
onDestroy
()
_bn
=
null
}
}
app/src/main/java/uz/ssd/mobiuz/ui/home/HomeFragment.kt
View file @
47267ca3
...
@@ -4,26 +4,19 @@ import android.annotation.SuppressLint
...
@@ -4,26 +4,19 @@ import android.annotation.SuppressLint
import
android.content.Intent
import
android.content.Intent
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.fragment.app.viewModels
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.flow.collect
import
kotlinx.coroutines.flow.collect
import
uz.ssd.mobiuz.AuthActivity
import
uz.ssd.mobiuz.AuthActivity
import
uz.ssd.mobiuz.MainActivity
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.databinding.FragmentHomeBinding
import
uz.ssd.mobiuz.databinding.FragmentHomeBinding
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.model.SharedPref
import
uz.ssd.mobiuz.network.model.Customer
import
uz.ssd.mobiuz.network.model.Customer
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.utils.ButtonClick
import
uz.ssd.mobiuz.ui.global.ButtonClick
import
uz.ssd.mobiuz.utils.CONSTANTS
import
uz.ssd.mobiuz.utils.extensions.*
import
uz.ssd.mobiuz.utils.Utils
import
uz.ssd.mobiuz.utils.extensions.showCustomExitDialog
import
uz.ssd.mobiuz.utils.extensions.showMessage
import
uz.ssd.mobiuz.utils.extensions.toMoneyFormat
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -86,7 +79,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
...
@@ -86,7 +79,7 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
}
}
is
UiStateObject
.
ERROR
->
{
is
UiStateObject
.
ERROR
->
{
showProgressDialog
(
false
)
showProgressDialog
(
false
)
showMessage
(
it
.
message
)
// showCustomDialog(it.message,false){}
}
}
is
UiStateObject
.
ERRORS
->
{
is
UiStateObject
.
ERRORS
->
{
...
@@ -103,23 +96,29 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
...
@@ -103,23 +96,29 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
@SuppressLint
(
"SetTextI18n"
)
@SuppressLint
(
"SetTextI18n"
)
private
fun
loadData
()
{
private
fun
loadData
()
{
customer
?.
customer
?.
info
?.
let
{
try
{
bn
.
apply
{
customLog
(
"customer:$customer"
)
txtBalance
.
text
=
"${it.balance.amount.toMoneyFormat()} ${it.balance.currency}"
customer
?.
customer
?.
info
?.
let
{
it
.
counters
.
let
{
bn
.
apply
{
txtCountMb
.
text
=
it
.
BYTE
.
value
.
toMoneyFormat
()
txtBalance
.
text
=
"${it.balance?.amount?.toMoneyFormat()} ${it.balance?.currency}"
txtTypeMb
.
text
=
it
.
BYTE
.
unit
it
.
counters
.
let
{
txtCountMb
.
text
=
it
?.
BYTE
?.
value
?.
toMoneyFormat
()
?:
"0"
txtCountMinut
.
text
=
it
.
SECOND
.
value
.
toMoneyFormat
()
txtTypeMb
.
text
=
it
?.
BYTE
?.
unit
?:
"mb"
txtTypeMinut
.
text
=
it
.
SECOND
.
unit
txtCountMinut
.
text
=
it
?.
SECOND
?.
value
?.
toMoneyFormat
()
?:
"0"
txtCountSms
.
text
=
it
.
ITEM
.
value
.
toMoneyFormat
()
txtTypeMinut
.
text
=
it
?.
SECOND
?.
unit
?:
"min"
txtTypeSms
.
text
=
it
.
ITEM
.
unit
txtCountSms
.
text
=
it
?.
ITEM
?.
value
?.
toMoneyFormat
()
?:
"0"
txtTypeSms
.
text
=
it
?.
ITEM
?.
unit
?:
"sms"
}
txtMyNumber
.
text
=
pref
.
userPhone
}
}
txtMyNumber
.
text
=
pref
.
userPhone
}
}
}
catch
(
e
:
Exception
){
showCustomDialog
(
e
.
userMessage
(
requireContext
()),
false
){}
}
}
}
}
override
fun
onDestroy
()
{
override
fun
onDestroy
()
{
...
...
app/src/main/java/uz/ssd/mobiuz/utils/
extensions/
SoftKeyboard.kt
→
app/src/main/java/uz/ssd/mobiuz/utils/SoftKeyboard.kt
View file @
47267ca3
package
uz.ssd.mobiuz.utils
.extensions
package
uz.ssd.mobiuz.utils
import
android.content.Context
import
android.content.Context
import
android.view.View
import
android.view.View
...
...
app/src/main/java/uz/ssd/mobiuz/utils/PermissionExtensions.kt
→
app/src/main/java/uz/ssd/mobiuz/utils/
extensions/
PermissionExtensions.kt
View file @
47267ca3
File moved
app/src/main/java/uz/ssd/mobiuz/utils/extensions/StringExtension.kt
View file @
47267ca3
...
@@ -5,11 +5,13 @@ import android.content.Context
...
@@ -5,11 +5,13 @@ import android.content.Context
import
android.util.Log
import
android.util.Log
import
android.widget.Toast
import
android.widget.Toast
import
androidx.fragment.app.Fragment
import
androidx.fragment.app.Fragment
import
androidx.fragment.app.FragmentActivity
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
import
com.google.gson.JsonSyntaxException
import
com.google.gson.JsonSyntaxException
import
retrofit2.HttpException
import
retrofit2.HttpException
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.R
import
uz.ssd.mobiuz.ui.base.ExitDialog
import
uz.ssd.mobiuz.ui.global.ExitDialog
import
uz.ssd.mobiuz.ui.global.SenderDialog
import
java.io.IOException
import
java.io.IOException
import
java.net.ConnectException
import
java.net.ConnectException
...
@@ -68,6 +70,22 @@ fun Fragment.showCustomExitDialog(block: () -> Unit) {
...
@@ -68,6 +70,22 @@ fun Fragment.showCustomExitDialog(block: () -> Unit) {
dialog
.
show
(
childFragmentManager
,
"childFragmentManager"
)
dialog
.
show
(
childFragmentManager
,
"childFragmentManager"
)
}
}
fun
Fragment
.
showCustomDialog
(
string
:
String
,
status
:
Boolean
,
block
:
()
->
Unit
)
{
val
dialog
=
SenderDialog
(
string
,
status
)
dialog
.
setOnClickListener
{
block
()
}
dialog
.
show
(
childFragmentManager
,
"childFragmentManager"
)
}
fun
FragmentActivity
.
showCustomDialog
(
string
:
String
,
status
:
Boolean
,
block
:
()
->
Unit
)
{
val
dialog
=
SenderDialog
(
string
,
status
)
dialog
.
setOnClickListener
{
block
()
}
dialog
.
show
(
supportFragmentManager
,
"supportFragmentManager"
)
}
typealias
SingleBlock
<
T
>
=
(
T
)
->
Unit
typealias
SingleBlock
<
T
>
=
(
T
)
->
Unit
typealias
MultiBlock
<
T
,
K
>
=
(
T
,
K
)
->
Unit
typealias
MultiBlock
<
T
,
K
>
=
(
T
,
K
)
->
Unit
typealias
ThreeBlock
<
T
,
K
,
M
>
=
(
T
,
K
,
M
)
->
Unit
typealias
ThreeBlock
<
T
,
K
,
M
>
=
(
T
,
K
,
M
)
->
Unit
app/src/main/res/layout/fragment_biometric.xml
View file @
47267ca3
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@drawable/gradient"
android:background=
"@drawable/gradient"
android:orientation=
"vertical"
android:orientation=
"vertical"
tools:context=
".ui.auth.BiometricFragment"
>
tools:context=
".ui.auth.
biometric.
BiometricFragment"
>
<FrameLayout
<FrameLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/fragment_home.xml
View file @
47267ca3
...
@@ -93,7 +93,7 @@
...
@@ -93,7 +93,7 @@
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
tools:text=
"24 35
0 UZS"
android:text=
"
0 UZS"
android:id=
"@+id/txt_balance"
android:id=
"@+id/txt_balance"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
android:textSize=
"20sp"
android:textSize=
"20sp"
...
@@ -133,7 +133,7 @@
...
@@ -133,7 +133,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=
"M
obi 50
"
android:text=
"M
y tarif
"
android:textSize=
"20sp"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -141,7 +141,7 @@
...
@@ -141,7 +141,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end"
android:layout_gravity=
"end"
android:text=
"
50 00
0 Сум/мес"
android:text=
"0 Сум/мес"
android:textColor=
"@color/light"
/>
android:textColor=
"@color/light"
/>
</FrameLayout>
</FrameLayout>
...
@@ -181,7 +181,7 @@
...
@@ -181,7 +181,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginVertical=
"6dp"
android:layout_marginVertical=
"6dp"
tools:text=
"4,5
"
android:text=
"0
"
android:id=
"@+id/txt_count_mb"
android:id=
"@+id/txt_count_mb"
android:textSize=
"20sp"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -190,7 +190,7 @@
...
@@ -190,7 +190,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
tools:text=
"гигабайт
"
android:text=
"mb
"
android:id=
"@+id/txt_type_mb"
android:id=
"@+id/txt_type_mb"
android:textColor=
"@color/light_dark"
/>
android:textColor=
"@color/light_dark"
/>
</LinearLayout>
</LinearLayout>
...
@@ -212,7 +212,7 @@
...
@@ -212,7 +212,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginVertical=
"6dp"
android:layout_marginVertical=
"6dp"
tools:text=
"234
"
android:text=
"0
"
android:id=
"@+id/txt_count_minut"
android:id=
"@+id/txt_count_minut"
android:textSize=
"20sp"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -221,7 +221,7 @@
...
@@ -221,7 +221,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
tools:text=
"минут
"
android:text=
"min
"
android:id=
"@+id/txt_type_minut"
android:id=
"@+id/txt_type_minut"
android:textColor=
"@color/light_dark"
/>
android:textColor=
"@color/light_dark"
/>
</LinearLayout>
</LinearLayout>
...
@@ -243,7 +243,7 @@
...
@@ -243,7 +243,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginVertical=
"6dp"
android:layout_marginVertical=
"6dp"
tools:text=
"50
0"
android:text=
"
0"
android:id=
"@+id/txt_count_sms"
android:id=
"@+id/txt_count_sms"
android:textSize=
"20sp"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -252,7 +252,7 @@
...
@@ -252,7 +252,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
tools
:text=
"SMS"
android
:text=
"SMS"
android:id=
"@+id/txt_type_sms"
android:id=
"@+id/txt_type_sms"
android:textColor=
"@color/light_dark"
/>
android:textColor=
"@color/light_dark"
/>
</LinearLayout>
</LinearLayout>
...
@@ -282,7 +282,7 @@
...
@@ -282,7 +282,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end"
android:layout_gravity=
"end"
android
:text=
"22 Декабря"
tools
:text=
"22 Декабря"
android:textColor=
"@color/light_dark"
android:textColor=
"@color/light_dark"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
</FrameLayout>
</FrameLayout>
...
...
app/src/main/res/layout/fragment_login.xml
View file @
47267ca3
...
@@ -147,6 +147,20 @@
...
@@ -147,6 +147,20 @@
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/layout_input_confirm"
/>
app:layout_constraintTop_toBottomOf=
"@id/layout_input_confirm"
/>
<TextView
android:id=
"@+id/txt_helper_mobiuz"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"@dimen/_6sdp"
android:text=
"@string/helper_mobiuz"
android:background=
"?android:selectableItemBackground"
android:textColor=
"@color/light_dark"
android:textStyle=
"bold"
android:layout_marginTop=
"@dimen/_6sdp"
android:layout_marginHorizontal=
"@dimen/_10sdp"
app:layout_constraintStart_toStartOf=
"@id/layout_input_password"
app:layout_constraintTop_toBottomOf=
"@id/txt_forget_password"
/>
<Button
<Button
android:id=
"@+id/btn_login"
android:id=
"@+id/btn_login"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/fragment_progress.xml
View file @
47267ca3
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<
LinearLayout
<
com.google.android.material.card.MaterialCardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
app:cardCornerRadius=
"@dimen/_10sdp"
app:cardUseCompatPadding=
"true"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"18dp"
>
android:padding=
"18dp"
>
...
@@ -17,5 +19,5 @@
...
@@ -17,5 +19,5 @@
app:lottie_speed=
"1"
app:lottie_speed=
"1"
tools:ignore=
"ContentDescription"
/>
tools:ignore=
"ContentDescription"
/>
</
LinearLayout
>
</
com.google.android.material.card.MaterialCardView
>
app/src/main/res/layout/fragment_register.xml
View file @
47267ca3
...
@@ -135,6 +135,20 @@
...
@@ -135,6 +135,20 @@
app:layout_constraintStart_toEndOf=
"@id/image_check"
app:layout_constraintStart_toEndOf=
"@id/image_check"
app:layout_constraintTop_toBottomOf=
"@id/layout_input_confirm"
/>
app:layout_constraintTop_toBottomOf=
"@id/layout_input_confirm"
/>
<TextView
android:id=
"@+id/txt_helper_mobiuz"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"@dimen/_6sdp"
android:text=
"@string/helper_mobiuz"
android:background=
"?android:selectableItemBackground"
android:textColor=
"@color/light_dark"
android:textStyle=
"bold"
android:layout_marginTop=
"@dimen/_6sdp"
android:layout_marginHorizontal=
"@dimen/_10sdp"
app:layout_constraintStart_toStartOf=
"@id/layout_input_password"
app:layout_constraintTop_toBottomOf=
"@id/txt_check_confirm"
/>
<Button
<Button
android:id=
"@+id/btn_login"
android:id=
"@+id/btn_login"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/fragment_verification.xml
View file @
47267ca3
...
@@ -28,14 +28,14 @@
...
@@ -28,14 +28,14 @@
<com.poovam.pinedittextfield.SquarePinField
<com.poovam.pinedittextfield.SquarePinField
android:id=
"@+id/line_field"
android:id=
"@+id/line_field"
android:layout_width=
"
wrap_content
"
android:layout_width=
"
@dimen/_220sdp
"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:
layout_marginHorizontal=
"@dimen/_12
sdp"
android:
paddingHorizontal=
"@dimen/_14
sdp"
android:layout_marginTop=
"@dimen/_80sdp"
android:layout_marginTop=
"@dimen/_80sdp"
android:hint=
"******"
android:hint=
"******"
android:orientation=
"horizontal"
android:orientation=
"horizontal"
android:textColorHint=
"@color/black"
android:textColorHint=
"@color/black"
android:textSize=
"@dimen/_1
4
sdp"
android:textSize=
"@dimen/_1
6
sdp"
android:textStyle=
"bold"
android:textStyle=
"bold"
android:textSelectHandle=
"@drawable/text_handle"
android:textSelectHandle=
"@drawable/text_handle"
android:inputType=
"number"
android:inputType=
"number"
...
...
app/src/main/res/layout/layout_exit.xml
View file @
47267ca3
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
app:cardUseCompatPadding=
"true"
app:cardBackgroundColor=
"@color/white"
app:cardBackgroundColor=
"@color/white"
app:cardCornerRadius=
"12dp"
>
app:cardCornerRadius=
"12dp"
>
...
...
app/src/main/res/layout/layout_sender.xml
0 → 100644
View file @
47267ca3
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"wrap_content"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
app:cardCornerRadius=
"12dp"
app:cardUseCompatPadding=
"true"
app:cardBackgroundColor=
"@color/white"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_height=
"wrap_content"
>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width=
"wrap_content"
android:orientation=
"vertical"
android:clickable=
"true"
android:minWidth=
"@dimen/_200sdp"
android:focusable=
"true"
android:layout_height=
"wrap_content"
>
<com.airbnb.lottie.LottieAnimationView
android:layout_width=
"80dp"
android:id=
"@+id/lottie"
android:layout_height=
"80dp"
android:adjustViewBounds=
"true"
app:lottie_autoPlay=
"true"
android:layout_gravity=
"center"
app:lottie_loop=
"true"
android:layout_marginTop=
"16dp"
app:lottie_rawRes=
"@raw/success_lottie"
app:lottie_speed=
"1"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_gravity=
"center"
android:gravity=
"center"
android:textSize=
"16sp"
android:id=
"@+id/title"
android:textStyle=
"bold"
android:layout_marginHorizontal=
"26dp"
android:text=
"@string/successfully"
android:layout_height=
"wrap_content"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_gravity=
"center"
android:gravity=
"center"
android:textSize=
"16sp"
android:layout_marginTop=
"10dp"
android:layout_marginBottom=
"20dp"
android:id=
"@+id/description"
android:layout_marginHorizontal=
"26dp"
android:text=
"description"
android:layout_height=
"wrap_content"
/>
<View
android:layout_width=
"match_parent"
android:background=
"@color/light"
android:layout_height=
"1dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:id=
"@+id/btn_ok"
android:textSize=
"14sp"
android:textStyle=
"bold"
android:elevation=
"2dp"
android:paddingVertical=
"16dp"
android:gravity=
"center"
android:text=
"@string/ok"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</com.google.android.material.card.MaterialCardView>
\ No newline at end of file
app/src/main/res/navigation/nav_graph_auth.xml
View file @
47267ca3
...
@@ -7,49 +7,40 @@
...
@@ -7,49 +7,40 @@
<fragment
<fragment
android:id=
"@+id/checkPhoneFragment"
android:id=
"@+id/checkPhoneFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.CheckPhoneFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.
check.
CheckPhoneFragment"
android:label=
"fragment_login"
android:label=
"fragment_login"
tools:layout=
"@layout/fragment_check_phone"
/>
tools:layout=
"@layout/fragment_check_phone"
/>
<fragment
<fragment
android:id=
"@+id/verificationFragment"
android:id=
"@+id/verificationFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.VerificationFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.
verification.
VerificationFragment"
android:label=
"fragment_verification"
android:label=
"fragment_verification"
tools:layout=
"@layout/fragment_verification"
/>
tools:layout=
"@layout/fragment_verification"
/>
<fragment
<fragment
android:id=
"@+id/registerFragment"
android:id=
"@+id/registerFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.RegisterFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.
register.
RegisterFragment"
android:label=
"EnterPasswordFragment"
android:label=
"EnterPasswordFragment"
tools:layout=
"@layout/fragment_register"
/>
tools:layout=
"@layout/fragment_register"
/>
<fragment
<fragment
android:id=
"@+id/loginFragment"
android:id=
"@+id/loginFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.LoginFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.
login.
LoginFragment"
android:label=
"fragment_password"
android:label=
"fragment_password"
tools:layout=
"@layout/fragment_login"
/>
tools:layout=
"@layout/fragment_login"
/>
<fragment
android:id=
"@+id/forgetPasswordFragment"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetPasswordFragment"
android:label=
"ForgetPasswordFragment"
tools:layout=
"@layout/fragment_forget_password"
/>
<fragment
<fragment
android:id=
"@+id/pinFragment"
android:id=
"@+id/pinFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.PinFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.
pin.
PinFragment"
android:label=
"PinFragment"
android:label=
"PinFragment"
tools:layout=
"@layout/fragment_pin"
/>
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.
biometric.
BiometricFragment"
android:label=
"fragment_biometric"
android:label=
"fragment_biometric"
tools:layout=
"@layout/fragment_biometric"
/>
tools:layout=
"@layout/fragment_biometric"
/>
<fragment
<fragment
android:id=
"@+id/forgetVerificationFragment"
android:name=
"uz.ssd.mobiuz.ui.forget.ForgetVerificationFragment"
android:label=
"ForgetPinFragment"
tools:layout=
"@layout/fragment_pin"
/>
<fragment
android:id=
"@+id/confirmPinFragment"
android:id=
"@+id/confirmPinFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.ConfirmPinFragment"
android:name=
"uz.ssd.mobiuz.ui.auth.
pin.
ConfirmPinFragment"
android:label=
"ConfirmPinFragment"
android:label=
"ConfirmPinFragment"
tools:layout=
"@layout/fragment_pin"
/>
tools:layout=
"@layout/fragment_pin"
/>
</navigation>
</navigation>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
47267ca3
...
@@ -73,5 +73,9 @@
...
@@ -73,5 +73,9 @@
<string
name=
"are_you_sure"
>
Do you want to exit?
</string>
<string
name=
"are_you_sure"
>
Do you want to exit?
</string>
<string
name=
"no"
>
No
</string>
<string
name=
"no"
>
No
</string>
<string
name=
"yes"
>
Yes
</string>
<string
name=
"yes"
>
Yes
</string>
<string
name=
"successfully"
>
Successfully
</string>
<string
name=
"ok"
>
Ok
</string>
<string
name=
"error_data"
>
Error
</string>
<string
name=
"helper_mobiuz"
>
Для входа вы можете использовать пароль от интернет-помощника www.mobi.uz
</string>
</resources>
</resources>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment