From 348509825bcf4a9a7055752a93dac61adc774695 Mon Sep 17 00:00:00 2001
From: Chocolaterie <110991127+Chocolaterie@users.noreply.github.com>
Date: Tue, 28 Jan 2025 12:16:09 +0100
Subject: [PATCH] Correction Sign Up
---
app/src/main/AndroidManifest.xml | 5 +-
.../example/tpfilrouge/auth/AuthService.kt | 3 ++
.../example/tpfilrouge/auth/SignUpActivity.kt | 36 ++++++++++-----
.../tpfilrouge/auth/SignUpRequestDTO.kt | 7 +++
.../tpfilrouge/auth/SignUpViewModel.kt | 46 +++++++++++++++++++
5 files changed, 84 insertions(+), 13 deletions(-)
create mode 100644 app/src/main/java/com/example/tpfilrouge/auth/SignUpRequestDTO.kt
create mode 100644 app/src/main/java/com/example/tpfilrouge/auth/SignUpViewModel.kt
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1a15121..23736f1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,9 +29,10 @@
android:theme="@style/Theme.TpFilRouge" />
+ android:theme="@style/Theme.TpFilRouge">
+
+ @POST("signup")
+ suspend fun signup(@Body signUpRequestDTO: SignUpRequestDTO) : ServiceResponseDTO
+
object AuthApi {
val authService : AuthService by lazy { retrofit.create(AuthService::class.java) }
}
diff --git a/app/src/main/java/com/example/tpfilrouge/auth/SignUpActivity.kt b/app/src/main/java/com/example/tpfilrouge/auth/SignUpActivity.kt
index dacc62c..e7132bc 100644
--- a/app/src/main/java/com/example/tpfilrouge/auth/SignUpActivity.kt
+++ b/app/src/main/java/com/example/tpfilrouge/auth/SignUpActivity.kt
@@ -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())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tpfilrouge/auth/SignUpRequestDTO.kt b/app/src/main/java/com/example/tpfilrouge/auth/SignUpRequestDTO.kt
new file mode 100644
index 0000000..c62b217
--- /dev/null
+++ b/app/src/main/java/com/example/tpfilrouge/auth/SignUpRequestDTO.kt
@@ -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
+ ) {
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tpfilrouge/auth/SignUpViewModel.kt b/app/src/main/java/com/example/tpfilrouge/auth/SignUpViewModel.kt
new file mode 100644
index 0000000..ea7b34f
--- /dev/null
+++ b/app/src/main/java/com/example/tpfilrouge/auth/SignUpViewModel.kt
@@ -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 = {})
+ }
+ }
+ }
+}