checkForUpdates static method

Future<UpdateInfo> checkForUpdates({
  1. bool useCache = true,
})

Check for updates and return update information useCache - if true, uses cached data when available (default: true) Set to false for explicit update commands to always check pub.dev

Implementation

static Future<UpdateInfo> checkForUpdates({bool useCache = true}) async {
  try {
    // Check cache first only if useCache is true
    String? latestVersion;
    if (useCache) {
      final cachedInfo = await _getCachedUpdateInfo();
      if (cachedInfo != null && !_isCacheExpired(cachedInfo.lastChecked)) {
        latestVersion = cachedInfo.latestVersion;
      } else {
        // Fetch latest version from pub.dev
        latestVersion = await _fetchLatestVersion();
      }
    }

    if (latestVersion == null) {
      return UpdateInfo(
        currentVersion: AppConfig.version,
        latestVersion: AppConfig.version,
        hasUpdate: false,
        lastChecked: DateTime.now(),
      );
    }
    bool isNewerVersion(String v1, String v2) =>
        Version.parse(v1) > Version.parse(v2);
    // 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(),
    );
  }
}