From 94d17b1d167aabd4db9512fae6a80bf63f675189 Mon Sep 17 00:00:00 2001 From: Ryderjj89 Date: Sun, 14 Sep 2025 11:53:35 -0400 Subject: [PATCH] Add real-time favorites refresh and improve mobile layout - favorites menu updates instantly when favorites change --- frontend/src/App.tsx | 6 +++++ frontend/src/components/BibleReader.tsx | 29 ++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 87990f69..e86771bf 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -267,6 +267,11 @@ function App() { navigate(`/book/${bookName}`); }; + const handleFavoriteChange = () => { + // This will trigger a re-render of the FavoritesMenu + setUser(prev => ({ ...prev })); + }; + if (!bookName || !chapterNumber || !actualBookName) { return
Chapter not found
; } @@ -278,6 +283,7 @@ function App() { onBack={handleBack} formatBookName={formatBookName} user={user} + onFavoriteChange={handleFavoriteChange} /> ); }; diff --git a/frontend/src/components/BibleReader.tsx b/frontend/src/components/BibleReader.tsx index 09c65b57..10d09e95 100644 --- a/frontend/src/components/BibleReader.tsx +++ b/frontend/src/components/BibleReader.tsx @@ -8,9 +8,10 @@ interface BibleReaderProps { onBack: () => void; formatBookName: (bookName: string) => string; user?: any; + onFavoriteChange?: () => void; } -const BibleReader: React.FC = ({ book, chapter, onBack, formatBookName, user }) => { +const BibleReader: React.FC = ({ book, chapter, onBack, formatBookName, user, onFavoriteChange }) => { const [content, setContent] = useState(''); const [loading, setLoading] = useState(true); const [chapters, setChapters] = useState([]); @@ -89,6 +90,7 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format return newFavorites; }); console.log('Removed verse favorite:', verseNumber); + onFavoriteChange?.(); // Notify parent to refresh favorites menu } } } @@ -110,10 +112,12 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format if (response.ok) { setFavorites(prev => new Set(prev).add(verseNumber)); console.log('Added verse favorite:', verseNumber); + onFavoriteChange?.(); // Notify parent to refresh favorites menu } else if (response.status === 409) { // 409 means it already exists, which is fine - just update the UI setFavorites(prev => new Set(prev).add(verseNumber)); console.log('Verse favorite already exists, updated UI:', verseNumber); + onFavoriteChange?.(); // Notify parent to refresh favorites menu } } } catch (error) { @@ -276,48 +280,53 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format return (
{/* Header */} -
+
{/* Font Size Controls */}
- Font Size: + Font Size: + Size: