fix(alarms): skip stale startup executions
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user