import {invokeCommand} from "../../../shared/tauri/invoke"; import type { CountdownCommand, CountdownPayload, OverlayConfigPayload, CountdownSnapshot, CountdownSnapshotDto } from "../model/countdown.types"; import {mapSnapshotDtoToSnapshot} from "../model/countdown.mapper"; import {type Duration, durationToMillis} from "../../../shared/time/duration"; async function invokeCountdownCommand(command: CountdownCommand, payload: CountdownPayload): Promise { await invokeCommand(command, payload); } export async function createCountdown(label: string, duration: Duration): Promise { return await invokeCommand("countdown_create", {label, duration: durationToMillis(duration)}); } export async function listCountdowns(): Promise { let snapshotsDto = await invokeCommand("countdown_list", {}); let snapshots: CountdownSnapshot[] = []; let snapshot: CountdownSnapshotDto; for (snapshot of snapshotsDto) { snapshots.push(mapSnapshotDtoToSnapshot(snapshot)); } return snapshots; } export async function deleteCountdown(id: number): Promise { await invokeCountdownCommand("countdown_delete", {id}); } export async function startCountdown(id: number): Promise { await invokeCountdownCommand("countdown_start", {id}); } export async function resumeCountdown(id: number): Promise { await invokeCountdownCommand("countdown_resume", {id}); } export async function pauseCountdown(id: number): Promise { await invokeCountdownCommand("countdown_pause", {id}); } export async function resetCountdown(id: number): Promise { await invokeCountdownCommand("countdown_reset", {id}); } export async function fetchCountdownSnapshot(id: number): Promise { return mapSnapshotDtoToSnapshot(await invokeCommand("countdown_snapshot", {id})); } export async function setOverlayConfig( id: number, icon: string, textColor: string, bgColor: string, ): Promise { const payload: OverlayConfigPayload = { id, icon, textColor, bgColor, }; await invokeCommand("set_overlay_config", payload); }