install method

  1. @override
void install()

Wire the watcher's listening hook (event subscription, override, etc.).

Implementation

@override
void install() {
  if (_installed) return;
  _installed = true;
  // 1. Auth lifecycle.
  EventDispatcher.instance.register(AuthLogin, <MagicListener Function()>[
    () => _EventToRecord<AuthLogin>('AuthLogin'),
  ]);
  EventDispatcher.instance.register(AuthLogout, <MagicListener Function()>[
    () => _EventToRecord<AuthLogout>('AuthLogout'),
  ]);
  EventDispatcher.instance.register(AuthFailed, <MagicListener Function()>[
    () => _EventToRecord<AuthFailed>('AuthFailed'),
  ]);
  EventDispatcher.instance.register(AuthRestored, <MagicListener Function()>[
    () => _EventToRecord<AuthRestored>('AuthRestored'),
  ]);

  // 2. Database lifecycle (connection only; QueryExecuted is omitted
  //    until alpha-3 ships a dedicated query channel).
  EventDispatcher.instance.register(
    DatabaseConnected,
    <MagicListener Function()>[
      () => _EventToRecord<DatabaseConnected>('DatabaseConnected'),
    ],
  );

  // 3. Gate definitions (the gate RESULT event lives on
  //    MagicGateWatcher to avoid a double-record on the event channel).
  EventDispatcher.instance.register(
    GateAbilityDefined,
    <MagicListener Function()>[
      () => _EventToRecord<GateAbilityDefined>('GateAbilityDefined'),
    ],
  );
  EventDispatcher.instance.register(
    GateBeforeRegistered,
    <MagicListener Function()>[
      () => _EventToRecord<GateBeforeRegistered>('GateBeforeRegistered'),
    ],
  );
}