@ -99,13 +99,13 @@ fun ProfilPage(index: Int, navController: NavController, services: IServices) {
ImageProfil ( user . imgUrl , 120 )
SpaceHeightComponent ( 16 )
EditUsername ( user . username )// Édition du Username
EditUsername ( user . username , index , services )// Édition du Username
SpaceHeightComponent ( 16 )
EditEmail ( user . email )// Édition du Email
EditEmail ( user . email ,index , services )// Édition du Email
Spacer ( modifier = Modifier . height ( 8. dp ) )
EditPasswd ( )
EditPasswd ( index , services )
SpaceHeightComponent ( 16 )
// Bouton
@ -133,20 +133,27 @@ fun ImageProfil(imgProfil : String, size :Int){
}
@Composable
fun EditEmail ( userEmail : String ) {
fun EditEmail ( userEmail : String , index : Int , service : IServices ) {
var email by remember { mutableStateOf ( userEmail ) }
var isEditingEmail by remember { mutableStateOf ( false ) }
var emailError by remember { mutableStateOf ( false ) }
fun onDoneEditing ( ) {
service . EditEmail ( email , index )
isEditingEmail = false
}
if ( isEditingEmail ) {
EmailEditingField (
email = email ,
onEmailChange = { newEmail ->
email = newEmail
emailError = ! Patterns . EMAIL_ADDRESS . matcher ( newEmail ) . matches ( )
emailError = ! Patterns . EMAIL_ADDRESS . matcher ( newEmail ) . matches ( ) // Validation email
} ,
onDone = {
if ( ! emailError ) isEditingEmail = false
if ( ! emailError ) {
onDoneEditing ( )
}
} ,
emailError = emailError
)
@ -212,18 +219,21 @@ fun DisplayEmail(email: String, onEdit: () -> Unit) {
@Composable
fun EditUsername ( userName : String ) {
fun EditUsername ( userName : String , index : Int , service : IServices ) {
var username by remember { mutableStateOf ( userName ) }
var isEditingUsername by remember { mutableStateOf ( false ) }
fun onDoneEditing ( ) {
service . EditUsername ( username , index )
isEditingUsername = false
}
if ( isEditingUsername ) {
UsernameEditingField (
username = username ,
onUsernameChange = { username = it } ,
onDone = { isEditingUsername = false }
onDone = { onDoneEditing( ) }
)
} else {
DisplayUsername ( username = username , onEdit = { isEditingUsername = true } )
@ -246,7 +256,7 @@ fun UsernameEditingField(
imeAction = ImeAction . Done
) ,
keyboardActions = KeyboardActions (
onDone = { onDone ( ) } // Quand on appuie sur "Done", on met fin à l'édition
onDone = { onDone ( ) }
) ,
trailingIcon = {
IconButton ( onClick = { onDone ( ) } ) {
@ -279,18 +289,22 @@ fun DisplayUsername(username: String, onEdit: () -> Unit) {
@Composable
fun EditPasswd ( ) {
var password by remember { mutableStateOf ( " ******* " ) }
fun EditPasswd ( index : Int , service : IServices ) {
var password by remember { mutableStateOf ( " ******* " ) } // Mot de passe actuel (affiché comme un masque)
var isEditingPassword by remember { mutableStateOf ( false ) }
var newPassword by remember { mutableStateOf ( " " ) }
var confirmPassword by remember { mutableStateOf ( " " ) }
var passwordVisible by remember { mutableStateOf ( false ) }
var passwordError by remember { mutableStateOf ( false ) }
// Fonction pour finaliser l'édition du mot de passe et appeler la méthode EditPasswd2
fun onDoneEditing ( ) {
// Appeler EditPasswd2 pour mettre à jour le mot de passe de l'utilisateur
service . EditPasswd ( newPassword , index )
isEditingPassword = false
}
if ( isEditingPassword ) {
PasswordEditingFields (
newPassword = newPassword ,
@ -298,20 +312,19 @@ fun EditPasswd() {
onNewPasswordChange = { newPassword = it } ,
onConfirmPasswordChange = {
confirmPassword = it
passwordError = newPassword != it
passwordError = newPassword != it // Vérifier si les mots de passe correspondent
} ,
passwordVisible = passwordVisible ,
onPasswordVisibilityChange = { passwordVisible = it } ,
passwordError = passwordError ,
onDone = {
if ( ! passwordError && newPassword . isNotEmpty ( ) ) {
password = newPassword
isEditingPassword = false
onDoneEditing ( ) // Appeler la fonction onDoneEditing() pour mettre à jour le mot de passe
}
}
)
} else {
DisplayPassword ( onEdit = { isEditingPassword = true } )
DisplayPassword ( onEdit = { isEditingPassword = true } ) // Afficher l'option pour modifier le mot de passe
}
}