Files
peyawallet/lib/services/sync_scheduler.dart
T
2026-04-06 20:58:42 +02:00

42 lines
806 B
Dart

import 'dart:async';
class SyncScheduler {
SyncScheduler({required Future<void> Function() onSync}) : _onSync = onSync;
final Future<void> Function() _onSync;
Timer? _timer;
bool _enabled = false;
Duration _interval = const Duration(minutes: 1);
bool _running = false;
void configure({required bool enabled, required Duration interval}) {
_enabled = enabled;
_interval = interval;
_restart();
}
void _restart() {
_timer?.cancel();
if (!_enabled) {
return;
}
_timer = Timer.periodic(_interval, (_) => triggerSync());
}
Future<void> triggerSync() async {
if (_running) {
return;
}
_running = true;
try {
await _onSync();
} finally {
_running = false;
}
}
void dispose() {
_timer?.cancel();
}
}