2026-01-17 13:09:20 +03:00
|
|
|
import 'package:umbrix/features/settings/data/settings_data_providers.dart';
|
|
|
|
|
import 'package:umbrix/singbox/service/singbox_service_provider.dart';
|
|
|
|
|
import 'package:umbrix/utils/custom_loggers.dart';
|
2023-12-01 12:56:24 +03:30
|
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
|
|
|
|
|
|
part 'platform_settings_notifier.g.dart';
|
|
|
|
|
|
|
|
|
|
@riverpod
|
|
|
|
|
class IgnoreBatteryOptimizations extends _$IgnoreBatteryOptimizations {
|
|
|
|
|
@override
|
|
|
|
|
Future<bool> build() async {
|
|
|
|
|
return ref
|
|
|
|
|
.watch(settingsRepositoryProvider)
|
|
|
|
|
.isIgnoringBatteryOptimizations()
|
|
|
|
|
.getOrElse((l) => false)
|
|
|
|
|
.run();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> request() async {
|
|
|
|
|
await ref
|
|
|
|
|
.read(settingsRepositoryProvider)
|
|
|
|
|
.requestIgnoreBatteryOptimizations()
|
|
|
|
|
.run();
|
|
|
|
|
await Future.delayed(const Duration(seconds: 1));
|
|
|
|
|
ref.invalidateSelf();
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-01-18 22:53:17 +03:30
|
|
|
|
|
|
|
|
@riverpod
|
|
|
|
|
class ResetTunnel extends _$ResetTunnel with AppLogger {
|
|
|
|
|
@override
|
|
|
|
|
Future<void> build() async {}
|
|
|
|
|
|
|
|
|
|
Future<void> run() async {
|
|
|
|
|
state = const AsyncLoading();
|
|
|
|
|
state = await AsyncValue.guard(
|
|
|
|
|
() => ref.read(singboxServiceProvider).resetTunnel().getOrElse(
|
|
|
|
|
(err) {
|
|
|
|
|
loggy.warning("error resetting tunnel", err);
|
|
|
|
|
throw err;
|
|
|
|
|
},
|
|
|
|
|
).run(),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|