File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1377,7 +1377,30 @@ impl SpircTask {
13771377 // tried: providing session_id, playback_id, track-metadata "track_player"
13781378 self . update_state = true ;
13791379 } else if let Some ( state) = cluster. player_state . take ( ) {
1380- self . emit_state_update ( Some ( state) )
1380+ if let Some ( last_state) = & self . last_player_state {
1381+ let prev_changed = state. prev_tracks != last_state. prev_tracks ;
1382+ let next_changed = state. next_tracks != last_state. next_tracks ;
1383+ if prev_changed || next_changed {
1384+ let queue_list = QueueList {
1385+ prev_tracks : state. prev_tracks . iter ( ) . map ( |t| t. uri . clone ( ) ) . collect ( ) ,
1386+ next_tracks : state. next_tracks . iter ( ) . map ( |t| t. uri . clone ( ) ) . collect ( ) ,
1387+ } ;
1388+ let _ = self . queue_list_sender . send ( queue_list) ;
1389+
1390+ if prev_changed {
1391+ self . emit_queue_update ( QueueUpdateEvent {
1392+ reason : QueueUpdateReason :: PrevTracksChanged ,
1393+ } ) ;
1394+ }
1395+ if next_changed {
1396+ self . emit_queue_update ( QueueUpdateEvent {
1397+ reason : QueueUpdateReason :: NextTracksChanged ,
1398+ } ) ;
1399+ }
1400+ }
1401+ }
1402+ self . emit_player_update ( Some ( state. clone ( ) ) , self . last_player_state . as_ref ( ) ) ;
1403+ self . last_player_state = Some ( state) ;
13811404 }
13821405 } else if self . connect_state . is_active ( ) {
13831406 self . connect_state . became_inactive ( & self . session ) . await ?;
You can’t perform that action at this time.
0 commit comments