/// <summary> /// Gets a user's playlists as a list of ListingPlaylist objects /// </summary> /// <param name="userID">The ID of the user to look up.</param> /// <param name="forceRequest">If false, this function will attempt to return the result from the cache first. If true, it will always make a fresh request and update the cache.</param> /// <returns></returns> public static async Task <List <ListingPlaylist> > GetUserPlaylistListing(string userID, bool forceRequest = false) { if (userID == null) { return(null); // to handle it when the user isn't logged in } if (!forceRequest && Cache.UsersPlaylists != null) { return(Cache.UsersPlaylists); } var firstPage = await API.S.GetUserPlaylistsAsync(userID, PLAYLIST_REQUEST_LIMIT); var results = await Depaginator <SimplePlaylist> .Depage(firstPage); var userplaylists = new List <ListingPlaylist>(); foreach (var playlist in results) { var lp = new ListingPlaylist(playlist); userplaylists.Add(lp); Cache.Save(playlist); // save simple playlist so the info screen is populated } Cache.UsersPlaylists = userplaylists; return(userplaylists); }
public static async Task <List <ListingTrack> > GetPlaylistTracks(FullPlaylist fp, LoadingStatus status = null) { var depagedPlaylist = await Depaginator <PlaylistTrack> .Depage(fp.Tracks, status); var results = new List <ListingTrack>(); // convert PlaylistTrack to ListingTrack with associated index for (int i = 0; i < depagedPlaylist.Count; i++) { PlaylistTrack playlistTrack = depagedPlaylist[i]; results.Add(new ListingTrack(playlistTrack, i)); } return(results); }