Skip to content

Commit d3f1559

Browse files
committed
add explicit tags to track information
1 parent 9ba3a03 commit d3f1559

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

spotify_player/src/state/model.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ pub struct Track {
118118
pub album: Option<Album>,
119119
#[serde(serialize_with = "serialize_duration")]
120120
pub duration: chrono::Duration,
121+
pub explicit: bool,
121122
#[serde(skip)]
122123
pub added_at: u64,
123124
}
@@ -240,6 +241,15 @@ impl Track {
240241
.unwrap_or_default()
241242
}
242243

244+
/// gets the track's name, including an explicit label
245+
pub fn display_name(&self) -> String {
246+
let mut name = self.name.clone();
247+
if self.explicit {
248+
name.push_str(" (Explicit)");
249+
}
250+
name
251+
}
252+
243253
/// tries to convert from a `rspotify_model::SimplifiedTrack` into `Track`
244254
pub fn try_from_simplified_track(track: rspotify_model::SimplifiedTrack) -> Option<Self> {
245255
if track.is_playable.unwrap_or(true) {
@@ -249,6 +259,7 @@ impl Track {
249259
artists: from_simplified_artists_to_artists(track.artists),
250260
album: None,
251261
duration: track.duration,
262+
explicit: track.explicit,
252263
added_at: 0,
253264
})
254265
} else {
@@ -265,6 +276,7 @@ impl Track {
265276
artists: from_simplified_artists_to_artists(track.artists),
266277
album: Album::try_from_simplified_album(track.album),
267278
duration: track.duration,
279+
explicit: track.explicit,
268280
added_at: 0,
269281
})
270282
} else {
@@ -278,7 +290,7 @@ impl std::fmt::Display for Track {
278290
write!(
279291
f,
280292
"{} • {} ▎ {}",
281-
self.name,
293+
self.display_name(),
282294
self.artists_info(),
283295
self.album_info(),
284296
)

spotify_player/src/ui/page.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,12 @@ pub fn render_search_page(
8686
.map(|s| {
8787
s.tracks
8888
.iter()
89-
.map(|a| (format!("{} • {}", a.name, a.artists_info()), false))
89+
.map(|a| {
90+
(
91+
format!("{} • {}", a.display_name(), a.artists_info()),
92+
false,
93+
)
94+
})
9095
.collect::<Vec<_>>()
9196
})
9297
.unwrap_or_default();
@@ -714,7 +719,7 @@ pub fn render_track_table_window(
714719
""
715720
}),
716721
Cell::from(id),
717-
Cell::from(t.name.clone()),
722+
Cell::from(t.display_name()),
718723
Cell::from(t.artists_info()),
719724
Cell::from(t.album_info()),
720725
Cell::from(crate::utils::format_duration(&t.duration)),

spotify_player/src/ui/playback.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,11 @@ fn render_playback_text(
184184
} else {
185185
&state.app_config.play_icon
186186
},
187-
track.name,
187+
if track.explicit {
188+
format!("{} (Explicit)", track.name)
189+
} else {
190+
track.name.clone()
191+
}
188192
),
189193
ui.theme.playback_track(),
190194
),

0 commit comments

Comments
 (0)