GitHub

DaffNewsletterEffects

import { DaffNewsletterEffects } from '@daffodil/newsletter/state'

@Injectable()
class DaffNewsletterEffects {
  trySubmission$: Observable<Action> = createEffect(() => this.actions$.pipe(
      ofType(
        DaffNewsletterActionTypes.Subscribe,
        DaffNewsletterActionTypes.Retry,
        DaffNewsletterActionTypes.Cancel,
      ),
      switchMap((action: DaffNewsletterSubscribe | DaffNewsletterRetry | DaffNewsletterCancel) => {
        if ((action.type === DaffNewsletterActionTypes.Cancel)) {
          return EMPTY;
        } else if (action instanceof DaffNewsletterSubscribe || action instanceof DaffNewsletterRetry){
          return this.driver.send(action.payload).pipe(
            map((resp: DaffNewsletterResponse) => new DaffNewsletterSubscribeSuccess()),
            catchAndArrayifyErrors((errors) => of(new DaffNewsletterSubscribeFailure(errors.map(this.errorMatcher)))),
          );
        }
      }),
    ))
}