introduce track data class

This commit is contained in:
Henrik Friedrichsen
2019-03-06 00:15:28 +01:00
parent 0f3cc41115
commit 91e89c2970
10 changed files with 98 additions and 75 deletions

View File

@@ -14,7 +14,6 @@ use rspotify::spotify::client::Spotify as SpotifyAPI;
use rspotify::spotify::model::page::Page;
use rspotify::spotify::model::playlist::{PlaylistTrack, SimplifiedPlaylist};
use rspotify::spotify::model::search::SearchTracks;
use rspotify::spotify::model::track::FullTrack;
use failure::Error;
@@ -34,9 +33,10 @@ use std::time::{Duration, SystemTime};
use events::{Event, EventManager};
use queue::Queue;
use track::Track;
enum WorkerCommand {
Load(FullTrack),
Load(Track),
Play,
Pause,
Stop,
@@ -51,7 +51,7 @@ pub enum PlayerStatus {
pub struct Spotify {
status: RwLock<PlayerStatus>,
track: RwLock<Option<FullTrack>>,
track: RwLock<Option<Track>>,
pub api: SpotifyAPI,
elapsed: RwLock<Option<Duration>>,
since: RwLock<Option<SystemTime>>,
@@ -99,9 +99,7 @@ impl futures::Future for Worker {
debug!("message received!");
match cmd {
WorkerCommand::Load(track) => {
let trackid =
SpotifyId::from_base62(&track.id).expect("could not load track");
self.play_task = Box::new(self.player.load(trackid, false, 0));
self.play_task = Box::new(self.player.load(track.id, false, 0));
info!("player loading track..");
self.events.send(Event::PlayerTrack(Some(track)));
}
@@ -127,10 +125,8 @@ impl futures::Future for Worker {
let mut queue = self.queue.lock().unwrap();
if let Some(track) = queue.dequeue() {
debug!("next track in queue: {}", track.name);
let trackid =
SpotifyId::from_base62(&track.id).expect("could not load track");
self.play_task = Box::new(self.player.load(trackid, false, 0));
debug!("next track in queue: {}", track);
self.play_task = Box::new(self.player.load(track.id, false, 0));
self.player.play();
self.events.send(Event::PlayerTrack(Some(track)));
@@ -246,7 +242,7 @@ impl Spotify {
(*status).clone()
}
pub fn get_current_track(&self) -> Option<FullTrack> {
pub fn get_current_track(&self) -> Option<Track> {
let track = self
.track
.read()
@@ -311,7 +307,7 @@ impl Spotify {
.user_playlist_tracks(&self.user, playlist_id, None, 50, 0, None)
}
pub fn load(&self, track: FullTrack) {
pub fn load(&self, track: Track) {
info!("loading track: {:?}", track);
self.channel
.unbounded_send(WorkerCommand::Load(track))
@@ -340,7 +336,7 @@ impl Spotify {
*status = new_status;
}
pub fn update_track(&self, new_track: Option<FullTrack>) {
pub fn update_track(&self, new_track: Option<Track>) {
self.set_elapsed(None);
self.set_since(None);