getLatestVersion method

Future<String?> getLatestVersion({
  1. bool forceRefresh = false,
})

Implementation

Future<String?> getLatestVersion({bool forceRefresh = false}) async {
  final cache = _readCache();
  if (cache != null && !forceRefresh) {
    final lastCheckedStr = cache['last_checked'] as String?;
    final cachedVersion = cache['latest_version'] as String?;
    if (lastCheckedStr != null && cachedVersion != null) {
      final lastChecked = DateTime.tryParse(lastCheckedStr);
      if (lastChecked != null) {
        final now = DateTime.now().toUtc();
        if (now.difference(lastChecked) < checkInterval) {
          return cachedVersion;
        }
      }
    }
  }

  final fetched = await _fetchLatestVersionFromPub();
  if (fetched != null) {
    return fetched;
  }

  // If network fetch failed, fallback to cached version if present
  if (cache != null) {
    return cache['latest_version'] as String?;
  }

  return null;
}