checkAppVersion static method

Future<VersionCheckResult> checkAppVersion(
  1. AppVersionEntity appVersion,
  2. DeviceInfoData deviceInfo
)

Implementation

static Future<VersionCheckResult> checkAppVersion(
  AppVersionEntity appVersion,
  DeviceInfoData deviceInfo,
) async {
  final Version currentVersion = Version.parse(deviceInfo.appVersion);
  final int? currentBuildNumber = int.tryParse(deviceInfo.appBuild);

  final Version forcedVersion = Version.parse(appVersion.versionForced);
  final Version optionalVersion = Version.parse(appVersion.versionOptional);
  final int? forcedBuildNumber = int.tryParse(appVersion.buildForced);
  final int? optionalBuildNumber = int.tryParse(appVersion.buildOptional);

  final bool isForcedUpdateVersion =
      appVersion.useVersion && currentVersion < forcedVersion;

  final bool isForcedUpdateBuild = appVersion.useBuild &&
      currentBuildNumber != null &&
      forcedBuildNumber != null &&
      currentBuildNumber < forcedBuildNumber;

  final bool isOptionalUpdateVersion =
      appVersion.useVersion && currentVersion < optionalVersion;
  final bool isOptionalUpdateBuild = appVersion.useBuild &&
      currentBuildNumber != null &&
      optionalBuildNumber != null &&
      currentBuildNumber < optionalBuildNumber;

  if (isForcedUpdateVersion || isForcedUpdateBuild) {
    return VersionCheckResult.forceUpdateRequired;
  } else if (isOptionalUpdateVersion || isOptionalUpdateBuild) {
    return VersionCheckResult.available;
  } else {
    return VersionCheckResult.notAvailable;
  }
}