MCPcopy Create free account
hub / github.com/Moosync/Moosync / set_app_handle

Method set_app_handle

src-tauri/mpris/src/mpris_android.rs:52–81  ·  view source on GitHub ↗
(&self, app: AppHandle)

Source from the content-addressed store, hash-verified

50 }
51
52 pub fn set_app_handle(&self, app: AppHandle) {
53 let ev_tx = self.event_tx.clone();
54 app.listen("MediaSessionCallback", move |event| {
55 let mut payload: HashMap<String, Value> =
56 serde_json::from_str(event.payload()).unwrap();
57 let event: String =
58 serde_json::from_value(payload.get_mut("event").unwrap().take()).unwrap();
59 let media_control_ev = match event.as_str() {
60 "onPlay" => Some(MediaControlEvent::Play),
61 "onPause" => Some(MediaControlEvent::Pause),
62 "onStop" => Some(MediaControlEvent::Stop),
63 "onSeekTo" => {
64 let millis =
65 serde_json::from_value(payload.get_mut("pos").unwrap().take()).unwrap();
66 Some(MediaControlEvent::SetPosition(MediaPosition(
67 Duration::from_millis(millis),
68 )))
69 }
70 _ => None,
71 };
72
73 if let Some(ev) = media_control_ev {
74 let ev_tx = ev_tx.lock().unwrap();
75 ev_tx.send(ev).unwrap();
76 }
77 });
78
79 let mut app_handle = self.app_handle.lock().unwrap();
80 *app_handle = Some(app)
81 }
82
83 #[tracing::instrument(level = "debug", skip(self, metadata))]
84 pub fn set_metadata(&self, mut metadata: MprisPlayerDetails) -> Result<()> {

Callers 1

get_mpris_stateFunction · 0.80

Calls 3

MediaPositionClass · 0.85
cloneMethod · 0.80
sendMethod · 0.80

Tested by

no test coverage detected