use tauri::{command, AppHandle, Runtime};
use crate::models::*;
use crate::Result;
use crate::SttExt;
#[command]
pub(crate) async fn start_listening<R: Runtime>(
app: AppHandle<R>,
config: Option<ListenConfig>,
) -> Result<()> {
app.stt().start_listening(config.unwrap_or_default())
}
#[command]
pub(crate) async fn stop_listening<R: Runtime>(app: AppHandle<R>) -> Result<()> {
app.stt().stop_listening()
}
#[command]
pub(crate) async fn is_available<R: Runtime>(app: AppHandle<R>) -> Result<AvailabilityResponse> {
app.stt().is_available()
}
#[command]
pub(crate) async fn get_supported_languages<R: Runtime>(
app: AppHandle<R>,
) -> Result<SupportedLanguagesResponse> {
app.stt().get_supported_languages()
}
#[command]
pub(crate) async fn check_permission<R: Runtime>(app: AppHandle<R>) -> Result<PermissionResponse> {
app.stt().check_permission()
}
#[command]
pub(crate) async fn request_permission<R: Runtime>(
app: AppHandle<R>,
) -> Result<PermissionResponse> {
app.stt().request_permission()
}
#[cfg(desktop)]
#[command]
pub(crate) async fn register_listener() -> Result<()> {
Ok(())
}
#[cfg(desktop)]
#[command]
pub(crate) async fn remove_listener() -> Result<()> {
Ok(())
}
#[command]
pub(crate) async fn list_models<R: Runtime>(
app: AppHandle<R>,
include_advanced: Option<bool>,
) -> Result<WhisperModelsResponse> {
app.stt().list_models(include_advanced.unwrap_or(false))
}
#[command]
pub(crate) async fn install_model<R: Runtime>(app: AppHandle<R>, id: String) -> Result<()> {
app.stt().install_model(id)
}
#[command]
pub(crate) async fn remove_model<R: Runtime>(app: AppHandle<R>, id: String) -> Result<()> {
app.stt().remove_model(id)
}
#[command]
pub(crate) async fn set_active_model<R: Runtime>(app: AppHandle<R>, id: String) -> Result<()> {
app.stt().set_active_model(id)
}