connectDelegator<DC extends ObjectDataCubit<TFailure, TData>> method

DC connectDelegator<DC extends ObjectDataCubit<TFailure, TData>>(
  1. DC dataCubit
)

Implementation

DC connectDelegator<DC extends ObjectDataCubit<TFailure, TData>>(DC dataCubit) {
  dataCubit.stream.listen((singleDataState) {
    if (state.notHasData) return;
    switch (singleDataState.status) {
      case DataStatus.created:
        emit(state.copyWith(
          allData: state._allData.map((a) {
            return a.rebuild((b) => b[a.keys.last + 1] = singleDataState.data);
          }),
        ));
        break;
      case DataStatus.read:
      case DataStatus.updated:
        emit(state.copyWith(
          allData: state._allData.map((a) {
            final entry =
                a.entries.firstWhere((entry) => _equalizer(entry.value, singleDataState.data));
            return a.rebuild((b) => b[entry.key] = singleDataState.data);
          }),
        ));
        break;
      case DataStatus.deleted:
        emit(state.copyWith(
          allData: state._allData.map((a) {
            return a.rebuild(
                (b) => b.removeWhere((_, value) => _equalizer(value, singleDataState.data)));
          }),
        ));
        break;
      default:
        break;
    }
  }, onDone: () {
    _delegators;
  }).addToCloser(this);
  return dataCubit;
}