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)))),
);
}
}),
))
}