From b472fbdbbf94a03038bf5263eece91011212dc13 Mon Sep 17 00:00:00 2001 From: Maulana Sodiqin Date: Sat, 29 Nov 2025 17:05:27 +0700 Subject: [PATCH] fix(teams): correct API response structure for browse teams MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Match ListResponse structure: data (array) + meta (pagination) - Use correct query param name: per_page instead of limit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- libs/service/src/hooks/teams/index.ts | 32 +++++++++++++++------------ 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/libs/service/src/hooks/teams/index.ts b/libs/service/src/hooks/teams/index.ts index 7005509..e9b2257 100644 --- a/libs/service/src/hooks/teams/index.ts +++ b/libs/service/src/hooks/teams/index.ts @@ -106,12 +106,16 @@ interface Submission { created_at: string; } -// Pagination response type -interface PaginatedTeamsResponse { - teams: Team[]; - total: number; - page: number; - per_page: number; +// List response type with pagination +interface ListResponseWithMeta { + message: string; + data: T[]; + meta: { + page: number; + per_page: number; + total_page: number; + total_data: number; + }; } // Team CRUD Hooks @@ -127,22 +131,22 @@ export const useTeams = (params?: { queryFn: async () => { const queryParams = new URLSearchParams(); if (params?.page) queryParams.append('page', String(params.page)); - if (params?.limit) queryParams.append('limit', String(params.limit)); + if (params?.limit) queryParams.append('per_page', String(params.limit)); if (params?.search) queryParams.append('search', params.search); if (params?.city) queryParams.append('city', params.city); if (params?.visibility) queryParams.append('visibility', params.visibility); - const response = await hackathonApi.get>( + const response = await hackathonApi.get>( `/teams/browse${queryParams.toString() ? `?${queryParams.toString()}` : ''}` ); - const data = response.data.data; + const { data, meta } = response.data; return { - teams: data?.teams || [], - total: data?.total || 0, - page: data?.page || 1, - perPage: data?.per_page || 12, - totalPages: Math.ceil((data?.total || 0) / (data?.per_page || 12)), + teams: data || [], + total: meta?.total_data || 0, + page: meta?.page || 1, + perPage: meta?.per_page || 12, + totalPages: meta?.total_page || 1, }; }, });