diff --git a/lib/builtin/decisions/src/extension.dart b/lib/builtin/decisions/src/extension.dart index dcd4e778..087e8d88 100644 --- a/lib/builtin/decisions/src/extension.dart +++ b/lib/builtin/decisions/src/extension.dart @@ -21,7 +21,17 @@ class DecisionsExtension extends ClideExtension { @override Future activate(ClideExtensionContext ctx) async { - _sub = ctx.messages.subscribe(publisher: id, channel: 'selection').listen((_) { + _sub = ctx.messages.subscribe(publisher: id, channel: 'selection').listen((msg) { + final selectedId = msg.data['id'] as String?; + if (selectedId == null) return; + ctx.panels.uncontribute('decisions.detail'); + ctx.panels.contribute(TabContribution( + id: 'decisions.detail', + slot: Slots.contextPanel, + title: 'Decision', + icon: PhosphorIcons.lightbulb, + build: (_) => DecisionDetailView(initialId: selectedId), + )); ctx.panels.activateTab(Slots.contextPanel, 'decisions.detail'); }); } diff --git a/lib/builtin/tickets/src/extension.dart b/lib/builtin/tickets/src/extension.dart index d63f29b6..ce048d85 100644 --- a/lib/builtin/tickets/src/extension.dart +++ b/lib/builtin/tickets/src/extension.dart @@ -21,7 +21,17 @@ class TicketsExtension extends ClideExtension { @override Future activate(ClideExtensionContext ctx) async { - _sub = ctx.messages.subscribe(publisher: id, channel: 'selection').listen((_) { + _sub = ctx.messages.subscribe(publisher: id, channel: 'selection').listen((msg) { + final selectedId = msg.data['id'] as String?; + if (selectedId == null) return; + ctx.panels.uncontribute('tickets.detail'); + ctx.panels.contribute(TabContribution( + id: 'tickets.detail', + slot: Slots.contextPanel, + title: 'Ticket', + icon: PhosphorIcons.ticket, + build: (_) => TicketDetailView(initialId: selectedId), + )); ctx.panels.activateTab(Slots.contextPanel, 'tickets.detail'); }); }