diff --git a/docs/cal.com.md b/docs/cal.com.md index 915fdca4bee8246257a7446d44d60cf84d3af968..e77616c3a53ee2e70d0f1d6262a867bba27c20ca 100644 --- a/docs/cal.com.md +++ b/docs/cal.com.md @@ -2,8 +2,5 @@ LanguageLab utilise le site https://cal.com pour programmer les séances entre l Afin que l'intégration soit réussie, il est nécessaire de suivre les étapes suivantes: - Créer un compte sur https://cal.com. - - Créer un nouveau type d'événement de 60 mins (https://app.cal.com/event-types -> [+ Nouveau]). - - Créer un webhook (onglet "Webhooks") avec l'URL https://languagelab.sipr.ucl.ac.be/api/v1/webhooks/sessions comme Lien de l'abonné. Tous les "Déclencheurs d'évènement" (triggers) peuvent être laissés tels quel. "Secret" peut être laissé vide. [Créer un webhook] -  - - Copier le lien vers l'évènement [🔗], p.ex. https://cal.com/username/eventtype - - Coller le lien dans https://languagelab.sipr.ucl.ac.be/tutor/timeslots. + - Créer un nouveau type d'événement de 60 mins (https://app.cal.com/event-types -> [+ Nouveau]) avec un nom cohérent, par exemple `languagelab-tutorat` + - Indiquer le lien de l'évenement dans https://languagelab.sipr.ucl.ac.be/tutor/timeslots. Example: `username/languagelab-tutorat` diff --git a/frontend/src/lang/fr.json b/frontend/src/lang/fr.json index fcd432fabb6f505d68107857e506adeaab910c4f..ee50fe12993e082decb775762e7cee5f813f2701 100644 --- a/frontend/src/lang/fr.json +++ b/frontend/src/lang/fr.json @@ -40,7 +40,9 @@ "currentSessions": "Sessions en cours", "plannedSessions": "Sessions planifiées", "pastSessions": "Sessions terminées", - "newContact": "Ajouter un contact" + "newContact": "Ajouter un contact", + "bookingSuccessful": "Session réservée avec succès", + "bookingFailed": "Erreur lors de la réservation de la session" }, "login": { "email": "E-mail", diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 5b3bd9189bbd44e75e4a2b56fdafe8b51d08d27e..5acdde5d92dccd0f59531a4e641de84da689efb3 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -17,7 +17,8 @@ getUserContactSessionsAPI } from '$lib/api/users'; import { createSessionFromCalComAPI } from '$lib/api/sessions'; - import { toastAlert, toastWarning } from '$lib/utils/toasts'; + import { toastAlert, toastSuccess, toastWarning } from '$lib/utils/toasts'; + import { get } from 'svelte/store'; let ready = false; $: contacts = [] as User[]; @@ -82,16 +83,27 @@ // @ts-ignore Cal('on', { action: 'bookingSuccessful', - callback: (e: any) => { + callback: async (e: any) => { if (!contact || !$user || !e.detail.data) { - toastAlert('Automatic session creation failed'); + toastAlert(get(t)('home.bookingFailed')); return; } - let date = new Date(e.detail.data.date); - let duration = e.detail.data.duration; - let end = new Date(date.getTime() + duration * 60000); - createSessionFromCalComAPI($user.id, contact.id, date, end); + const date = new Date(e.detail.data.date); + const duration = e.detail.data.duration; + const end = new Date(date.getTime() + duration * 60000); + const sess_id: number | null = await createSessionFromCalComAPI( + $user.id, + contact.id, + date, + end + ); + if (!sess_id) { + toastAlert(get(t)('home.bookingFailed')); + return; + } + toastSuccess(get(t)('home.bookingSuccessful')); + contactSessions = Session.parseAll(await getUserContactSessionsAPI($user!.id, contact.id)); } }); });