apply content blocking

This commit is contained in:
Fabian Freund
2024-06-19 21:10:41 +02:00
parent d3e30613c9
commit 4726f12431
3 changed files with 94 additions and 16 deletions
@@ -0,0 +1,26 @@
import 'package:bang_navigator/features/content_block/domain/repositories/host.dart';
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'providers.g.dart';
@Riverpod(keepAlive: true)
Stream<Set<String>?> blockContentHosts(BlockContentHostsRef ref) {
final hostRepository = ref.watch(hostRepositoryProvider.notifier);
final enableContentBlocking = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.enableContentBlocking ?? false),
);
final enableHostList = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.enableHostList ?? {}),
);
if (!enableContentBlocking || enableHostList.isEmpty) {
return Stream.value(null);
}
return hostRepository
.watchHosts(sources: enableHostList)
.map((hosts) => hosts.toSet());
}