public Task <bool> ToggleFavourited(ulong itemId, EFavouriteType type)
        {
            switch (type)
            {
            case EFavouriteType.Album:
                return(ToggleAlbumFavourite(itemId));

            case EFavouriteType.Track:
                return(ToggleTrackFavourite(itemId));

            case EFavouriteType.Artist:
                return(ToggleArtistFavourite(itemId));

            case EFavouriteType.Playlist:
                return(TogglePlaylistFavourite(itemId));

            default:
                throw new ArgumentException("Invalid type.");
            }
        }
        public bool IsFavourited(ulong itemId, EFavouriteType type = EFavouriteType.Unknown)
        {
            switch (type)
            {
            case EFavouriteType.Album:
                return(this.favouriteAlbums.Contains(itemId));

            case EFavouriteType.Track:
                return(this.favouriteTracks.Contains(itemId));

            case EFavouriteType.Artist:
                return(this.favouriteArtists.Contains(itemId));

            case EFavouriteType.Playlist:
                return(this.favouritePlaylists.Contains(itemId));

            default:
                return(this.favouriteTracks.Contains(itemId) ||
                       this.favouriteAlbums.Contains(itemId) ||
                       this.favouriteArtists.Contains(itemId) ||
                       this.favouritePlaylists.Contains(itemId));
            }
        }
 public bool CanFavourite(ulong itemId, EFavouriteType type = EFavouriteType.Unknown)
 => this.IsLoggedIn && !this.userPlaylists.Contains(itemId);