getVersionInfo method

  1. @override
Future<UpgraderVersionInfo> getVersionInfo({
  1. required UpgraderState state,
  2. required Version installedVersion,
  3. required String? country,
  4. required String? language,
})
override

Implementation

@override
Future<UpgraderVersionInfo> getVersionInfo(
    {required UpgraderState state,
    required Version installedVersion,
    required String? country,
    required String? language}) async {
  if (state.packageInfo == null) return UpgraderVersionInfo();
  final id = state.packageInfo!.packageName;
  final playStore = PlayStoreSearchAPI(
      client: state.client, clientHeaders: state.clientHeaders);
  playStore.debugLogging = state.debugLogging;

  String? appStoreListingURL;
  Version? appStoreVersion;
  bool? isCriticalUpdate;
  Version? minAppVersion;
  String? releaseNotes;

  final response =
      await playStore.lookupById(id, country: country, language: language);
  if (response != null) {
    final version = playStore.version(response);
    if (version != null) {
      try {
        appStoreVersion = Version.parse(version);
      } catch (e) {
        if (state.debugLogging) {
          print(
              'upgrader: UpgraderPlayStore.appStoreVersion "$version" exception: $e');
        }
      }
    }

    appStoreListingURL ??=
        playStore.lookupURLById(id, language: language, country: country);
    releaseNotes ??= playStore.releaseNotes(response);
    final mav = playStore.minAppVersion(response);
    if (mav != null) {
      try {
        final minVersion = mav.toString();
        minAppVersion = Version.parse(minVersion);

        if (state.debugLogging) {
          print('upgrader: UpgraderPlayStore.minAppVersion: $minAppVersion');
        }
      } catch (e) {
        if (state.debugLogging) {
          print('upgrader: UpgraderPlayStore.minAppVersion exception: $e');
        }
      }
    }
  }

  final versionInfo = UpgraderVersionInfo(
    installedVersion: installedVersion,
    appStoreListingURL: appStoreListingURL,
    appStoreVersion: appStoreVersion,
    isCriticalUpdate: isCriticalUpdate,
    minAppVersion: minAppVersion,
    releaseNotes: releaseNotes,
  );
  if (state.debugLogging) {
    print('upgrader: UpgraderPlayStore: version info: $versionInfo');
  }
  return versionInfo;
}