@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.61 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 ErrorMessage_1 = tslib_1.__importDefault(require("./ErrorMessage"));
var OrderCard = function (_a) {
var order = _a.order, goToCheckout = _a.goToCheckout, children = _a.children, ErrorMessageView = _a.ErrorMessageView;
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 config = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig).orderCard;
var _d = (0, hooks_1.useAppSelector)(slices_1.selectOrder), loading = _d.loading, error = _d.error;
var isLoading = loading === 'pending';
var _e = (0, hooks_2.useOrder)(order), itemImages = _e.itemImages, itemNames = _e.itemNames, orderNo = _e.orderNo, title = _e.title, subtitle = _e.subtitle;
var view = function () {
dispatch((0, slices_1.openModal)({ type: 'ORDER_DETAILS', args: { order: order, goToCheckout: goToCheckout } }));
};
var reorder = function () {
setErrMsg(null);
setIsReordering(true);
dispatch((0, slices_1.reorder)(order.cart));
};
var handlers = { view: view, reorder: reorder };
(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();
}
}
}, [dispatch, isLoading, isReordering, error, goToCheckout]);
var renderErrorMessage = (0, react_1.useCallback)(function (errMsg) { return (react_1.default.createElement(ErrorMessage_1.default, { content: errMsg, children: ErrorMessageView })); }, [ErrorMessageView]);
if (!config)
return null;
return children({
config: config,
handlers: handlers,
isReordering: isReordering,
errMsg: errMsg,
subtitle: subtitle,
title: title,
orderNo: orderNo,
itemNames: itemNames,
itemImages: itemImages,
renderErrorMessage: renderErrorMessage,
apiUrl: apiUrl
});
};
exports.default = OrderCard;