settings to choose default tab types

This commit is contained in:
Fabian Freund
2025-08-12 11:53:36 +02:00
parent f3731aa5f6
commit f70cc7acfa
22 changed files with 291 additions and 25 deletions
@@ -207,9 +207,18 @@ class BrowserBottomAppBar extends HookConsumerWidget {
),
MenuItemButton(
onPressed: () async {
final isPrivate =
ref
.read(generalSettingsRepositoryProvider)
.defaultCreateTabType ==
TabType.private;
await ref
.read(tabRepositoryProvider.notifier)
.addTab(url: ref.read(docsUriProvider));
.addTab(
url: ref.read(docsUriProvider),
private: isPrivate,
);
},
leadingIcon: const Icon(Icons.help),
child: const Text('Help and feedback'),
@@ -257,10 +266,17 @@ class BrowserBottomAppBar extends HookConsumerWidget {
),
MenuItemButton(
onPressed: () async {
final isPrivate =
ref
.read(generalSettingsRepositoryProvider)
.defaultCreateTabType ==
TabType.private;
await ref
.read(tabRepositoryProvider.notifier)
.addTab(
url: Uri.parse('https://addons.mozilla.org'),
private: isPrivate,
);
},
leadingIcon: const Icon(MdiIcons.puzzlePlus),
@@ -313,13 +313,16 @@ class _BrowserViewState extends ConsumerState<BrowserView>
widget.suggestionTimeout) {
//Don't do anything if a child route is active
if (GoRouterState.of(context).topRoute?.name == BrowserRoute.name) {
final settings = ref.read(generalSettingsRepositoryProvider);
unawaited(
showSuggestNewTabMessage(
context,
onAdd: (searchText) async {
await SearchRoute(
tabType:
ref.read(selectedTabTypeProvider) ?? TabType.regular,
ref.read(selectedTabTypeProvider) ??
settings.defaultCreateTabType,
searchText: searchText ?? SearchRoute.emptySearchText,
).push(context);
},
@@ -215,7 +215,7 @@ class ViewTabSheetWidget extends HookConsumerWidget {
onTap: () async {
final tabId = await ref
.read(tabRepositoryProvider.notifier)
.addTab(url: initialTabState.url);
.addTab(url: initialTabState.url, private: false);
if (context.mounted) {
//save reference before pop `ref` gets disposed
@@ -605,8 +605,12 @@ class ViewTabsSheetWidget extends HookConsumerWidget {
),
child: FloatingActionButton.small(
onPressed: () async {
final settings = ref.read(generalSettingsRepositoryProvider);
await SearchRoute(
tabType: ref.read(selectedTabTypeProvider) ?? TabType.regular,
tabType:
ref.read(selectedTabTypeProvider) ??
settings.defaultCreateTabType,
).push(context);
onClose();
@@ -782,8 +786,12 @@ class ViewTabTreesSheetWidget extends HookConsumerWidget {
),
child: FloatingActionButton.small(
onPressed: () async {
final settings = ref.read(generalSettingsRepositoryProvider);
await SearchRoute(
tabType: ref.read(selectedTabTypeProvider) ?? TabType.regular,
tabType:
ref.read(selectedTabTypeProvider) ??
settings.defaultCreateTabType,
).push(context);
onClose();
@@ -22,9 +22,11 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/core/routing/routes.dart';
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
import 'package:weblibre/features/geckoview/features/contextmenu/extensions/hit_result.dart';
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
import 'package:weblibre/utils/ui_helper.dart';
class OpenImageInNewTab extends HookConsumerWidget {
@@ -43,6 +45,10 @@ class OpenImageInNewTab extends HookConsumerWidget {
title: const Text('Open image in new tab'),
onTap: () async {
final currentTab = ref.read(selectedTabStateProvider);
final isPrivate =
currentTab?.isPrivate ??
ref.read(generalSettingsRepositoryProvider).defaultCreateTabType ==
TabType.private;
final tabId = await ref
.read(tabRepositoryProvider.notifier)
@@ -50,7 +56,7 @@ class OpenImageInNewTab extends HookConsumerWidget {
url: hitResult.tryGetLink(),
parentId: currentTab?.id,
selectTab: false,
private: currentTab?.isPrivate ?? false,
private: isPrivate,
);
if (context.mounted) {
@@ -22,9 +22,11 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/core/routing/routes.dart';
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
import 'package:weblibre/features/geckoview/features/contextmenu/extensions/hit_result.dart';
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
import 'package:weblibre/utils/ui_helper.dart';
class OpenInNewTab extends HookConsumerWidget {
@@ -43,6 +45,10 @@ class OpenInNewTab extends HookConsumerWidget {
title: const Text('Open in new tab'),
onTap: () async {
final currentTab = ref.read(selectedTabStateProvider);
final isPrivate =
currentTab?.isPrivate ??
ref.read(generalSettingsRepositoryProvider).defaultCreateTabType ==
TabType.private;
final tabId = await ref
.read(tabRepositoryProvider.notifier)
@@ -50,7 +56,7 @@ class OpenInNewTab extends HookConsumerWidget {
url: hitResult.tryGetLink(),
parentId: currentTab?.id,
selectTab: false,
private: currentTab?.isPrivate ?? false,
private: isPrivate,
);
if (context.mounted) {