tauri_plugin_media/
lib.rs1use tauri::{
2 plugin::{Builder, TauriPlugin},
3 Manager, Runtime,
4};
5
6pub use models::*;
7
8#[cfg(desktop)]
9mod desktop;
10
11mod commands;
12mod error;
13mod models;
14pub mod platform;
15
16pub use error::{Error, Result};
17
18#[cfg(desktop)]
19use desktop::Media;
20
21pub trait MediaExt<R: Runtime> {
23 fn media(&self) -> &Media<R>;
24}
25
26impl<R: Runtime, T: Manager<R>> crate::MediaExt<R> for T {
27 fn media(&self) -> &Media<R> {
28 self.state::<Media<R>>().inner()
29 }
30}
31
32pub fn init<R: Runtime>() -> TauriPlugin<R> {
34 Builder::new("media")
35 .invoke_handler(tauri::generate_handler![
36 commands::initialize_session,
37 commands::set_metadata,
38 commands::set_playback_info,
39 commands::set_playback_status,
40 commands::set_position,
41 commands::clear_metadata,
42 commands::get_metadata,
43 commands::get_playback_info,
44 commands::get_playback_status,
45 commands::get_position,
46 commands::is_enabled,
47 commands::next,
48 commands::previous,
49 ])
50 .setup(|app, api| {
51 #[cfg(desktop)]
52 let media = desktop::init(app, api)?;
53 app.manage(media);
54 Ok(())
55 })
56 .build()
57}