refactor: split providers into feature modules

This commit is contained in:
Artem Kokos
2026-04-27 23:21:47 +07:00
parent eed04e9122
commit 872ddf9513
12 changed files with 925 additions and 924 deletions

View File

@@ -0,0 +1,29 @@
import 'package:workmanager/workmanager.dart';
import '../../models/home_config.dart';
import '../../services/geofence_worker.dart';
/// Синхронизировать состояние фонового таска с настройками домов.
/// Вызывать при старте приложения и при изменении настроек.
///
/// Если хотя бы один дом имеет geofenceReady -- регистрируем
/// периодический таск. Иначе -- отменяем.
Future<void> syncGeofenceTask(List<HomeConfig> homes) async {
final needGeofence = homes.any((h) => h.geofenceReady);
if (needGeofence) {
await resetGeofenceFired();
await Workmanager().registerPeriodicTask(
geofenceTaskUniqueName,
geofenceTaskName,
frequency: const Duration(minutes: 15),
constraints: Constraints(networkType: NetworkType.connected),
existingWorkPolicy: ExistingPeriodicWorkPolicy.replace,
backoffPolicy: BackoffPolicy.linear,
backoffPolicyDelay: const Duration(minutes: 1),
);
} else {
await Workmanager().cancelByUniqueName(geofenceTaskUniqueName);
}
}