listenHooks method

void listenHooks(
  1. List<ReactterHook> hooks
)

Suscribes to all hooks given.

Implementation

void listenHooks(List<ReactterHook> hooks) {
  for (final hook in hooks) {
    if (_hooks.contains(hook)) {
      return;
    }

    _hooks.add(hook);

    void onWillUpdate(_, hook) => _event.emit(Lifecycle.willUpdate, hook);

    void onDidUpdate(_, hook) => _event.emit(Lifecycle.didUpdate, hook);

    UseEvent.withInstance(hook)
      ..on(Lifecycle.willUpdate, onWillUpdate)
      ..on(Lifecycle.didUpdate, onDidUpdate);

    _event.one(Lifecycle.destroyed, (_, __) {
      UseEvent.withInstance(hook)
        ..off(Lifecycle.willUpdate, onWillUpdate)
        ..off(Lifecycle.didUpdate, onDidUpdate);
    });
  }
}