export async function fetchBikes() { return await runBack({query: "fetchBikes"}); } export async function fetchPrograms() { return await runBack({query: "fetchPrograms"}); } export async function fetchActiveWorkouts() { return await runBack({query: "fetchActiveWorkouts"}); } export async function createNewWorkout(bike, program) { const bikeId = bike.id; const programId = program.id; return await runBack({query: "fetchActiveWorkouts", bikeId, programId}); } export async function connectWorkout(workout) { return await runBack({query: "connectWorkout", ...workout}); } export async function stopWorkout(workout) { return await runBack({query: "stopWorkout", ...workout}); } export async function startWorkout(workout) { return await runBack({query: "startWorkout", ...workout}); } export async function pauseWorkout(workout) { return await runBack({query: "pauseWorkout", ...workout}); } export async function updateCooldownMins(workout, cooldownMin) { return await runBack({query: "pauseWorkout", cooldownMin, ...workout}); } export function openWebsocket(workout) { return new WebSocket(`ws://127.0.0.1:9999/api/workout/${workout.id}/subscribe`); } async function runBack(query) { return new Promise((resolve, reject) => { chrome.runtime.sendMessage(query, result => { if (result.success) { resolve(result.data) } else { reject(result.message); } }); }); }