Files
umbrix/lib/features/settings/geo_assets/geo_assets_notifier.dart

50 lines
1.4 KiB
Dart
Raw Normal View History

2023-11-17 21:30:09 +03:30
import 'package:hiddify/data/data_providers.dart';
import 'package:hiddify/domain/rules/geo_asset.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:hiddify/utils/riverpod_utils.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'geo_assets_notifier.g.dart';
@riverpod
class GeoAssetsNotifier extends _$GeoAssetsNotifier with AppLogger {
@override
Stream<List<GeoAssetWithFileSize>> build() {
ref.disposeDelay(const Duration(seconds: 5));
return ref
.watch(geoAssetsRepositoryProvider)
.watchAll()
.map((event) => event.getOrElse((l) => throw l));
}
Future<void> updateGeoAsset(GeoAsset geoAsset) async {
await ref.read(geoAssetsRepositoryProvider).update(geoAsset).getOrElse(
(f) {
2023-11-17 23:44:32 +03:30
loggy.warning("error updating geo asset", f);
throw f;
},
).run();
}
Future<void> markAsActive(GeoAsset geoAsset) async {
await ref
.read(geoAssetsRepositoryProvider)
.markAsActive(geoAsset)
.getOrElse(
(f) {
loggy.warning("error marking geo asset as active", f);
throw f;
},
).run();
}
Future<void> addRecommended() async {
await ref.read(geoAssetsRepositoryProvider).addRecommended().getOrElse(
(f) {
loggy.warning("error adding recommended geo assets", f);
2023-11-17 21:30:09 +03:30
throw f;
},
).run();
}
}