/** * Sleep Timer API * * Functions to control the sleep timer in the backend. */ import { invoke } from "@tauri-apps/api/core"; import type { SleepTimerMode } from "$lib/services/playerEvents"; export interface SleepTimerState { mode: SleepTimerMode; remainingSeconds: number; } export async function setSleepTimer(mode: SleepTimerMode): Promise { return invoke("player_set_sleep_timer", { mode }); } export async function cancelSleepTimer(): Promise { return invoke("player_cancel_sleep_timer"); } export async function getSleepTimer(): Promise { return invoke("player_get_sleep_timer"); } // Helper functions for common timer modes export async function setTimeBasedTimer(minutes: number): Promise { const endTime = Date.now() + minutes * 60 * 1000; return setSleepTimer({ kind: "time", endTime }); } export async function setEndOfTrackTimer(): Promise { return setSleepTimer({ kind: "endOfTrack" }); } export async function setEpisodesTimer(count: number): Promise { return setSleepTimer({ kind: "episodes", remaining: count }); }