feat(frontend): API client modules + backend GET /api/cards/:id

This commit is contained in:
2026-05-20 21:12:38 +02:00
parent 480ee15df9
commit 1c977c4743
6 changed files with 114 additions and 1 deletions

View File

@@ -0,0 +1,15 @@
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),
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`),
};