latestRelease method

Future<Release> latestRelease()

Implementation

Future<Release> latestRelease() async {
  final response = await http.get(
    Uri.parse(
      'https://api.appstoreconnect.apple.com/v1/builds?filter[app]=$_appId&sort=-version,-uploadedDate&limit=1&fields[builds]=version&include=preReleaseVersion',
    ),
    headers: {'Authorization': 'Bearer $_token'},
  );

  if (response.statusCode == 200) {
    final body = jsonDecode(response.body) as Map?;
    final buildNumber = int.tryParse(
      (((body?['data'] as List?)?.firstOrNull as Map?)?['attributes']
              as Map?)?['version'] as String? ??
          '',
    );
    final buildName = (((body?['included'] as List?)?.firstOrNull
        as Map?)?['attributes'] as Map?)?['version'] as String?;

    return Release(
      buildName: buildName ?? '1.0.0',
      buildNumber: buildNumber ?? 0,
    );
  }

  logHttpResponse(response);
  throw Exception('Error fetching latest release.');
}