sendWithEventOnSuccess<TRequest, TResponse, TEvent extends ApplicationEvent> method

Future<MediatorResultTyped<TResponse>> sendWithEventOnSuccess<TRequest, TResponse, TEvent extends ApplicationEvent>({
  1. required TRequest request,
  2. required TEvent eventFactory(
    1. TResponse
    ),
})

Implementation

Future<MediatorResultTyped<TResponse>> sendWithEventOnSuccess<TRequest, TResponse, TEvent extends ApplicationEvent>(
    {required TRequest request, required TEvent Function(TResponse) eventFactory}) async {
  return await send<TRequest, TResponse>(request).then((result) {
    if (result.isSuccess && result.data != null) {
      _eventBroker.publish<TEvent>(eventFactory(result.data as TResponse));
    }
    return result;
  });
}