Refactor: separate Spotify API from player logic

The separation is not perfect yet, but it's a start and makes the entire codebase much easier to read.
This commit is contained in:
Henrik Friedrichsen
2021-08-23 22:15:54 +02:00
parent 3b0586b46a
commit faad362f55
15 changed files with 583 additions and 486 deletions

View File

@@ -534,21 +534,27 @@ impl<I: ListItem + Clone> ViewExt for ListView<I> {
if let Some(url) = url {
let target: Option<Box<dyn ListItem>> = match url.uri_type {
UriType::Track => spotify
.api
.track(&url.id)
.map(|track| Track::from(&track).as_listitem()),
UriType::Album => spotify
.api
.album(&url.id)
.map(|album| Album::from(&album).as_listitem()),
UriType::Playlist => spotify
.api
.playlist(&url.id)
.map(|playlist| Playlist::from(&playlist).as_listitem()),
UriType::Artist => spotify
.api
.artist(&url.id)
.map(|artist| Artist::from(&artist).as_listitem()),
UriType::Episode => spotify
.api
.episode(&url.id)
.map(|episode| Episode::from(&episode).as_listitem()),
UriType::Show => spotify
.api
.get_show(&url.id)
.map(|show| Show::from(&show).as_listitem()),
};