41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
/**
|
|
* 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<SleepTimerState> {
|
|
return invoke("player_set_sleep_timer", { mode });
|
|
}
|
|
|
|
export async function cancelSleepTimer(): Promise<SleepTimerState> {
|
|
return invoke("player_cancel_sleep_timer");
|
|
}
|
|
|
|
export async function getSleepTimer(): Promise<SleepTimerState> {
|
|
return invoke("player_get_sleep_timer");
|
|
}
|
|
|
|
// Helper functions for common timer modes
|
|
|
|
export async function setTimeBasedTimer(minutes: number): Promise<SleepTimerState> {
|
|
const endTime = Date.now() + minutes * 60 * 1000;
|
|
return setSleepTimer({ kind: "time", endTime });
|
|
}
|
|
|
|
export async function setEndOfTrackTimer(): Promise<SleepTimerState> {
|
|
return setSleepTimer({ kind: "endOfTrack" });
|
|
}
|
|
|
|
export async function setEpisodesTimer(count: number): Promise<SleepTimerState> {
|
|
return setSleepTimer({ kind: "episodes", remaining: count });
|
|
}
|