@@ -89,7 +89,7 @@ async fn handle_socket_request(
8989 }
9090
9191 match request {
92- Request :: Get ( GetRequest :: Key ( key) ) => handle_get_key_request ( client, key) . await ,
92+ Request :: Get ( GetRequest :: Key ( key) ) => handle_get_key_request ( client, state , key) . await ,
9393 Request :: Get ( GetRequest :: Item ( item_type, id_or_name) ) => {
9494 handle_get_item_request ( client, item_type, id_or_name) . await
9595 }
@@ -145,13 +145,10 @@ async fn handle_socket_request(
145145 }
146146}
147147
148- async fn handle_get_key_request ( client : & Client , key : Key ) -> Result < Vec < u8 > > {
148+ async fn handle_get_key_request ( client : & Client , state : & SharedState , key : Key ) -> Result < Vec < u8 > > {
149149 Ok ( match key {
150150 Key :: Playback => {
151- let playback = client
152- . spotify
153- . current_playback ( None , None :: < Vec < _ > > )
154- . await ?;
151+ let playback = state. player . read ( ) . current_playback ( ) ;
155152 serde_json:: to_vec ( & playback) ?
156153 }
157154 Key :: Devices => {
@@ -357,8 +354,22 @@ async fn handle_playback_request(
357354 }
358355 } ;
359356
360- client. handle_player_request ( state, player_request) . await ?;
361- client. update_playback ( state) ;
357+ tokio:: task:: spawn ( {
358+ let client = client. clone ( ) ;
359+ let state = state. clone ( ) ;
360+ async move {
361+ match client. handle_player_request ( & state, player_request) . await {
362+ Ok ( ( ) ) => {
363+ client. update_playback ( & state) ;
364+ }
365+ Err ( err) => {
366+ tracing:: warn!(
367+ "Failed to handle a player request for playback CLI command: {err:#}"
368+ ) ;
369+ }
370+ }
371+ }
372+ } ) ;
362373 Ok ( ( ) )
363374}
364375
0 commit comments