Correction Sign Up

This commit is contained in:
Chocolaterie
2025-01-28 12:16:09 +01:00
parent cfd0e4e41f
commit 348509825b
5 changed files with 84 additions and 13 deletions

View File

@@ -29,9 +29,10 @@
android:theme="@style/Theme.TpFilRouge" />
<activity
android:name=".auth.SignUpActivity"
android:exported="false"
android:exported="true"
android:label="@string/title_activity_sign_up"
android:theme="@style/Theme.TpFilRouge" />
android:theme="@style/Theme.TpFilRouge">
</activity>
<activity
android:name=".auth.LoginActivity"
android:exported="true"

View File

@@ -12,6 +12,9 @@ interface AuthService {
@POST("login")
suspend fun login(@Body loginRequestDTO: LoginRequestDTO) : ServiceResponseDTO<String>
@POST("signup")
suspend fun signup(@Body signUpRequestDTO: SignUpRequestDTO) : ServiceResponseDTO<SignUpRequestDTO>
object AuthApi {
val authService : AuthService by lazy { retrofit.create(AuthService::class.java) }
}

View File

@@ -8,6 +8,8 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
@@ -19,17 +21,29 @@ import com.example.tpfilrouge.ui.theme.EniPage
import com.example.tpfilrouge.ui.theme.EniTextField
class SignUpActivity : ComponentActivity() {
var signUpViewModel = SignUpViewModel();
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
SignUpActivityPage()
SignUpActivityPage(signUpViewModel)
}
}
}
@Composable
fun SignUpActivityPage() {
fun SignUpActivityPage(signUpViewModel: SignUpViewModel) {
// Ecouter et synchronser les champs saisies
val emailField by signUpViewModel.email.collectAsState()
val pseudoField by signUpViewModel.pseudo.collectAsState()
val passwordField by signUpViewModel.password.collectAsState()
val passwordConfirmField by signUpViewModel.passwordConfirm.collectAsState()
val cityCodeField by signUpViewModel.cityCode.collectAsState()
val cityField by signUpViewModel.city.collectAsState()
val phoneField by signUpViewModel.phone.collectAsState()
EniPage {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
@@ -38,14 +52,14 @@ fun SignUpActivityPage() {
painter = painterResource(id = R.drawable.sign_up),
contentDescription = "Logo SignUp",
modifier = Modifier.padding(vertical = 10.dp))
EniTextField("Pseudo")
EniTextField("Email")
EniTextField("Password")
EniTextField("Password Confirmation")
EniTextField("City Code")
EniTextField("City")
EniTextField("Phone Number")
EniButton("Sign Up", onClick = {})
EniTextField("Pseudo", value = pseudoField, onValueChange = { value -> signUpViewModel.pseudo.value = value; })
EniTextField("Email", value = emailField, onValueChange = { value -> signUpViewModel.email.value = value; })
EniTextField("Password", value = passwordField, onValueChange = { value -> signUpViewModel.password.value = value; })
EniTextField("Password Confirmation", value = passwordConfirmField, onValueChange = { value -> signUpViewModel.passwordConfirm.value = value; })
EniTextField("City Code", value = cityCodeField, onValueChange = { value -> signUpViewModel.cityCode.value = value; })
EniTextField("City", value = cityField, onValueChange = { value -> signUpViewModel.city.value = value; })
EniTextField("Phone Number", value = phoneField, onValueChange = { value -> signUpViewModel.phone.value = value; })
EniButton("Sign Up", onClick = { signUpViewModel.callSignUpApi() })
}
}
}
@@ -53,5 +67,5 @@ fun SignUpActivityPage() {
@Preview(showBackground = true)
@Composable
fun SignUpActivityPreview() {
SignUpActivityPage()
SignUpActivityPage(SignUpViewModel())
}

View File

@@ -0,0 +1,7 @@
package com.example.tpfilrouge.auth
data class SignUpRequestDTO(var email : String, var pseudo : String,
var password : String, var passwordConfirm : String = "",
var cityCode: String, var city: String, var phone : String
) {
}

View File

@@ -0,0 +1,46 @@
package com.example.tpfilrouge.auth
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.tpfilrouge.helpers.AlertDialogHelpers
import com.example.tpfilrouge.helpers.AppDialogHelpers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
class SignUpViewModel : ViewModel() {
var email = MutableStateFlow("velocipastor@gmail.com")
var pseudo = MutableStateFlow("Lepuitdefou")
var password = MutableStateFlow("13456")
var passwordConfirm = MutableStateFlow("13456")
var cityCode = MutableStateFlow("44300")
var city = MutableStateFlow("Nantes")
var phone = MutableStateFlow("0612326699")
fun callSignUpApi(){
AppDialogHelpers.get().showDialog("Inscription en cours");
viewModelScope.launch {
// Preparer le DTO à envoyer dans request body
// Le DTO qui contient : email et password
val signUpRequestDTO = SignUpRequestDTO(email.value, pseudo.value, password.value,
passwordConfirm.value, cityCode.value, city.value, phone.value);
// Appel api async
val responseService = AuthService.AuthApi.authService.signup(signUpRequestDTO);
// Fermer la popup de chargement aprés l'appel de API
AppDialogHelpers.get().closeDialog()
// Si connexion ok
if (responseService.code.equals("200")){
//AlertDialogHelpers.get().show(responseService.message, onClose = { onSuccess() })
AlertDialogHelpers.get().show(responseService.message, onClose = {})
}
else{
// Erreur
AlertDialogHelpers.get().show(responseService.message, onClose = {})
}
}
}
}