Merge remote-tracking branch 'origin/feature/new_rspotify' into develop

This commit is contained in:
Henrik Friedrichsen
2019-04-24 21:01:15 +02:00
9 changed files with 168 additions and 87 deletions

View File

@@ -14,13 +14,13 @@ use ui::album::AlbumView;
#[derive(Clone, Deserialize, Serialize)]
pub struct Album {
pub id: String,
pub id: Option<String>,
pub title: String,
pub artists: Vec<String>,
pub artist_ids: Vec<String>,
pub year: String,
pub cover_url: Option<String>,
pub url: String,
pub url: Option<String>,
pub tracks: Option<Vec<Track>>,
pub added_at: Option<DateTime<Utc>>,
}
@@ -31,14 +31,16 @@ impl Album {
return;
}
if let Some(fa) = spotify.full_album(&self.id) {
self.tracks = Some(
fa.tracks
.items
.iter()
.map(|st| Track::from_simplified_track(&st, &fa))
.collect(),
);
if let Some(ref album_id) = self.id {
if let Some(fa) = spotify.full_album(&album_id) {
self.tracks = Some(
fa.tracks
.items
.iter()
.map(|st| Track::from_simplified_track(&st, &fa))
.collect(),
);
}
}
}
}
@@ -49,8 +51,20 @@ impl From<&SimplifiedAlbum> for Album {
id: sa.id.clone(),
title: sa.name.clone(),
artists: sa.artists.iter().map(|sa| sa.name.clone()).collect(),
artist_ids: sa.artists.iter().map(|sa| sa.id.clone()).collect(),
year: sa.release_date.split('-').next().unwrap().into(),
artist_ids: sa
.artists
.iter()
.filter(|a| a.id.is_some())
.map(|sa| sa.id.clone().unwrap())
.collect(),
year: sa
.release_date
.clone()
.unwrap_or_default()
.split('-')
.next()
.unwrap()
.into(),
cover_url: sa.images.get(0).map(|i| i.url.clone()),
url: sa.uri.clone(),
tracks: None,
@@ -70,13 +84,18 @@ impl From<&FullAlbum> for Album {
);
Self {
id: fa.id.clone(),
id: Some(fa.id.clone()),
title: fa.name.clone(),
artists: fa.artists.iter().map(|sa| sa.name.clone()).collect(),
artist_ids: fa.artists.iter().map(|sa| sa.id.clone()).collect(),
artist_ids: fa
.artists
.iter()
.filter(|a| a.id.is_some())
.map(|sa| sa.id.clone().unwrap())
.collect(),
year: fa.release_date.split('-').next().unwrap().into(),
cover_url: fa.images.get(0).map(|i| i.url.clone()),
url: fa.uri.clone(),
url: Some(fa.uri.clone()),
tracks,
added_at: None,
}
@@ -101,7 +120,7 @@ impl fmt::Debug for Album {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(
f,
"({} - {} ({}))",
"({} - {} ({:?}))",
self.artists.join(", "),
self.title,
self.id
@@ -117,9 +136,14 @@ impl ListItem for Album {
.read()
.unwrap()
.iter()
.map(|t| t.id.clone())
.filter(|t| t.id.is_some())
.map(|t| t.id.clone().unwrap())
.collect();
let ids: Vec<String> = tracks
.iter()
.filter(|t| t.id.is_some())
.map(|t| t.id.clone().unwrap())
.collect();
let ids: Vec<String> = tracks.iter().map(|t| t.id.clone()).collect();
!ids.is_empty() && playing == ids
} else {
false