getMoodPlaylists method

Future<List> getMoodPlaylists(
  1. String params
)

Retrieve a list of playlists for a given "Moods & Genres" category.

Returns List of playlists in the format of getLibraryPlaylists. // TODO getLibraryPlaylists is currently missing

Implementation

Future<List> getMoodPlaylists(String params) async {
  final playlists = <dynamic>[];
  final response = await sendRequest('browse', {
    'browseId': 'FEmusic_moods_and_genres_category',
    'params': params,
  });

  for (final section
      in nav(response, [...SINGLE_COLUMN_TAB, ...SECTION_LIST])
          as List<JsonMap>) {
    List path = [];
    if (section.containsKey('gridRenderer')) {
      path = GRID_ITEMS;
    } else if (section.containsKey('musicCarouselShelfRenderer')) {
      path = CAROUSEL_CONTENTS;
    } else if (section.containsKey('musicImmersiveCarouselShelfRenderer')) {
      path = ['musicImmersiveCarouselShelfRenderer', 'contents'];
    }

    if (path.isNotEmpty) {
      final results = nav(section, path);
      playlists.addAll(
        await parseContentList(results as List<JsonMap>, parsePlaylist),
      );
    }
  }
  return playlists;
}