fetchAvailableVersions function

Future<List<String>> fetchAvailableVersions()

Scrape https://unicode.org/Public/emoji, for available version.

Implementation

Future<List<String>> fetchAvailableVersions() async {
  final request = await client(url: _baseUrl);

  final response = await request.close();

  final responseHtml = (await response.transform(utf8.decoder).toList()).join();

  final table = Document.html(responseHtml).querySelectorAll('tbody');

  final versions = table.fold<List<String>>([], (acc, row) {
    final column = row.querySelectorAll('td:nth-child(1)');

    column.skip(1).forEach((item) {
      final version = item.text.replaceFirst('/', '');

      acc.add(version);
    });

    return acc;
  });

  // sort the list in descending order
  versions.sort((a, b) => double.parse(a) > double.parse(b) ? 0 : 1);

  return versions;
}