From 7dd448db5db14df0dac5efb694032132c9ed8574 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Mon, 2 Feb 2026 06:18:56 +0100 Subject: [PATCH] add unsassign url relation button --- .../presentation/widgets/tab_menu.dart | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart index 786b7e7a..b90e3cd6 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart @@ -362,6 +362,57 @@ class TabMenu extends HookConsumerWidget { ); }, ), + Consumer( + child: MenuItemButton( + leadingIcon: const Icon(MdiIcons.webMinus), + child: const Text('Unassign URL relation'), + onPressed: () async { + final tabState = ref.read(tabStateProvider(selectedTabId)); + final origin = tabState?.url.origin.mapNotNull(Uri.parse); + + if (origin != null) { + final containerId = await ref + .read(containerRepositoryProvider.notifier) + .siteAssignedContainerId(origin); + + if (containerId != null) { + final containerData = await ref + .read(containerRepositoryProvider.notifier) + .getContainerData(containerId); + + if (containerData != null) { + final updatedSites = containerData + .metadata + .assignedSites + ?.where((site) => site != origin) + .toList(); + + await ref + .read(containerRepositoryProvider.notifier) + .replaceContainer( + containerData.copyWith.metadata( + containerData.metadata.copyWith.assignedSites( + updatedSites, + ), + ), + ); + } + } + } + }, + ), + builder: (context, ref, child) { + final isSiteAssigned = ref.watch( + watchIsCurrentSiteAssignedToContainerProvider, + ); + + return Visibility( + visible: + isSiteAssigned.hasValue && isSiteAssigned.requireValue, + child: child!, + ); + }, + ), Consumer( child: MenuItemButton( leadingIcon: const Icon(MdiIcons.folderCancelOutline),