tauri_plugin_apple_music_kit/
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
25pub trait MusicKitExt<R: Runtime> {
27 fn music_kit(&self) -> &MusicKitPlugin<R>;
28}
29
30impl<R: Runtime, T: Manager<R>> MusicKitExt<R> for T {
31 fn music_kit(&self) -> &MusicKitPlugin<R> {
32 self.state::<MusicKitPlugin<R>>().inner()
33 }
34}
35
36pub fn init<R: Runtime>() -> TauriPlugin<R> {
38 Builder::new("apple-music-kit")
39 .invoke_handler(tauri::generate_handler![
40 commands::initialize,
41 commands::authorize,
42 commands::unauthorize,
43 commands::get_authorization_status,
44 commands::get_user_token,
45 commands::get_developer_token,
46 commands::get_storefront_id,
47 commands::get_queue,
48 commands::play,
49 commands::pause,
50 commands::stop,
51 commands::seek,
52 commands::next,
53 commands::previous,
54 commands::skip_to_item,
55 commands::set_volume,
56 commands::set_queue,
57 commands::update_queue,
58 commands::insert_track_at_position,
59 commands::insert_tracks_at_position,
60 commands::remove_track_from_queue,
61 commands::insert_track_next,
62 commands::insert_track_last,
63 commands::append_tracks_to_queue,
64 commands::get_current_track,
65 commands::get_playback_state,
66 ])
67 .setup(|app, api| {
68 #[cfg(mobile)]
69 let musickit = mobile::init(app, api)?;
70 #[cfg(desktop)]
71 let musickit = desktop::init(app, api)?;
72 app.manage(musickit);
73 Ok(())
74 })
75 .build()
76}