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

59 lines (58 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var uuid_1 = require("uuid"); var hooks_1 = require("../app/hooks"); var hooks_2 = require("../hooks"); var slices_1 = require("../slices"); var CheckTotals_1 = tslib_1.__importDefault(require("./CheckTotals")); var OrderDetailsItem_1 = tslib_1.__importDefault(require("./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 = (0, hooks_1.useAppDispatch)(); var apiUrl = (0, hooks_1.useAppSelector)(slices_1.selectKioskApi); var _b = (0, react_1.useState)(null), errMsg = _b[0], setErrMsg = _b[1]; var _c = (0, react_1.useState)(false), isReordering = _c[0], setIsReordering = _c[1]; var _d = (0, hooks_2.useOrder)(order), subtitle = _d.title, title = _d.orderNo, requestedAt = _d.requestedAt; var _e = (0, hooks_1.useAppSelector)(slices_1.selectOrder), loading = _e.loading, error = _e.error; var isLoading = loading === 'pending'; var _f = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), config = _f.orderDetails, modalContentConfig = _f.modalContent; var reorder = function () { setErrMsg(null); setIsReordering(true); dispatch((0, slices_1.reorder)(order.cart)); }; var renderCheckTotals = (0, react_1.useCallback)(function () { return react_1.default.createElement(CheckTotals_1.default, { check: order, children: CheckTotalsView }); }, [order, CheckTotalsView]); var renderOrderDetailsItem = (0, react_1.useCallback)(function (orderItem) { return (react_1.default.createElement(OrderDetailsItem_1.default, { key: orderItem.id, orderItem: orderItem, children: OrderDetailsItemView })); }, [OrderDetailsItemView]); (0, react_1.useEffect)(function () { if (isReordering && !isLoading) { setIsReordering(false); if (error) { setErrMsg(error.detail); } else { dispatch((0, slices_1.setOrderId)((0, uuid_1.v4)())); 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 }); }; exports.default = OrderDetails;