169 lines
4.7 KiB
JavaScript
169 lines
4.7 KiB
JavaScript
// 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,
|
|
deleteDoc
|
|
} 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, type) {
|
|
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,
|
|
Type: type,
|
|
});
|
|
}
|
|
|
|
|
|
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 => {
|
|
const data = doc.data();
|
|
return {
|
|
releaseId: data.releaseId,
|
|
Type: data.Type
|
|
};
|
|
});
|
|
}
|
|
|
|
export async function isFavorite(releaseId, type) {
|
|
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), where("Type", "==", type));
|
|
const favSnapshot = await getDocs(favQuery);
|
|
|
|
if (!favSnapshot.empty) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export async function removeFavorite(releaseId, type) {
|
|
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), where("Type", "==", type));
|
|
const favSnapshot = await getDocs(favQuery);
|
|
|
|
await deleteDoc(favSnapshot.docs[0].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; |