refactor consumption of settings with defaults

This commit is contained in:
Fabian Freund
2024-06-20 14:13:41 +02:00
parent 3c06c49397
commit db84e43e0a
14 changed files with 73 additions and 43 deletions
@@ -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/repositories/archive.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/web_view/presentation/controllers/switch_new_tab.dart';
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
@@ -102,11 +103,12 @@ class ChatArchiveDetailScreen extends HookConsumerWidget {
onTapLink: (text, href, title) async {
if (href != null) {
if (Uri.parse(href) case final Uri url) {
final launchExternal = ref
.read(settingsRepositoryProvider)
.valueOrNull
?.launchUrlExternal ??
false;
final launchExternal = ref.read(
settingsRepositoryProvider.select(
(value) => (value.valueOrNull ?? Settings.withDefaults())
.launchUrlExternal,
),
);
if (launchExternal) {
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/features/chat_archive/domain/entities/chat_entity.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/presentation/hooks/listenable_callback.dart';
import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
@@ -20,8 +21,9 @@ class ChatArchiveSearchScreen extends HookConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final resultsAsync = ref.watch(chatArchiveSearchRepositoryProvider);
final incognitoEnabled = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.incognitoMode ?? false),
settingsRepositoryProvider.select(
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
),
);
final textEditingController = useTextEditingController();