@@ -362,6 +362,57 @@ class TabMenu extends HookConsumerWidget {
362362 );
363363 },
364364 ),
365+ Consumer (
366+ child: MenuItemButton (
367+ leadingIcon: const Icon (MdiIcons .webMinus),
368+ child: const Text ('Unassign URL relation' ),
369+ onPressed: () async {
370+ final tabState = ref.read (tabStateProvider (selectedTabId));
371+ final origin = tabState? .url.origin.mapNotNull (Uri .parse);
372+
373+ if (origin != null ) {
374+ final containerId = await ref
375+ .read (containerRepositoryProvider.notifier)
376+ .siteAssignedContainerId (origin);
377+
378+ if (containerId != null ) {
379+ final containerData = await ref
380+ .read (containerRepositoryProvider.notifier)
381+ .getContainerData (containerId);
382+
383+ if (containerData != null ) {
384+ final updatedSites = containerData
385+ .metadata
386+ .assignedSites
387+ ? .where ((site) => site != origin)
388+ .toList ();
389+
390+ await ref
391+ .read (containerRepositoryProvider.notifier)
392+ .replaceContainer (
393+ containerData.copyWith.metadata (
394+ containerData.metadata.copyWith.assignedSites (
395+ updatedSites,
396+ ),
397+ ),
398+ );
399+ }
400+ }
401+ }
402+ },
403+ ),
404+ builder: (context, ref, child) {
405+ final isSiteAssigned = ref.watch (
406+ watchIsCurrentSiteAssignedToContainerProvider,
407+ );
408+
409+ return Visibility (
410+ visible:
411+ isSiteAssigned.hasValue && isSiteAssigned.requireValue,
412+ child: child! ,
413+ );
414+ },
415+ ),
365416 Consumer (
366417 child: MenuItemButton (
367418 leadingIcon: const Icon (MdiIcons .folderCancelOutline),
0 commit comments