Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
        }