fix(alarms): skip stale startup executions
This commit is contained in:
@@ -29,6 +29,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
|||||||
Timer? _vigilancia;
|
Timer? _vigilancia;
|
||||||
final _alarmasVencidasController = StreamController<AlarmaMusical>.broadcast();
|
final _alarmasVencidasController = StreamController<AlarmaMusical>.broadcast();
|
||||||
final Set<String> _ejecucionesEmitidas = {};
|
final Set<String> _ejecucionesEmitidas = {};
|
||||||
|
static const _margenDisparoLocal = Duration(seconds: 45);
|
||||||
bool _cargando = false;
|
bool _cargando = false;
|
||||||
String? _error;
|
String? _error;
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
|||||||
_error = null;
|
_error = null;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
try {
|
try {
|
||||||
final config = await servicio.cargar();
|
final config = await servicio.recalcularTodas();
|
||||||
_aplicar(config);
|
_aplicar(config);
|
||||||
debugPrint('[PluriWave][alarmas] cargadas=${_alarmas.length} vacaciones=${_vacaciones.length} excepciones=${_excepciones.length}');
|
debugPrint('[PluriWave][alarmas] cargadas=${_alarmas.length} vacaciones=${_vacaciones.length} excepciones=${_excepciones.length}');
|
||||||
await _sincronizarTodas();
|
await _sincronizarTodas();
|
||||||
@@ -204,6 +205,14 @@ class EstadoAlarmas extends ChangeNotifier {
|
|||||||
if (!alarma.activa || proxima == null) continue;
|
if (!alarma.activa || proxima == null) continue;
|
||||||
if (proxima.isAfter(ahora)) continue;
|
if (proxima.isAfter(ahora)) continue;
|
||||||
final key = '${alarma.id}:${proxima.millisecondsSinceEpoch}';
|
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)) {
|
if (_ejecucionesEmitidas.add(key)) {
|
||||||
debugPrint('[PluriWave][alarmas] vencida local id=${alarma.id} proxima=${proxima.toIso8601String()}');
|
debugPrint('[PluriWave][alarmas] vencida local id=${alarma.id} proxima=${proxima.toIso8601String()}');
|
||||||
_alarmasVencidasController.add(alarma);
|
_alarmasVencidasController.add(alarma);
|
||||||
|
|||||||
Reference in New Issue
Block a user