ClientLifecycleComponent.fromClassElement constructor

ClientLifecycleComponent.fromClassElement(
  1. ClassElement element
)

Implementation

factory ClientLifecycleComponent.fromClassElement(ClassElement element) {
  final methods = element.methods
      .map(ClientLifecycleComponentMethod.fromElement)
      .whereType<ClientLifecycleComponentMethod>()
      .toList();

  final guards = <ClientLifecycleComponentMethod>[];
  final middlewares = <ClientLifecycleComponentMethod>[];
  final interceptors = (
    pre: <ClientLifecycleComponentMethod>[],
    post: <ClientLifecycleComponentMethod>[],
  );

  for (final method in methods) {
    final _ = switch (true) {
      _ when method.isGuard => guards.add(method),
      _ when method.isMiddleware => middlewares.add(method),
      _ when method.isInterceptorPre => interceptors.pre.add(method),
      _ when method.isInterceptorPost => interceptors.post.add(method),
      _ => null,
    };
  }

  return ClientLifecycleComponent(
    guards: guards,
    middlewares: middlewares,
    interceptors: interceptors,
  );
}