@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
54 lines (53 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("@open-tender/utils");
var hooks_1 = require("../app/hooks");
var slices_1 = require("../slices");
var useOrder = function (order, callback) {
var dispatch = (0, hooks_1.useAppDispatch)();
var orderId = order.order_id, status = order.status, serviceType = order.service_type, orderType = order.order_type, revenueCenter = order.revenue_center, requested_at = order.requested_at, timezone = order.timezone, cart = order.cart, totals = order.totals, orderPrep = order.order_prep;
var _a = (orderPrep || {}).is_in_prep_queue, isInPrepQueue = _a === void 0 ? false : _a;
var orderTypeName = (0, utils_1.makeOrderTypeName)(orderType, serviceType);
var orderPrepType = (orderPrep === null || orderPrep === void 0 ? void 0 : orderPrep.prep_type) === 'TAKE_OUT' ? 'Take Out' : 'Dine In';
var tz = utils_1.timezoneMap[timezone];
var requestedAt = (0, utils_1.isoToDateStr)(requested_at, tz, 'MMMM d, yyyy @ h:mma');
var isUpcoming = (0, utils_1.isoToDate)(requested_at) > new Date();
var itemImages = cart
.map(function (i) {
return i.images
.filter(function (m) { return m.type === 'SMALL_IMAGE' && m.url; })
.map(function (image) { return ({ title: i.name, imageUrl: image.url }); });
})
.flat();
var itemNames = cart.map(function (i) { return i.name; }).join(', ');
var total = totals.total;
var orderNo = "Order #".concat(orderId);
var title = "".concat(orderPrepType, " from ").concat(revenueCenter.name);
var subtitle = "".concat(requestedAt, " | ").concat((0, utils_1.formatDollars)(total));
var reorder = function () {
// const { revenue_center_id: revenueCenterId } = revenueCenter
dispatch((0, slices_1.setOrderServiceType)({ orderType: 'OLO', serviceType: 'WALKIN' }));
if (callback)
callback();
};
return {
isInPrepQueue: isInPrepQueue,
isUpcoming: isUpcoming,
itemImages: itemImages,
itemNames: itemNames,
status: status,
orderId: orderId,
orderPrep: orderPrep,
orderType: orderType,
orderTypeName: orderTypeName,
reorder: reorder,
requestedAt: requestedAt,
revenueCenter: revenueCenter,
serviceType: serviceType,
subtitle: subtitle,
orderNo: orderNo,
title: title,
total: total
};
};
exports.default = useOrder;