@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
JavaScript
"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;