From 87bf72571a95a3f7607e54dceedc9f915efba3ec Mon Sep 17 00:00:00 2001 From: Chocolaterie <110991127+Chocolaterie@users.noreply.github.com> Date: Tue, 28 Jan 2025 14:36:05 +0100 Subject: [PATCH] Correction TP6 --- .../example/tpfilrouge/auth/AuthService.kt | 7 +++++ .../tpfilrouge/auth/ResetPasswordActivity.kt | 18 ++++++++---- .../tpfilrouge/auth/ResetPasswordViewModel.kt | 29 +++++++++++++++++++ 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordViewModel.kt diff --git a/app/src/main/java/com/example/tpfilrouge/auth/AuthService.kt b/app/src/main/java/com/example/tpfilrouge/auth/AuthService.kt index 80f4ac1..97acf96 100644 --- a/app/src/main/java/com/example/tpfilrouge/auth/AuthService.kt +++ b/app/src/main/java/com/example/tpfilrouge/auth/AuthService.kt @@ -7,6 +7,10 @@ import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.POST +data class EmailDTO(var email: String) { + +} + interface AuthService { @POST("login") @@ -15,6 +19,9 @@ interface AuthService { @POST("signup") suspend fun signup(@Body signUpRequestDTO: SignUpRequestDTO) : ServiceResponseDTO + @POST("reset-password") + suspend fun resetPassword(@Body email: EmailDTO) : ServiceResponseDTO + object AuthApi { val authService : AuthService by lazy { retrofit.create(AuthService::class.java) } } diff --git a/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordActivity.kt b/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordActivity.kt index dc8292d..f9b7101 100644 --- a/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordActivity.kt +++ b/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordActivity.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,18 +21,22 @@ import com.example.tpfilrouge.ui.theme.EniPage import com.example.tpfilrouge.ui.theme.EniTextField class ResetPasswordActivity : ComponentActivity() { + + var resetPasswordViewModel = ResetPasswordViewModel(); + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { - ResetPasswordActivityPage() + ResetPasswordActivityPage(resetPasswordViewModel) } } } - @Composable -fun ResetPasswordActivityPage() { +fun ResetPasswordActivityPage(resetPasswordViewModel: ResetPasswordViewModel) { + val emailField by resetPasswordViewModel.email.collectAsState(); + EniPage { Column( horizontalAlignment = Alignment.CenterHorizontally, @@ -39,8 +45,8 @@ fun ResetPasswordActivityPage() { painter = painterResource(id = R.drawable.reset_password_ic), contentDescription = "Logo SignUp", modifier = Modifier.padding(vertical = 40.dp)) - EniTextField("Email") - EniButton("Envoyer le lien de récupération", onClick = {}) + EniTextField("Email", value = emailField, onValueChange = { value -> resetPasswordViewModel.email.value = value}) + EniButton("Envoyer le lien de récupération", onClick = { resetPasswordViewModel.callResetPasswordApi() }) } } } @@ -48,5 +54,5 @@ fun ResetPasswordActivityPage() { @Preview(showBackground = true) @Composable fun ResetPasswordActivityPreview() { - ResetPasswordActivityPage() + ResetPasswordActivityPage(ResetPasswordViewModel()) } \ No newline at end of file diff --git a/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordViewModel.kt b/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordViewModel.kt new file mode 100644 index 0000000..40632b2 --- /dev/null +++ b/app/src/main/java/com/example/tpfilrouge/auth/ResetPasswordViewModel.kt @@ -0,0 +1,29 @@ +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 ResetPasswordViewModel : ViewModel() { + + var email = MutableStateFlow("isaac@gmail.com") + + fun callResetPasswordApi(){ + AppDialogHelpers.get().showDialog("Envoie du mail de réinitialisation"); + + viewModelScope.launch { + // Appel api async + val emailDTO = EmailDTO(email.value); + val responseService = AuthService.AuthApi.authService.resetPassword(emailDTO); + + // Fermer la popup de chargement aprés l'appel de API + AppDialogHelpers.get().closeDialog() + + // Afficher le resultat de l'api + AlertDialogHelpers.get().show(responseService.message, onClose = {}) + } + } +} \ No newline at end of file