ublock list management initial
This commit is contained in:
@@ -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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user