Move favorite card display to user page only
- Remove favorite cards section from homepage - Add favorite card display to individual user pages - Display user's favorite card at the top of their card grid - Center the favorite card with "Favorite Card" heading - Skip display when fav is '0' or card not found 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		| @@ -1,8 +1,6 @@ | ||||
| import { useQuery, useQueries } from '@tanstack/react-query'; | ||||
| import { useQuery } from '@tanstack/react-query'; | ||||
| import Navigation from '../common/Navigation'; | ||||
| import { fetchUsers, fetchUserCards } from '../../utils/api'; | ||||
| import SpecialCard from '../card/SpecialCard'; | ||||
| import type { Card } from '../../types'; | ||||
| import { fetchUsers } from '../../utils/api'; | ||||
|  | ||||
| export default function HomePage() { | ||||
|    | ||||
| @@ -11,30 +9,6 @@ export default function HomePage() { | ||||
|     queryFn: () => fetchUsers() | ||||
|   }); | ||||
|  | ||||
|   // Get all users with fav cards | ||||
|   const usersWithFav = users?.data?.filter(user => user.fav && user.fav !== '0') || []; | ||||
|    | ||||
|   // Fetch cards for each user with fav | ||||
|   const favCardQueries = useQueries({ | ||||
|     queries: usersWithFav.map(user => ({ | ||||
|       queryKey: ['userCards', user.id], | ||||
|       queryFn: () => fetchUserCards(user.id), | ||||
|       enabled: !!user.id | ||||
|     })) | ||||
|   }); | ||||
|  | ||||
|   // Extract fav cards | ||||
|   const favCards: { user: typeof usersWithFav[0], card: Card }[] = []; | ||||
|   usersWithFav.forEach((user, index) => { | ||||
|     const userCards = favCardQueries[index]?.data?.data; | ||||
|     if (userCards && user.fav) { | ||||
|       const favCard = userCards.find(card => card.id === parseInt(user.fav)); | ||||
|       if (favCard) { | ||||
|         favCards.push({ user, card: favCard }); | ||||
|       } | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   if (isLoading) { | ||||
|     return ( | ||||
|       <div className="min-h-screen flex items-center justify-center"> | ||||
| @@ -54,25 +28,6 @@ export default function HomePage() { | ||||
|           <a href="/docs" className="btn">help</a> | ||||
|         </div> | ||||
|  | ||||
|         {/* Favorite Cards Section */} | ||||
|         {favCards.length > 0 && ( | ||||
|           <div className="mb-8"> | ||||
|             <h2 className="text-xl font-bold mb-4">Favorite Cards</h2> | ||||
|             <div className="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4"> | ||||
|               {favCards.map(({ user, card }) => ( | ||||
|                 <div key={`${user.id}-${card.id}`}> | ||||
|                   <SpecialCard card={card} /> | ||||
|                   <div className="text-center text-sm mt-2"> | ||||
|                     <a href={`/${user.username}`} className="text-gray-600 hover:text-primary"> | ||||
|                       @{user.username} | ||||
|                     </a> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               ))} | ||||
|             </div> | ||||
|           </div> | ||||
|         )} | ||||
|  | ||||
|         {users?.data && Array.isArray(users.data) && users.data.length > 0 && ( | ||||
|           <div className="bg-white rounded-lg p-6"> | ||||
|             <div className="grid gap-4"> | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import { useQuery } from '@tanstack/react-query'; | ||||
| import Navigation from '../common/Navigation'; | ||||
| import CardGrid from '../card/CardGrid'; | ||||
| import UserProfile from '../user/UserProfile'; | ||||
| import SpecialCard from '../card/SpecialCard'; | ||||
| import { fetchUsers, fetchUserCards } from '../../utils/api'; | ||||
|  | ||||
| export default function UserPage() { | ||||
| @@ -54,7 +55,27 @@ export default function UserPage() { | ||||
|             <i className="fa-solid fa-spinner fa-spin text-4xl text-yellow-500"></i> | ||||
|           </div> | ||||
|         ) : ( | ||||
|           <> | ||||
|             {/* Favorite Card Section */} | ||||
|             {user.fav && user.fav !== '0' && cards?.data && ( | ||||
|               (() => { | ||||
|                 const favCard = cards.data.find(card => card.id === parseInt(user.fav)); | ||||
|                 if (favCard) { | ||||
|                   return ( | ||||
|                     <div className="mb-8"> | ||||
|                       <h2 className="text-xl font-bold mb-4 text-center">Favorite Card</h2> | ||||
|                       <div className="flex justify-center"> | ||||
|                         <SpecialCard card={favCard} /> | ||||
|                       </div> | ||||
|                     </div> | ||||
|                   ); | ||||
|                 } | ||||
|                 return null; | ||||
|               })() | ||||
|             )} | ||||
|              | ||||
|             <CardGrid cards={cards?.data || []} user={user} /> | ||||
|           </> | ||||
|         )} | ||||
|       </div> | ||||
|     </div> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user