Files
umbrix/lib/features/config_option/notifier/config_option_notifier.dart

36 lines
1.1 KiB
Dart
Raw Normal View History

2023-12-01 12:56:24 +03:30
import 'package:hiddify/features/config_option/data/config_option_data_providers.dart';
import 'package:hiddify/features/config_option/model/config_option_entity.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'config_option_notifier.g.dart';
@Riverpod(keepAlive: true)
class ConfigOptionNotifier extends _$ConfigOptionNotifier with AppLogger {
@override
2024-02-11 16:45:22 +03:30
Future<ConfigOptionEntity> build() async {
2023-12-01 12:56:24 +03:30
return ref
.watch(configOptionRepositoryProvider)
.getConfigOption()
.getOrElse((l) {
loggy.error("error getting persisted options $l", l);
throw l;
2024-02-11 16:45:22 +03:30
});
2023-12-01 12:56:24 +03:30
}
Future<void> updateOption(ConfigOptionPatch patch) async {
if (state case AsyncData(value: final options)) {
await ref
.read(configOptionRepositoryProvider)
.updateConfigOption(patch)
.map((_) => state = AsyncData(options.patch(patch)))
.run();
}
}
2023-12-12 18:07:02 +03:30
Future<void> resetOption() async {
await ref.read(configOptionRepositoryProvider).resetConfigOption().run();
ref.invalidateSelf();
}
2023-12-01 12:56:24 +03:30
}