diff --git a/src/model/album.rs b/src/model/album.rs index e038b680..b16be454 100644 --- a/src/model/album.rs +++ b/src/model/album.rs @@ -38,7 +38,7 @@ impl Album { if let Some(ref album_id) = self.id { let mut collected_tracks = Vec::new(); - if let Some(full_album) = spotify.api.full_album(album_id) { + if let Some(full_album) = spotify.api.album(album_id) { let mut tracks_result = Some(full_album.tracks.clone()); while let Some(ref tracks) = tracks_result { for t in &tracks.items { diff --git a/src/spotify_api.rs b/src/spotify_api.rs index b94abf03..8fd9813a 100644 --- a/src/spotify_api.rs +++ b/src/spotify_api.rs @@ -260,6 +260,7 @@ impl WebApi { } pub fn album(&self, album_id: &str) -> Option { + debug!("fetching album {}", album_id); let aid = AlbumId::from_id(album_id).ok()?; self.api_with_retry(|api| api.album(aid.clone())) } @@ -400,16 +401,13 @@ impl WebApi { ApiResult::new(MAX_LIMIT, Arc::new(fetch_page)) } - pub fn full_album(&self, album_id: &str) -> Option { - self.api_with_retry(|api| api.album(AlbumId::from_id(album_id).unwrap())) - } - pub fn album_tracks( &self, album_id: &str, limit: u32, offset: u32, ) -> Option> { + debug!("fetching album tracks {}", album_id); self.api_with_retry(|api| { api.album_track_manual( AlbumId::from_id(album_id).unwrap(), diff --git a/src/ui/contextmenu.rs b/src/ui/contextmenu.rs index 8ea19df6..f0771107 100644 --- a/src/ui/contextmenu.rs +++ b/src/ui/contextmenu.rs @@ -200,6 +200,7 @@ impl ContextMenu { pub fn new(item: &dyn ListItem, queue: Arc, library: Arc) -> NamedView { let mut content: SelectView = SelectView::new(); + let album = item.album(&queue); if item.is_playable() { if item.is_playing(&queue) @@ -238,8 +239,11 @@ impl ContextMenu { } } - if let Some(a) = item.album(&queue) { - content.add_item("Show album", ContextMenuAction::ShowItem(Box::new(a))); + if let Some(ref a) = album { + content.add_item( + "Show album", + ContextMenuAction::ShowItem(Box::new(a.clone())), + ); } #[cfg(feature = "share_clipboard")] @@ -247,7 +251,7 @@ impl ContextMenu { if let Some(url) = item.share_url() { content.add_item("Share", ContextMenuAction::ShareUrl(url)); } - if let Some(url) = item.album(&queue).and_then(|a| a.share_url()) { + if let Some(url) = album.as_ref().and_then(|a| a.share_url()) { content.add_item("Share album", ContextMenuAction::ShareUrl(url)); } } @@ -273,14 +277,14 @@ impl ContextMenu { ); } - if let Some(album) = item.album(&queue) { - if let Some(savestatus) = album.is_saved(&library) { + if let Some(ref a) = album { + if let Some(savestatus) = a.is_saved(&library) { content.add_item( match savestatus { true => "Unsave album", false => "Save album", }, - ContextMenuAction::ToggleSavedStatus(album.as_listitem()), + ContextMenuAction::ToggleSavedStatus(a.as_listitem()), ); } }