|
|
|
@ -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
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|