diff --git a/apps/weblibre/lib/features/geckoview/features/browser/presentation/widgets/extension_shortcut_menu.dart b/apps/weblibre/lib/features/geckoview/features/browser/presentation/widgets/extension_shortcut_menu.dart
index a62a086f..67b19550 100644
--- a/apps/weblibre/lib/features/geckoview/features/browser/presentation/widgets/extension_shortcut_menu.dart
+++ b/apps/weblibre/lib/features/geckoview/features/browser/presentation/widgets/extension_shortcut_menu.dart
@@ -18,8 +18,11 @@
* along with this program. If not, see .
*/
import 'package:flutter/material.dart';
+import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:weblibre/core/routing/routes.dart';
+import 'package:weblibre/features/addons/domain/providers.dart';
import 'package:weblibre/features/geckoview/domain/providers.dart';
import 'package:weblibre/features/geckoview/domain/providers/web_extensions_state.dart';
import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/extension_badge_icon.dart';
@@ -36,11 +39,15 @@ class ExtensionShortcutMenu extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
+ final pinnedIds = ref.watch(pinnedAddonIdsProvider);
final browserExtensions = ref.watch(
webExtensionsStateProvider(
WebExtensionActionType.browser,
).select((value) => value.values.toList()),
);
+ final unpinnedBrowserExtensions = browserExtensions
+ .where((extension) => !pinnedIds.contains(extension.extensionId))
+ .toList();
return MenuAnchor(
controller: controller,
@@ -48,7 +55,7 @@ class ExtensionShortcutMenu extends HookConsumerWidget {
return child!;
},
menuChildren: [
- ...browserExtensions.map(
+ ...unpinnedBrowserExtensions.map(
(extension) => MenuItemButton(
onPressed: () async {
//Use parents .ref because after onPressed this consumer gets disposed already
@@ -66,6 +73,14 @@ class ExtensionShortcutMenu extends HookConsumerWidget {
child: Text(extension.title ?? ''),
),
),
+ if (unpinnedBrowserExtensions.isNotEmpty) const Divider(),
+ MenuItemButton(
+ onPressed: () async {
+ await const AddonManagerRoute().push(context);
+ },
+ leadingIcon: const Icon(MdiIcons.puzzleEdit),
+ child: const Text('Manage extensions'),
+ ),
],
child: Visibility(visible: browserExtensions.isNotEmpty, child: child),
);