Add events
This commit is contained in:
67
frontend/src/api/events.ts
Normal file
67
frontend/src/api/events.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import client from './client'
|
||||
import type { ActiveEvent, MarathonEvent, EventCreate, DroppedAssignment, SwapCandidate, SwapRequestItem, MySwapRequests, CommonEnemyLeaderboardEntry } from '@/types'
|
||||
|
||||
export const eventsApi = {
|
||||
getActive: async (marathonId: number): Promise<ActiveEvent> => {
|
||||
const response = await client.get<ActiveEvent>(`/marathons/${marathonId}/event`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
list: async (marathonId: number): Promise<MarathonEvent[]> => {
|
||||
const response = await client.get<MarathonEvent[]>(`/marathons/${marathonId}/events`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
start: async (marathonId: number, data: EventCreate): Promise<MarathonEvent> => {
|
||||
const response = await client.post<MarathonEvent>(`/marathons/${marathonId}/events`, data)
|
||||
return response.data
|
||||
},
|
||||
|
||||
stop: async (marathonId: number): Promise<void> => {
|
||||
await client.delete(`/marathons/${marathonId}/event`)
|
||||
},
|
||||
|
||||
// Swap requests (two-sided confirmation)
|
||||
createSwapRequest: async (marathonId: number, targetParticipantId: number): Promise<SwapRequestItem> => {
|
||||
const response = await client.post<SwapRequestItem>(`/marathons/${marathonId}/swap-requests`, {
|
||||
target_participant_id: targetParticipantId,
|
||||
})
|
||||
return response.data
|
||||
},
|
||||
|
||||
getSwapRequests: async (marathonId: number): Promise<MySwapRequests> => {
|
||||
const response = await client.get<MySwapRequests>(`/marathons/${marathonId}/swap-requests`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
acceptSwapRequest: async (marathonId: number, requestId: number): Promise<void> => {
|
||||
await client.post(`/marathons/${marathonId}/swap-requests/${requestId}/accept`)
|
||||
},
|
||||
|
||||
declineSwapRequest: async (marathonId: number, requestId: number): Promise<void> => {
|
||||
await client.post(`/marathons/${marathonId}/swap-requests/${requestId}/decline`)
|
||||
},
|
||||
|
||||
cancelSwapRequest: async (marathonId: number, requestId: number): Promise<void> => {
|
||||
await client.delete(`/marathons/${marathonId}/swap-requests/${requestId}`)
|
||||
},
|
||||
|
||||
rematch: async (marathonId: number, assignmentId: number): Promise<void> => {
|
||||
await client.post(`/marathons/${marathonId}/rematch/${assignmentId}`)
|
||||
},
|
||||
|
||||
getDroppedAssignments: async (marathonId: number): Promise<DroppedAssignment[]> => {
|
||||
const response = await client.get<DroppedAssignment[]>(`/marathons/${marathonId}/dropped-assignments`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
getSwapCandidates: async (marathonId: number): Promise<SwapCandidate[]> => {
|
||||
const response = await client.get<SwapCandidate[]>(`/marathons/${marathonId}/swap-candidates`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
getCommonEnemyLeaderboard: async (marathonId: number): Promise<CommonEnemyLeaderboardEntry[]> => {
|
||||
const response = await client.get<CommonEnemyLeaderboardEntry[]>(`/marathons/${marathonId}/common-enemy-leaderboard`)
|
||||
return response.data
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user