67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { WorkoutSession, ExerciseDef, ExerciseType, WorkoutSet, WorkoutPlan } from '../types';
|
|
import { api } from './api';
|
|
|
|
export const getSessions = async (userId: string): Promise<WorkoutSession[]> => {
|
|
try {
|
|
return await api.get('/sessions');
|
|
} catch {
|
|
return [];
|
|
}
|
|
};
|
|
|
|
export const saveSession = async (userId: string, session: WorkoutSession): Promise<void> => {
|
|
await api.post('/sessions', session);
|
|
};
|
|
|
|
export const deleteSession = async (userId: string, id: string): Promise<void> => {
|
|
await api.delete(`/sessions/${id}`);
|
|
};
|
|
|
|
export const deleteAllUserData = (userId: string) => {
|
|
// Not implemented in frontend
|
|
};
|
|
|
|
export const getExercises = async (userId: string): Promise<ExerciseDef[]> => {
|
|
try {
|
|
return await api.get('/exercises');
|
|
} catch {
|
|
return [];
|
|
}
|
|
};
|
|
|
|
export const saveExercise = async (userId: string, exercise: ExerciseDef): Promise<void> => {
|
|
await api.post('/exercises', exercise);
|
|
};
|
|
|
|
export const getLastSetForExercise = async (userId: string, exerciseId: string): Promise<WorkoutSet | undefined> => {
|
|
// This requires fetching sessions or a specific endpoint.
|
|
// For performance, we should probably have an endpoint for this.
|
|
// For now, let's fetch sessions and find it client side, or implement endpoint later.
|
|
// Given the async nature, we need to change the signature to Promise.
|
|
// The caller needs to await this.
|
|
const sessions = await getSessions(userId);
|
|
for (const session of sessions) {
|
|
for (let i = session.sets.length - 1; i >= 0; i--) {
|
|
if (session.sets[i].exerciseId === exerciseId) {
|
|
return session.sets[i];
|
|
}
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
export const getPlans = async (userId: string): Promise<WorkoutPlan[]> => {
|
|
try {
|
|
return await api.get('/plans');
|
|
} catch {
|
|
return [];
|
|
}
|
|
};
|
|
|
|
export const savePlan = async (userId: string, plan: WorkoutPlan): Promise<void> => {
|
|
await api.post('/plans', plan);
|
|
};
|
|
|
|
export const deletePlan = async (userId: string, id: string): Promise<void> => {
|
|
await api.delete(`/plans/${id}`);
|
|
}; |