/// <summary> /// Fetches the tracklist of the clicked release and displays it. /// </summary> /// <param name="sender">Clicked release as <see cref="LastAlbum"/>.</param> /// <param name="e">Ignored.</param> public async void ReleaseClicked(object sender, EventArgs e) { if (EnableControls) { EnableControls = false; try { var release = sender as Release; OnStatusUpdated(string.Format("Trying to fetch tracklist from release '{0}'", release.Name)); LastResponse <LastAlbum> response = null; if (!string.IsNullOrEmpty(release.Mbid)) { response = await _lastfmAlbumAPI.GetInfoByMbidAsync(release.Mbid); } else { response = await _lastfmAlbumAPI.GetInfoAsync(release.ArtistName, release.Name); } if (response.Success && response.Status == LastResponseStatus.Successful) { Scrobbles.Clear(); foreach (var t in response.Content.Tracks) { FetchedTrackViewModel vm = new FetchedTrackViewModel(new ScrobbleBase(t.Name, t.ArtistName, t.AlbumName, "", t.Duration), release.Image); vm.ToScrobbleChanged += ToScrobbleChanged; Scrobbles.Add(vm); } if (Scrobbles.Count != 0) { CurrentView = _trackResultView; OnStatusUpdated(string.Format("Successfully fetched tracklist from release '{0}'", release.Name)); } else { OnStatusUpdated(string.Format("Release '{0}' has no tracks", release.Name)); } } else { OnStatusUpdated(string.Format("Error while fetching tracklist from release '{0}': {1}", release.Name, response.Status)); } } catch (Exception ex) { OnStatusUpdated(string.Format("Fatal error while fetching tracklist from release: {0}", ex.Message)); } finally { EnableControls = true; } } }
/// <summary> /// Fetches the recent scrobbles of the user with the given <see cref="Username"/>. /// </summary> public async Task FetchScrobbles() { try { EnableControls = false; OnStatusUpdated(string.Format("Trying to fetch scrobbles of '{0}' ...", Username)); Scrobbles.Clear(); var response = await _userApi.GetRecentScrobbles(Username, null, 1, Amount); if (response.Success) { foreach (var s in response) { if (!s.IsNowPlaying.HasValue || !s.IsNowPlaying.Value) { FetchedFriendTrackViewModel vm = new FetchedFriendTrackViewModel(s); vm.ToScrobbleChanged += ToScrobbleChanged; Scrobbles.Add(vm); } } OnStatusUpdated(string.Format("Successfully fetched scrobbles of '{0}'", Username)); } else { OnStatusUpdated(string.Format("Failed to fetch scrobbles of '{0}': {1}", Username, response.Status)); } } catch (Exception ex) { OnStatusUpdated(string.Format("Fatal error while fetching scrobbles of '{0}': {1}", Username, ex.Message)); } finally { EnableControls = true; } }