Correction TP6

This commit is contained in:
Chocolaterie
2025-01-28 14:36:05 +01:00
parent 348509825b
commit 87bf72571a
3 changed files with 48 additions and 6 deletions

View File

@@ -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<SignUpRequestDTO>
@POST("reset-password")
suspend fun resetPassword(@Body email: EmailDTO) : ServiceResponseDTO<String>
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,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())
}

View File

@@ -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 = {})
}
}
}