git add viewmodel
This commit is contained in:
parent
fbe57b265f
commit
5cfb98ecfb
@ -4,7 +4,7 @@
|
|||||||
<selectionStates>
|
<selectionStates>
|
||||||
<SelectionState runConfigName="app">
|
<SelectionState runConfigName="app">
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
<DropdownSelection timestamp="2024-10-23T13:44:51.378268100Z">
|
<DropdownSelection timestamp="2024-10-25T13:51:03.991973200Z">
|
||||||
<Target type="DEFAULT_BOOT">
|
<Target type="DEFAULT_BOOT">
|
||||||
<handle>
|
<handle>
|
||||||
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\adm\.android\avd\Medium_Phone_API_35.avd" />
|
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\adm\.android\avd\Medium_Phone_API_35.avd" />
|
||||||
|
@ -35,8 +35,8 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
|
||||||
implementation (libs.androidx.fragment.ktx)
|
implementation (libs.androidx.fragment.ktx)
|
||||||
implementation(libs.androidx.core.ktx)
|
implementation(libs.androidx.core.ktx)
|
||||||
|
@ -8,6 +8,7 @@ import android.view.View
|
|||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.CheckBox
|
import android.widget.CheckBox
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.widget.doOnTextChanged
|
import androidx.core.widget.doOnTextChanged
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
@ -19,16 +20,33 @@ class SignUpScreen : Fragment(R.layout.fragment_sign_up_screen) {
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
val viewModel by viewModels<SignUpViewModel> ()
|
val viewModel by viewModels<SignUpViewModel> ()
|
||||||
val passwordEditText = view.findViewById<EditText>(R.id.PasswordEditText)
|
val passwordEditText = view.findViewById<EditText>(R.id.PasswordEditText)
|
||||||
|
val loginEditText = view.findViewById<EditText>(R.id.EmailPhoneNumberEditText)
|
||||||
|
val nameEditText = view.findViewById<EditText>(R.id.NameEditText)
|
||||||
val termsCheckBox = view.findViewById<CheckBox>(R.id.TarmsAndPolicyCheckBox)
|
val termsCheckBox = view.findViewById<CheckBox>(R.id.TarmsAndPolicyCheckBox)
|
||||||
val createButton = view.findViewById<Button>(R.id.CreateAccountButton)
|
val createButton = view.findViewById<Button>(R.id.CreateAccountButton)
|
||||||
|
val errorTextView = view.findViewById<TextView>(R.id.ErrorLabel)
|
||||||
var passwordIsVisible = false
|
var passwordIsVisible = false
|
||||||
|
|
||||||
passwordEditText.doOnTextChanged { text, start, before, count ->
|
passwordEditText.doOnTextChanged { text, _, _, _ ->
|
||||||
|
viewModel.setPassword(text.toString())
|
||||||
|
}
|
||||||
|
loginEditText.doOnTextChanged { text, _, _, _ ->
|
||||||
viewModel.setLogin(text.toString())
|
viewModel.setLogin(text.toString())
|
||||||
}
|
}
|
||||||
|
nameEditText.doOnTextChanged { text, _, _, _ ->
|
||||||
|
viewModel.setName(text.toString())
|
||||||
|
}
|
||||||
|
|
||||||
viewModel.signUpState.observeForever{ it ->
|
createButton.setOnClickListener {
|
||||||
|
viewModel.registrationUser()
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModel.signUpState.observeForever{
|
||||||
createButton.isEnabled = it.acceptTerms
|
createButton.isEnabled = it.acceptTerms
|
||||||
|
if(it.errorMessage.isNotBlank()) {
|
||||||
|
errorTextView.text = it.errorMessage
|
||||||
|
errorTextView.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
termsCheckBox.setOnCheckedChangeListener { buttonView, isChecked ->
|
termsCheckBox.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||||
|
@ -5,5 +5,6 @@ data class SignUpState(
|
|||||||
var password: String ="",
|
var password: String ="",
|
||||||
var name: String = "",
|
var name: String = "",
|
||||||
var acceptTerms: Boolean = false,
|
var acceptTerms: Boolean = false,
|
||||||
|
var errorMessage: String = "",
|
||||||
var buttonEnable: Boolean = acceptTerms
|
var buttonEnable: Boolean = acceptTerms
|
||||||
)
|
)
|
||||||
|
@ -3,13 +3,60 @@ package com.example.autorization.ui.fragments.signup
|
|||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import java.util.stream.Stream
|
|
||||||
import kotlin.math.log
|
|
||||||
|
|
||||||
class SignUpViewModel:ViewModel() {
|
class SignUpViewModel:ViewModel() {
|
||||||
private var _signUpState: MutableLiveData<SignUpState> = MutableLiveData(SignUpState())
|
private var _signUpState: MutableLiveData<SignUpState> = MutableLiveData(SignUpState())
|
||||||
val signUpState : LiveData<SignUpState> = _signUpState
|
val signUpState : LiveData<SignUpState> = _signUpState
|
||||||
|
|
||||||
|
private val users : MutableList<User> = mutableListOf()
|
||||||
|
|
||||||
|
fun registrationUser(){
|
||||||
|
if (_signUpState.value == null) return
|
||||||
|
if(_signUpState.value!!.name.isBlank())
|
||||||
|
{
|
||||||
|
_signUpState.postValue(_signUpState.value!!.copy(
|
||||||
|
errorMessage = "Пустое имя пользователя")
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(_signUpState.value!!.login.isBlank()){
|
||||||
|
_signUpState.postValue(_signUpState.value!!.copy(
|
||||||
|
errorMessage = "Пустой логин")
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(_signUpState.value!!.password.isBlank()) {
|
||||||
|
_signUpState.postValue(_signUpState.value!!.copy(
|
||||||
|
errorMessage = "Пустой пароль")
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(_signUpState.value!!.login.contains('@')) {
|
||||||
|
users.add(User(
|
||||||
|
email = _signUpState.value!!.login,
|
||||||
|
name = _signUpState.value!!.name,
|
||||||
|
password = _signUpState.value!!.password
|
||||||
|
))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
users.add(
|
||||||
|
User(
|
||||||
|
number = _signUpState.value!!.login,
|
||||||
|
name = _signUpState.value!!.name,
|
||||||
|
password = _signUpState.value!!.password
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setError(error:String) {
|
||||||
|
_signUpState.postValue(_signUpState.value?.copy(errorMessage = error))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setPassword(password:String) {
|
||||||
|
_signUpState.postValue(_signUpState.value?.copy(password = password))
|
||||||
|
}
|
||||||
|
fun setName(name:String) {
|
||||||
|
_signUpState.postValue(_signUpState.value?.copy(name = name))
|
||||||
|
}
|
||||||
|
|
||||||
fun setLogin(login:String) {
|
fun setLogin(login:String) {
|
||||||
_signUpState.postValue(_signUpState.value?.copy(login = login))
|
_signUpState.postValue(_signUpState.value?.copy(login = login))
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.example.autorization.ui.fragments.signup
|
||||||
|
|
||||||
|
data class User(var email:String? = null,
|
||||||
|
var number:String? = null,
|
||||||
|
val name:String,
|
||||||
|
val password:String)
|
@ -72,6 +72,12 @@
|
|||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/ErrorLabel"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/CreateAccountButton"
|
android:id="@+id/CreateAccountButton"
|
||||||
android:layout_marginTop="36dp"
|
android:layout_marginTop="36dp"
|
||||||
|
Loading…
Reference in New Issue
Block a user