17 lines
973 B
TypeScript
17 lines
973 B
TypeScript
import type { QueueItem, SessionRow, SessionStartInput, AttemptCreateInput } from '@flashcard/shared';
|
|
import { api } from './client.js';
|
|
|
|
export interface StartedSession { session: SessionRow; queue: QueueItem[]; }
|
|
export interface SessionState { session: SessionRow; queue: QueueItem[]; index: number; }
|
|
|
|
export const sessionsApi = {
|
|
start: (input: SessionStartInput) => api.post<StartedSession>('/sessions', input),
|
|
startDue: () => api.post<StartedSession>(`/sessions/due`),
|
|
active: () => api.get<SessionRow | null>('/sessions/active'),
|
|
state: (id: number) => api.get<SessionState>(`/sessions/${id}`),
|
|
next: (id: number) => api.get<{ done: true } | { done: false; item: QueueItem }>(`/sessions/${id}/next`),
|
|
attempt: (id: number, input: AttemptCreateInput) => api.post<void>(`/sessions/${id}/attempts`, input),
|
|
end: (id: number) => api.post<SessionRow>(`/sessions/${id}/end`),
|
|
abandon: (id: number) => api.post<SessionRow>(`/sessions/${id}/abandon`),
|
|
};
|