require static method

Future<List<Fractal?>> require(
  1. MakeF mk,
  2. List keys
)

Implementation

static Future<List<Fractal?>> require(MakeF mk, List keys) {
  final fus = <Future<Fractal?>>[];

  for (var key in keys) {
    final val = mk.map[key];
    if (val is Fractal) continue;
    final fu = switch (val) {
      String hash when hash.isNotEmpty => CatalogFractal.pick(
          hash,
          (_) {
            var sink = NetworkFractal.out;
            if (mk.by case SinkF s when sink == null) {
              sink = s;
            }
            sink?.pick(hash);
          },
        ),
      int id when id > 0 => _byId(id),
      Fractal f => Future.value(f),
      _ => null,
    };

    if (fu != null) {
      fus.add(fu.then((f) async {
        mk.map[key] = f;
        return f;
      }));
    } else {
      mk.map.remove(key);
    }
  }

  return Future.wait(fus);
}