checkForUpdate method

Future<AppRelease?> checkForUpdate()

Check if update is available from Firestore

Implementation

Future<AppRelease?> checkForUpdate() async {
  try {
    debugPrint('🔍 Checking for updates...');
    debugPrint('📦 Current: v$currentVersion ($currentBuildNumber)');
    debugPrint('📦 Package: $packageName');

    // Query Firestore for this app's latest release
    final querySnapshot = await _firestore
        .collection(collectionName)
        .where('package_name', isEqualTo: packageName)
        .orderBy('build_number', descending: true)
        .limit(1)
        .get()
        .timeout(const Duration(seconds: 30));

    if (querySnapshot.docs.isEmpty) {
      debugPrint('❌ No release found for: $packageName');
      return null;
    }

    final doc = querySnapshot.docs.first;
    final data = doc.data();

    // Add document ID to data
    data['id'] = doc.id;

    final release = AppRelease.fromJson(data);
    debugPrint('📦 Latest: v${release.version} (${release.buildNumber})');

    // Check if update available
    if (release.buildNumber > currentBuildNumber) {
      debugPrint('✅ Update available!');
      return release;
    }

    debugPrint('✅ Already on latest version');
    return null;
  } catch (e) {
    debugPrint('❌ Error checking update: $e');
    return null;
  }
}