From 550e1dd11957d4e589dec72dcc06dc0dee7016fe Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Thu, 2 Oct 2025 12:06:59 +0200 Subject: [PATCH] limit tab sugegstions to 3; allow direct container edit --- .../features/browser/domain/providers.dart | 11 +++++++++ .../features/browser/domain/providers.g.dart | 2 +- .../widgets/sheets/view_tabs.dart | 24 +++++++++---------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/app/lib/features/geckoview/features/browser/domain/providers.dart b/app/lib/features/geckoview/features/browser/domain/providers.dart index 56585a40..3e439390 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers.dart @@ -34,6 +34,7 @@ import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_enti import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/gecko_inference.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab_search.dart'; +import 'package:weblibre/features/user/domain/repositories/general_settings.dart'; part 'providers.g.dart'; @@ -113,6 +114,16 @@ EquatableValue> suggestedTabEntities( Ref ref, String? containerId, ) { + final enableAiFeatures = ref.watch( + generalSettingsWithDefaultsProvider.select( + (settings) => settings.enableLocalAiFeatures, + ), + ); + + if (!enableAiFeatures) { + return EquatableValue([]); + } + final excludedTabIds = ref.watch( containerTabIdsProvider( // ignore: provider_parameters diff --git a/app/lib/features/geckoview/features/browser/domain/providers.g.dart b/app/lib/features/geckoview/features/browser/domain/providers.g.dart index d5924338..c4399619 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers.g.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers.g.dart @@ -448,7 +448,7 @@ final class SuggestedTabEntitiesProvider } String _$suggestedTabEntitiesHash() => - r'84a85520dc589e4bcc4afa2a63691ad08be25ddd'; + r'534e78a9d1ddc5bace24dc0d9e5efee1292107c5'; final class SuggestedTabEntitiesFamily extends $Family with $FunctionalFamilyOverride>, String?> { diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart index 15d7d408..b92203ca 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart @@ -21,6 +21,7 @@ import 'dart:async'; import 'dart:math' as math; import 'package:fading_scroll/fading_scroll.dart'; +import 'package:fast_equatable/fast_equatable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; @@ -350,6 +351,9 @@ class _TabSheetHeader extends HookConsumerWidget { .read(selectedContainerProvider.notifier) .clearContainer(); }, + onLongPress: (container) async { + await ContainerEditRoute(container).push(context); + }, ); }, ), @@ -413,22 +417,15 @@ class ViewTabsSheetWidget extends HookConsumerWidget { final tabSuggestionsEnabled = ref.watch( tabSuggestionsControllerProvider, ); - final enableAiFeatures = ref.watch( - generalSettingsWithDefaultsProvider.select( - (settings) => settings.enableLocalAiFeatures, - ), - ); - final suggestedTabEntities = ref.watch( - suggestedTabEntitiesProvider( - (enableAiFeatures && tabSuggestionsEnabled) - ? containerId - : null, - ), - ); + + final suggestedTabEntities = tabSuggestionsEnabled + ? ref.watch(suggestedTabEntitiesProvider(containerId)) + : EquatableValue([]); final itemCount = filteredTabEntities.value.length + - suggestedTabEntities.value.length; + //Limit to 3 sugegstions for now + math.max(suggestedTabEntities.value.length, 3); final activeTab = ref.watch(selectedTabProvider); @@ -580,6 +577,7 @@ class ViewTabsSheetWidget extends HookConsumerWidget { index - filteredTabEntities.value.length; final entity = suggestedTabEntities.value[suggestedIndex]; + tab = CustomDraggable( key: Key('suggested_${entity.tabId}'), child: _TabDraggable(