Skip to content

Commit 9ba3a03

Browse files
authored
map media control Pause and Resume to PlayerRequests (#272)
1 parent 4c5d25c commit 9ba3a03

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

spotify_player/src/client/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,20 @@ impl Client {
130130
match request {
131131
PlayerRequest::NextTrack => self.spotify.next_track(device_id).await?,
132132
PlayerRequest::PreviousTrack => self.spotify.previous_track(device_id).await?,
133+
PlayerRequest::Resume => {
134+
if !playback.is_playing {
135+
self.spotify.resume_playback(device_id, None).await?;
136+
playback.is_playing = true;
137+
state.player.write().buffered_playback = Some(playback);
138+
}
139+
}
140+
PlayerRequest::Pause => {
141+
if playback.is_playing {
142+
self.spotify.pause_playback(device_id).await?;
143+
playback.is_playing = false;
144+
state.player.write().buffered_playback = Some(playback);
145+
}
146+
}
133147
PlayerRequest::ResumePause => {
134148
if !playback.is_playing {
135149
self.spotify.resume_playback(device_id, None).await?

spotify_player/src/event/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ mod window;
1818
pub enum PlayerRequest {
1919
NextTrack,
2020
PreviousTrack,
21+
Resume,
22+
Pause,
2123
ResumePause,
2224
SeekTrack(chrono::Duration),
2325
Repeat,

spotify_player/src/media_control.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,17 @@ pub fn start_event_watcher(
7777
controls.attach(move |e| {
7878
tracing::info!("Got a media control event: {e:?}");
7979
match e {
80-
MediaControlEvent::Play | MediaControlEvent::Pause | MediaControlEvent::Toggle => {
80+
MediaControlEvent::Play => {
81+
client_pub
82+
.send(ClientRequest::Player(PlayerRequest::Resume))
83+
.unwrap_or_default();
84+
}
85+
MediaControlEvent::Pause => {
86+
client_pub
87+
.send(ClientRequest::Player(PlayerRequest::Pause))
88+
.unwrap_or_default();
89+
}
90+
MediaControlEvent::Toggle => {
8191
client_pub
8292
.send(ClientRequest::Player(PlayerRequest::ResumePause))
8393
.unwrap_or_default();

0 commit comments

Comments
 (0)