removeSessionHook method
void
removeSessionHook({
- required String sessionId,
- required HookEvent event,
- required HookCommand hook,
Remove a specific hook from the session.
Implementation
void removeSessionHook({
required String sessionId,
required HookEvent event,
required HookCommand hook,
}) {
final store = _stores[sessionId];
if (store == null) return;
final eventMatchers = store.hooks[event] ?? [];
final updatedMatchers = <SessionHookMatcher>[];
for (final m in eventMatchers) {
final updatedHooks = m.hooks
.where((h) => !isHookEqual(h.hook, hook))
.toList();
if (updatedHooks.isNotEmpty) {
updatedMatchers.add(
SessionHookMatcher(
matcher: m.matcher,
skillRoot: m.skillRoot,
hooks: updatedHooks,
),
);
}
}
if (updatedMatchers.isNotEmpty) {
store.hooks[event] = updatedMatchers;
} else {
store.hooks.remove(event);
}
}