checkForUpdates static method

Future<UpdateInfo> checkForUpdates()

Check for updates and return update information

Implementation

static Future<UpdateInfo> checkForUpdates() async {
  try {
    // Check cache first
    final cachedInfo = await _getCachedUpdateInfo();
    if (cachedInfo != null && !_isCacheExpired(cachedInfo.lastChecked)) {
      return cachedInfo;
    }

    // Fetch latest version from pub.flutter-io.cn
    final latestVersion = await _fetchLatestVersion();
    if (latestVersion == null) {
      return UpdateInfo(
        currentVersion: AppConfig.version,
        latestVersion: AppConfig.version,
        hasUpdate: false,
        lastChecked: DateTime.now(),
      );
    }

    // Compare versions
    final hasUpdate = _isNewerVersion(latestVersion, AppConfig.version);

    final updateInfo = UpdateInfo(
      currentVersion: AppConfig.version,
      latestVersion: latestVersion,
      hasUpdate: hasUpdate,
      lastChecked: DateTime.now(),
    );

    // Cache the result
    await _cacheUpdateInfo(updateInfo);

    return updateInfo;
  } catch (e) {
    // Return no update info on error
    return UpdateInfo(
      currentVersion: AppConfig.version,
      latestVersion: AppConfig.version,
      hasUpdate: false,
      lastChecked: DateTime.now(),
      error: e.toString(),
    );
  }
}