refactor consumption of settings with defaults
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:bang_navigator/features/content_block/domain/repositories/host.dart';
|
||||
import 'package:bang_navigator/features/settings/data/models/settings.dart';
|
||||
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
@@ -8,12 +9,15 @@ part 'providers.g.dart';
|
||||
Stream<Set<String>?> blockContentHosts(BlockContentHostsRef ref) {
|
||||
final hostRepository = ref.watch(hostRepositoryProvider.notifier);
|
||||
final enableContentBlocking = ref.watch(
|
||||
settingsRepositoryProvider
|
||||
.select((value) => value.valueOrNull?.enableContentBlocking ?? false),
|
||||
settingsRepositoryProvider.select(
|
||||
(value) =>
|
||||
(value.valueOrNull ?? Settings.withDefaults()).enableContentBlocking,
|
||||
),
|
||||
);
|
||||
final enableHostList = ref.watch(
|
||||
settingsRepositoryProvider
|
||||
.select((value) => value.valueOrNull?.enableHostList ?? {}),
|
||||
settingsRepositoryProvider.select(
|
||||
(value) => (value.valueOrNull ?? Settings.withDefaults()).enableHostList,
|
||||
),
|
||||
);
|
||||
|
||||
if (!enableContentBlocking || enableHostList.isEmpty) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:bang_navigator/features/bangs/presentation/widgets/site_search.d
|
||||
import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
|
||||
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
||||
as uri_builder;
|
||||
import 'package:bang_navigator/features/settings/data/models/settings.dart';
|
||||
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
|
||||
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
||||
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||
@@ -61,8 +62,9 @@ class WebPageDialog extends HookConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final incognitoEnabled = ref.watch(
|
||||
settingsRepositoryProvider
|
||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
||||
settingsRepositoryProvider.select(
|
||||
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||
),
|
||||
);
|
||||
|
||||
final availableBangsAsync = ref.watch(
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:bang_navigator/features/chat_archive/domain/repositories/archive
|
||||
import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
|
||||
import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
|
||||
import 'package:bang_navigator/features/search_browser/domain/providers.dart';
|
||||
import 'package:bang_navigator/features/settings/data/models/settings.dart';
|
||||
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
|
||||
import 'package:bang_navigator/features/web_view/domain/entities/web_view_page.dart';
|
||||
import 'package:bang_navigator/features/web_view/domain/providers.dart';
|
||||
@@ -95,11 +96,9 @@ class _WebViewState extends ConsumerState<WebView> {
|
||||
allowsLinkPreview: false,
|
||||
disableLongPressContextMenuOnLinks: true,
|
||||
useShouldOverrideUrlLoading: true,
|
||||
javaScriptEnabled: ref
|
||||
.read(settingsRepositoryProvider)
|
||||
.valueOrNull
|
||||
?.enableJavascript ??
|
||||
true,
|
||||
javaScriptEnabled: (ref.read(settingsRepositoryProvider).valueOrNull ??
|
||||
Settings.withDefaults())
|
||||
.enableJavascript,
|
||||
saveFormData: false,
|
||||
disabledActionModeMenuItems: ActionModeMenuItem.MENU_ITEM_WEB_SEARCH,
|
||||
),
|
||||
@@ -107,7 +106,8 @@ class _WebViewState extends ConsumerState<WebView> {
|
||||
|
||||
final showEarlyAccessFeatures = ref.watch(
|
||||
settingsRepositoryProvider.select(
|
||||
(value) => value.valueOrNull?.showEarlyAccessFeatures ?? true,
|
||||
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||
.showEarlyAccessFeatures,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -126,8 +126,10 @@ class _WebViewState extends ConsumerState<WebView> {
|
||||
);
|
||||
|
||||
ref.listen(
|
||||
settingsRepositoryProvider
|
||||
.select((value) => value.valueOrNull?.enableJavascript),
|
||||
settingsRepositoryProvider.select(
|
||||
(value) =>
|
||||
(value.valueOrNull ?? Settings.withDefaults()).enableJavascript,
|
||||
),
|
||||
(previous, next) async {
|
||||
await widget.page.value.controller?.setSettings(
|
||||
settings: initialSettings.copy()..javaScriptEnabled = next,
|
||||
@@ -297,11 +299,12 @@ class _WebViewState extends ConsumerState<WebView> {
|
||||
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
||||
final url = navigationAction.request.url;
|
||||
if (url != null) {
|
||||
final launchExternal = ref
|
||||
.read(settingsRepositoryProvider)
|
||||
.valueOrNull
|
||||
?.launchUrlExternal ??
|
||||
false;
|
||||
final launchExternal = ref.read(
|
||||
settingsRepositoryProvider.select(
|
||||
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||
.launchUrlExternal,
|
||||
),
|
||||
);
|
||||
|
||||
final unhandledScheme =
|
||||
!_webViewSupportedSchemes.contains(url.scheme);
|
||||
|
||||
Reference in New Issue
Block a user