// Firebase V9 ESM seulement import { initializeApp } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-app.js"; import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, onAuthStateChanged, signOut } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-auth.js"; import { getFirestore, collection, addDoc, doc, setDoc } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-firestore.js"; import { query, where, getDocs } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-firestore.js"; const firebaseConfig = { apiKey: "AIzaSyBXKB6AGbTN95lOLrIVpWrSIK_uL_C6GUA", authDomain: "music-app-riotjs.firebaseapp.com", projectId: "music-app-riotjs", storageBucket: "music-app-riotjs.firebasestorage.app", messagingSenderId: "483729603961", appId: "1:483729603961:web:122965ce7dbeb2e85103a8", measurementId: "G-18P6WCT80" }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); const db = getFirestore(app); export async function login(email, password) { const userC = await signInWithEmailAndPassword(auth, email, password); localStorage.setItem("uid", userC.user.uid); return userC; } export async function sign(email, password) { const userCred = await createUserWithEmailAndPassword(auth, email, password); await adduserdata(userCred.user.email, userCred.user.uid); localStorage.setItem("uid", userCred.user.uid); return userCred; } export async function adduserdata(email_user, uid) { await addDoc(collection(db, "users"), { email: email_user, uid: uid }); } export async function logout() { await signOut(auth); } window.observeAuthState = function(callback) { onAuthStateChanged(auth, callback); }; export async function favorite(releaseId) { const storedUid = localStorage.getItem("uid"); const usersRef = collection(db, "users"); const q = query(usersRef, where("uid", "==", storedUid)); const querySnapshot = await getDocs(q); const userDoc = querySnapshot.docs[0]; const userDocId = userDoc.id; const favoritesRef = collection(db, "users", userDocId, "favorites"); await addDoc(favoritesRef, { releaseId: releaseId, }); } export async function getFavorites() { const storedUid = localStorage.getItem("uid"); if (!storedUid) { console.warn("Aucun UID trouvé dans localStorage."); return []; } const usersRef = collection(db, "users"); const q = query(usersRef, where("uid", "==", storedUid)); const querySnapshot = await getDocs(q); if (querySnapshot.empty) { console.warn("Aucun document utilisateur trouvé avec cet UID."); return []; } const userDoc = querySnapshot.docs[0]; const userDocId = userDoc.id; const favoritesRef = collection(db, "users", userDocId, "favorites"); const snapshot = await getDocs(favoritesRef); return snapshot.docs.map(doc => doc.data().releaseId); } export async function isFavorite(releaseId) { const storedUid = localStorage.getItem("uid"); if (!storedUid) return false; const usersRef = collection(db, "users"); const userQuery = query(usersRef, where("uid", "==", storedUid)); const userSnapshot = await getDocs(userQuery); if (userSnapshot.empty) return false; const userDoc = userSnapshot.docs[0]; const userDocId = userDoc.id; const favoritesRef = collection(db, "users", userDocId, "favorites"); const favQuery = query(favoritesRef, where("releaseId", "==", releaseId)); const favSnapshot = await getDocs(favQuery); return !favSnapshot.empty; } export async function removeFavorite(releaseId) { const storedUid = localStorage.getItem("uid"); const usersRef = collection(db, "users"); const userQuery = query(usersRef, where("uid", "==", storedUid)); const userSnapshot = await getDocs(userQuery); const userDoc = userSnapshot.docs[0]; const userDocId = userDoc.id; const favoritesRef = collection(db, "users", userDocId, "favorites"); const favQuery = query(favoritesRef, where("releaseId", "==", releaseId)); const favSnapshot = await getDocs(favQuery); await deleteDoc(doc.ref); console.log(`Le favori avec releaseId ${releaseId} a été supprimé.`); } window.login = login; window.sign = sign; window.logout = logout; window.favorite = favorite; window.getFavorites = getFavorites; window.isFavorite = isFavorite; window.removeFavorite = removeFavorite;