import { combineEpics, ofType } from 'redux-observable'; import { ENTERED_CONTACT_PAGE, } from 'app/common/store/router/router.constants'; import { contactFetchContactsRequest, contactFetchContactsSuccess, setContactContent, } from './contact.actions'; import { map, mergeMap } from 'rxjs/operators'; import { CONTACT } from 'app/modules/contact/store/contact.constants'; export const enteredContactPageEpic = (action$) => { return action$.pipe( ofType(ENTERED_CONTACT_PAGE), map(() => [ contactFetchContactsRequest(), ]) ); }; export const contactFetchContactEpic = (action$, _store, { contact }) => { return action$.pipe( ofType(CONTACT.FETCH_CONTACTS_REQUEST), mergeMap(() => contact.getContacts()), map((contactContent) => [ setContactContent(contactContent), contactFetchContactsSuccess(), ]), ); }; const contactEpics = combineEpics( enteredContactPageEpic, contactFetchContactEpic, ); export { contactEpics };