From bd20abb745e161f7cda215d4650a6a709909acb3 Mon Sep 17 00:00:00 2001 From: yolou Date: Fri, 20 Mar 2026 03:06:30 +0100 Subject: [PATCH] MAJ --- parcoursup/app.riot | 55 ++++++++++++------ parcoursup/components/auth-panel.riot | 80 ++++++++++++++++++-------- parcoursup/components/detail-view.riot | 16 +++++- parcoursup/components/search-bar.riot | 31 +++++++--- parcoursup/firebase.js | 39 +++++++++---- parcoursup/formation.js | 18 +++--- 6 files changed, 167 insertions(+), 72 deletions(-) diff --git a/parcoursup/app.riot b/parcoursup/app.riot index c682447..34d8e93 100644 --- a/parcoursup/app.riot +++ b/parcoursup/app.riot @@ -167,32 +167,36 @@ onMounted() { var saved = localStorage.getItem('selectionFormations') + var self = this + // Charger la sélection locale si elle existe if (saved) { try { this.state.selectedFormations = JSON.parse(saved) } catch (e) { - console.error(e) + console.error('Erreur lecture localStorage :', e) } } - var self = this - - // Écouter les changements d'authentification Firebase + // Écouter les changements de connexion Firebase window.firebaseServices.onUserChanged(function(user) { + self.update({ user: user }) + // Si un utilisateur vient de se connecter, charger sa sélection depuis Firestore if (user) { - // Charger la sélection depuis Firestore - window.firebaseServices.loadUserData(user.uid).then(function(data) { - if (data && data.selection) { - self.update({ selectedFormations: data.selection }) - localStorage.setItem('selectionFormations', JSON.stringify(data.selection)) - } - }).catch(function(err) { - console.error('Erreur chargement Firestore:', err) - }) + window.firebaseServices.loadUserData(user.uid) + .then(function(data) { + if (data && data.selection) { + self.update({ selectedFormations: data.selection }) + localStorage.setItem('selectionFormations', JSON.stringify(data.selection)) + } + }) + .catch(function(err) { + console.error('Erreur chargement Firestore :', err) + }) } + }) window.addEventListener('hashchange', function() { @@ -202,26 +206,31 @@ this.handleRoute() }, + // Appelée après une connexion ou inscription réussie onUserAuth() { - // Appelé après connexion/inscription réussie — l'écouteur onUserChanged gère le reste + // L'écouteur onUserChanged dans onMounted gère automatiquement le reste }, + // Appelée après une déconnexion onUserLogout() { - // Vider la sélection locale à la déconnexion → obligé de se reconnecter pour retrouver ses formations + // On vide la sélection : l'utilisateur doit se reconnecter pour retrouver ses formations this.update({ selectedFormations: [] }) localStorage.removeItem('selectionFormations') }, + // Sauvegarder la sélection en local ET dans Firestore si connecté async saveSelection(selection) { + localStorage.setItem('selectionFormations', JSON.stringify(selection)) if (this.state.user) { try { await window.firebaseServices.saveUserData(this.state.user.uid, { selection: selection }) } catch (err) { - console.error('Erreur sauvegarde Firestore:', err) + console.error('Erreur sauvegarde Firestore :', err) } } + }, handleRoute() { @@ -397,9 +406,17 @@ this.saveSelection([]) }, - updateNote(e) { this.update({ note: Number(e.target.value) }) }, - updateSerie(e) { this.update({ serie: e.target.value }) }, - updateSort(e) { this.update({ sortBy: e.target.value }) }, + updateNote(e) { + this.update({ note: Number(e.target.value) }) + }, + + updateSerie(e) { + this.update({ serie: e.target.value }) + }, + + updateSort(e) { + this.update({ sortBy: e.target.value }) + }, getSortedSelection() { var selection = this.state.selectedFormations.slice() diff --git a/parcoursup/components/auth-panel.riot b/parcoursup/components/auth-panel.riot index d601e3f..5baf79d 100644 --- a/parcoursup/components/auth-panel.riot +++ b/parcoursup/components/auth-panel.riot @@ -1,38 +1,39 @@ - + +
- + - +
+ -

{ state.mode === 'login' ? 'Connexion' : 'Créer un compte' }

+

{ state.titre }

+
- -
+
+
+
+
{ state.error }
+
+
diff --git a/parcoursup/components/detail-view.riot b/parcoursup/components/detail-view.riot index 55c5dc0..57a513a 100644 --- a/parcoursup/components/detail-view.riot +++ b/parcoursup/components/detail-view.riot @@ -191,7 +191,7 @@ - +