Skip to content
Extraits de code Groupes Projets
Valider 010353d0 rédigé par DavePk04's avatar DavePk04
Parcourir les fichiers

Connect form submission to PATCH user API endpoint

parent f543d7ca
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!47Resolve "Allow Tutors to Reset Their Availabilities"
Ce commit fait partie de la requête de fusion !47. Les commentaires créés ici seront créés dans le contexte de cette requête de fusion.
...@@ -11,6 +11,9 @@ ...@@ -11,6 +11,9 @@
"tutor": { "tutor": {
"profile": "My profile", "profile": "My profile",
"update": "Update", "update": "Update",
"updatedSuccessfully": "Profile updated successfully",
"updateError": "Error updating profile",
"userNotFound": "User not found",
"selectGender": "Select your gender", "selectGender": "Select your gender",
"bio": "Biography", "bio": "Biography",
"availabilities": "Availabilities" "availabilities": "Availabilities"
......
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
}, },
"tutor": { "tutor": {
"profile": "Mon profil", "profile": "Mon profil",
"updatedSuccessfully": "Profil mis à jour avec succès",
"updateError": "Erreur lors de la mise à jour du profil",
"userNotFound": "Utilisateur non trouvé",
"update": "Confirmer", "update": "Confirmer",
"selectGender": "Sélectionnez votre genre", "selectGender": "Sélectionnez votre genre",
"bio": "Biographie", "bio": "Biographie",
......
<script lang="ts"> <script lang="ts">
import { t } from '$lib/services/i18n'; import { t } from '$lib/services/i18n';
import { patchUserAPI } from '$lib/api/users';
import type { PageData } from './$types'; import type { PageData } from './$types';
let { data }: { data: PageData } = $props(); let { data }: { data: PageData } = $props();
const formatBirthdate = (dateStr: string | undefined): string => { const formatBirthdate = (dateStr: string | Date | undefined): string => {
if (!dateStr) return ''; if (!dateStr) return '';
const isoDate = dateStr.split('T')[0]; const date = new Date(dateStr);
if (/^\d{4}-\d{2}-\d{2}$/.test(isoDate)) return isoDate; if (!isNaN(date.getTime())) {
const [day, month, year] = dateStr.split('/'); return date.toISOString().split('T')[0];
if (year?.length === 4) { }
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`; if (typeof dateStr === 'string') {
const [day, month, year] = dateStr.split('/');
if (year?.length === 4) {
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
}
} }
return ''; return '';
}; };
let email = data.user?.email || ''; let email = data.user?.email || '';
let nickname = data.user?.nickname || ''; let nickname = data.user?.nickname || '';
let birthdate = formatBirthdate( let birthdate = formatBirthdate(data.user?.birthdate ?? undefined);
data.user?.birthdate ? data.user.birthdate.toString() : undefined
);
let gender = data.user?.gender || ''; let gender = data.user?.gender || '';
let bio = data.user?.bio || ''; let bio = data.user?.bio || '';
let availabilities = data.user?.availabilities let availabilities = data.user?.availabilities
? JSON.stringify(data.user.availabilities, null, 2) ? JSON.stringify(data.user.availabilities, null, 2)
: ''; : '';
function updateProfile() { async function updateProfile() {
let parsedAvailabilities;
try { try {
parsedAvailabilities = availabilities ? JSON.parse(availabilities) : []; const parsedAvailabilities = availabilities ? JSON.parse(availabilities) : [];
console.log('birth:', new Date(birthdate).toISOString());
const updateData = {
email,
nickname,
birthdate,
gender,
bio,
availabilities: parsedAvailabilities
};
let success = false;
if (data.user) {
success = await patchUserAPI(fetch, data.user.id, updateData);
} else {
throw new Error($t('header.tutor.userNotFound'));
}
console.log('Update success:', success);
if (success) {
alert($t('header.tutor.updatedSuccessfully'));
} else {
alert($t('header.tutor.updateError'));
}
} catch (error) { } catch (error) {
alert($t('errors.invalidAvailabilities')); console.error('Update failed:', error);
return; alert(error instanceof Error ? error.message : $t('errors.updateFailed'));
} }
console.log({
email,
nickname,
birthdate,
gender,
bio,
availabilities: parsedAvailabilities
});
alert($t('profile.updatedSuccessfully'));
} }
</script> </script>
...@@ -132,10 +145,7 @@ ...@@ -132,10 +145,7 @@
></textarea> ></textarea>
</div> </div>
<button <button type="submit" class="button">
type="submit"
class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-2 px-4 rounded-md shadow-md focus:outline-none focus:ring focus:ring-indigo-200"
>
{$t('header.tutor.update')} {$t('header.tutor.update')}
</button> </button>
</form> </form>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter