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 Navigation from '../common/Navigation'; | ||||||
| import { fetchUsers, fetchUserCards } from '../../utils/api'; | import { fetchUsers } from '../../utils/api'; | ||||||
| import SpecialCard from '../card/SpecialCard'; |  | ||||||
| import type { Card } from '../../types'; |  | ||||||
|  |  | ||||||
| export default function HomePage() { | export default function HomePage() { | ||||||
|    |    | ||||||
| @@ -11,30 +9,6 @@ export default function HomePage() { | |||||||
|     queryFn: () => fetchUsers() |     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) { |   if (isLoading) { | ||||||
|     return ( |     return ( | ||||||
|       <div className="min-h-screen flex items-center justify-center"> |       <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> |           <a href="/docs" className="btn">help</a> | ||||||
|         </div> |         </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 && ( |         {users?.data && Array.isArray(users.data) && users.data.length > 0 && ( | ||||||
|           <div className="bg-white rounded-lg p-6"> |           <div className="bg-white rounded-lg p-6"> | ||||||
|             <div className="grid gap-4"> |             <div className="grid gap-4"> | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ import { useQuery } from '@tanstack/react-query'; | |||||||
| import Navigation from '../common/Navigation'; | import Navigation from '../common/Navigation'; | ||||||
| import CardGrid from '../card/CardGrid'; | import CardGrid from '../card/CardGrid'; | ||||||
| import UserProfile from '../user/UserProfile'; | import UserProfile from '../user/UserProfile'; | ||||||
|  | import SpecialCard from '../card/SpecialCard'; | ||||||
| import { fetchUsers, fetchUserCards } from '../../utils/api'; | import { fetchUsers, fetchUserCards } from '../../utils/api'; | ||||||
|  |  | ||||||
| export default function UserPage() { | 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> |             <i className="fa-solid fa-spinner fa-spin text-4xl text-yellow-500"></i> | ||||||
|           </div> |           </div> | ||||||
|         ) : ( |         ) : ( | ||||||
|           <CardGrid cards={cards?.data || []} user={user} /> |           <> | ||||||
|  |             {/* 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> | ||||||
|     </div> |     </div> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user