refactor consumption of settings with defaults
This commit is contained in:
@@ -6,6 +6,7 @@ import 'package:bang_navigator/features/bangs/presentation/widgets/bang_details.
|
|||||||
import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
|
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/entities/sheet.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/domain/providers.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/presentation/hooks/listenable_callback.dart';
|
import 'package:bang_navigator/presentation/hooks/listenable_callback.dart';
|
||||||
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
|
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
|
||||||
@@ -21,8 +22,9 @@ class BangSearchScreen extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final resultsAsync = ref.watch(bangSearchProvider);
|
final resultsAsync = ref.watch(bangSearchProvider);
|
||||||
final incognitoEnabled = ref.watch(
|
final incognitoEnabled = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final textEditingController = useTextEditingController();
|
final textEditingController = useTextEditingController();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:bang_navigator/core/routing/routes.dart';
|
import 'package:bang_navigator/core/routing/routes.dart';
|
||||||
import 'package:bang_navigator/features/bangs/data/models/bang_data.dart';
|
import 'package:bang_navigator/features/bangs/data/models/bang_data.dart';
|
||||||
import 'package:bang_navigator/features/bangs/presentation/widgets/bang_icon.dart';
|
import 'package:bang_navigator/features/bangs/presentation/widgets/bang_icon.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||||
import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper;
|
import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper;
|
||||||
@@ -70,11 +71,13 @@ class BangDetails extends HookConsumerWidget {
|
|||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final url = Uri.parse(bangData.getUrl('').origin);
|
final url = Uri.parse(bangData.getUrl('').origin);
|
||||||
|
|
||||||
final launchExternal = ref
|
final launchExternal = ref.read(
|
||||||
.read(settingsRepositoryProvider)
|
settingsRepositoryProvider.select(
|
||||||
.valueOrNull
|
(value) =>
|
||||||
?.launchUrlExternal ??
|
(value.valueOrNull ?? Settings.withDefaults())
|
||||||
false;
|
.launchUrlExternal,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
if (launchExternal) {
|
if (launchExternal) {
|
||||||
await ui_helper.launchUrlFeedback(context, url);
|
await ui_helper.launchUrlFeedback(context, url);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:bang_navigator/features/bangs/data/models/bang_data.dart';
|
|||||||
import 'package:bang_navigator/features/bangs/presentation/widgets/bang_icon.dart';
|
import 'package:bang_navigator/features/bangs/presentation/widgets/bang_icon.dart';
|
||||||
import 'package:bang_navigator/features/kagi/domain/repositories/autosuggest.dart';
|
import 'package:bang_navigator/features/kagi/domain/repositories/autosuggest.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/presentation/widgets/autocomplete.dart';
|
import 'package:bang_navigator/presentation/widgets/autocomplete.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -30,8 +31,9 @@ class SearchField extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final incognitoEnabled = ref.watch(
|
final incognitoEnabled = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final optionsStream = ref.watch(autosuggestRepositoryProvider);
|
final optionsStream = ref.watch(autosuggestRepositoryProvider);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:bang_navigator/features/chat_archive/data/services/file.dart';
|
|||||||
import 'package:bang_navigator/features/chat_archive/domain/entities/chat_entity.dart';
|
import 'package:bang_navigator/features/chat_archive/domain/entities/chat_entity.dart';
|
||||||
import 'package:bang_navigator/features/chat_archive/domain/repositories/archive.dart';
|
import 'package:bang_navigator/features/chat_archive/domain/repositories/archive.dart';
|
||||||
import 'package:bang_navigator/features/chat_archive/utils/markdown_to_text.dart';
|
import 'package:bang_navigator/features/chat_archive/utils/markdown_to_text.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||||
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
|
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
|
||||||
@@ -102,11 +103,12 @@ class ChatArchiveDetailScreen extends HookConsumerWidget {
|
|||||||
onTapLink: (text, href, title) async {
|
onTapLink: (text, href, title) async {
|
||||||
if (href != null) {
|
if (href != null) {
|
||||||
if (Uri.parse(href) case final Uri url) {
|
if (Uri.parse(href) case final Uri url) {
|
||||||
final launchExternal = ref
|
final launchExternal = ref.read(
|
||||||
.read(settingsRepositoryProvider)
|
settingsRepositoryProvider.select(
|
||||||
.valueOrNull
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||||
?.launchUrlExternal ??
|
.launchUrlExternal,
|
||||||
false;
|
),
|
||||||
|
);
|
||||||
|
|
||||||
if (launchExternal) {
|
if (launchExternal) {
|
||||||
await ui_helper.launchUrlFeedback(context, Uri.parse(href));
|
await ui_helper.launchUrlFeedback(context, Uri.parse(href));
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:bang_navigator/core/extension/date_time.dart';
|
|||||||
import 'package:bang_navigator/core/routing/routes.dart';
|
import 'package:bang_navigator/core/routing/routes.dart';
|
||||||
import 'package:bang_navigator/features/chat_archive/domain/entities/chat_entity.dart';
|
import 'package:bang_navigator/features/chat_archive/domain/entities/chat_entity.dart';
|
||||||
import 'package:bang_navigator/features/chat_archive/domain/repositories/search.dart';
|
import 'package:bang_navigator/features/chat_archive/domain/repositories/search.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/presentation/hooks/listenable_callback.dart';
|
import 'package:bang_navigator/presentation/hooks/listenable_callback.dart';
|
||||||
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
|
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
|
||||||
@@ -20,8 +21,9 @@ class ChatArchiveSearchScreen extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final resultsAsync = ref.watch(chatArchiveSearchRepositoryProvider);
|
final resultsAsync = ref.watch(chatArchiveSearchRepositoryProvider);
|
||||||
final incognitoEnabled = ref.watch(
|
final incognitoEnabled = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final textEditingController = useTextEditingController();
|
final textEditingController = useTextEditingController();
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import 'package:bang_navigator/features/search_browser/presentation/widgets/land
|
|||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/view_tabs_sheet.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/view_tabs_sheet.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs_action_button.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs_action_button.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
|
import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
|
||||||
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||||
@@ -41,7 +42,8 @@ class KagiScreen extends HookConsumerWidget {
|
|||||||
|
|
||||||
final showEarlyAccessFeatures = ref.watch(
|
final showEarlyAccessFeatures = ref.watch(
|
||||||
settingsRepositoryProvider.select(
|
settingsRepositoryProvider.select(
|
||||||
(value) => value.valueOrNull?.showEarlyAccessFeatures ?? true,
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||||
|
.showEarlyAccessFeatures,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:bang_navigator/features/search_browser/domain/entities/modes.dar
|
|||||||
import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
|
import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/domain/services/create_tab.dart';
|
import 'package:bang_navigator/features/search_browser/domain/services/create_tab.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/error_container.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/error_container.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@@ -22,7 +23,8 @@ class LandingAction extends HookConsumerWidget {
|
|||||||
|
|
||||||
final showEarlyAccessFeatures = ref.watch(
|
final showEarlyAccessFeatures = ref.watch(
|
||||||
settingsRepositoryProvider.select(
|
settingsRepositoryProvider.select(
|
||||||
(value) => value.valueOrNull?.showEarlyAccessFeatures ?? true,
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||||
|
.showEarlyAccessFeatures,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -3,6 +3,7 @@ import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dar
|
|||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/assistant_tab.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/assistant_tab.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/search_tab.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/search_tab.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/summarize_tab.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/summarize_tab.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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
||||||
import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
|
import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
|
||||||
@@ -27,7 +28,8 @@ class SharedContentSheet extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final showEarlyAccessFeatures = ref.watch(
|
final showEarlyAccessFeatures = ref.watch(
|
||||||
settingsRepositoryProvider.select(
|
settingsRepositoryProvider.select(
|
||||||
(value) => value.valueOrNull?.showEarlyAccessFeatures ?? true,
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||||
|
.showEarlyAccessFeatures,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:bang_navigator/features/search_browser/presentation/widgets/shee
|
|||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
||||||
as uri_builder;
|
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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
||||||
import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
|
import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
|
||||||
@@ -26,8 +27,9 @@ class AssistantTab extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final incognitoEnabled = ref.watch(
|
final incognitoEnabled = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final researchVariant = ref.watch(activeResearchVariantProvider);
|
final researchVariant = ref.watch(activeResearchVariantProvider);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:bang_navigator/features/search_browser/domain/entities/modes.dar
|
|||||||
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
||||||
as uri_builder;
|
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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
|
||||||
import 'package:bang_navigator/presentation/widgets/website_title_tile.dart';
|
import 'package:bang_navigator/presentation/widgets/website_title_tile.dart';
|
||||||
@@ -23,8 +24,9 @@ class _InputField extends ConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final incognitoEnabled = ref.watch(
|
final incognitoEnabled = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
return TextFormField(
|
return TextFormField(
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class Settings with FastEquatable {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Settings.withDefaults({
|
Settings.withDefaults({
|
||||||
required this.kagiSession,
|
this.kagiSession,
|
||||||
bool? showEarlyAccessFeatures,
|
bool? showEarlyAccessFeatures,
|
||||||
bool? incognitoMode,
|
bool? incognitoMode,
|
||||||
bool? enableJavascript,
|
bool? enableJavascript,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:bang_navigator/features/content_block/domain/repositories/host.dart';
|
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:bang_navigator/features/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
|
|
||||||
@@ -8,12 +9,15 @@ part 'providers.g.dart';
|
|||||||
Stream<Set<String>?> blockContentHosts(BlockContentHostsRef ref) {
|
Stream<Set<String>?> blockContentHosts(BlockContentHostsRef ref) {
|
||||||
final hostRepository = ref.watch(hostRepositoryProvider.notifier);
|
final hostRepository = ref.watch(hostRepositoryProvider.notifier);
|
||||||
final enableContentBlocking = ref.watch(
|
final enableContentBlocking = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.enableContentBlocking ?? false),
|
(value) =>
|
||||||
|
(value.valueOrNull ?? Settings.withDefaults()).enableContentBlocking,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
final enableHostList = ref.watch(
|
final enableHostList = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.enableHostList ?? {}),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).enableHostList,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!enableContentBlocking || enableHostList.isEmpty) {
|
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/domain/entities/modes.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
|
||||||
as uri_builder;
|
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/settings/data/repositories/settings_repository.dart';
|
||||||
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.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';
|
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||||
@@ -61,8 +62,9 @@ class WebPageDialog extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final incognitoEnabled = ref.watch(
|
final incognitoEnabled = ref.watch(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.incognitoMode ?? false),
|
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final availableBangsAsync = ref.watch(
|
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/modes.dart';
|
||||||
import 'package:bang_navigator/features/search_browser/domain/entities/sheet.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/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/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/entities/web_view_page.dart';
|
||||||
import 'package:bang_navigator/features/web_view/domain/providers.dart';
|
import 'package:bang_navigator/features/web_view/domain/providers.dart';
|
||||||
@@ -95,11 +96,9 @@ class _WebViewState extends ConsumerState<WebView> {
|
|||||||
allowsLinkPreview: false,
|
allowsLinkPreview: false,
|
||||||
disableLongPressContextMenuOnLinks: true,
|
disableLongPressContextMenuOnLinks: true,
|
||||||
useShouldOverrideUrlLoading: true,
|
useShouldOverrideUrlLoading: true,
|
||||||
javaScriptEnabled: ref
|
javaScriptEnabled: (ref.read(settingsRepositoryProvider).valueOrNull ??
|
||||||
.read(settingsRepositoryProvider)
|
Settings.withDefaults())
|
||||||
.valueOrNull
|
.enableJavascript,
|
||||||
?.enableJavascript ??
|
|
||||||
true,
|
|
||||||
saveFormData: false,
|
saveFormData: false,
|
||||||
disabledActionModeMenuItems: ActionModeMenuItem.MENU_ITEM_WEB_SEARCH,
|
disabledActionModeMenuItems: ActionModeMenuItem.MENU_ITEM_WEB_SEARCH,
|
||||||
),
|
),
|
||||||
@@ -107,7 +106,8 @@ class _WebViewState extends ConsumerState<WebView> {
|
|||||||
|
|
||||||
final showEarlyAccessFeatures = ref.watch(
|
final showEarlyAccessFeatures = ref.watch(
|
||||||
settingsRepositoryProvider.select(
|
settingsRepositoryProvider.select(
|
||||||
(value) => value.valueOrNull?.showEarlyAccessFeatures ?? true,
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||||
|
.showEarlyAccessFeatures,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -126,8 +126,10 @@ class _WebViewState extends ConsumerState<WebView> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
ref.listen(
|
ref.listen(
|
||||||
settingsRepositoryProvider
|
settingsRepositoryProvider.select(
|
||||||
.select((value) => value.valueOrNull?.enableJavascript),
|
(value) =>
|
||||||
|
(value.valueOrNull ?? Settings.withDefaults()).enableJavascript,
|
||||||
|
),
|
||||||
(previous, next) async {
|
(previous, next) async {
|
||||||
await widget.page.value.controller?.setSettings(
|
await widget.page.value.controller?.setSettings(
|
||||||
settings: initialSettings.copy()..javaScriptEnabled = next,
|
settings: initialSettings.copy()..javaScriptEnabled = next,
|
||||||
@@ -297,11 +299,12 @@ class _WebViewState extends ConsumerState<WebView> {
|
|||||||
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
||||||
final url = navigationAction.request.url;
|
final url = navigationAction.request.url;
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
final launchExternal = ref
|
final launchExternal = ref.read(
|
||||||
.read(settingsRepositoryProvider)
|
settingsRepositoryProvider.select(
|
||||||
.valueOrNull
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
||||||
?.launchUrlExternal ??
|
.launchUrlExternal,
|
||||||
false;
|
),
|
||||||
|
);
|
||||||
|
|
||||||
final unhandledScheme =
|
final unhandledScheme =
|
||||||
!_webViewSupportedSchemes.contains(url.scheme);
|
!_webViewSupportedSchemes.contains(url.scheme);
|
||||||
|
|||||||
Reference in New Issue
Block a user