ublock list management initial

This commit is contained in:
Fabian Freund
2026-04-30 10:44:49 +02:00
parent 28dc4e93f1
commit d2bd36b1ed
43 changed files with 2894 additions and 65 deletions
@@ -20,11 +20,17 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/core/logger.dart';
import 'package:weblibre/features/geckoview/features/browser/domain/services/browser_addon.dart';
import 'package:weblibre/features/onboarding/presentation/pages/abstract/i_form_page.dart';
import 'package:weblibre/features/user/data/models/engine_settings.dart';
import 'package:weblibre/features/user/data/models/ublock_filter_list_settings.dart';
import 'package:weblibre/features/user/data/providers/ublock_assets.dart';
import 'package:weblibre/features/user/domain/repositories/engine_settings.dart';
import 'package:weblibre/presentation/widgets/browser_page.dart';
class UBlockOptInPage extends HookConsumerWidget implements IFormPage {
@@ -36,6 +42,7 @@ class UBlockOptInPage extends HookConsumerWidget implements IFormPage {
@override
Widget build(BuildContext context, WidgetRef ref) {
final theme = Theme.of(context);
final installUBlock = useState(true);
return BrowserPage(
child: BrowserPageContent(
@@ -66,6 +73,7 @@ There are many other lists available to block even more.
FormField(
initialValue: true,
onSaved: (newValue) {
installUBlock.value = newValue ?? false;
if (newValue == true) {
unawaited(
ref
@@ -80,9 +88,53 @@ There are many other lists available to block even more.
title: const Text('Install uBlock Origin Extension'),
onChanged: (value) {
field.didChange(value);
installUBlock.value = value;
},
),
),
FormField(
initialValue: true,
onSaved: (newValue) {
if (newValue != true || !installUBlock.value) return;
Future<void> applyOptimizedDefaults() async {
try {
final registry = await ref.read(
ublockAssetsRegistryProvider.future,
);
final optimized =
UBlockFilterListSettings.optimizedDefaults(registry);
await ref
.read(engineSettingsRepositoryProvider.notifier)
.updateSettings(
(current) => current.copyWith
.ublockFilterListSettings(optimized),
);
} catch (e, s) {
logger.w(
'Failed applying optimized uBlock defaults during onboarding',
error: e,
stackTrace: s,
);
}
}
unawaited(applyOptimizedDefaults());
},
builder: (field) => SwitchListTile(
contentPadding: EdgeInsets.zero,
value: field.value ?? false,
title: const Text('Apply optimized defaults'),
subtitle: const Text(
'Enable WebLibre hardening filter lists.',
),
onChanged: installUBlock.value
? (value) {
field.didChange(value);
}
: null,
),
),
],
),
),