/// <summary> /// Rebind the playlist to the view after it's been randified /// </summary> /// <returns></returns> public async Task BindPlaylistAfterSort(List <PlaylistTrack> playlistTracks) { PlaylistTracks.Clear(); PlaylistTracks.AddRange(playlistTracks); NumberOfLoadedTracks = PlaylistTracks.Count(); IsPlaylistLoading = false; Stopwatch.Stop(); StateHasChanged(); }
/// <summary> /// /// </summary> /// <returns></returns> public async Task BindPlaylist(string playlistId, List <PlaylistTrack> playlistTracks = null) { if (IsRandifying || IsPlaylistLoading) { return; } try { IsPlaylistLoading = true; Seconds = 0; NumberOfLoadedTracks = 0; Stopwatch = new Stopwatch(); Stopwatch.Start(); PlaylistTracks.Clear(); try { if (playlistTracks == null) { var tracks = new List <PlaylistTrack>(); CurrentPlaylist = Playlists.FirstOrDefault(o => o.Id == playlistId); var page = await SpotifyService.GetPlaylistTracks(AuthenticationService.User, AuthenticationService.Token, CurrentPlaylist); do { foreach (var playlistTrack in page.Items) { tracks.Add(playlistTrack); } Seconds = Stopwatch.Elapsed.Seconds; NumberOfLoadedTracks = tracks.Count(); StateHasChanged(); if (page.HasNextPage) { page = await SpotifyService.GetNextPage(page, AuthenticationService.Token); } else { page = null; } }while (page != null); PlaylistTracks = tracks; } else { PlaylistTracks.AddRange(playlistTracks); } } catch (Exception ex) { PageException = ex; } NumberOfLoadedTracks = PlaylistTracks.Count(); IsPlaylistLoading = false; Stopwatch.Stop(); StateHasChanged(); } catch (Exception ex) { PageException = ex; Logger.LogError(ex, ex.Message); } }