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

54 lines (53 loc) 2.51 kB
"use strict"; 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;