From 213c8394c306ce658223af01518e39c48248cb2e Mon Sep 17 00:00:00 2001 From: Ryderjj89 Date: Sun, 28 Sep 2025 13:50:57 -0400 Subject: [PATCH] Make favorites version-aware - verses only appear favorited in the version they were saved in - Updated loadFavorites to filter favorites by version: only show favorites for current version - Modified removeFavorite to match version when deleting specific favorites - Added version to useEffect dependencies so favorites refresh when version changes - Backend already supports version-specific favorites via database schema Now users can favorite Genesis 1:1 in both ESV and NKJV independently - switching versions shows correct favorited states. --- frontend/src/components/BibleReader.tsx | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/BibleReader.tsx b/frontend/src/components/BibleReader.tsx index 1114c15e..b3984c77 100644 --- a/frontend/src/components/BibleReader.tsx +++ b/frontend/src/components/BibleReader.tsx @@ -48,30 +48,30 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format } }, [loading, content]); - // Load favorites when user is available + // Load favorites when user is available and reload when version changes useEffect(() => { if (user) { loadFavorites(); } - }, [user, book, chapter]); + }, [user, book, chapter, version]); const loadFavorites = async () => { if (!user) return; - + try { const response = await fetch('/api/favorites', { credentials: 'include' }); - + if (response.ok) { const data = await response.json(); const favoriteStrings: string[] = data.favorites - .filter((fav: any) => fav.book === book && fav.chapter === chapter && fav.verse_start) // Only verse-level favorites for this chapter + .filter((fav: any) => fav.book === book && fav.chapter === chapter && fav.verse_start && fav.version === version) // Only verse-level favorites for this chapter and version .map((fav: any) => fav.verse_end ? `${fav.verse_start}-${fav.verse_end}` : fav.verse_start.toString()); - + const verseFavorites = new Set(favoriteStrings); setFavorites(verseFavorites); - console.log('Loaded verse favorites:', favoriteStrings); + console.log('Loaded verse favorites for version:', version, favoriteStrings); } } catch (error) { console.error('Failed to load favorites:', error); @@ -92,10 +92,11 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format if (response.ok) { const data = await response.json(); - const verseFavorite = data.favorites.find((fav: any) => - fav.book === book && - fav.chapter === chapter && - fav.verse_start === parseInt(verseNumber) + const verseFavorite = data.favorites.find((fav: any) => + fav.book === book && + fav.chapter === chapter && + fav.verse_start === parseInt(verseNumber) && + fav.version === version ); if (verseFavorite) {