import type { MyEventsGuestItemDto, MyEventsHostItemDto, MyEventsListControllerList200, PaginationMetaDto } from '@/api/generated/models' import { getMyEvents } from '@/api/generated/my-events/my-events' import { unwrapApiPayload } from '@/helpers/listResponse' export const MY_EVENTS_PAGE_SIZE = 20 export type MyEventsRole = 'guest' | 'host' export type MyEventsGuestStatus = 'upcoming' | 'held' | 'cancelled' export type MyEventsHostStatus = 'pending_review' | 'published' | 'rejected' export type MyEventsStatus = MyEventsGuestStatus | MyEventsHostStatus export type MyEventsGuestItem = MyEventsGuestItemDto export type MyEventsHostItem = MyEventsHostItemDto export interface MyEventsPage { role: MyEventsRole status: MyEventsStatus canHost: boolean availableRoles: MyEventsRole[] items: TItem[] response: PaginationMetaDto } const myEventsApi = getMyEvents() /** Fetches one server-filtered lifecycle page for the My Events screen. */ export const fetchMyEventsPage = async ({ role, status, page, pageSize = MY_EVENTS_PAGE_SIZE, signal, }: { role: MyEventsRole status: MyEventsStatus page: number pageSize?: number signal?: AbortSignal }): Promise> => { const response = await myEventsApi.myEventsListControllerList({ role, status, page, pageSize }, { signal }) const payload = unwrapApiPayload(response.data) return payload as MyEventsPage }