import 'package:battery_plus/battery_plus.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:relationship_saver/features/ai_digest/domain/ai_digest_models.dart'; abstract interface class LlmDigestEnvironment { Future canRun(LlmDigestConfigState config); } class DeviceLlmDigestEnvironment implements LlmDigestEnvironment { DeviceLlmDigestEnvironment({Connectivity? connectivity, Battery? battery}) : _connectivity = connectivity ?? Connectivity(), _battery = battery ?? Battery(); final Connectivity _connectivity; final Battery _battery; @override Future canRun(LlmDigestConfigState config) async { if (config.requireWifi) { final List results = await _connectivity .checkConnectivity(); if (!results.contains(ConnectivityResult.wifi)) { return false; } } if (config.requireCharging) { final BatteryState state = await _battery.batteryState; if (state != BatteryState.charging && state != BatteryState.full) { return false; } } return true; } } final Provider llmDigestEnvironmentProvider = Provider((Ref ref) => DeviceLlmDigestEnvironment());