diff --git a/components/app.riot b/components/app.riot index 8b18034..776b5db 100644 --- a/components/app.riot +++ b/components/app.riot @@ -40,7 +40,8 @@
- item.isFavorite ? this.removeFavoris(item.id) : this.addFavoris(item.id)}> + {console.log(item.isFavorite)} + item.isFavorite ? this.removeFavoris(item.id, item.type) : this.addFavoris(item.id, item.type)}> @@ -93,7 +94,7 @@ const result = await window.discogsearch(query, type, page); console.log(result); - const favoritePromises = result.results.map(item => window.isFavorite(item.id)); + const favoritePromises = result.results.map(item => window.isFavorite(item.id, item.type)); const favoritesResults = await Promise.all(favoritePromises); const enrichedItems = result.results.map((item, index) => ({ @@ -123,22 +124,19 @@ this.update(); }, - addFavoris(id) { - window.favorite(id) + addFavoris(id, type) { + window.favorite(id, type); this.searchs.items = this.searchs.items.map(item => item.id === id ? { ...item, isFavorite: true } : item ); - this.update(); }, - async removeFavoris(id) { - await window.removeFavorite(id); - + async removeFavoris(id, type) { + await window.removeFavorite(id, type); this.searchs.items = this.searchs.items.map(item => item.id === id ? { ...item, isFavorite: false } : item ); - this.update(); }, diff --git a/components/favorites.riot b/components/favorites.riot index 580673d..8ecf2ad 100644 --- a/components/favorites.riot +++ b/components/favorites.riot @@ -12,11 +12,11 @@
0}>
- removeFavoris(item.id)}> + removeFavoris(item.id, item.type)}> - -

{item.title}

+
+

{item.artists[0].name} – {item.title}

cover

{item.year}

@@ -40,34 +40,32 @@ }, async onMounted() { - const ids = await window.getFavorites(); + const favs = await window.getFavorites(); const items = []; - for (const id of ids) { - const release = await window.getReleaseDetails(id); - items.push(release); + + for (const fav of favs) { + let data; + if (fav.Type === "master") { + data = await window.getMasterDetails(fav.releaseId); + } else { + data = await window.getReleaseDetails(fav.releaseId); + } + + items.push({ + ...data, + type: fav.Type + }); } - const masterPromises = items.map(item => isMaster(item.id, item.master_id)); - const masterResults = await Promise.all(masterPromises); - - const enrichedItems = result.results.map((item, index) => ({ - ...item, - isMaster: masterResults[index] - })); - - this.state.favorites.items = enrichedItems; + this.state.favorites.items = items; this.state.loading = false; console.log(this.state) this.update(); }, - ismaster(id , master_id){ - return id === master_id; - }, - - async removeFavoris(id) { - await window.removeFavorite(id); + async removeFavoris(id, type) { + await window.removeFavorite(id, type); this.state.favorites.items = this.state.favorites.items.filter(item => item.id !== id); this.update(); } diff --git a/services/firebaseService.js b/services/firebaseService.js index ea0bbc6..a336199 100644 --- a/services/firebaseService.js +++ b/services/firebaseService.js @@ -65,7 +65,7 @@ window.observeAuthState = function(callback) { }; -export async function favorite(releaseId) { +export async function favorite(releaseId, type) { const storedUid = localStorage.getItem("uid"); const usersRef = collection(db, "users"); @@ -80,6 +80,7 @@ export async function favorite(releaseId) { await addDoc(favoritesRef, { releaseId: releaseId, + Type: type, }); } @@ -107,10 +108,16 @@ export async function getFavorites() { const favoritesRef = collection(db, "users", userDocId, "favorites"); const snapshot = await getDocs(favoritesRef); - return snapshot.docs.map(doc => doc.data().releaseId); + return snapshot.docs.map(doc => { + const data = doc.data(); + return { + releaseId: data.releaseId, + Type: data.Type + }; + }); } -export async function isFavorite(releaseId) { +export async function isFavorite(releaseId, type) { const storedUid = localStorage.getItem("uid"); if (!storedUid) return false; @@ -124,13 +131,17 @@ export async function isFavorite(releaseId) { const userDocId = userDoc.id; const favoritesRef = collection(db, "users", userDocId, "favorites"); - const favQuery = query(favoritesRef, where("releaseId", "==", releaseId)); + const favQuery = query(favoritesRef, where("releaseId", "==", releaseId), where("Type", "==", type)); const favSnapshot = await getDocs(favQuery); - return !favSnapshot.empty; + if (!favSnapshot.empty) { + return true; + } else { + return false; + } } -export async function removeFavorite(releaseId) { +export async function removeFavorite(releaseId, type) { const storedUid = localStorage.getItem("uid"); const usersRef = collection(db, "users"); @@ -141,7 +152,7 @@ export async function removeFavorite(releaseId) { const userDocId = userDoc.id; const favoritesRef = collection(db, "users", userDocId, "favorites"); - const favQuery = query(favoritesRef, where("releaseId", "==", releaseId)); + const favQuery = query(favoritesRef, where("releaseId", "==", releaseId), where("Type", "==", type)); const favSnapshot = await getDocs(favQuery); await deleteDoc(favSnapshot.docs[0].ref);