fix(alarms): skip stale startup executions
Build & Deploy Pluriwave / Análisis de código (push) Successful in 23s
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 2m21s

This commit is contained in:
2026-05-22 19:32:58 +02:00
parent 2816a97c93
commit 26078ad49b
+10 -1
View File
@@ -29,6 +29,7 @@ class EstadoAlarmas extends ChangeNotifier {
Timer? _vigilancia;
final _alarmasVencidasController = StreamController<AlarmaMusical>.broadcast();
final Set<String> _ejecucionesEmitidas = {};
static const _margenDisparoLocal = Duration(seconds: 45);
bool _cargando = false;
String? _error;
@@ -54,7 +55,7 @@ class EstadoAlarmas extends ChangeNotifier {
_error = null;
notifyListeners();
try {
final config = await servicio.cargar();
final config = await servicio.recalcularTodas();
_aplicar(config);
debugPrint('[PluriWave][alarmas] cargadas=${_alarmas.length} vacaciones=${_vacaciones.length} excepciones=${_excepciones.length}');
await _sincronizarTodas();
@@ -204,6 +205,14 @@ class EstadoAlarmas extends ChangeNotifier {
if (!alarma.activa || proxima == null) continue;
if (proxima.isAfter(ahora)) continue;
final key = '${alarma.id}:${proxima.millisecondsSinceEpoch}';
final retraso = ahora.difference(proxima);
if (retraso > _margenDisparoLocal) {
_ejecucionesEmitidas.add(key);
debugPrint(
'[PluriWave][alarmas] vencida local ignorada por antigua id=${alarma.id} proxima=${proxima.toIso8601String()} retraso=${retraso.inSeconds}s',
);
continue;
}
if (_ejecucionesEmitidas.add(key)) {
debugPrint('[PluriWave][alarmas] vencida local id=${alarma.id} proxima=${proxima.toIso8601String()}');
_alarmasVencidasController.add(alarma);