import 'dart:io'; import 'package:sysfarma_mobile/src/core/observability/observability.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:in_app_update/in_app_update.dart'; final appUpdateServiceProvider = Provider((ref) => const AppUpdateService()); /// Chequea actualizaciones vía la In-App Update API de Google Play. /// /// Solo funciona en Android con la app instalada desde Play Store (en debug o /// sideload el plugin lanza una excepción que se captura silenciosamente). class AppUpdateService { const AppUpdateService(); Future checkForUpdate() async { if (kIsWeb || !Platform.isAndroid) return; try { final info = await InAppUpdate.checkForUpdate(); if (info.updateAvailability != UpdateAvailability.updateAvailable) { return; } // Preferimos flexible (descarga en segundo plano + prompt de reinicio); // si la consola de Play exige actualización inmediata, caemos a esa. if (info.flexibleUpdateAllowed) { await InAppUpdate.startFlexibleUpdate(); await InAppUpdate.completeFlexibleUpdate(); } else if (info.immediateUpdateAllowed) { await InAppUpdate.performImmediateUpdate(); } } catch (error, stack) { // Esperado fuera de Play Store (sideload/debug). No molestar al usuario. if (kDebugMode) { debugPrint('[SysFarma] in-app update no disponible: $error'); } await Observability.captureException(error, stack); } } }