2020-03-10 13:39:21 +00:00
|
|
|
/**
|
|
|
|
* Internal dependencies
|
|
|
|
*/
|
2020-07-30 10:57:22 +00:00
|
|
|
import { emitterCallback, reducer, emitEvent } from '../../shared/event-emit';
|
2020-03-10 13:39:21 +00:00
|
|
|
|
|
|
|
const EMIT_TYPES = {
|
|
|
|
SHIPPING_RATES_SUCCESS: 'shipping_rates_success',
|
|
|
|
SHIPPING_RATES_FAIL: 'shipping_rates_fail',
|
|
|
|
SHIPPING_RATE_SELECT_SUCCESS: 'shipping_rate_select_success',
|
|
|
|
SHIPPING_RATE_SELECT_FAIL: 'shipping_rate_select_fail',
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Receives a reducer dispatcher and returns an object with the onSuccess and
|
|
|
|
* onFail callback registration points for the shipping option emit events.
|
|
|
|
*
|
|
|
|
* Calling the event registration function with the callback will register it
|
|
|
|
* for the event emitter and will return a dispatcher for removing the
|
|
|
|
* registered callback (useful for implementation in `useEffect`).
|
|
|
|
*
|
|
|
|
* @param {Function} dispatcher A reducer dispatcher
|
|
|
|
* @return {Object} An object with `onSuccess` and `onFail` emitter registration.
|
|
|
|
*/
|
|
|
|
const emitterSubscribers = ( dispatcher ) => ( {
|
2020-04-03 11:50:54 +00:00
|
|
|
onSuccess: emitterCallback( EMIT_TYPES.SHIPPING_RATES_SUCCESS, dispatcher ),
|
|
|
|
onFail: emitterCallback( EMIT_TYPES.SHIPPING_RATES_FAIL, dispatcher ),
|
|
|
|
onSelectSuccess: emitterCallback(
|
2020-04-08 16:36:04 +00:00
|
|
|
EMIT_TYPES.SHIPPING_RATE_SELECT_SUCCESS,
|
2020-04-03 11:50:54 +00:00
|
|
|
dispatcher
|
|
|
|
),
|
|
|
|
onSelectFail: emitterCallback(
|
2020-04-08 16:36:04 +00:00
|
|
|
EMIT_TYPES.SHIPPING_RATE_SELECT_FAIL,
|
2020-04-03 11:50:54 +00:00
|
|
|
dispatcher
|
|
|
|
),
|
2020-03-10 13:39:21 +00:00
|
|
|
} );
|
|
|
|
|
|
|
|
export { EMIT_TYPES, emitterSubscribers, reducer, emitEvent };
|