resolveCommandEntities method

  1. @protected
List<BlocxBaseEntity> resolveCommandEntities(
  1. Input input,
  2. Output output
)

Resolves the affected BlocxBaseEntity instances from input and output to broadcast to eventHub.

Default resolution order:

  1. If output is a BlocxBaseEntity, returns [output].
  2. If output is a BlocxPage, returns its items.
  3. If output is an Iterable, returns any BlocxBaseEntity elements.
  4. If input is a BlocxBaseEntity (common for delete use cases where Output is bool), returns [input].
  5. If input is an Iterable (common for bulk delete use cases), returns any BlocxBaseEntity elements.

Override this when your use case uses a custom input/output wrapper.

Implementation

@protected
List<BlocxBaseEntity> resolveCommandEntities(Input input, Output output) {
  if (output is BlocxBaseEntity) {
    return <BlocxBaseEntity>[output];
  }
  if (output is BlocxPage) {
    return output.items.whereType<BlocxBaseEntity>().toList();
  }
  if (output is Iterable) {
    final list = output.whereType<BlocxBaseEntity>().toList();
    if (list.isNotEmpty) return list;
  }
  if (input is BlocxBaseEntity) {
    return <BlocxBaseEntity>[input];
  }
  if (input is Iterable) {
    return input.whereType<BlocxBaseEntity>().toList();
  }
  return const <BlocxBaseEntity>[];
}