addHooks method
Adds hooks to this instance.
Implementation
void addHooks(Angel app) {
var hooks = getAnnotation<Hooks>(inner, app.container!.reflector);
var before = <HookedServiceEventListener<Id, Data, T>>[];
var after = <HookedServiceEventListener<Id, Data, T>>[];
if (hooks != null) {
before.addAll(hooks.before.cast());
after.addAll(hooks.after.cast());
}
void applyListeners(
Function fn, HookedServiceEventDispatcher<Id, Data, T> dispatcher,
[bool? isAfter]) {
var hooks = getAnnotation<Hooks>(fn, app.container!.reflector);
final listeners = <HookedServiceEventListener<Id, Data, T>>[
...isAfter == true ? after : before
];
if (hooks != null) {
listeners.addAll((isAfter == true ? hooks.after : hooks.before).cast());
}
listeners.forEach(dispatcher.listen);
}
applyListeners(inner.index, beforeIndexed);
applyListeners(inner.read, beforeRead);
applyListeners(inner.create, beforeCreated);
applyListeners(inner.modify, beforeModified);
applyListeners(inner.update, beforeUpdated);
applyListeners(inner.remove, beforeRemoved);
applyListeners(inner.index, afterIndexed, true);
applyListeners(inner.read, afterRead, true);
applyListeners(inner.create, afterCreated, true);
applyListeners(inner.modify, afterModified, true);
applyListeners(inner.update, afterUpdated, true);
applyListeners(inner.remove, afterRemoved, true);
}