checkVersion method

  1. @override
Future<VersionStatus?> checkVersion(
  1. PackageInfo packageInfo
)
override

Implementation

@override
Future<VersionStatus?> checkVersion(PackageInfo packageInfo) async {
  final response = await http.get(
    apiUrl,
    headers: {
      'X-App-Version': packageInfo.version,
      'X-Platform': _getPlatform(),
      ...?additionalHeaders,
    },
  );

  if (response.statusCode != 200) {
    throw HttpException('HTTP error: ${response.statusCode}');
  }

  final latestVersion = response.headers['x-latest-app-version'];
  final forceUpdate = response.headers['x-force-update']?.toLowerCase() == 'true';
  final note = response.headers['x-release-notes'];
  final storeUrl = response.headers['x-store-url'];

  if (latestVersion == null) {
    throw Exception('Header "x-latest-app-version" missing in response');
  }

  if (_compareVersions(packageInfo.version, latestVersion) >= 0) {
    // Ya está actualizado, no hay actualización disponible.
    return null;
  }

  return VersionStatus(
    localVersion: packageInfo.version,
    storeVersion: latestVersion,
    appStoreLink: storeUrl ?? '',
    releaseNotes: note,
    forceUpdate: forceUpdate,
  );
}