UNPKG

@open-tender/store

Version:

A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API

56 lines (55 loc) 2.72 kB
import React, { useCallback, useEffect, useState } from 'react'; import { v4 as uuidv4 } from 'uuid'; import { useAppDispatch, useAppSelector } from '../app/hooks'; import { useOrder } from '../hooks'; import { selectKioskConfig, reorder as reorderPastOrder, selectKioskApi, selectOrder, setOrderId } from '../slices'; import { default as CheckTotalsContainer } from './CheckTotals'; import { default as OrderDetailsItemContainer } from './OrderDetailsItem'; var OrderDetails = function (_a) { var order = _a.order, close = _a.close, goToCheckout = _a.goToCheckout, children = _a.children, CheckTotalsView = _a.CheckTotalsView, OrderDetailsItemView = _a.OrderDetailsItemView; var dispatch = useAppDispatch(); var apiUrl = useAppSelector(selectKioskApi); var _b = useState(null), errMsg = _b[0], setErrMsg = _b[1]; var _c = useState(false), isReordering = _c[0], setIsReordering = _c[1]; var _d = useOrder(order), subtitle = _d.title, title = _d.orderNo, requestedAt = _d.requestedAt; var _e = useAppSelector(selectOrder), loading = _e.loading, error = _e.error; var isLoading = loading === 'pending'; var _f = useAppSelector(selectKioskConfig), config = _f.orderDetails, modalContentConfig = _f.modalContent; var reorder = function () { setErrMsg(null); setIsReordering(true); dispatch(reorderPastOrder(order.cart)); }; var renderCheckTotals = useCallback(function () { return React.createElement(CheckTotalsContainer, { check: order, children: CheckTotalsView }); }, [order, CheckTotalsView]); var renderOrderDetailsItem = useCallback(function (orderItem) { return (React.createElement(OrderDetailsItemContainer, { key: orderItem.id, orderItem: orderItem, children: OrderDetailsItemView })); }, [OrderDetailsItemView]); useEffect(function () { if (isReordering && !isLoading) { setIsReordering(false); if (error) { setErrMsg(error.detail); } else { dispatch(setOrderId(uuidv4())); goToCheckout(); close(); } } }, [dispatch, isLoading, isReordering, error, goToCheckout, close]); if (!config) return null; return children({ config: config, modalContentConfig: modalContentConfig, renderCheckTotals: renderCheckTotals, requestedAt: requestedAt, order: order, title: title, subtitle: subtitle, isReordering: isReordering, errMsg: errMsg, handlers: { reorder: reorder, close: close }, apiUrl: apiUrl, renderOrderDetailsItem: renderOrderDetailsItem }); }; export default OrderDetails;