This commit is contained in:
2025-03-28 16:27:07 +01:00
parent d2848447b6
commit 6d33ec5727
7 changed files with 216 additions and 59 deletions

View File

@@ -16,6 +16,12 @@ import {
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",
@@ -31,17 +37,22 @@ const auth = getAuth(app);
const db = getFirestore(app);
export async function login(email, password) {
await signInWithEmailAndPassword(auth, 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);
await adduserdata(userCred.user.email, userCred.user.uid);
localStorage.setItem("uid", userC.user.uid);
return userCred;
}
export async function adduserdata(email_user) {
export async function adduserdata(email_user, uid) {
await addDoc(collection(db, "users"), {
email: email_user
email: email_user,
uid: uid
});
}
@@ -53,32 +64,80 @@ window.observeAuthState = function(callback) {
onAuthStateChanged(auth, callback);
};
export async function favorite(releaseId) {
const user = auth.currentUser;
if (!user) return;
await addDoc(collection(db, "users", user.email, "favorites"), {
id: 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 user = auth.currentUser;
if (!user) {
console.warn("Aucun utilisateur connecté.");
const storedUid = localStorage.getItem("uid");
if (!storedUid) {
console.warn("Aucun UID trouvé dans localStorage.");
return [];
}
const userDocRef = doc(db, "users", user.email);
const favsCollection = collection(userDocRef, "favorites");
const usersRef = collection(db, "users");
const q = query(usersRef, where("uid", "==", storedUid));
const querySnapshot = await getDocs(q);
const snapshot = await getDocs(favsCollection);
const favorites = snapshot.docs.map(doc => doc.data());
if (querySnapshot.empty) {
console.warn("Aucun document utilisateur trouvé avec cet UID.");
return [];
}
return favorites;
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;
// Recherche l'utilisateur avec le bon uid
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;
// Recherche si le releaseId existe déjà dans les favoris
const favoritesRef = collection(db, "users", userDocId, "favorites");
const favQuery = query(favoritesRef, where("releaseId", "==", releaseId));
const favSnapshot = await getDocs(favQuery);
return !favSnapshot.empty; // true = en favori, false = pas en favori
}
window.login = login;
window.sign = sign;
window.logout = logout;
window.favorite = favorite;
window.getFavorites = getFavorites;
window.getFavorites = getFavorites;
window.isFavorite = isFavorite;