ClientServer.fromMeta constructor
ClientServer.fromMeta(
- RevaliContext context,
- 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;
final configuredApps = apps.where((a) => a.element != null).toList();
final candidates = configuredApps.isNotEmpty ? configuredApps : apps;
if (candidates.length == 1) {
final only = candidates.first;
if (flavor == null ||
flavor.isEmpty ||
only.appAnnotation.flavor == flavor) {
app = ClientApp.fromMeta(only);
metaApp = only;
}
}
if (metaApp == null) {
for (final e in candidates) {
if (e.appAnnotation.flavor == context.flavor) {
app = ClientApp.fromMeta(e);
metaApp = e;
break;
}
}
}
}
final lifecycleComponents = <ClientLifecycleComponent>[];
metaApp?.annotationsFor(
onMatch: [
OnMatch(
classType: LifecycleComponent,
package: 'revali_annotations',
convert: (object, annotation) {
final component = ClientLifecycleComponent.fromDartObject(
object,
annotation,
);
lifecycleComponents.add(component);
},
),
OnMatch(
classType: LifecycleComponents,
package: 'revali_annotations',
convert: (object, annotation) {
lifecycleComponents.addAll(
ClientLifecycleComponent.fromTypeReference(object, annotation),
);
},
),
],
);
return ClientServer(
app: app,
controllers: server.routes
.map((e) => ClientController.fromMeta(e, lifecycleComponents))
.toList(),
);
}