ClientServer.fromMeta constructor

ClientServer.fromMeta(
  1. RevaliContext context,
  2. MetaServer server
)

Implementation

factory ClientServer.fromMeta(RevaliContext context, MetaServer server) {
  MetaAppConfig? metaApp;
  var app = ClientApp.defaultConfig();

  if (server.apps case final apps when apps.isNotEmpty) {
    final flavor = context.flavor;
    if ((flavor == null || flavor.isEmpty) && apps.length == 1) {
      app = ClientApp.fromMeta(apps.first);
    }

    for (final e in apps) {
      if (e.appAnnotation.flavor == context.flavor) {
        app = ClientApp.fromMeta(e);
        metaApp = e;
        break;
      }
    }
  }

  final lifecycleComponents = <ClientLifecycleComponent>[];

  metaApp?.annotationsFor(
    onMatch: [
      OnMatch(
        classType: LifecycleComponent,
        package: 'revali_router_annotations',
        convert: (object, annotation) {
          final component = ClientLifecycleComponent.fromDartObject(
            annotation,
          );

          lifecycleComponents.add(component);
        },
      ),
    ],
  );

  return ClientServer(
    app: app,
    controllers: server.routes
        .map((e) => ClientController.fromMeta(e, lifecycleComponents))
        .toList(),
  );
}