fix: use camelCase for pagination meta after transform

This commit is contained in:
Justin Edmund 2025-09-24 22:53:05 -07:00
parent 3bbebeb588
commit 47d64d6fe1
5 changed files with 23 additions and 7 deletions

View file

@ -260,11 +260,26 @@ export class PartyAdapter extends BaseAdapter {
* Lists all public parties (explore page) * Lists all public parties (explore page)
*/ */
async list(params: { page?: number; per?: number } = {}): Promise<PaginatedResponse<Party>> { async list(params: { page?: number; per?: number } = {}): Promise<PaginatedResponse<Party>> {
return this.request<PaginatedResponse<Party>>('/parties', { const response = await this.request<{
results: Party[]
meta?: {
count?: number
totalPages?: number
perPage?: number
}
}>('/parties', {
method: 'GET', method: 'GET',
query: params, query: params,
cacheTTL: 30000 // Cache for 30 seconds cacheTTL: 30000 // Cache for 30 seconds
}) })
return {
results: response.results,
page: params.page || 1,
total: response.meta?.count || 0,
totalPages: response.meta?.totalPages || 1,
perPage: response.meta?.perPage || 20
}
} }
/** /**

View file

@ -212,6 +212,7 @@ export class InfiniteScrollResource<T> {
try { try {
const response = await this.fetcher(nextPage, this.abortController.signal) const response = await this.fetcher(nextPage, this.abortController.signal)
this.log('API response:', response)
// Append new items // Append new items
this.items = [...this.items, ...response.results] this.items = [...this.items, ...response.results]

View file

@ -102,6 +102,9 @@ export interface PaginatedResponse<T> {
/** Number of items per page */ /** Number of items per page */
perPage?: number perPage?: number
/** Alternative key for items per page (API might return this) */
per?: number
/** Whether there are more pages available */ /** Whether there are more pages available */
hasMore?: boolean hasMore?: boolean

View file

@ -8,19 +8,16 @@ export const load: PageServerLoad = async ({ url, depends }) => {
const pageParam = url.searchParams.get('page') const pageParam = url.searchParams.get('page')
const page = pageParam ? Math.max(1, parseInt(pageParam, 10) || 1) : 1 const page = pageParam ? Math.max(1, parseInt(pageParam, 10) || 1) : 1
console.log('[explore/+page.server.ts] Loading explore page with page:', page)
console.log('[explore/+page.server.ts] Full URL:', url.toString())
try { try {
const response = await partyAdapter.list({ page }) const response = await partyAdapter.list({ page })
console.log('[explore/+page.server.ts] Successfully loaded', response.results.length, 'parties')
return { return {
items: response.results, items: response.results,
page, page,
total: response.total, total: response.total,
totalPages: response.totalPages, totalPages: response.totalPages,
perPage: response.per || 20 perPage: response.perPage || response.per || 20
} }
} catch (e: any) { } catch (e: any) {
console.error('[explore/+page.server.ts] Failed to load teams:', { console.error('[explore/+page.server.ts] Failed to load teams:', {

View file

@ -15,10 +15,10 @@
initialPage: data.page || 1, initialPage: data.page || 1,
initialTotalPages: data.totalPages, initialTotalPages: data.totalPages,
initialTotal: data.total, initialTotal: data.total,
pageSize: data.perPage || 20,
threshold: 300, threshold: 300,
debounceMs: 200, debounceMs: 200,
maxItems: 500 // Limit for performance maxItems: 500, // Limit for performance
debug: false // Disable debug logging
}) })
// Initialize with SSR data on client // Initialize with SSR data on client