resolveAll method

Resolvable<Unit> resolveAll({
  1. Entity? groupEntity = const DefaultEntity(),
})

Completes once all Async dependencies associated with groupEntity complete or any group if groupEntity is null.

Implementation

Resolvable<Unit> resolveAll({Entity? groupEntity = const DefaultEntity()}) {
  UNSAFE:
  return Resolvable(() {
    var resolvables = registry.unsortedDependencies;
    if (groupEntity != null) {
      resolvables = resolvables.where((e) {
        if (e.metadata.isSome()) {
          return e.metadata.unwrap().groupEntity == groupEntity;
        }
        return false;
      });
    }
    final values = resolvables.map((e) => e.value);
    if (values.any((e) => e is Async)) {
      return wait(
        resolvables.map((e) => e.value.unwrap()),
        (_) => resolveAll(groupEntity: groupEntity).toUnit().unwrap(),
      );
    }
    return Unit();
  });
}