diff --git a/src/model/album.rs b/src/model/album.rs index f683c71..1f6e2df 100644 --- a/src/model/album.rs +++ b/src/model/album.rs @@ -27,11 +27,12 @@ pub struct Album { pub url: Option, pub tracks: Option>, pub added_at: Option>, + total_tracks: Option, } impl Album { pub fn load_all_tracks(&mut self, spotify: Spotify) { - if self.tracks.is_some() { + if self.tracks.is_some() && self.tracks.as_ref().map(|t| t.len()) == self.total_tracks { return; } @@ -61,7 +62,8 @@ impl Album { } } - self.tracks = Some(collected_tracks) + self.total_tracks = Some(collected_tracks.len()); + self.tracks = Some(collected_tracks); } } } @@ -89,6 +91,7 @@ impl From<&SimplifiedAlbum> for Album { url: sa.id.as_ref().map(|id| id.url()), tracks: None, added_at: None, + total_tracks: None, } } } @@ -117,6 +120,7 @@ impl From<&FullAlbum> for Album { url: Some(fa.id.uri()), tracks, added_at: None, + total_tracks: Some(fa.tracks.total as usize), } } }