Skip to content

Commit 64edaf8

Browse files
Ralph von der Heydenralph
authored andcommitted
Use QueueTrack struct instead of (String, String)
1 parent 32b0000 commit 64edaf8

3 files changed

Lines changed: 36 additions & 20 deletions

File tree

connect/src/spirc.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use crate::{
1414
model::{LoadRequest, PlayingTrack, SpircPlayStatus},
1515
playback::{
1616
mixer::Mixer,
17-
player::{Player, PlayerEvent, PlayerEventChannel},
17+
player::{Player, PlayerEvent, PlayerEventChannel, QueueTrack},
1818
},
1919
protocol::{
2020
connect::{Cluster, ClusterUpdate, LogoutCommand, SetVolumeCommand},
@@ -650,21 +650,27 @@ impl SpircTask {
650650
let context_uri = self.connect_state.context_uri().clone();
651651
let state_player = self.connect_state.player();
652652

653-
let current_track = state_player
654-
.track
655-
.as_ref()
656-
.map(|t| (t.uri.clone(), t.provider.clone()));
653+
let current_track = state_player.track.as_ref().map(|t| QueueTrack {
654+
uri: t.uri.clone(),
655+
provider: t.provider.clone(),
656+
});
657657

658658
let next_tracks: Vec<_> = state_player
659659
.next_tracks
660660
.iter()
661-
.map(|t| (t.uri.clone(), t.provider.clone()))
661+
.map(|t| QueueTrack {
662+
uri: t.uri.clone(),
663+
provider: t.provider.clone(),
664+
})
662665
.collect();
663666

664667
let prev_tracks: Vec<_> = state_player
665668
.prev_tracks
666669
.iter()
667-
.map(|t| (t.uri.clone(), t.provider.clone()))
670+
.map(|t| QueueTrack {
671+
uri: t.uri.clone(),
672+
provider: t.provider.clone(),
673+
})
668674
.collect();
669675

670676
self.player

playback/src/player.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,19 @@ enum PlayerCommand {
140140
EmitAutoPlayChangedEvent(bool),
141141
EmitSetQueueEvent {
142142
context_uri: String,
143-
current_track: Option<(String, String)>, // (uri, provider)
144-
next_tracks: Vec<(String, String)>, // (uri, provider)
145-
prev_tracks: Vec<(String, String)>, // (uri, provider)
143+
current_track: Option<QueueTrack>,
144+
next_tracks: Vec<QueueTrack>,
145+
prev_tracks: Vec<QueueTrack>,
146146
},
147147
}
148148

149+
/// Represents a track in the queue with its URI and provider.
150+
#[derive(Clone, Debug, PartialEq, Eq)]
151+
pub struct QueueTrack {
152+
pub uri: String,
153+
pub provider: String,
154+
}
155+
149156
#[derive(Debug, Clone)]
150157
pub enum PlayerEvent {
151158
// Play request id changed
@@ -257,9 +264,9 @@ pub enum PlayerEvent {
257264
/// Fired when the queue is set or context is loaded with its track list.
258265
SetQueue {
259266
context_uri: String,
260-
current_track: Option<(String, String)>, // (uri, provider)
261-
next_tracks: Vec<(String, String)>, // (uri, provider)
262-
prev_tracks: Vec<(String, String)>, // (uri, provider)
267+
current_track: Option<QueueTrack>,
268+
next_tracks: Vec<QueueTrack>,
269+
prev_tracks: Vec<QueueTrack>,
263270
},
264271
}
265272

@@ -664,9 +671,9 @@ impl Player {
664671
pub fn emit_set_queue_event(
665672
&self,
666673
context_uri: String,
667-
current_track: Option<(String, String)>,
668-
next_tracks: Vec<(String, String)>,
669-
prev_tracks: Vec<(String, String)>,
674+
current_track: Option<QueueTrack>,
675+
next_tracks: Vec<QueueTrack>,
676+
prev_tracks: Vec<QueueTrack>,
670677
) {
671678
self.command(PlayerCommand::EmitSetQueueEvent {
672679
context_uri,

src/player_event_handler.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,22 +238,25 @@ impl EventHandler {
238238
} => {
239239
env_vars.insert("PLAYER_EVENT", "set_queue".to_string());
240240
env_vars.insert("CONTEXT_URI", context_uri);
241-
if let Some((uri, provider)) = current_track {
242-
env_vars.insert("CURRENT_TRACK", format!("{uri}\t{provider}"));
241+
if let Some(track) = current_track {
242+
env_vars.insert(
243+
"CURRENT_TRACK",
244+
format!("{}\t{}", track.uri, track.provider),
245+
);
243246
}
244247
env_vars.insert(
245248
"NEXT_TRACKS",
246249
next_tracks
247250
.into_iter()
248-
.map(|(uri, provider)| format!("{uri}\t{provider}"))
251+
.map(|t| format!("{}\t{}", t.uri, t.provider))
249252
.collect::<Vec<String>>()
250253
.join("\n"),
251254
);
252255
env_vars.insert(
253256
"PREV_TRACKS",
254257
prev_tracks
255258
.into_iter()
256-
.map(|(uri, provider)| format!("{uri}\t{provider}"))
259+
.map(|t| format!("{}\t{}", t.uri, t.provider))
257260
.collect::<Vec<String>>()
258261
.join("\n"),
259262
);

0 commit comments

Comments
 (0)