UNPKG

@shopgate/engage

Version:
53 lines (51 loc) 1.58 kB
import "core-js/modules/es.array.reduce.js"; import React, { useMemo } from 'react'; import PropTypes from 'prop-types'; import Context from "./BackInStockSubscriptionsProvider.context"; import connect from "./BackInStockSubscriptionsProvider.connector"; /** * Back in Stock Provider * @returns {JSX} */ import { jsx as _jsx } from "react/jsx-runtime"; const BackInStockSubscriptionsProvider = ({ subscriptions, children, addBackInStockSubscription, isFetching, isInitial, removeBackInStockSubscription, requestsPossible }) => { const groupedSubscriptions = useMemo(() => subscriptions.reduce((acc, subscription) => { const { status } = subscription; const groupingStatus = status === 'inactive' || status === 'triggered' ? 'past' : status; acc[groupingStatus].push(subscription); return acc; }, { active: [], past: [] }), [subscriptions]); // Create memoized context value. const value = useMemo(() => ({ subscriptions, groupedSubscriptions, addBackInStockSubscription, removeBackInStockSubscription, isFetching, isInitial: isInitial && requestsPossible }), [addBackInStockSubscription, groupedSubscriptions, isFetching, isInitial, removeBackInStockSubscription, subscriptions, requestsPossible]); return /*#__PURE__*/_jsx(Context.Provider, { value: value, children: children }); }; BackInStockSubscriptionsProvider.defaultProps = { children: null, isFetching: false, isInitial: true, requestsPossible: false }; export default connect(BackInStockSubscriptionsProvider);