diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index be0f404d..96812dec 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -433,6 +433,7 @@ function App() { user={user} formatBookName={formatBookName} getBookUrlName={getBookUrlName} + onFavoriteChange={() => setUser((prev: any) => ({ ...prev }))} /> diff --git a/frontend/src/components/FavoritesMenu.tsx b/frontend/src/components/FavoritesMenu.tsx index 00969b92..9888a2a0 100644 --- a/frontend/src/components/FavoritesMenu.tsx +++ b/frontend/src/components/FavoritesMenu.tsx @@ -16,9 +16,10 @@ interface FavoritesMenuProps { user: any; formatBookName: (bookName: string) => string; getBookUrlName: (bookName: string) => string; + onFavoriteChange?: () => void; } -const FavoritesMenu: React.FC = ({ user, formatBookName, getBookUrlName }) => { +const FavoritesMenu: React.FC = ({ user, formatBookName, getBookUrlName, onFavoriteChange }) => { const [isOpen, setIsOpen] = useState(false); const [favorites, setFavorites] = useState([]); const [loading, setLoading] = useState(false); @@ -60,6 +61,7 @@ const FavoritesMenu: React.FC = ({ user, formatBookName, get if (response.ok) { setFavorites(favorites.filter(f => f.id !== favoriteId)); + onFavoriteChange?.(); // Notify parent to refresh other components } } catch (error) { console.error('Failed to remove favorite:', error); @@ -158,8 +160,7 @@ const FavoritesMenu: React.FC = ({ user, formatBookName, get className="flex items-center space-x-1 px-3 py-1 text-sm bg-yellow-100 dark:bg-yellow-900 text-yellow-800 dark:text-yellow-200 rounded hover:bg-yellow-200 dark:hover:bg-yellow-800 transition-colors" > - Favorites - + Favorites {favorites.length > 0 && ( {favorites.length}