tauri_plugin_musickit/
lib.rs1use tauri::{
2 plugin::{Builder, TauriPlugin},
3 Manager, Runtime,
4};
5
6mod commands;
7mod error;
8mod events;
9mod models;
10
11#[cfg(desktop)]
12mod desktop;
13#[cfg(mobile)]
14mod mobile;
15
16pub use error::{Error, Result};
17pub use events::*;
18pub use models::*;
19
20#[cfg(desktop)]
21use desktop::MusicKitPlugin;
22#[cfg(mobile)]
23use mobile::MusicKitPlugin;
24
25#[cfg(target_os = "ios")]
26tauri::ios_plugin_binding!(init_plugin_apple_music_kit);
27
28pub trait MusicKitExt<R: Runtime> {
30 fn music_kit(&self) -> tauri::State<'_, MusicKitPlugin<R>>;
31}
32
33impl<R: Runtime, T: Manager<R>> MusicKitExt<R> for T {
34 fn music_kit(&self) -> tauri::State<'_, MusicKitPlugin<R>> {
35 self.state::<MusicKitPlugin<R>>()
36 }
37}
38
39pub fn init<R: Runtime>() -> TauriPlugin<R> {
41 Builder::new("musickit")
42 .invoke_handler(tauri::generate_handler![
43 commands::initialize,
44 commands::authorize,
45 commands::unauthorize,
46 commands::get_authorization_status,
47 commands::get_user_token,
48 commands::set_user_token,
49 commands::get_developer_token,
50 commands::set_developer_token,
51 commands::get_storefront_id,
52 commands::get_storefront,
53 commands::get_queue,
54 commands::play,
55 commands::pause,
56 commands::stop,
57 commands::seek,
58 commands::next,
59 commands::previous,
60 commands::skip_to_item,
61 commands::set_volume,
62 commands::set_queue,
63 commands::update_queue,
64 commands::insert_track_at_position,
65 commands::insert_tracks_at_position,
66 commands::remove_track_from_queue,
67 commands::insert_track_next,
68 commands::insert_track_last,
69 commands::append_tracks_to_queue,
70 commands::get_current_track,
71 commands::get_playback_state,
72 ])
73 .setup(|app, api| {
74 #[cfg(mobile)]
75 let musickit = mobile::init(app, api)?;
76 #[cfg(desktop)]
77 let musickit = desktop::init(app, api)?;
78 app.manage(musickit);
79 Ok(())
80 })
81 .build()
82}
83
84