checkForUpdate method
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;
}
}