import { apiClient, resolveOperationPath } from "./api-client.generated.js"; async function requestState(ifNoneMatch) { const headers = {}; if (ifNoneMatch) headers["If-None-Match"] = ifNoneMatch; const res = await apiClient.getState({ headers, raw: true, acceptStatuses: [304], }); if (res.status === 304) { return { notModified: true, etag: res.headers.get("ETag"), data: null, }; } return { notModified: false, etag: res.headers.get("ETag"), data: await res.json(), }; } export const api = { state: (ifNoneMatch) => requestState(ifNoneMatch), stateEventsUrl: () => resolveOperationPath("GetStateEvents"), me: () => apiClient.getMe(), authOptions: () => apiClient.getAuthOptions(), register: (payload) => apiClient.register({ body: payload }), login: (payload) => apiClient.login({ body: payload }), logout: () => apiClient.logout(), mySuggestions: () => apiClient.getMySuggestions(), createSuggestion: (payload) => apiClient.createSuggestion({ body: payload }), deleteSuggestion: (id) => apiClient.deleteSuggestion({ pathParameters: { id } }), updateSuggestion: (id, payload) => apiClient.updateSuggestion({ pathParameters: { id }, body: payload }), allSuggestions: () => apiClient.getAllSuggestions(), myVotes: () => apiClient.getMyVotes(), vote: (suggestionId, score) => apiClient.upsertVote({ body: { suggestionId, score }, }), finalizeVotes: (final) => apiClient.setVotesFinalized({ body: { final } }), results: () => apiClient.getResults(), nextPhase: () => apiClient.nextPhase(), prevPhase: () => apiClient.prevPhase(), }; export const adminApi = { setResultsOpen: (resultsOpen) => apiClient.setResultsOpen({ body: { resultsOpen }, }), voteStatus: () => apiClient.getVoteStatus(), reset: (password) => apiClient.reset({ body: { password } }), factoryReset: (password) => apiClient.factoryReset({ body: { password }, }), grantJoker: (playerId) => apiClient.grantJoker({ body: { playerId } }), setPlayerAdmin: (playerId, isAdmin) => apiClient.setPlayerAdmin({ body: { playerId, isAdmin }, }), setPlayerPhase: (playerId, phase) => apiClient.setPlayerPhase({ body: { playerId, phase }, }), deletePlayer: (playerId, password) => apiClient.deletePlayer({ pathParameters: { playerId }, body: { password }, }), linkSuggestions: (sourceSuggestionId, targetSuggestionId) => apiClient.linkSuggestions({ body: { sourceSuggestionId, targetSuggestionId }, }), unlinkSuggestions: (suggestionId) => apiClient.unlinkSuggestions({ body: { suggestionId }, }), };