use tauri::{command, AppHandle, Runtime}; use crate::models::*; use crate::NativeTtsExt; use crate::Result; #[command] pub(crate) async fn init(app: AppHandle) -> Result { app.native_tts().init() } #[command] pub(crate) async fn speak( app: AppHandle, payload: SpeakArgs, ) -> Result { app.native_tts().speak(payload) } #[command] pub(crate) async fn pause(app: AppHandle) -> Result<()> { app.native_tts().pause() } #[command] pub(crate) async fn resume(app: AppHandle) -> Result<()> { app.native_tts().resume() } #[command] pub(crate) async fn stop(app: AppHandle) -> Result<()> { app.native_tts().stop() } #[command] pub(crate) async fn set_rate(app: AppHandle, payload: SetRateArgs) -> Result<()> { app.native_tts().set_rate(payload) } #[command] pub(crate) async fn set_pitch(app: AppHandle, payload: SetPitchArgs) -> Result<()> { app.native_tts().set_pitch(payload) } #[command] pub(crate) async fn set_voice(app: AppHandle, payload: SetVoiceArgs) -> Result<()> { app.native_tts().set_voice(payload) } #[command] pub(crate) async fn get_all_voices(app: AppHandle) -> Result { app.native_tts().get_all_voices() } #[command] pub(crate) async fn set_media_session_active( app: AppHandle, payload: SetMediaSessionActiveRequest, ) -> Result<()> { app.native_tts().set_media_session_active(payload) } #[command] pub(crate) async fn update_media_session_state( app: AppHandle, payload: UpdateMediaSessionStateRequest, ) -> Result<()> { app.native_tts().update_media_session_state(payload) } #[command] pub(crate) async fn update_media_session_metadata( app: AppHandle, payload: UpdateMediaSessionMetadataRequest, ) -> Result<()> { app.native_tts().update_media_session_metadata(payload) }