fix: unwrap nested team data in hooks instead of components
- useMyTeams and useTeamsByUserId now unwrap {team: {...}} structure
- Simplified dashboard and user profile components
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
45c75b3283
commit
23b6677323
@@ -131,8 +131,7 @@ const DashboardPage: FC = (): ReactElement => {
|
|||||||
|
|
||||||
{myTeams.length > 0 ? (
|
{myTeams.length > 0 ? (
|
||||||
(() => {
|
(() => {
|
||||||
const item = myTeams[0] as any;
|
const team = myTeams[0] as any;
|
||||||
const team = item.team || item;
|
|
||||||
return (
|
return (
|
||||||
<div className="mb-6 md:mb-8">
|
<div className="mb-6 md:mb-8">
|
||||||
<h2 className="text-xl md:text-2xl font-bold text-gray-900 dark:text-white mb-3 md:mb-4">
|
<h2 className="text-xl md:text-2xl font-bold text-gray-900 dark:text-white mb-3 md:mb-4">
|
||||||
|
|||||||
@@ -131,9 +131,7 @@ const UserProfilePage: FC = (): ReactElement => {
|
|||||||
Team
|
Team
|
||||||
</h2>
|
</h2>
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
{userTeams.map((item: any) => {
|
{userTeams.map((team: any) => (
|
||||||
const team = item.team || item;
|
|
||||||
return (
|
|
||||||
<Link
|
<Link
|
||||||
key={team.id}
|
key={team.id}
|
||||||
to={'/teams/' + team.id}
|
to={'/teams/' + team.id}
|
||||||
@@ -184,8 +182,7 @@ const UserProfilePage: FC = (): ReactElement => {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
);
|
))}
|
||||||
})}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -434,8 +434,11 @@ export const useMyTeams = () => {
|
|||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: teamKeys.myTeams(),
|
queryKey: teamKeys.myTeams(),
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
const response = await hackathonApi.get<HackathonApiResponse<Team[]>>('/teams/my');
|
const response = await hackathonApi.get<HackathonApiResponse<any[]>>('/teams/my');
|
||||||
return { data: response.data.data || [] };
|
const rawData = response.data.data || [];
|
||||||
|
// Unwrap nested team data if present (API returns [{team: {...}}] or [{id, name, ...}])
|
||||||
|
const teams = rawData.map((item: any) => item.team || item);
|
||||||
|
return { data: teams };
|
||||||
},
|
},
|
||||||
enabled: !!session?.user?.id,
|
enabled: !!session?.user?.id,
|
||||||
});
|
});
|
||||||
@@ -555,8 +558,11 @@ export const useTeamsByUserId = (userId: string) => {
|
|||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: ['teams-by-user', userId],
|
queryKey: ['teams-by-user', userId],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
const response = await hackathonApi.get<HackathonApiResponse<Team[]>>(`/users/${userId}/teams`);
|
const response = await hackathonApi.get<HackathonApiResponse<any[]>>(`/users/${userId}/teams`);
|
||||||
return { data: response.data.data || [] };
|
const rawData = response.data.data || [];
|
||||||
|
// Unwrap nested team data if present (API returns [{team: {...}}] or [{id, name, ...}])
|
||||||
|
const teams = rawData.map((item: any) => item.team || item);
|
||||||
|
return { data: teams };
|
||||||
},
|
},
|
||||||
enabled: !!userId,
|
enabled: !!userId,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user