Skip to content

Commit 7dd448d

Browse files
committed
add unsassign url relation button
1 parent 25a3f21 commit 7dd448d

File tree

1 file changed

+51
-0
lines changed
  • app/lib/features/geckoview/features/browser/presentation/widgets

1 file changed

+51
-0
lines changed

app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)