This commit is contained in:
2026-03-20 03:06:30 +01:00
parent 864f5c1940
commit bd20abb745
6 changed files with 167 additions and 72 deletions
+36 -19
View File
@@ -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()