{"version":3,"file":"js/index-c58de40a546a361ce91d.js","mappings":"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","sources":["webpack://delivery-manager-ms/./app/javascript/images/ sync ^\\.\\/.*$","webpack://delivery-manager-ms/./app/javascript/images/svg/index.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/itemCalculations.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/logisticErrors.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/utils.ts","webpack://delivery-manager-ms/./app/javascript/state/features/branches/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/branches/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/branches/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/branches/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/branches/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/drivers/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/drivers/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/drivers/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/drivers/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/drivers/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/components/branchesDropdown/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/notifications/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/orderEvents/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/notifications/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/notifications/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/notifications/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/notifications/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderNotification/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/theme/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/theme/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/theme/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/theme/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/theme/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/components/darkMode/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/loader/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/mainNav/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/orderEvents/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/orderEvents/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/company/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/company/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/company/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/company/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/company/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/orderFunctions.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/constants.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/payments/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/payments/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/payments/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/payments/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/payments/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/homeDelivery/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/order/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/homeDelivery/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/homeDelivery/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/homeDelivery/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/homeDelivery/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/pickup/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/pickup/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/pickup/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/pickup/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/pickup/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/scheduled/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/scheduled/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/scheduled/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/scheduled/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/scheduled/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/order/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/order/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/order/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/order/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/logisticPartners/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/logisticPartners/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/logisticPartners/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/logisticPartners/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/logisticPartners/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/printSettings/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/printSettings/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/printSettings/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/printSettings/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/printSettings/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/riderProximity/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/riderProximity/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/riderProximity/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/riderProximity/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/riderProximity/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/context/audioContext.ts","webpack://delivery-manager-ms/./app/javascript/components/header/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/useNotifyAudioContext.ts","webpack://delivery-manager-ms/./app/javascript/components/tabBadge/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/tabs/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/currentTab/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/currentTab/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/currentTab/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/currentTab/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/currentTab/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/components/noOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/modalCloseIcon/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/reprints/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/reprints/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/reprints/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/reprints/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/reprints/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/components/cancellationReasonPopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/cancelReasons/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/cancelReasons/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/cancelReasons/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/cancelReasons/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/cancelReasons/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/orderImage.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderDetailsPopupComponents/orderItemsTable/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderDetailsPopupComponents/customerDetails/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderDetailsPopupComponents/thirdPartyDetails/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderDetailsPopupComponents/paymentDetails/index.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/orderStatus.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderDetailsPopupComponents/statusHistory/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderDetailsPopupComponents/modificationHistory/index.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/modificationString.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderPopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/elapsedTime/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/keypad/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/useAppStateSelector.ts","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/utils.tsx","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/itemSelectionGridView.tsx","webpack://delivery-manager-ms/./app/javascript/types/payments.ts","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/stripeConnect/useStripeConnectPayment.ts","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/stripeConnect/transactionFailReason.tsx","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/stripeConnect/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/magnati/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/razorpay/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/txnStatusView.tsx","webpack://delivery-manager-ms/./app/javascript/context/pusherContext.ts","webpack://delivery-manager-ms/./app/javascript/hooks/usePusher.ts","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/magnati/useMagnatiPayment.ts","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/razorpay/utils.ts","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/paymentPopup/paymentPartners/razorpay/useRazorpayPayment.ts","webpack://delivery-manager-ms/./app/javascript/components/radialTimeCount/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/setDeliveryTimePopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/logisticOrderStatus.tsx","webpack://delivery-manager-ms/./app/javascript/components/orderButtonGroup/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/logisticDetailsPopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/riderMapContainer/icons/loader.tsx","webpack://delivery-manager-ms/./app/javascript/components/riderMapContainer/icons/refresh.tsx","webpack://delivery-manager-ms/./app/javascript/components/riderMapContainer/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/mapErrorBoundary/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/riderTracking/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/throttleButton/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/deliveryPartnerPopup/ridersRoster.tsx","webpack://delivery-manager-ms/./app/javascript/components/deliveryPartnerPopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/useDebouncer.ts","webpack://delivery-manager-ms/./app/javascript/components/order/utils.tsx","webpack://delivery-manager-ms/./app/javascript/components/order/orderLogisticsControl.tsx","webpack://delivery-manager-ms/./app/javascript/components/riderSelectionPopup/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/order/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/animateOrderTransitions/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/animateDeliveryAreaTransitions/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/animateTableTransitions/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/useEntryTransitionConfig.ts","webpack://delivery-manager-ms/./app/javascript/components/unconfirmedOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/types/orderStatus.ts","webpack://delivery-manager-ms/./app/javascript/types/filters.ts","webpack://delivery-manager-ms/./app/javascript/components/orderFilters/utils.ts","webpack://delivery-manager-ms/./app/javascript/components/orderFilters/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/useOrderFilter.ts","webpack://delivery-manager-ms/./app/javascript/components/newOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/filterDropdown/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/tableFilterTab/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/ordersFilterSection/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/waitingForCollectionOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/deliveryInProgressOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/driverOrderDetails/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/deliveredDriver/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/riderStatsSection/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/deliveredOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/containers/homeDeliveries/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/pickupNewOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/pickupWaitingForCollection/searchResults.tsx","webpack://delivery-manager-ms/./app/javascript/components/pickupWaitingForCollection/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/pickupCollected/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/pickupUnconfirmed/index.tsx","webpack://delivery-manager-ms/./app/javascript/containers/pickups/index.tsx","webpack://delivery-manager-ms/./app/javascript/containers/scheduled/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/noInternet/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/dmmsDisabled/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/app/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/loader/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/loader/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/loader/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/loader/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/jwt/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/error/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/error/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/error/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/error/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/error/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/limboStateOrders/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/limboStateOrders/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/auth/types.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/auth/reducers.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/auth/operations.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/auth/actions.tsx","webpack://delivery-manager-ms/./app/javascript/state/features/auth/index.tsx","webpack://delivery-manager-ms/./app/javascript/state/storeInitialState.tsx","webpack://delivery-manager-ms/./app/javascript/state/middlewares/axios.tsx","webpack://delivery-manager-ms/./app/javascript/state/middlewares/index.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/sentry.tsx","webpack://delivery-manager-ms/./app/javascript/state/store.tsx","webpack://delivery-manager-ms/./app/javascript/helpers/localstorageService.ts","webpack://delivery-manager-ms/./app/javascript/components/browserCompatibility/index.tsx","webpack://delivery-manager-ms/./app/javascript/wrappers/localeWrapper.tsx","webpack://delivery-manager-ms/./app/javascript/containers/loginError/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/useLocalStorage.ts","webpack://delivery-manager-ms/./app/javascript/components/authProvider/index.tsx","webpack://delivery-manager-ms/./app/javascript/components/authProvider/useTicker.ts","webpack://delivery-manager-ms/./app/javascript/components/audioProvider/index.tsx","webpack://delivery-manager-ms/./app/javascript/hooks/usePlayAudioOnLoop.ts","webpack://delivery-manager-ms/./app/javascript/components/pusherProvider/index.tsx","webpack://delivery-manager-ms/./app/javascript/packs/index.tsx"],"sourcesContent":["var map = {\n\t\"./ccmap.jpg\": 910,\n\t\"./eta-bg.png\": 8760,\n\t\"./map.svg\": 1839,\n\t\"./marker-pin-slash.svg\": 5471,\n\t\"./no-map.svg\": 6223,\n\t\"./no_internet.svg\": 4714,\n\t\"./partners/deliveroo.png\": 4537,\n\t\"./partners/foodpanda.png\": 8000,\n\t\"./partners/generic.png\": 111,\n\t\"./partners/gpay.png\": 893,\n\t\"./partners/grab.png\": 4664,\n\t\"./partners/hungerstation.png\": 95,\n\t\"./partners/my-menu.png\": 4794,\n\t\"./partners/online.png\": 9671,\n\t\"./partners/sapaad-direct.png\": 7192,\n\t\"./partners/sapaad-online.png\": 6530,\n\t\"./partners/talabat.png\": 5785,\n\t\"./partners/uber.png\": 9414,\n\t\"./partners/zomato.png\": 2042,\n\t\"./payment-partners/adyen.png\": 3606,\n\t\"./payment-partners/e-pay.png\": 3315,\n\t\"./payment-partners/geidea.png\": 442,\n\t\"./payment-partners/mpesa.png\": 5739,\n\t\"./payment-partners/nets.png\": 4075,\n\t\"./payment-partners/paynow-square.png\": 4677,\n\t\"./payment-partners/paynow.png\": 8457,\n\t\"./payment-partners/pine-labs.png\": 2384,\n\t\"./payment-partners/qr-sample.png\": 9043,\n\t\"./payment-partners/sapaad-pay.png\": 9468,\n\t\"./payment-partners/stripe.png\": 7584,\n\t\"./payment-status/payment-animation-dark.gif\": 7353,\n\t\"./payment-status/payment-animation.gif\": 772,\n\t\"./payment-status/payment-error-generic.png\": 1035,\n\t\"./payment-types/amex.png\": 5820,\n\t\"./payment-types/blank.jpg\": 3375,\n\t\"./payment-types/blank.png\": 7423,\n\t\"./payment-types/card.png\": 1615,\n\t\"./payment-types/cash-black.png\": 7206,\n\t\"./payment-types/cash-white.png\": 2776,\n\t\"./payment-types/coin.png\": 918,\n\t\"./payment-types/custom.png\": 2716,\n\t\"./payment-types/diners.png\": 8306,\n\t\"./payment-types/discover.png\": 5320,\n\t\"./payment-types/generic-loyalty-card.png\": 9356,\n\t\"./payment-types/generic.png\": 6806,\n\t\"./payment-types/giftcard.png\": 5013,\n\t\"./payment-types/jcb.png\": 1772,\n\t\"./payment-types/mastercard-white.png\": 3561,\n\t\"./payment-types/mastercard.png\": 2189,\n\t\"./payment-types/sapaad-pay-ad.png\": 7074,\n\t\"./payment-types/sapaad-pay.png\": 3574,\n\t\"./payment-types/visa-white.png\": 8014,\n\t\"./payment-types/visa.png\": 9690,\n\t\"./sapaad-square.png\": 6248,\n\t\"./svg\": 7845,\n\t\"./svg/\": 7845,\n\t\"./svg/index\": 7845,\n\t\"./svg/index.scss\": 1314,\n\t\"./svg/index.tsx\": 7845,\n\t\"./third-party-delivery/10.png\": 5942,\n\t\"./third-party-delivery/11.png\": 7312,\n\t\"./third-party-delivery/12.png\": 8603,\n\t\"./third-party-delivery/15.png\": 8692,\n\t\"./third-party-delivery/7.png\": 8859,\n\t\"./third-party-delivery/8.png\": 1052,\n\t\"./third-party-delivery/bike.png\": 9669,\n\t\"./third-party-delivery/delivered.png\": 9676,\n\t\"./third-party-delivery/delivering.svg\": 5880,\n\t\"./third-party-delivery/driver-search.svg\": 7240,\n\t\"./third-party-delivery/driver-waiting.svg\": 1705,\n\t\"./third-party-delivery/lalamove.png\": 953,\n\t\"./third-party-delivery/lyve.png\": 2668,\n\t\"./third-party-delivery/one_click.png\": 8993,\n\t\"./third-party-delivery/quiqup.png\": 573,\n\t\"./third-party-delivery/request-cancelled.svg\": 4454,\n\t\"./third-party-delivery/shadowfax.png\": 8589,\n\t\"./third-party-delivery/street.png\": 6819,\n\t\"./third-party-delivery/waiting-to-pick.svg\": 9718,\n\t\"./third-party-delivery/zomato-go.png\": 7487,\n\t\"./zomato_logo.png\": 3412\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6190;","import React from \"react\";\n\nfunction MapSvg() {\n return (\n
\n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport default MapSvg;\n","const calculateSubtotal = (items: any) => {\n let subTotal = 0;\n items.map((item: any) => {\n if (item.modifiers.length) {\n subTotal = subTotal + modifierItemSubtotal(item);\n } else {\n subTotal = subTotal + item.amount;\n }\n });\n return formatDecimal(subTotal);\n};\n\nconst calculateTax = (items:any,surcharges:any) =>{\n let tax = 0 ;\n items.map((item:any) => {\n tax = tax + item.tax\n })\n if(surcharges){\n surcharges.map((surcharge:any) =>{\n tax = tax + surcharge.tax_amount\n })\n }\n return tax\n}\n\nconst modifierItemSubtotal = (item: any) => {\n let amount = item.amount;\n item.modifiers.map((modifier: any) => {\n amount += modifier.amount;\n });\n return amount;\n};\n\nconst formatDecimal = (\n number: any,\n precision: any = parseInt(localStorage.company_currency_precision)\n) => {\n\n if (!precision) {\n precision = 2;\n }\n\n number = parseFloat(parseFloat(number).toFixed(7));\n\n let rounder = Math.pow(10, precision);\n\n return (Math.round(number * rounder) / rounder).toFixed(precision) as any;\n};\n\nexport { calculateSubtotal, formatDecimal, modifierItemSubtotal, calculateTax };\n","const logisticErrors = {\n oops: {\n en: \"Oops\",\n ar: \"عذرا\",\n ms: \"Alamak\",\n zh: \"糟糕\",\n },\n globalErr: {\n en: \"Something went wrong. Please try again.\",\n ar: \"هناك خطأ ما، حاول مرة اخرى.\",\n ms: \"Sesuatu telah berlaku. Sila cuba lagi.\",\n zh: \"出现问题。请再试一次。\",\n },\n thirdPartyErr: {\n en: \"Your request for a third-party driver has been canceled for order\",\n ar: \"تم إلغاء طلبك لسائق جهة خارجية من أجل طلب\",\n ms: \"Permintaan anda untuk pemandu pihak ketiga telah dibatalkan untuk pesanan\",\n zh: \"您针对订单发出的第三方司机请求已取消\",\n },\n unConfirmErr: {\n en: \"Unable to confirm the order!\",\n ar: \"غير قادر على تأكيد الطلب!\",\n ms: \"Tidak dapat mengesahkan pesanan!\",\n zh: \"无法确认订单!\",\n },\n zomatoErr: {\n en: \"Zomato's systems are not accepting confirmation\",\n ar: \"أنظمة زوماتو لا تقبل التثبيت حاليا\",\n ms: \"Sistem Zomato tidak menerima pengesahan\",\n zh: \"Zomato的系统不接受确认\",\n },\n talabatErr: {\n en: \"Talabat's systems are not accepting confirmation\",\n ar: \"أنظمة طلبات لا تقبل التثبيت حاليا\",\n ms: \"Sistem Talabat tidak menerima pengesahan\",\n zh: \"Talabat的系统不接受确认\",\n },\n deliverooErr: {\n en: \"Deliveroo's systems are not accepting confirmation\",\n ar: \"أنظمة ديليفيرو لا تقبل التثبيت حاليا\",\n ms: \"Sistem Deliveroo tidak menerima pengesahan\",\n zh: \"Deliveroo的系统不接受确认\",\n },\n deliverectErr: {\n en: \"Deliverect's systems are not accepting confirmation\",\n ar: \"أنظمة ديليفيركتس لا تقبل التثبيت حاليا\",\n ms: \"Sistem Deliverrect tidak menerima pengesahan\",\n zh: \"Deliverect的系统不接受确认\",\n },\n uberErr: {\n en: \"Uber Eats's systems are not accepting confirmation\",\n ar: \"أنظمة أوبر إيتس لا تقبل التثبيت حاليا\",\n ms: \"Sistem Uber Eats tidak menerima pengesahan\",\n zh: \"Uber Eats的系统不接受确认\",\n },\n foodPandaErr: {\n en: \"Foodpanda's systems are not accepting confirmation\",\n ar: \"أنظمة فودباندا لا تقبل التثبيت حاليا\",\n ms: \"Sistem Foodpanda tidak menerima pengesahan\",\n zh: \"Foodpanda的系统不接受确认\",\n },\n grabErr: {\n en: \"Grab's systems are not accepting confirmation\",\n ar: \"أنظمة جراب لا تقبل التثبيت حاليا\",\n ms: \"Sistem Grab tidak menerima pengesahan\",\n zh: \"Grab的系统不接受确认\",\n },\n conatctText: {\n en: \"Please contact your\",\n ar: \"الرجاء الإتصال بـ \",\n ms: \"Sila hubungi\",\n zh: \"请联络您的\",\n },\n supportText: {\n en: \"support agent or representative to resolve this issue\",\n ar: \"وكيل/ ممثل الدعم لحل هذه المشكلة\",\n ms: \"ejen sokongan atau wakil anda untuk menyelesaikan isu ini\",\n zh: \"支持代理或代表以解决此问题\",\n },\n};\nexport { logisticErrors };\n","import { useRef, useEffect } from \"react\";\nimport { formatDecimal } from \"./itemCalculations\";\nimport { logisticErrors } from \"./logisticErrors\";\n\nconst parseJwt = (token: any) => {\n var base64Url = token.split(\".\")[1];\n var base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n var jsonPayload = decodeURIComponent(\n atob(base64)\n .split(\"\")\n .map(function (c) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\")\n );\n\n return JSON.parse(jsonPayload);\n};\nconst generateErrorMessage: any = (id: any) => {\n const locale = localStorage.getItem(\"locale\");\n return id[locale];\n};\nconst usePrevious = (value: any) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nconst sortBranchesAlphabetically = (branches: any) => {\n let sortedBranches = branches.sort((first: any, second: any) => {\n return first.name.toLowerCase().localeCompare(second.name.toLowerCase());\n });\n return sortedBranches;\n};\n\n// Returns the ENV values passed to the root component by Rails\nconst getEnvValueFor = (envKey: string) => {\n // For better maintainability, we let the caller of this method to pass ENV Keys as\n // they are defined in the .env file (ALL CAPS - SNAKE CASE)\n // So envKey is in the format \"SAPAAD_CORE_BASE_URL\"\n\n let reFormattedKey = \"ENV_\" + envKey;\n // so now reFormattedKey is ENV_SAPAAD_CORE_BASE_URL\n\n reFormattedKey = reFormattedKey\n .toLocaleLowerCase()\n .replace(/(\\_\\w)/g, function (k) {\n return k[1].toUpperCase();\n });\n // First lower case all, then camel case.\n // now reFormattedKey is envSapaadCoreBaseUrl\n\n let envValue = document.getElementById(\"root\")?.dataset[reFormattedKey];\n if (envValue === undefined) {\n console.error(\"[ENV] CANNOT FIND ENV FOR \" + envKey);\n }\n\n return envValue;\n};\n\nconst hardRefresh = () => {\n document\n .getElementById(\"root\")\n ?.setAttribute(\"data-prevent-refresh\", \"false\");\n window.location.reload();\n};\n\nconst parseOrderSource = (orderSource: any) => {\n switch (orderSource) {\n case \"zomato\":\n return generateErrorMessage(logisticErrors.zomatoErr);\n case \"talabat\":\n return generateErrorMessage(logisticErrors.talabatErr);\n case \"deliveroo\":\n return generateErrorMessage(logisticErrors.deliverooErr);\n case \"deliverect\":\n return generateErrorMessage(logisticErrors.deliverectErr);\n case \"uber_eats\":\n return generateErrorMessage(logisticErrors.uberErr);\n case \"foodpanda\":\n return generateErrorMessage(logisticErrors.foodPandaErr);\n case \"gpay_food\":\n return \"Gpay's systems are not accepting confirmation.\";\n case \"grab\":\n return generateErrorMessage(logisticErrors.grabErr);\n default:\n return \"\";\n }\n};\n\nconst generateAggregatorError = (orderSource: any) => {\n return (\n parseOrderSource(orderSource) +\n \".\" +\n generateErrorMessage(logisticErrors.conatctText) +\n \" \" +\n generateErrorMessage(logisticErrors.supportText) +\n \".\"\n );\n};\n\nconst isAggregator = (orderSource: any) => {\n let sapaad_order_sources = [\"sapaad_pos\", \"sapaad_online\", \"byod\"];\n return !sapaad_order_sources.includes(orderSource);\n};\n\nconst numberInputRegex = new RegExp(/^\\d*\\.?\\d*$/);\n\nconst computeCashRounding = (value: any, rule: any, interval: any) => {\n if (value === 0) {\n return 0;\n }\n\n let roundingRule: any = rule;\n let roundingInterval: any = interval;\n let totalAmount: any = value;\n let unRoundedAmount: any = parseFloat(totalAmount);\n totalAmount = parseFloat(totalAmount);\n let roundedAmount: any = 0;\n let excess: any = 0;\n\n if (roundingRule == 1) {\n roundedAmount = totalAmount.roundDown(roundingInterval);\n excess = roundedAmount - parseFloat(totalAmount).toFixed(2);\n } else if (roundingRule == 2) {\n roundedAmount = parseFloat(\n Math.ceil((totalAmount as any) / roundingInterval) * roundingInterval\n ).toFixed(2);\n excess = roundedAmount - parseFloat(totalAmount).toFixed(2);\n } else if (roundingRule == 3) {\n roundedAmount = totalAmount.roundMidpoint(roundingInterval, \"down\");\n excess = roundedAmount - parseFloat(totalAmount).toFixed(2);\n } else if (roundingRule == 4) {\n roundedAmount = totalAmount.roundMidpoint(roundingInterval, \"up\");\n excess = roundedAmount - parseFloat(totalAmount).toFixed(2);\n }\n\n roundedAmount = parseFloat(roundedAmount).toFixed(2);\n let excessAmount = parseFloat(excess).toFixed(2);\n\n return { roundedAmount, excessAmount };\n};\n\nNumber.prototype.roundMidpoint = function (interval, rule) {\n var modVal = parseFloat((this % interval).toFixed(2));\n if (rule == \"up\") {\n if (modVal < interval / 2) {\n return this - modVal;\n } else {\n return this + interval - modVal;\n }\n } else if (\"down\") {\n if (modVal > interval / 2) {\n return this + interval - modVal;\n } else {\n return this - modVal;\n }\n }\n};\n\nNumber.prototype.roundDown = function (interval: any) {\n var returnValue = 0;\n var compute = parseFloat(this % interval).toFixed(2);\n if (compute == interval) {\n returnValue = this;\n } else {\n returnValue = this - compute;\n }\n return returnValue;\n};\n\nconst generateCashRoundingString = (value: any, rule: any, interval: any) => {\n let totalAmount = value;\n let cashRoundedValue: any = computeCashRounding(totalAmount, rule, interval);\n let roundingRule = cashRoundedValue.excessAmount < 0 ? \"down\" : \"up\";\n let formattedAmountDisplay = formatDecimal(totalAmount);\n let roundedLabel =\n \"Rounded \" + roundingRule + \" from \" + formattedAmountDisplay;\n return roundedLabel;\n};\n\nconst groupOrdersByDeliveryArea = (orders = []) => {\n return Object.entries(orders).map((d) => ({\n deliveryArea: d[0],\n orders: d[1],\n }));\n};\n\n\nexport {\n parseJwt,\n usePrevious,\n sortBranchesAlphabetically,\n getEnvValueFor,\n hardRefresh,\n parseOrderSource,\n generateAggregatorError,\n isAggregator,\n numberInputRegex,\n computeCashRounding,\n generateCashRoundingString,\n generateErrorMessage,\n groupOrdersByDeliveryArea,\n};\n","export const FETCH_BRANCHES = \"branches/FETCH_BRANCHES\";\nexport const FETCH_BRANCHES_SUCCESS =\n \"branches/FETCH_BRANCHES_SUCCESS\";\nexport const FETCH_BRANCHES_FAIL = \"branches/FETCH_BRANCHES_FAIL\";\nexport const SELECT_BRANCH = \"branches/SELECT_BRANCH\";\n","import { sortBranchesAlphabetically } from \"../../../helpers/utils\";\nimport * as types from \"./types\";\n\nconst branchesReducer = (state = [], action: any) => {\n switch (action.type) {\n case types.FETCH_BRANCHES_SUCCESS:\n return sortBranchesAlphabetically(action.payload.data || []);\n\n default:\n return state;\n }\n};\n\nconst reducer = branchesReducer;\n\nexport default reducer;\n","import actions from \"./actions\";\n\nconst fetchBranches = actions.fetchBranches;\nconst selectBranch = actions.selectBranch;\n\nexport default {\n fetchBranches,\n selectBranch\n};\n","import * as types from \"./types\";\nconst fetchBranches = () => ({\n type: types.FETCH_BRANCHES,\n payload: {\n request: {\n method: \"get\",\n url: \"/api/v1/locations/list\",\n },\n },\n});\n\nconst selectBranch = (locationId: number) => ({\n type: types.SELECT_BRANCH,\n payload: locationId\n})\n\nexport default {\n fetchBranches,\n selectBranch,\n};\n","import reducer from \"./reducers\";\n\nexport { default as branchOperations } from \"./operations\";\n\nexport default reducer\n","import actions from \"./actions\";\n\nconst fetchDrivers = actions.fetchDrivers;\nconst fetchRiderCoordinates = actions.fetchRiderCoordinates;\nconst assignNewOrderRider = actions.assignNewOrderRider;\nconst assignReadyOrderRiderWithoutStateChange =\n actions.assignReadyOrderRiderWithoutStateChange;\nconst unassignNewOrderRider = actions.unassignNewOrderRider;\nconst unassignReadyOrderRider = actions.unassignReadyOrderRider;\n\nexport default {\n fetchDrivers,\n fetchRiderCoordinates,\n assignNewOrderRider,\n assignReadyOrderRiderWithoutStateChange,\n unassignNewOrderRider,\n unassignReadyOrderRider,\n};\n","import * as types from \"./types\";\n\nconst fetchDrivers = (companyId: number) => ({\n type: types.FETCH_DRIVERS,\n payload: {\n request: {\n method: \"get\",\n url: `/api/v1/logistics/riders?company_id=${companyId}`,\n },\n },\n});\n\nconst fetchRiderCoordinates = (driverId: any) => ({\n type: types.FETCH_RIDER_COORDINATES,\n payload: {\n request: {\n method: \"get\",\n url: `/api/v1/riders/${driverId}/geo-coordinates`,\n },\n },\n});\n\nconst assignNewOrderRider = (orderId: any, driverId: any) => ({\n type: types.ASSIGN_NEW_RIDER,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/new/${orderId}/assign-rider?rider_id=${driverId}`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst assignReadyOrderRiderWithoutStateChange = (\n orderId: any,\n driverId: any\n) => ({\n type: types.ASSIGN_READY_ORDER_RIDER,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/ready/${orderId}/assign-rider-without-state-change?rider_id=${driverId}`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst unassignNewOrderRider = (orderId: any, driverId: any) => ({\n type: types.UNASSIGN_NEW_ORDER_RIDER,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/new/${orderId}/unassign-rider`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst unassignReadyOrderRider = (orderId: any, driverId: any) => ({\n type: types.UNASSIGN_READY_ORDER_RIDER,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/new/${orderId}/unassign-rider`,\n },\n },\n param: { order_id: orderId },\n});\n\nexport default {\n fetchDrivers,\n fetchRiderCoordinates,\n assignNewOrderRider,\n assignReadyOrderRiderWithoutStateChange,\n unassignNewOrderRider,\n unassignReadyOrderRider,\n};\n","export const FETCH_DRIVERS = \"drivers/FETCH_DRIVERS\";\nexport const FETCH_DRIVERS_SUCCESS = \"drivers/FETCH_DRIVERS_SUCCESS\";\nexport const FETCH_DRIVERS_FAIL = \"drivers/FETCH_DRIVERS_FAIL\";\nexport const ASSIGN_DRIVER = \"drivers/ASSIGN_DRIVER\";\nexport const FETCH_RIDER_COORDINATES = \"drivers/FETCH_RIDER_COORDINATES\";\nexport const FETCH_RIDER_COORDINATES_SUCCESS =\n \"drivers/FETCH_RIDER_COORDINATES_SUCCESS\";\nexport const FETCH_RIDER_COORDINATES_FAIL =\n \"drivers/FETCH_RIDER_COORDINATES_FAIL\";\nexport const ASSIGN_NEW_RIDER = \"drivers/ASSIGN_NEW_RIDER\";\nexport const ASSIGN_NEW_RIDER_SUCCESS = \"drivers/ASSIGN_NEW_RIDER_SUCCESS\";\nexport const ASSIGN_NEW_RIDER_FAIL = \"drivers/ASSIGN_NEW_RIDER_FAIL\";\nexport const ASSIGN_READY_ORDER_RIDER = \"drivers/ASSIGN_READY_ORDER_RIDER\";\nexport const ASSIGN_READY_ORDER_RIDER_SUCCESS =\n \"drivers/ASSIGN_READY_ORDER_RIDER_SUCCESS\";\nexport const ASSIGN_READY_ORDER_RIDER_FAIL =\n \"drivers/ASSIGN_READY_ORDER_RIDER_FAIL\";\nexport const UNASSIGN_NEW_ORDER_RIDER = \"drivers/UNASSIGN_NEW_ORDER_RIDER\";\nexport const UNASSIGN_NEW_ORDER_RIDER_SUCCESS =\n \"drivers/UNASSIGN_NEW_ORDER_RIDER_SUCCESS\";\nexport const UNASSIGN_NEW_ORDER_RIDER_FAIL =\n \"drivers/UNASSIGN_NEW_ORDER_RIDER_FAIL\";\nexport const UNASSIGN_READY_ORDER_RIDER = \"drivers/UNASSIGN_READY_ORDER_RIDER\";\nexport const UNASSIGN_READY_ORDER_RIDER_SUCCESS =\n \"drivers/UNASSIGN_READY_ORDER_RIDER_SUCCESS\";\nexport const UNASSIGN_READY_ORDER_RIDER_FAIL =\n \"drivers/UNASSIGN_READY_ORDER_RIDER_FAIL\";\n","import reducer from \"./reducers\";\n\nexport { default as driverOperations } from \"./operations\"\n\nexport default reducer;\n","import { combineReducers } from \"redux\";\nimport * as types from \"./types\";\n\nconst driverReducer = (state = [], action: any) => {\n switch (action.type) {\n case types.FETCH_DRIVERS_SUCCESS:\n return action.payload.data || [];\n\n default:\n return state;\n }\n};\n\nconst reducer = combineReducers({\n company_drivers: driverReducer,\n});\n\nexport default reducer;\n","import React, { useEffect, useState } from \"react\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Dropdown } from \"react-bootstrap\";\nimport { connect } from \"react-redux\";\nimport { branchOperations } from \"../../state/features/branches\";\nimport { driverOperations } from \"../../state/features/drivers\";\nimport { FormattedMessage } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\n\ninterface IBranchesDropdownProps {\n branches: any;\n selectBranch: any;\n company: any;\n selectedBranch: any;\n fetchDrivers: any;\n}\n\nfunction BranchesDropdown(props: IBranchesDropdownProps) {\n const [show, setShow] = useState(false);\n const [branch, setBranch] = useState({} as any);\n const [branchList, setBranchList] = useState([] as any);\n\n const onDropdownToggle = (e: any) => {\n if (e) {\n setShow(true);\n } else {\n setShow(false);\n }\n };\n\n useEffect(() => {\n if (Object.keys(props.company).length > 0 && props.branches.length > 0) {\n props\n .fetchDrivers(props.company.company_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n\n let defaultLocation = {\n name: props.company.admin ? \"All branches\" : \"Multiple Branches\",\n };\n let branches = [] as any;\n if (\n props.company.admin &&\n props.company.authorized_location_ids.length < 1\n ) {\n branches = props.branches;\n } else {\n props.company.authorized_location_ids.map(\n (locationId: any, index: number) => {\n branches[index] = props.branches.filter((branch: any) => {\n return locationId === branch.id;\n })[0];\n }\n );\n }\n if (localStorage.selectedBranch) {\n let selectedBranch = JSON.parse(localStorage.selectedBranch);\n let checkBranchExists = branches.find(\n (location: any) => location.id === selectedBranch.id\n ); // returns object if found else undefined.\n props.selectBranch(\n checkBranchExists\n ? checkBranchExists\n : props.branches.length > 1\n ? defaultLocation\n : props.branches[0]\n );\n } else {\n props.branches.length > 1\n ? props.selectBranch(defaultLocation)\n : props.selectBranch(props.branches[0]);\n }\n // remove default location if there is only single location\n if (branches.length > 1) {\n setBranchList([defaultLocation].concat(branches));\n } else {\n setBranchList(branches);\n props.selectBranch(branches[0]);\n }\n }\n }, [props.company, props.branches]);\n\n useEffect(() => {\n if (\n Object.keys(props.company).length > 0 &&\n Object.keys(props.selectedBranch).length > 0\n ) {\n setBranch(props.selectedBranch);\n }\n }, [props.company, props.selectedBranch]);\n\n const selectBranch = (selectedBranch: any) => {\n setBranch(selectedBranch);\n if (selectedBranch.id) {\n localStorage.selectedBranch = JSON.stringify(selectedBranch);\n } else {\n localStorage.removeItem(\"selectedBranch\");\n }\n props.selectBranch(selectedBranch);\n setShow(!show);\n };\n\n return (\n onDropdownToggle(e)}\n >\n \n

\n {branch.name == \"All branches\" ? (\n \n ) : branch.name == \"Multiple Branches\" ? (\n \n ):(\n branch.name\n )}\n

\n \n \n \n {branchList.length > 0\n ? branchList.map((branch: any, index: number) => {\n return (\n selectBranch(branch)}\n >\n {branch.name == \"All branches\" ? (\n \n ) :branch.name == \"Multiple Branches\" ? (\n \n ) :(\n branch.name\n )}\n

\n );\n })\n : false}\n
\n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let branches = state.branches;\n let company = state.company.company_details;\n let selectedBranch = state.company.selected_branch;\n\n return { branches, company, selectedBranch };\n};\n\nconst mapDispatchToProps = {\n selectBranch: branchOperations.selectBranch,\n fetchDrivers: driverOperations.fetchDrivers,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BranchesDropdown);\n","export const CLEAR_HOME_DELIVERY_UNCONFIRMED_NOTIFICATION = \"notifications/CLEAR_HOME_DELIVERY_UNCONFIRMED_NOTIFICATION\";\nexport const CLEAR_PICKUP_UNCONFIRMED_NOTIFICATION = \"notifications/CLEAR_PICKUP_UNCONFIRMED_NOTIFICATION\";\n","export const PUSHER_RECEIVED_ORDER_CREATED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_CREATED\";\nexport const PUSHER_RECEIVED_ORDER_UPDATED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_UPDATED\";\nexport const PUSHER_RECEIVED_ORDER_VOIDED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_VOIDED\";\nexport const PUSHER_RECEIVED_ORDER_CONFIRMED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_CONFIRMED\";\nexport const PUSHER_RECEIVED_ORDER_REJECTED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_REJECTED\";\nexport const PUSHER_RECEIVED_ORDER_MARKED_AS_READY =\n \"orderEvents/PUSHER_RECEIVED_ORDER_MARKED_AS_READY\";\nexport const PUSHER_RECEIVED_PICKUP_ORDER_MARKED_AS_READY =\n \"orderEvents/PUSHER_RECEIVED_PICKUP_ORDER_MARKED_AS_READY\";\nexport const PUSHER_RECEIVED_RIDER_ASSIGNED =\n \"orderEvents/PUSHER_RECEIVED_RIDER_ASSIGNED\";\nexport const PUSHER_RECEIVED_ORDER_MARKED_AS_DELIVERED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_MARKED_AS_DELIVERED\";\nexport const PUSHER_RECEIVED_ORDER_MARKED_AS_COLLECTED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_MARKED_AS_COLLECTED\";\nexport const PUSHER_RECEIVED_ORDER_REPRINTED =\n \"orderEvents/PUSHER_RECEIVED_ORDER_REPRINTED\";\nexport const PUSHER_RECEIVED_CUSTOMER_ARRIVED =\n \"orderEvents/PUSHER_RECEIVED_CUSTOMER_ARRIVED\";\nexport const PUSHER_RECEIVED_ORDER_MARKED_AS_PICKED_UP =\n \"orderEvents/PUSHER_RECEIVED_ORDER_MARKED_AS_PICKED_UP\";\nexport const PUSHER_RECEIVED_RIDER_UNASSIGNED =\n \"orderEvents/PUSHER_RECEIVED_RIDER_UNASSIGNED\";\nexport const PUSHER_RECEIVED_TIP_COLLECTED =\n \"orderEvents/PUSHER_RECEIVED_TIP_COLLECTED\";\nexport const PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED =\n \"orderEvents/PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED\";\nexport const PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED =\n \"orderEvents/PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED\";\n","import { combineReducers } from \"redux\";\nimport * as types from \"./types\";\nimport * as orderEventTypes from \"../orderEvents/types\";\n\nlet initialState = { count: 0 };\n\nconst homeDeliveryNotificationReducer = (\n state: any = initialState,\n action: any\n) => {\n switch (action.type) {\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED:\n if (\n action.payload.order_type === \"online\" &&\n action.payload.order_status === \"unconfirmed\" &&\n !action.payload.takeaway\n ) {\n return { ...state, count: state.count + 1 };\n }\n return state;\n case types.CLEAR_HOME_DELIVERY_UNCONFIRMED_NOTIFICATION:\n return { ...state, count: 0 };\n default:\n return state;\n }\n};\n\nconst pickupNotificationReducer = (state: any = initialState, action: any) => {\n switch (action.type) {\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED:\n if (\n (action.payload.order_type === \"online\" &&\n action.payload.order_status === \"unconfirmed\" &&\n action.payload.takeaway) ||\n (action.payload.order_type === \"walk_in\" &&\n action.payload.order_status === \"unconfirmed\")\n ) {\n return { ...state, count: state.count + 1 };\n }\n return state;\n case types.CLEAR_PICKUP_UNCONFIRMED_NOTIFICATION:\n return { ...state, count: 0 };\n default:\n return state;\n }\n};\n\nconst reducer = combineReducers({\n home_delivery: homeDeliveryNotificationReducer,\n pickup: pickupNotificationReducer,\n});\n\nexport default reducer;\n","import actions from \"./actions\";\n\nconst clearHomeDeliveryUnconfirmedNotification = actions.clearHomeDeliveryUnconfirmedNotification;\nconst clearPickupUnconfirmedNotification = actions.clearPickupUnconfirmedNotification;\n\nexport default {\n clearHomeDeliveryUnconfirmedNotification,\n clearPickupUnconfirmedNotification,\n}\n","import * as types from \"./types\";\n\nconst clearHomeDeliveryUnconfirmedNotification = () => ({\n type: types.CLEAR_HOME_DELIVERY_UNCONFIRMED_NOTIFICATION,\n payload: 0,\n});\n\nconst clearPickupUnconfirmedNotification = () => ({\n type: types.CLEAR_PICKUP_UNCONFIRMED_NOTIFICATION,\n payload: 0,\n});\n\nexport default {\n clearHomeDeliveryUnconfirmedNotification,\n clearPickupUnconfirmedNotification,\n};\n","import reducer from \"./reducers\";\n\nexport { default as notificationOperations } from \"./operations\";\n\nexport default reducer;\n","import React, { useEffect, useState } from \"react\";\nimport {\n faBell,\n faMotorcycle,\n faShoppingBag,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { connect } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport { notificationOperations } from \"../../state/features/notifications\";\nimport { FormattedMessage } from \"react-intl\";\ninterface IOrderNotificationProps {\n notificaions: any;\n currentTab: string;\n clearHomeDeliveryNotifications?: any;\n clearPickupNotifications?: any;\n}\n\nfunction OrderNotification(props: IOrderNotificationProps) {\n let history = useHistory();\n const [currentTab, setCurrentTab] = useState(\"\");\n\n const getTimeNow = () => {\n let time = new Date()\n .toLocaleTimeString(undefined, {\n hour12: true,\n timeStyle: \"short\",\n } as any)\n .toLocaleUpperCase();\n if (time.split(\":\")[0] == \"00\") {\n let fixedTime: any = time.split(\":\");\n fixedTime[0] = \"12\";\n time = fixedTime.join(\":\");\n }\n return time;\n };\n\n useEffect(() => {\n if (\n props.notificaions.home_delivery.count > 0 &&\n props.currentTab == \"homeDelivery.unconfirmed\"\n ) {\n props.clearHomeDeliveryNotifications();\n } else if (\n props.notificaions.pickup.count > 0 &&\n props.currentTab == \"pickup.unconfirmed\"\n ) {\n props.clearPickupNotifications();\n }\n }, [props.notificaions, props.currentTab]);\n\n const onViewClick = (path: any) => {\n history.push(path);\n };\n\n return (\n
\n {props.notificaions.home_delivery.count > 0 &&\n currentTab !== \"home-delivery/unconfirmed\" ? (\n 0 && \"show\"\n }`}\n >\n
\n
\n \n
\n
\n {getTimeNow()}\n

\n \n {props.notificaions.home_delivery.count}{\" \"}\n {\" \"}\n {props.notificaions.home_delivery.count > 1 ? (\n \n ) : (\n \n )}\n {\" \"}\n \n

\n \n
\n
\n
\n ) : null}\n {props.notificaions.pickup.count > 0 &&\n currentTab !== \"pickup/unconfirmed\" ? (\n 0 && \"show\"\n }`}\n >\n
\n
\n \n
\n
\n {getTimeNow()}\n

\n \n {props.notificaions.pickup.count}{\" \"}\n {\" \"}\n {props.notificaions.pickup.count > 1\n ? `Orders are`\n : \"Order is\"}\n {\" \"}\n \n

\n \n
\n
\n \n ) : null}\n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let notificaions = state.notifications;\n let currentTab = state.currentTab;\n\n return { notificaions, currentTab };\n};\n\nconst mapDispatchToProps = {\n clearHomeDeliveryNotifications:\n notificationOperations.clearHomeDeliveryUnconfirmedNotification,\n clearPickupNotifications:\n notificationOperations.clearPickupUnconfirmedNotification,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OrderNotification);\n","export const SET_THEME = \"theme/SET_THEME\";\n","import actions from \"./actions\";\n\nconst setAppTheme = actions.setAppTheme;\n\nexport default {\n setAppTheme,\n};\n","import * as types from \"./types\";\n\nconst setAppTheme = (mode: string) => ({\n type: types.SET_THEME,\n payload: mode,\n});\n\nexport default { setAppTheme };\n","import reducer from \"./reducers\";\n\nexport { default as themeOperations } from \"./operations\";\n\nexport default reducer;\n","import * as types from \"./types\";\n\nconst themeReducer = (state = \"light\", action: any) => {\n switch (action.type) {\n case types.SET_THEME:\n return action.payload;\n default:\n return state;\n }\n};\n\nconst reducer = themeReducer;\n\nexport default reducer;\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { themeOperations } from \"../../state/features/theme\";\n\nfunction DarkMode() {\n const body = document.body;\n const lightTheme = \"light\";\n const darkTheme = \"dark\";\n const [theme, setTheme] = useState(localStorage.getItem(\"theme\"));\n const dispatch = useDispatch();\n\n useEffect(() => {\n let savedTheme: any = localStorage.getItem(\"theme\");\n if ([lightTheme, darkTheme].includes(savedTheme)) {\n dispatch(themeOperations.setAppTheme(savedTheme));\n }\n }, []);\n\n if (theme === lightTheme || theme === darkTheme) {\n body.classList.add(theme);\n } else {\n body.classList.add(lightTheme);\n }\n\n const switchTheme = (e: any) => {\n if (theme === darkTheme) {\n body.classList.replace(darkTheme, lightTheme);\n localStorage.setItem(\"theme\", \"light\");\n dispatch(themeOperations.setAppTheme(lightTheme));\n setTheme(lightTheme);\n } else {\n body.classList.replace(lightTheme, darkTheme);\n localStorage.setItem(\"theme\", \"dark\");\n dispatch(themeOperations.setAppTheme(darkTheme));\n setTheme(darkTheme);\n }\n };\n\n return (\n
switchTheme(e)}>\n \n \n
\n
\n \n
\n \n );\n}\n\nexport default DarkMode;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\ninterface ILoaderProps {\n message?: string;\n}\n\nconst Loader = (props: ILoaderProps) => {\n return (\n
\n
\n
\n
\n {props.message && (\n
\n

\n \n

\n
\n )}\n
\n );\n};\nexport default Loader;\n","import React from \"react\";\nimport { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { NavLink } from \"react-router-dom\";\n\nfunction MainNav(props: any) {\n const [selectedNavId, setSelectedNavId] = useState(0);\n\n const mainNavs = [\n {\n id: 0,\n title: ,\n path: \"/home-delivery/new\",\n },\n {\n id: 1,\n title: ,\n path: \"/pickup/new\",\n },\n {\n id: 2,\n title: ,\n path: \"/scheduled\",\n },\n ];\n\n useEffect(() => {\n let location = window.location.pathname;\n location = location.split(\"/\")[1];\n if (location === \"home-delivery\") {\n setSelectedNavId(0);\n }\n if (location === \"pickup\") {\n setSelectedNavId(1);\n }\n if (location === \"scheduled\") {\n setSelectedNavId(2);\n }\n }, [window.location.pathname]);\n\n const onNavClick = (selectedNavId: number) => {\n setSelectedNavId(selectedNavId);\n };\n\n return (\n
    \n {mainNavs.map((navItem: any, index: any) => {\n return (\n
  • \n onNavClick(navItem.id)}\n activeClassName=\"active\"\n to={navItem.path}\n >\n {navItem.title}\n \n
  • \n );\n })}\n
\n );\n}\nexport default MainNav;\n","import actions from \"./actions\";\n\nconst orderCreated = actions.orderCreated;\nconst orderUpdated = actions.orderUpdated;\nconst orderConfirmed = actions.orderConfirmed;\nconst orderRejected = actions.orderRejected;\nconst orderVoided = actions.orderVoided;\nconst orderMarkedReady = actions.orderMarkedReady;\nconst orderPickUpMarkedReady = actions.orderPickUpMarkedReady;\nconst orderMarkedDelivered = actions.orderMarkedDelivered;\nconst orderMarkedCollected = actions.orderMarkedCollected;\nconst orderRiderAssigned = actions.orderRiderAssigned;\nconst orderMarkedReprinted = actions.orderMarkedReprinted;\nconst customerArrived = actions.customerArrived;\nconst orderMarkedPickedUp = actions.orderMarkedPickedUp;\nconst orderRiderUnassigned = actions.orderRiderUnassigned;\nconst orderTipCollected = actions.orderTipCollected;\nconst orderCompanyRiderAssigned = actions.orderCompanyRiderAssigned;\nconst orderPartnerRiderAssigned = actions.orderPartnerRiderAssigned;\n\nexport default {\n orderCreated,\n orderUpdated,\n orderConfirmed,\n orderRejected,\n orderVoided,\n orderMarkedReady,\n orderPickUpMarkedReady,\n orderRiderAssigned,\n orderMarkedDelivered,\n orderMarkedCollected,\n orderMarkedReprinted,\n customerArrived,\n orderMarkedPickedUp,\n orderRiderUnassigned,\n orderTipCollected,\n orderCompanyRiderAssigned,\n orderPartnerRiderAssigned,\n};\n","import * as types from \"./types\";\n\nconst orderCreated = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_CREATED,\n payload: data,\n});\n\nconst orderConfirmed = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_CONFIRMED,\n payload: data,\n});\n\nconst orderRejected = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_REJECTED,\n payload: data,\n});\n\nconst orderUpdated = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_UPDATED,\n payload: data,\n});\n\nconst orderMarkedReady = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_MARKED_AS_READY,\n payload: data,\n});\n\nconst orderPickUpMarkedReady = (data: any) => ({\n type: types.PUSHER_RECEIVED_PICKUP_ORDER_MARKED_AS_READY,\n payload: data,\n});\n\nconst orderRiderAssigned = (data: any) => ({\n type: types.PUSHER_RECEIVED_RIDER_ASSIGNED,\n payload: data,\n});\n\nconst orderMarkedDelivered = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_MARKED_AS_DELIVERED,\n payload: data,\n});\n\nconst orderMarkedCollected = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_MARKED_AS_COLLECTED,\n payload: data,\n});\n\nconst orderVoided = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_VOIDED,\n payload: data,\n});\n\nconst orderMarkedReprinted = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_REPRINTED,\n payload: data,\n});\n\nconst customerArrived = (data: any) => ({\n type: types.PUSHER_RECEIVED_CUSTOMER_ARRIVED,\n payload: data,\n});\n\nconst orderMarkedPickedUp = (data: any) => ({\n type: types.PUSHER_RECEIVED_ORDER_MARKED_AS_PICKED_UP,\n payload: data,\n});\n\nconst orderRiderUnassigned = (data: any) => ({\n type: types.PUSHER_RECEIVED_RIDER_UNASSIGNED,\n payload: data,\n});\n\nconst orderTipCollected = (data: any) => ({\n type: types.PUSHER_RECEIVED_TIP_COLLECTED,\n payload: data,\n});\n\nconst orderCompanyRiderAssigned = (data: any) => ({\n type: types.PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED,\n payload: data,\n});\n\nconst orderPartnerRiderAssigned = (data: any) => ({\n type: types.PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED,\n payload: data,\n});\n\nexport default {\n orderCreated,\n orderConfirmed,\n orderUpdated,\n orderRejected,\n orderVoided,\n orderMarkedReady,\n orderPickUpMarkedReady,\n orderRiderAssigned,\n orderMarkedDelivered,\n orderMarkedCollected,\n orderMarkedReprinted,\n customerArrived,\n orderMarkedPickedUp,\n orderRiderUnassigned,\n orderTipCollected,\n orderCompanyRiderAssigned,\n orderPartnerRiderAssigned,\n};\n","export const FETCH_COMPANY = \"company/FETCH_COMPANY\";\nexport const FETCH_COMPANY_SUCCESS = \"company/FETCH_COMPANY_SUCCESS\";\nexport const FETCH_COMPANY_FAIL = \"company/FETCH_COMPANY_FAIL\";\n","import actions from \"./actions\";\n\nconst fetchCompany = actions.fetchCompany;\n\nexport default {\n fetchCompany,\n};\n","import * as types from \"./types\";\n\nconst fetchCompany = () => ({\n type: types.FETCH_COMPANY,\n payload: {\n request: {\n method: \"get\",\n url: \"/api/v1/me\",\n },\n },\n});\n\n\nexport default {\n fetchCompany,\n};\n","import reducer from \"./reducers\";\n\nexport { default as companyConfigurations } from \"./operations\"\n\nexport default reducer;\n","import * as branchTypes from \"../branches/types\"\nimport * as types from './types'\nimport { combineReducers } from \"redux\";\n\nconst selectedBranchReducer = (state = {}, action: any) => {\n switch (action.type) {\n case branchTypes.SELECT_BRANCH:\n return action.payload\n\n default:\n return state;\n }\n};\n\nconst companyDetailsReducer = (state = { refresh_required: false }, action: any) => {\n switch (action.type) {\n case types.FETCH_COMPANY_SUCCESS:\n localStorage.company_currency_precision = action.payload.data?.currency_precision;\n return { ...action.payload?.data, refresh_required: false };\n default:\n return state;\n }\n}\n\nconst reducer = combineReducers({\n selected_branch: selectedBranchReducer,\n company_details: companyDetailsReducer,\n});\n\nexport default reducer;\n","import React from \"react\";\nimport { ZOMATO_GO_PARTNER_UNIQUE_ID } from \"./constants\";\nimport * as Sentry from \"@sentry/react\";\nimport Swal from \"sweetalert2\";\nimport { hardRefresh } from \"./utils\";\nimport { formatDecimal } from \"./itemCalculations\";\nimport { FormattedMessage } from \"react-intl\";\n\nconst getOrdersStats = (orders: any[]) => {\n return {\n count: orders.length,\n orders: sortOrdersByTimePlaced(orders),\n };\n};\n\nconst getDeliveredOrderStats = (riders: any) => {\n let count = riders.reduce((total: number, rider: any) => {\n return (total += rider.total_orders);\n }, 0);\n let filtered_riders = riders.filter((rider: any) => rider.total_orders > 0);\n return { count, orders: filtered_riders };\n};\n\nconst getOrderTime = (epochTime: number) => {\n var time = new Date(epochTime)\n .toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n })\n .toLocaleUpperCase();\n if (time.split(\":\")[0] == \"00\") {\n let fixedTime: any = time.split(\":\");\n fixedTime[0] = \"12\";\n time = fixedTime.join(\":\");\n }\n return time;\n};\n\nconst getOrderScheduledForDate = (epochTime: number) => {\n var schduled_for_day = new Date(epochTime);\n var today = new Date();\n var bool = today.toDateString() === schduled_for_day.toDateString();\n let date;\n if (bool) {\n date = \"Today\";\n } else {\n let day = new Intl.DateTimeFormat(\"en\", { weekday: \"long\" }).format(\n schduled_for_day\n );\n let ye = new Intl.DateTimeFormat(\"en\", { year: \"numeric\" }).format(\n schduled_for_day\n );\n let mo = new Intl.DateTimeFormat(\"en\", { month: \"short\" }).format(\n schduled_for_day\n );\n let da = new Intl.DateTimeFormat(\"en\", { day: \"2-digit\" }).format(\n schduled_for_day\n );\n date = `${day}, ${da}-${mo}-${ye}`;\n }\n return date;\n};\n\nconst filterLabels = {\n all_delivery: {\n title: ,\n },\n in_house_delivery: {\n title: ,\n },\n partner_delivery: {\n title: ,\n },\n curbside_pickup: {\n title: ,\n },\n in_store_pickup: {\n title: ,\n },\n all_pickup: {\n title: ,\n },\n};\n\nconst getOrderFilterOptions = (orderType: string) => {\n let filterOptions: any;\n switch (orderType) {\n case \"homeDelivery\":\n filterOptions = [\n {\n id: 0,\n name: filterLabels.all_delivery.title,\n active: true,\n },\n {\n id: 1,\n name: filterLabels.in_house_delivery.title,\n active: false,\n },\n {\n id: 2,\n name: filterLabels.partner_delivery.title,\n active: false,\n },\n ];\n break;\n case \"pickup\":\n filterOptions = [\n {\n id: 0,\n name: filterLabels.all_pickup.title,\n active: true,\n },\n {\n id: 1,\n name: filterLabels.in_store_pickup.title,\n active: false,\n },\n // { id: 2, name: , active: false },\n ];\n break;\n default:\n filterOptions = [];\n }\n return filterOptions;\n};\n\nconst removeOrderFromList = (orderId: number, ordersList: any) => {\n let filteredOrders = ordersList.filter((order: any) => {\n return order.order_id !== orderId;\n });\n return {\n orders: sortOrdersByTimePlaced(filteredOrders),\n count: filteredOrders.length,\n };\n};\n\nconst getStatusTime = (timeStamp: any) => {\n let time = new Date(timeStamp);\n let config: any = { dateStyle: \"long\", timeStyle: \"short\", hour12: true };\n let timeString = time.toLocaleString(undefined, config as any);\n let fixedTime = timeString.split(\":\");\n let updatedTime = fixedTime[0].split(\" \");\n if (updatedTime[updatedTime.length - 1] == \"00\") {\n updatedTime[updatedTime.length - 1] = \"12\";\n fixedTime[0] = updatedTime.join(\" \");\n timeString = fixedTime.join(\":\");\n }\n return timeString;\n};\n\nconst formatTime = (seconds: number) => {\n let time;\n if (seconds < 60) {\n return seconds === 1 ? (\n \n ) : (\n \n );\n } else if (seconds >= 60 && seconds < 3600) {\n time = Math.floor(seconds / 60);\n return time === 1 ? (\n \n ) : (\n \n );\n } else {\n time = Math.floor(seconds / 3600);\n return time === 1 ? (\n \n ) : (\n \n );\n }\n};\n\nconst getTime = (time: any) => {\n var hrs = ~~(time / 3600);\n var mins = ~~((time % 3600) / 60);\n var secs = ~~time % 60;\n\n var ret: any = \"\";\n if (hrs > 0) {\n ret =\n hrs === 1 ? (\n \n ) : (\n \n );\n ;\n }\n if (hrs < 1) {\n ret =\n mins === 1 ? (\n \n ) : (\n \n );\n }\n if (time < 60) {\n ret = ;\n }\n return ret;\n};\n\nconst addModifiersToItems = (items: any) => {\n let parentItems = items.filter(\n (item: any) => item.order_item_parent_id === 0\n );\n parentItems.map((parentItem: any) => {\n parentItem.modifiers = [];\n });\n\n items.map((item: any) => {\n parentItems.map((parentItem: any) => {\n if (item.order_item_parent_id === parentItem.order_item_id) {\n parentItem.modifiers.push(item);\n }\n });\n });\n return parentItems;\n};\n\nconst groupOrders = (orders: any) => {\n let filteredObject: any = {};\n orders.map((order: any) => {\n if (order.order_extended_info.delivery_address.area in filteredObject) {\n filteredObject[order.order_extended_info.delivery_address.area].push(\n order\n );\n } else {\n filteredObject[order.order_extended_info.delivery_address.area] = [];\n filteredObject[order.order_extended_info.delivery_address.area].push(\n order\n );\n }\n });\n return filteredObject;\n};\n\nconst useSelectedBranch = (location: any) => (location.id ? location : null);\n\nconst useSelectedBranchWithRider = (location: any, riderId: any) =>\n location.id ? location : null;\n\nconst filterOrders = (filterOption: any, orders: any) => {\n let filteredOrders = [];\n if (filterOption === filterLabels.partner_delivery.title) {\n filteredOrders = orders.filter(\n (order: any) => order.logistics_job && order.logistics_job.status != 3\n );\n }\n if (filterOption === filterLabels.in_house_delivery.title) {\n filteredOrders = orders.filter((order: any) => {\n if (!order.logistics_job) {\n return order;\n } else if (order.logistics_job.status == 3) {\n return order;\n }\n });\n }\n if (filterOption === filterLabels.all_delivery.title) {\n filteredOrders = orders;\n }\n if (filterOption === filterLabels.curbside_pickup.title) {\n filteredOrders = orders.filter(\n (order: any) => order.order_extended_info.curbside_pickup\n );\n }\n if (filterOption === filterLabels.in_store_pickup.title) {\n filteredOrders = orders.filter(\n (order: any) => !order.order_extended_info.curbside_pickup\n );\n }\n if (filterOption === filterLabels.all_pickup.title) {\n filteredOrders = orders;\n }\n return filteredOrders;\n};\n\nconst getBranchName = (branches: any, locationId: any) => {\n let branchName = \"\";\n branches.find((branch: any) => {\n if (branch.id == locationId) {\n branchName = branch.name;\n }\n });\n return branchName;\n};\n\nconst updateTotalAmount = (orders: any) => {\n let newOrders = orders.map((order: any) => {\n if (order.order_extended_info.payments.length) {\n order.order_extended_info.payments.map((payment: any) => {\n if (payment.name === \"Loyalty\") {\n order.order_extended_info.total_amount =\n order.order_extended_info.total_amount - payment.amount;\n }\n });\n }\n return order;\n });\n return newOrders;\n};\n\nconst updateOrderTotalAmount = (order: any) => {\n let order_copy = { ...order };\n let loyalty_payment = order_copy.order_extended_info.payments.find(\n (payment: any) => {\n return payment.name === \"Loyalty\";\n }\n );\n let total_amount;\n if (loyalty_payment) {\n total_amount =\n order_copy.order_extended_info.total_amount - loyalty_payment.amount;\n } else {\n total_amount = order_copy.order_extended_info.total_amount;\n }\n return total_amount;\n};\n\nconst getLogisticName = (logisticPartners: any, partnerId: any) => {\n let partnerName = \"\";\n let logisticPartnersList = logisticPartners;\n let partner = logisticPartnersList.find((logisticPartner: any) => {\n if (logisticPartner.id == partnerId) {\n return logisticPartner;\n }\n });\n if (partner) {\n partnerName = partner.name;\n }\n return partnerName;\n};\n\nconst removeLoyaltyPayment = (paymentTypes: any) => {\n let payments = [...paymentTypes];\n let filteredPaymentTypes = payments.filter((payment: any) => {\n return payment.display_name != \"Loyalty\";\n });\n return filteredPaymentTypes;\n};\n\nconst filterOrderLogisticsPartners = (\n orderLocationId: number,\n logisticsPartners: any[]\n) => {\n return logisticsPartners.filter(\n (deliveryPartner: any) => deliveryPartner.location_id === orderLocationId\n );\n};\n\nconst sortOrdersByTimePlaced = (orders: any[]) => {\n return [...orders].sort((a, b) => {\n return a.scheduled_for > a.placed_at\n ? a.scheduled_for - b.scheduled_for\n : a.placed_at - b.placed_at;\n });\n};\n\nconst activeZomatoGoOrderCount = (orders: any[]) => {\n let count = 0;\n [...orders].forEach((order) => {\n if (\n \"logistics_job\" in order &&\n order.logistics_job.status !== 3 &&\n order.logistics_job.partner_unique_id === ZOMATO_GO_PARTNER_UNIQUE_ID\n ) {\n count += 1;\n }\n });\n return count;\n};\n\nconst hasLocalPrint = (order: any, printSettings: any) => {\n let printRule = printSettings?.find(\n (setting: any) => setting?.location_id == order?.location_id\n );\n if (printRule) {\n if (!printRule?.category_print_rule_enabled) {\n return printRule.order_type_rules[order.order_type].enabled;\n } else {\n let orderPrintBatchNo = order?.order_extended_info.print_batch_number;\n let parentItems = order?.order_extended_info.items.filter(\n (orderItem: any) => orderItem.order_item_parent_id == 0\n );\n\n let categoryItems: any;\n\n if (printRule.order_type_rules[order.order_type].template_rules.length) {\n let hasPrint = printRule.order_type_rules[\n order.order_type\n ].template_rules.map((templateRule: any) => {\n let templateId = Object.keys(templateRule)[0];\n let showOnlyItems =\n templateRule[Object.keys(templateRule)[0]].show_only_new_items;\n if (!showOnlyItems) {\n categoryItems = parentItems;\n } else if (orderPrintBatchNo) {\n categoryItems = parentItems.filter(\n (parentItem: any) =>\n parentItem.print_batch_no === orderPrintBatchNo\n );\n } else {\n categoryItems = parentItems.filter(\n (parentItem: any) => parentItem.is_new === true\n );\n }\n let categoryRules: any = [];\n printRule.category_print_rules.filter((categoryRule: any) => {\n categoryItems.map((item: any) => {\n if (item.cacategory_id == categoryRule.category_id) {\n categoryRules.push(categoryRule);\n }\n });\n });\n if (!categoryRules.length) {\n return true;\n } else {\n let categoryExists = categoryRules.some((categoryRule: any) => {\n return categoryRule.template_id == templateId;\n });\n return categoryExists;\n }\n });\n return hasPrint[0];\n } else {\n return false;\n }\n }\n }\n};\n\nconst failedPaymentAttemptsCount = (orderId: number) => {\n let paymentFailedOrders: number[] = [];\n let failedAttemptCount = 0;\n // If the payment is failed for first time.\n if (!localStorage.paymentFailedOrders) {\n paymentFailedOrders.push(orderId);\n localStorage.setItem(\n \"paymentFailedOrders\",\n JSON.stringify(paymentFailedOrders)\n );\n } else {\n // Check if this order has previously failed attempts\n try {\n paymentFailedOrders = JSON.parse(\n localStorage.getItem(\"paymentFailedOrders\") as any\n );\n paymentFailedOrders.push(orderId);\n failedAttemptCount = paymentFailedOrders.reduce(\n (total, fOrderId) => (orderId === fOrderId ? total + 1 : total + 0),\n 0\n );\n localStorage.setItem(\n \"paymentFailedOrders\",\n JSON.stringify(paymentFailedOrders)\n );\n } catch (err) {\n // If this entry in localStorage has invalid data.\n localStorage.removeItem(\"paymentFailedOrders\");\n }\n }\n return failedAttemptCount;\n};\n\nconst validateCollectedPayments = (\n order: any,\n orderPayments: any,\n settlePaymentForOrder: () => void\n) => {\n let failedAttempts = 0;\n let collectedTotalAmount = parseFloat(\n formatDecimal(\n orderPayments.payments.reduce(\n (total: number, payment: any) =>\n total + Math.abs(payment.amount_collected),\n 0\n )\n )\n );\n let paymentsTotalAmount = parseFloat(\n formatDecimal(\n orderPayments.payments.reduce(\n (total: number, payment: any) => total + Math.abs(payment.amount),\n 0\n )\n )\n );\n let orderTotal = order.order_extended_info.total_amount;\n let isLoyaltyPaidOrder =\n order.order_extended_info.payments.length === 1 &&\n order.order_extended_info.payments[0].name === \"Loyalty\";\n\n Sentry.addBreadcrumb({\n category: \"payments\",\n level: \"debug\",\n data: {\n capturedPaymentDetails: orderPayments.payments,\n isLoyaltyPaidOrder,\n orderTotal,\n collectedTotalAmount,\n paymentsTotalAmount,\n },\n message: `Captured payment for order ${order.order_id} with total ${orderTotal}`,\n });\n\n if (parseFloat(formatDecimal(orderTotal)) !== paymentsTotalAmount) {\n // Get no. of failed payment attempts for this order.\n failedAttempts = failedPaymentAttemptsCount(order.order_id);\n Sentry.setTag(\"failed_attempts\", failedAttempts);\n\n let errorMessage =\n \"Captured payment amount does not match the order total.\";\n errorMessage +=\n orderTotal < paymentsTotalAmount\n ? \" Excess amount captured in the payment payload. Payment total greater than order total\"\n : \" Split payment was initiated with small amount. But the remaining amount was not captured\";\n // Send error event to sentry\n let error = new Error();\n error.name = \"Payment Error\";\n error.message = errorMessage;\n Sentry.captureException(error);\n\n // Option to overrride this error and settle the payment.\n if (localStorage.getItem(\"overrideFailedPayments\") === \"yes\") {\n settlePaymentForOrder();\n } else {\n let title: any = ;\n let text: any = ;\n Swal.fire({\n icon: \"error\",\n title: title,\n text: text,\n allowOutsideClick: false,\n }).then((res) => {\n hardRefresh();\n });\n }\n } else {\n settlePaymentForOrder();\n }\n};\n\nconst getPickupStatus = (orderStatus: any) => {\n let status;\n switch (orderStatus) {\n case \"unconfirmed\":\n status = ;\n break;\n case \"ready\":\n status = ;\n break;\n case \"new\":\n status = ;\n break;\n case \"delivered\":\n status = ;\n break;\n default:\n status = \"\";\n }\n return status;\n};\n\nconst getLogisticsVisibilityConfig = (\n orders: any[],\n logisticsPartners: any[],\n isRiderAppEnabled: boolean | undefined\n) => {\n let ordersWithLogisticsPartnersAssigned = orders.filter((order: any) => {\n return order.logistics_job && order?.logistics_job?.status !== 3;\n });\n let ordersWithCompanyRidersAssigned = orders.filter((order: any) => {\n return order.rider_id && isRiderAppEnabled;\n });\n let ordersWithAssignableLogisticsPartners = orders.filter(\n (order: any) =>\n filterOrderLogisticsPartners(order.location_id, logisticsPartners)\n .length > 0\n );\n let activeZomatoGoOrdersExists = activeZomatoGoOrderCount(orders) > 0;\n let showColumnHeader =\n ordersWithLogisticsPartnersAssigned.length > 0 ||\n ordersWithCompanyRidersAssigned.length > 0 ||\n ordersWithAssignableLogisticsPartners.length > 0 ||\n activeZomatoGoOrdersExists ||\n isRiderAppEnabled;\n return {\n show: showColumnHeader,\n hasLogisticsPartnerAssignedOrders:\n ordersWithLogisticsPartnersAssigned.length > 0,\n hasCompanyRiderAssignedOrders:\n ordersWithCompanyRidersAssigned.length > 0,\n hasOrdersWithAssignablePartners:\n ordersWithAssignableLogisticsPartners.length > 0,\n };\n};\n\nconst removeExpiredScheduledOrders = (orders: any[]) => {\n let todayTimestamp = new Date().getTime();\n return orders.filter((order) => {\n let time_difference = order.scheduled_for - todayTimestamp;\n return time_difference > 0;\n });\n};\n\nfunction isOrderPayloadPresentIn(data) {\n return (\n \"order_payload\" in data &&\n typeof data.order_payload === \"object\" &&\n Object.keys(data.order_payload).length > 0\n );\n}\n\nexport {\n getOrdersStats,\n getOrderTime,\n getOrderFilterOptions,\n removeOrderFromList,\n getStatusTime,\n getDeliveredOrderStats,\n formatTime,\n addModifiersToItems,\n groupOrders,\n useSelectedBranch,\n useSelectedBranchWithRider,\n filterOrders,\n getTime,\n getOrderScheduledForDate,\n getBranchName,\n updateTotalAmount,\n getLogisticName,\n updateOrderTotalAmount,\n removeLoyaltyPayment,\n filterOrderLogisticsPartners,\n activeZomatoGoOrderCount,\n hasLocalPrint,\n validateCollectedPayments,\n getPickupStatus,\n getLogisticsVisibilityConfig,\n filterLabels,\n removeExpiredScheduledOrders,\n isOrderPayloadPresentIn,\n};\n","export const ZOMATO_GO_PARTNER_UNIQUE_ID = 8;\nexport const LOGISTICS_PARTNER_ORDER_CANCELLED_STATUS = 3;\nexport const JWT_REFRESH_TIMER_THRESHOLD_SECONDS = 300;\n","import actions from \"./actions\";\n\nconst fetchPayments = actions.fetchPayments;\nconst initiateMagnatiTransaction = actions.initiateMagnatiTransaction;\nconst cancelMagnatiTransaction = actions.cancelMagnatiTransaction;\nconst processStripeConnectTerminalPayment = actions.processStripeConnectTerminalPayment;\nconst initiateStripeConnectPaymentIntentCreate = actions.initiateStripeConnectPaymentIntentCreate;\nconst fetchStripeConnectTerminalPayment = actions.fetchStripeConnectTerminalPayment;\nconst cancelStripeConnectTerminalPayment = actions.cancelStripeConnectTerminalPayment;\nconst initiateRazorpayTransaction = actions.initiateRazorpayTransaction;\nconst cancelRazorpayTransaction = actions.cancelRazorpayTransaction;\n\nexport default {\n fetchPayments,\n initiateMagnatiTransaction,\n cancelMagnatiTransaction,\n processStripeConnectTerminalPayment,\n initiateStripeConnectPaymentIntentCreate,\n fetchStripeConnectTerminalPayment,\n cancelStripeConnectTerminalPayment,\n initiateRazorpayTransaction,\n cancelRazorpayTransaction,\n};\n","import * as types from \"./types\";\n\nconst fetchPayments = () => ({\n type: types.FETCH_PAYMENTS,\n payload: {\n request: {\n method: \"get\",\n url: \"/api/v1/payment-types/list\",\n },\n },\n});\n\nconst initiateMagnatiTransaction = (payload: any) => ({\n type: types.INITIATE_MAGNATI_TRANSACTION,\n payload: {\n request: {\n method: \"post\",\n url: \"/api/v1/payment-partners/magnati/transactions\",\n data: payload,\n },\n },\n});\n\nconst cancelMagnatiTransaction = (transRefId: any, data: any) => ({\n type: types.CANCEL_MAGNATI_TRANSACTION,\n payload: {\n request: {\n method: \"put\",\n url: \"/api/v1/payment-partners/magnati/transactions/\"+transRefId,\n data: data,\n },\n },\n});\n\nconst processStripeConnectTerminalPayment = (stripeLocationId: any) => ({\n type: types.PROCESS_STRIPE_CONNECT_TERMINAL_PAYMENT,\n payload: {\n request: {\n method: \"get\",\n url: \"/api/v1/payment-partners/stripe_connect/connection_tokens/new?stripe_location_id=\"+stripeLocationId,\n },\n },\n});\n\nconst initiateStripeConnectPaymentIntentCreate = (payload: any) => ({\n type: types.PROCESS_STRIPE_CONNECT_PAYMENT_INTENT,\n payload: {\n request: {\n method: \"post\",\n url: \"/api/v1/payment-partners/stripe_connect/payment_intents\",\n data: payload,\n },\n },\n});\n\nconst fetchStripeConnectTerminalPayment = (paymentIntentId: any) => ({\n type: types.FETCH_STRIPE_CONNECT_TERMINAL_PAYMENT,\n payload: {\n request: {\n method: \"get\",\n url: `/api/v1/payment-partners/stripe_connect/payment_intents/${paymentIntentId}`\n },\n },\n});\n\nconst cancelStripeConnectTerminalPayment = (paymentIntentId: any, payload: any) => ({\n type: types.CANCEL_STRIPE_CONNECT_TERMINAL_PAYMENT,\n payload: {\n request: {\n method: \"delete\",\n url: `/api/v1/payment-partners/stripe_connect/payment_intents/${paymentIntentId}`,\n data: payload\n },\n },\n});\n\nconst initiateRazorpayTransaction = (payload: any) => ({\n type: types.INITIATE_RAZORPAY_TRANSACTION,\n payload: {\n request: {\n method: \"post\",\n url: \"/api/v1/payment-partners/razorpay/transactions\",\n data: payload,\n },\n },\n});\n\nconst cancelRazorpayTransaction = (transRefId: any, data: any) => ({\n type: types.CANCEL_RAZORPAY_TRANSACTION,\n payload: {\n request: {\n method: \"put\",\n url: \"/api/v1/payment-partners/razorpay/transactions/\"+transRefId,\n data: data,\n },\n },\n});\n\nexport default {\n fetchPayments,\n initiateMagnatiTransaction,\n cancelMagnatiTransaction,\n processStripeConnectTerminalPayment,\n initiateStripeConnectPaymentIntentCreate,\n fetchStripeConnectTerminalPayment,\n cancelStripeConnectTerminalPayment,\n initiateRazorpayTransaction,\n cancelRazorpayTransaction,\n};","export const FETCH_PAYMENTS = \"payments/FETCH_PAYMENTS\";\nexport const FETCH_PAYMENTS_SUCCESS = \"payments/FETCH_PAYMENTS_SUCCESS\";\nexport const FETCH_PAYMENTS_FAIL = \"payments/FETCH_PAYMENTS_FAIL\";\nexport const INITIATE_MAGNATI_TRANSACTION =\n \"payments/INITIATE_MAGNATI_TRANSACTION\";\nexport const INITIATE_MAGNATI_TRANSACTION_SUCCESS =\n \"payments/INITIATE_MAGNATI_TRANSACTION_SUCCESS\";\nexport const INITIATE_MAGNATI_TRANSACTION_FAIL =\n \"payments/INITIATE_MAGNATI_TRANSACTION_FAIL\";\nexport const CANCEL_MAGNATI_TRANSACTION =\n \"payments/CANCEL_MAGNATI_TRANSACTION\";\nexport const CANCEL_MAGNATI_TRANSACTION_SUCCESS =\n \"payments/CANCEL_MAGNATI_TRANSACTION_SUCCESS\";\nexport const CANCEL_MAGNATI_TRANSACTION_FAIL =\n \"payments/CANCEL_MAGNATI_TRANSACTION_FAIL\";\nexport const PROCESS_STRIPE_CONNECT_TERMINAL_PAYMENT =\n \"payments/PROCESS_STRIPE_CONNECT_TERMINAL_PAYMENT\";\nexport const PROCESS_STRIPE_CONNECT_PAYMENT_INTENT =\n \"payments/PROCESS_STRIPE_CONNECT_PAYMENT_INTENT\";\nexport const FETCH_STRIPE_CONNECT_TERMINAL_PAYMENT =\n \"payments/FETCH_STRIPE_CONNECT_TERMINAL_PAYMENT\";\nexport const CANCEL_STRIPE_CONNECT_TERMINAL_PAYMENT =\n \"payments/CANCEL_STRIPE_CONNECT_TERMINAL_PAYMENT\";\nexport const INITIATE_RAZORPAY_TRANSACTION =\n \"payments/INITIATE_RAZORPAY_TRANSACTION\";\nexport const INITIATE_RAZORPAY_TRANSACTION_SUCCESS =\n \"payments/INITIATE_RAZORPAY_TRANSACTION_SUCCESS\";\nexport const INITIATE_RAZORPAY_TRANSACTION_FAIL =\n \"payments/INITIATE_RAZORPAY_TRANSACTION_FAIL\";\nexport const CANCEL_RAZORPAY_TRANSACTION =\n \"payments/CANCEL_RAZORPAY_TRANSACTION\";\nexport const CANCEL_RAZORPAY_TRANSACTION_SUCCESS =\n \"payments/CANCEL_RAZORPAY_TRANSACTION_SUCCESS\";\nexport const CANCEL_RAZORPAY_TRANSACTION_FAIL =\n \"payments/CANCEL_RAZORPAY_TRANSACTION_FAIL\";\n","import reducer from \"./reducers\"\n\nexport { default as paymentsOperations } from \"./operations\";\n\nexport default reducer","import { removeLoyaltyPayment } from \"../../../helpers/orderFunctions\";\nimport * as types from \"./types\";\n\nconst paymentsReducer = (state = [], action: any) => {\n switch (action.type) {\n case types.FETCH_PAYMENTS_SUCCESS:\n let updatedPayments: any = removeLoyaltyPayment(action.payload?.data);\n return updatedPayments || [];\n\n default:\n return state;\n }\n};\n\nconst reducer = paymentsReducer;\n\nexport default reducer;\n","export const FETCH_NEW_ORDERS = \"home_delivery/FETCH_NEW_ORDERS\";\nexport const FETCH_NEW_ORDERS_SUCCESS =\n \"home_delivery/FETCH_NEW_ORDERS_SUCCESS\";\nexport const FETCH_NEW_ORDERS_FAIL = \"home_delivery/FETCH_NEW_ORDERS_FAIL\";\nexport const FETCH_UNCONFIRMED_ORDERS =\n \"home_delivery/FETCH_UNCONFIRMED_ORDERS\";\nexport const FETCH_UNCONFIRMED_ORDERS_SUCCESS =\n \"home_delivery/FETCH_UNCONFIRMED_ORDERS_SUCCESS\";\nexport const FETCH_UNCONFIRMED_ORDERS_FAIL =\n \"home_delivery/FETCH_UNCONFIRMED_ORDERS_FAIL\";\nexport const FETCH_READY_ORDERS = \"home_delivery/FETCH_READY_ORDERS\";\nexport const FETCH_READY_ORDERS_SUCCESS =\n \"home_delivery/FETCH_READY_ORDERS_SUCCESS\";\nexport const FETCH_READY_ORDERS_FAIL = \"home_delivery/FETCH_READY_ORDERS_FAIL\";\nexport const FETCH_IN_PROGRESS_ORDERS =\n \"home_delivery/FETCH_IN_PROGRESS_ORDERS\";\nexport const FETCH_IN_PROGRESS_ORDERS_SUCCESS =\n \"home_delivery/FETCH_IN_PROGRESS_ORDERS_SUCCESS\";\nexport const FETCH_IN_PROGRESS_ORDERS_FAIL =\n \"home_delivery/FETCH_IN_PROGRESS_ORDERS_FAIL\";\nexport const FETCH_RIDER_STATS = \"home_delivery/FETCH_RIDER_STATS\";\nexport const FETCH_RIDER_STATS_SUCCESS =\n \"home_delivery/FETCH_RIDER_STATS_SUCCESS\";\nexport const FETCH_RIDER_STATS_FAIL = \"home_delivery/FETCH_RIDER_STATS_FAIL\";\nexport const FETCH_RIDER_ORDERS = \"home_delivery/FETCH_RIDER_ORDERS\";\nexport const FETCH_RIDER_ORDERS_SUCCESS =\n \"home_delivery/FETCH_RIDER_ORDERS_SUCCESS\";\nexport const FETCH_RIDER_ORDERS_FAIL = \"home_delivery/FETCH_RIDER_ORDERS_FAIL\";\nexport const RESET_DELIVERED_DRIVER_ORDER_DETAILS =\n \"home_delivery/RESET_DELIVERED_DRIVER_ORDER_DETAILS\";\nexport const SET_ORDER_MARK_AS_READY = \"home_delivery/SET_ORDER_MARK_AS_READY\";\nexport const SET_ORDER_MARK_AS_READY_SUCCESS =\n \"home_delivery/SET_ORDER_MARK_AS_READY_SUCCESS\";\nexport const SET_ORDER_MARK_AS_READY_FAIL =\n \"home_delivery/SET_ORDER_MARK_AS_READY_FAIL\";\nexport const SET_ORDER_ASSIGN_RIDER = \"home_delivery/SET_ORDER_ASSIGN_RIDER\";\nexport const SET_ORDER_ASSIGN_RIDER_SUCCESS =\n \"home_delivery/SET_ORDER_ASSIGN_RIDER_SUCCESS\";\nexport const SET_ORDER_ASSIGN_RIDER_FAIL =\n \"home_delivery/SET_ORDER_ASSIGN_RIDER_FAIL\";\nexport const SET_ORDER_MARK_AS_DELIVERED =\n \"home_delivery/SET_ORDER_MARK_AS_DELIVERED\";\nexport const SET_ORDER_MARK_AS_DELIVERED_SUCCESS =\n \"home_delivery/SET_ORDER_MARK_AS_DELIVERED_SUCCESS\";\nexport const SET_ORDER_MARK_AS_DELIVERED_FAIL =\n \"home_delivery/SET_ORDER_MARK_AS_DELIVERED_FAIL\";\nexport const SET_DELIVERED_ORDERS_REFRESH_REQUIRED =\n \"home_delivery/SET_DELIVERED_ORDERS_REFRESH_REQUIRED\";\nexport const SET_UNCONFIRMED_ORDER_CONFIRM =\n \"home_delivery/SET_UNCONFIRMED_ORDER_CONFIRM\";\nexport const SET_UNCONFIRMED_ORDER_CONFIRM_SUCCESS =\n \"home_delivery/SET_UNCONFIRMED_ORDER_CONFIRM_SUCCESS\";\nexport const SET_UNCONFIRMED_ORDER_CONFIRM_FAIL =\n \"home_delivery/SET_UNCONFIRMED_ORDER_CONFIRM_FAIL\";\nexport const SET_UNCONFIRMED_ORDER_REJECT =\n \"home_delivery/SET_UNCONFIRMED_ORDER_REJECT\";\nexport const SET_UNCONFIRMED_ORDER_REJECT_SUCCESS =\n \"home_delivery/SET_UNCONFIRMED_ORDER_REJECT_SUCCESS\";\nexport const SET_UNCONFIRMED_ORDER_REJECT_FAIL =\n \"home_delivery/SET_UNCONFIRMED_ORDER_REJECT_FAIL\";\nexport const SET_ORDER_MARK_AS_PICKUP =\n \"home_delivery/SET_ORDER_MARK_AS_PICKUP\";\nexport const SET_ORDER_MARK_AS_PICKUP_SUCCESS =\n \"home_delivery/SET_ORDER_MARK_AS_PICKUP_SUCCESS\";\nexport const SET_ORDER_MARK_AS_PICKUP_FAIL =\n \"home_delivery/SET_ORDER_MARK_AS_PICKUP_FAIL\";\n","export const FETCH_ORDER = \"order/FETCH_ORDER\";\nexport const FETCH_ORDER_SUCCESS = \"order/FETCH_ORDER_SUCCESS\";\nexport const FETCH_ORDER_FAIL = \"order/FETCH_ORDER_FAIL\";\nexport const REMOVE_EXPIRED_ORDER = \"order/REMOVE_EXPIRED_ORDER\";\n","import { combineReducers } from \"redux\";\nimport * as types from \"./types\";\nimport * as orderEventTypes from \"../orderEvents/types\";\nimport {\n getDeliveredOrderStats,\n getOrdersStats,\n isOrderPayloadPresentIn,\n removeOrderFromList,\n} from \"../../../helpers/orderFunctions\";\nimport * as orderTypes from \"../order/types\";\n\ntype OrderState = {\n refresh_required: boolean;\n is_loading: boolean,\n count: number,\n orders: any[],\n}\n\nconst initialOrdersState: OrderState = {\n refresh_required: false,\n is_loading: true,\n count: 0,\n orders: [],\n};\n\n\nconst newOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_NEW_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n // On clicking mark-as-ready cta - filter and remove order on dispatch success\n case types.SET_ORDER_MARK_AS_READY_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n\n // Remove the order from list once it completes 24 hours.\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n let orderId = action.payload;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n\n // Pusher event - filter and remove ready order\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_READY: {\n let orderId = action.payload.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CONFIRMED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n // if order is not a new home delivery order, do nothing\n if (\n pusherData.order_status !== \"new\" ||\n pusherData.scheduled ||\n pusherData.takeaway\n ) {\n return state;\n }\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.order_id\n );\n // order is already in the list, do nothing\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n {\n count: state.count + 1,\n refresh_required: true,\n }\n );\n }\n return Object.assign(\n { ...state },\n { refresh_required: false },\n getOrdersStats([...state.orders, action.payload.order_payload])\n );\n }\n\n case orderEventTypes.PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_RIDER_UNASSIGNED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n if (\n pusherData.order_status !== \"new\" ||\n pusherData.scheduled ||\n pusherData.takeaway\n ) {\n return state;\n }\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.order_id\n );\n if (index === -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n {\n count: state.count + 1,\n refresh_required: true,\n }\n );\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = pusherData.order_payload;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n\n case orderEventTypes.PUSHER_RECEIVED_ORDER_VOIDED: {\n // Remove order from the state for voided order\n let pusherData = action.payload;\n return Object.assign(\n { ...state },\n removeOrderFromList(pusherData.order_id, state.orders)\n );\n }\n\n default:\n return state;\n }\n};\n\nconst unconfirmedOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_UNCONFIRMED_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data)\n );\n }\n case types.SET_UNCONFIRMED_ORDER_CONFIRM_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case types.SET_UNCONFIRMED_ORDER_REJECT_FAIL: {\n // If order is already reject (404 status), remove order from the list\n if (action.error !== undefined && action.error.status === 404) {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n return state;\n }\n case types.SET_UNCONFIRMED_ORDER_REJECT_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n // Remove the order from list once it completes 24 hours.\n let orderId = action.payload;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED: {\n let pusherData = action.payload;\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n if (\n pusherData.order_type === \"online\" &&\n pusherData.order_status === \"unconfirmed\" &&\n !pusherData.takeaway\n ) {\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n {\n count: state.count + 1,\n refresh_required: true,\n }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n return state;\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_REJECTED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CONFIRMED: {\n let orderId = action.payload.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n\n default:\n return state;\n }\n};\n\nconst readyOrdersReducer = (state: OrderState = initialOrdersState, action: any) => {\n switch (action.type) {\n case types.FETCH_READY_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n case types.SET_ORDER_ASSIGN_RIDER_SUCCESS:\n case types.SET_ORDER_MARK_AS_PICKUP_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n // Remove the order from list once it completes 24 hours.\n let orderId = action.payload;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_READY: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return { ...state, count: state.count + 1, refresh_required: true };\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_RIDER_ASSIGNED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (index === -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign({ ...state }, { refresh_required: true });\n }\n let orderId = action.payload.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED: {\n let pusherData = action.payload;\n let index = state.orders.findIndex(\n (order) => order.order_id === pusherData.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = pusherData.order_payload;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderEventTypes.PUSHER_RECEIVED_RIDER_UNASSIGNED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (\n pusherData.order_status !== \"ready\" ||\n pusherData.scheduled ||\n pusherData.takeaway\n ) {\n return state;\n }\n if (index === -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n {\n count: state.count + 1,\n refresh_required: true,\n }\n );\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = pusherData.order_payload;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_PICKED_UP: {\n let pusherData = action.payload;\n if (pusherData.order_status === \"ready\") {\n return Object.assign(\n { ...state },\n removeOrderFromList(pusherData.order_id, state.orders)\n );\n }\n return state;\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_VOIDED: {\n let pusherData = action.payload;\n return Object.assign(\n { ...state },\n removeOrderFromList(pusherData.order_id, state.orders)\n );\n }\n\n default:\n return state;\n }\n};\n\nconst inProgressOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_IN_PROGRESS_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n case types.SET_ORDER_MARK_AS_DELIVERED_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case types.SET_ORDER_ASSIGN_RIDER_SUCCESS:\n case types.SET_ORDER_MARK_AS_PICKUP_SUCCESS:\n return state;\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n // Remove the order from list once it completes 24 hours.\n return Object.assign(\n { ...state },\n removeOrderFromList(action.payload, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_RIDER_ASSIGNED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_PICKED_UP: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.order_id\n );\n if (\n pusherData.order_status === \"ready\" ||\n pusherData.order_status === \"new\"\n ) {\n return state;\n }\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n { count: state.count + 1, refresh_required: true }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_DELIVERED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_VOIDED: {\n let orderId = action.payload.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_TIP_COLLECTED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.order_id\n );\n if (\n pusherData.order_status === \"ready\" ||\n pusherData.order_status === \"new\"\n ) {\n return state;\n }\n if (index === -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign({ ...state }, { refresh_required: true });\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = pusherData.order_payload;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n default:\n return state;\n }\n};\n\nconst deliveredOrdersReducer = (\n state: any = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_RIDER_STATS_SUCCESS:\n let newState = getDeliveredOrderStats(action.payload.data || []);\n return { ...newState, is_loading: false, refresh_required: false };\n case types.SET_ORDER_MARK_AS_DELIVERED_SUCCESS:\n // cta from previous tab\n return { ...state, refresh_required: true };\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_DELIVERED:\n return { ...state, count: state.count + 1, refresh_required: true };\n case types.SET_DELIVERED_ORDERS_REFRESH_REQUIRED:\n case orderEventTypes.PUSHER_RECEIVED_TIP_COLLECTED:\n return { ...state, refresh_required: true };\n default:\n return state;\n }\n};\n\n// TODO: Revisit this reducer for better exp\n// Add an initial state for loading\nconst deliveredDriverOrderDetailsReducer = (state: any = [], action: any) => {\n let index, orderList;\n switch (action.type) {\n case types.FETCH_RIDER_ORDERS_SUCCESS:\n return action.payload.data;\n case types.RESET_DELIVERED_DRIVER_ORDER_DETAILS:\n return action.payload;\n case orderEventTypes.PUSHER_RECEIVED_ORDER_REPRINTED:\n index = state.findIndex((order: any) => {\n return order.order_id === action.payload.order_id;\n });\n if (index === -1) {\n return state;\n }\n orderList = state;\n orderList[index] = action.payload.order_payload;\n return [...orderList];\n case orderTypes.FETCH_ORDER_SUCCESS:\n index = state.findIndex((order: any) => {\n return order.order_id === action.payload.data.order_id;\n });\n if (index === -1) {\n return state;\n }\n orderList = state;\n orderList[index] = action.payload.data;\n return [...orderList];\n default:\n return state;\n }\n};\n\nconst reducer = combineReducers({\n new_orders: newOrdersReducer,\n unconfirmed_orders: unconfirmedOrdersReducer,\n ready_orders: readyOrdersReducer,\n in_progress_orders: inProgressOrdersReducer,\n delivered_orders: deliveredOrdersReducer,\n delivered_driver_order_details: deliveredDriverOrderDetailsReducer,\n});\n\nexport default reducer;\n","import actions from \"./actions\";\n\nconst fetchNewOrders = actions.fetchNewOrders;\nconst fetchInProgressOrders = actions.fetchInProgressOrders;\nconst fetchReadyOrders = actions.fetchReadyOrders;\nconst fetchUnconfirmedOrders = actions.fetchUnconfirmedOrders;\nconst fetchDeliveredOrders = actions.fetchDeliveredOrders;\nconst markOrderReady = actions.markOrderReady;\nconst assignDriver = actions.assignDriver;\nconst markOrderDelivered = actions.markOrderDelivered;\nconst fetchDeliveredDriverOrderDetails =\n actions.fetchDeliveredDriverOrderDetails;\nconst resetDeliveredDriverOrderDetails =\n actions.resetDeliveredDriverOrderDetails;\nconst setDeliveredRefreshRequired = actions.setDeliveredRefreshRequired;\nconst markOrderConfirm = actions.markOrderConfirm;\nconst markOrderReject = actions.markOrderReject;\nconst markOrderConfirmWithEta = actions.markOrderConfirmWithEta;\nconst markOrderRejectWithReason = actions.markOrderRejectWithReason;\nconst markOrderPickedUp = actions.markOrderPickedUp;\n\nexport default {\n fetchNewOrders,\n fetchInProgressOrders,\n fetchReadyOrders,\n fetchUnconfirmedOrders,\n fetchDeliveredOrders,\n markOrderReady,\n assignDriver,\n markOrderDelivered,\n fetchDeliveredDriverOrderDetails,\n resetDeliveredDriverOrderDetails,\n setDeliveredRefreshRequired,\n markOrderConfirm,\n markOrderReject,\n markOrderConfirmWithEta,\n markOrderRejectWithReason,\n markOrderPickedUp,\n};\n","import * as types from \"./types\";\n\nconst fetchNewOrders = (location: any) => ({\n type: types.FETCH_NEW_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/new?location_id=${location?.id}`\n : \"/api/v1/orders/new\",\n },\n },\n});\n\nconst fetchUnconfirmedOrders = (location: any) => ({\n type: types.FETCH_UNCONFIRMED_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/home_delivery/unconfirmed?location_id=${location?.id}`\n : \"/api/v1/orders/home_delivery/unconfirmed\",\n },\n },\n});\n\nconst markOrderConfirm = (orderId: any, orderSource: any) => ({\n type: types.SET_UNCONFIRMED_ORDER_CONFIRM,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/home_delivery/unconfirmed/${orderId}/confirm`,\n },\n },\n param: { order_id: orderId, order_source: orderSource },\n});\n\nconst markOrderConfirmWithEta = (orderId: any, eta: any, orderSource: any) => ({\n type: types.SET_UNCONFIRMED_ORDER_CONFIRM,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/home_delivery/unconfirmed/${orderId}/confirm`,\n data: { delivery_time: eta },\n },\n },\n param: { order_id: orderId, order_source: orderSource },\n});\n\nconst markOrderReject = (orderId: any, isAutoCancelled: boolean) => ({\n type: types.SET_UNCONFIRMED_ORDER_REJECT,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/home_delivery/unconfirmed/${orderId}/reject`,\n data: { auto_cancelled: isAutoCancelled },\n },\n },\n param: { order_id: orderId },\n});\n\nconst markOrderRejectWithReason = (\n orderId: any,\n isAutoCancelled: boolean,\n cancelReasonId: any,\n supervisorPassword: any\n) => ({\n type: types.SET_UNCONFIRMED_ORDER_REJECT,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/home_delivery/unconfirmed/${orderId}/reject`,\n data: {\n auto_cancelled: isAutoCancelled,\n cancel_reason_id: cancelReasonId,\n supervisor_password: supervisorPassword,\n },\n },\n },\n param: { order_id: orderId },\n});\n\nconst markOrderReady = (orderId: any) => ({\n type: types.SET_ORDER_MARK_AS_READY,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/new/${orderId}/mark-as-ready`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst assignDriver = (orderId: any, driverId: any) => ({\n type: types.SET_ORDER_ASSIGN_RIDER,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/ready/${orderId}/assign-rider?rider_id=${driverId}`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst fetchReadyOrders = (location: any) => ({\n type: types.FETCH_READY_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/ready?location_id=${location.id}`\n : \"/api/v1/orders/ready\",\n },\n },\n});\n\nconst fetchInProgressOrders = (location: any) => ({\n type: types.FETCH_IN_PROGRESS_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/in-progress?location_id=${location?.id}`\n : \"/api/v1/orders/in-progress\",\n },\n },\n});\n\nconst fetchDeliveredOrders = (location: any) => ({\n type: types.FETCH_RIDER_STATS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/delivered/rider-stats?location_id=${location?.id}`\n : \"/api/v1/orders/delivered/rider-stats\",\n },\n },\n});\n\nconst markOrderDelivered = (orderId: any, orderPayments: any) => ({\n type: types.SET_ORDER_MARK_AS_DELIVERED,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/in-progress/${orderId}/mark-as-delivered`,\n data: orderPayments,\n },\n },\n param: { order_id: orderId },\n});\n\nconst fetchDeliveredDriverOrderDetails = (riderId: any, location: any) => ({\n type: types.FETCH_RIDER_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/delivered?rider_id=${riderId}&location_id=${location?.id}`\n : `/api/v1/orders/delivered?rider_id=${riderId}`,\n },\n },\n});\n\nconst resetDeliveredDriverOrderDetails = () => ({\n type: types.RESET_DELIVERED_DRIVER_ORDER_DETAILS,\n payload: [],\n});\n\nconst setDeliveredRefreshRequired = () => ({\n type: types.SET_DELIVERED_ORDERS_REFRESH_REQUIRED,\n payload: [],\n});\n\nconst markOrderPickedUp = (orderId: any) => ({\n type: types.SET_ORDER_MARK_AS_PICKUP,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/ready/${orderId}/mark-as-picked-up`,\n },\n },\n param: { order_id: orderId },\n});\n\nexport default {\n fetchNewOrders,\n markOrderReady,\n markOrderDelivered,\n fetchUnconfirmedOrders,\n fetchReadyOrders,\n assignDriver,\n fetchInProgressOrders,\n fetchDeliveredOrders,\n fetchDeliveredDriverOrderDetails,\n resetDeliveredDriverOrderDetails,\n setDeliveredRefreshRequired,\n markOrderConfirm,\n markOrderReject,\n markOrderConfirmWithEta,\n markOrderRejectWithReason,\n markOrderPickedUp,\n};\n","import reducer from \"./reducers\";\n\nexport { default as homeDeliveryOperations } from \"./operations\";\n\nexport default reducer;","\nexport const FETCH_NEW_PICKUP_ORDERS = \"pickup/FETCH_NEW_PICKUP_ORDERS\";\nexport const FETCH_NEW_PICKUP_ORDERS_SUCCESS = \"pickup/FETCH_NEW_PICKUP_ORDERS_SUCCESS\";\nexport const FETCH_NEW_PICKUP_ORDERS_FAIL = \"pickup/FETCH_NEW_PICKUP_ORDERS_FAIL\";\nexport const FETCH_READY_PICKUP_ORDERS = \"pickup/FETCH_READY_ PICKUP_ORDERS\";\nexport const FETCH_READY_PICKUP_ORDERS_SUCCESS = \"pickup/FETCH_READY_ PICKUP_ORDERS_SUCCESS\";\nexport const FETCH_READY_PICKUP_ORDERS_FAIL = \"pickup/FETCH_READY_PICKUP_ORDERS_FAIL\";\nexport const FETCH_COLLECTED_PICKUP_ORDERS = \"pickup/FETCH_COLLECTED_ PICKUP_ORDERS\";\nexport const FETCH_COLLECTED_PICKUP_ORDERS_SUCCESS = \"pickup/FETCH_COLLECTED_ PICKUP_ORDERS_SUCCESS\";\nexport const FETCH_COLLECTED_PICKUP_ORDERS_FAIL = \"pickup/FETCH_COLLECTED_PICKUP_ORDERS_FAIL\";\nexport const SET_PICKUP_ORDER_MARK_AS_READY = \"pickup/SET_PICKUP_ORDER_MARK_AS_READY\";\nexport const SET_PICKUP_ORDER_MARK_AS_READY_SUCCESS = \"pickup/SET_PICKUP_ORDER_MARK_AS_READY_SUCCESS\";\nexport const SET_PICKUP_ORDER_MARK_AS_READY_FAIL = \"pickup/SET_PICKUP_ORDER_MARK_AS_READY_FAIL\";\nexport const SET_ORDER_COLLECTED = \"pickup/SET_ORDER_COLLECTED\";\nexport const SET_ORDER_COLLECTED_SUCCESS = \"pickup/SET_ORDER_COLLECTED_SUCCESS\";\nexport const SET_ORDER_COLLECTED_FAIL = \"pickup/SET_ORDER_COLLECTED_FAIL\";\nexport const FETCH_UNCONFIRMED_PICKUP_ORDERS = \"pickup/FETCH_UNCONFIRMED_PICKUP_ORDERS\";\nexport const FETCH_UNCONFIRMED_PICKUP_ORDERS_SUCCESS = \"pickup/FETCH_UNCONFIRMED_PICKUP_ORDERS_SUCCESS\";\nexport const FETCH_UNCONFIRMED_PICKUP_ORDERS_FAIL = \"pickup/FETCH_UNCONFIRMED_PICKUP_ORDERS_FAIL\";\nexport const SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_SUCCESS = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_SUCCESS\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_FAIL = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_FAIL\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_REJECT = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_REJECT\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_REJECT_SUCCESS = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_REJECT_SUCCESS\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_REJECT_FAIL = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_REJECT_FAIL\"\nexport const SET_COLLECTED_ORDERS_REFRESH_REQUIRED = \"pickup/SET_COLLECTED_ORDERS_REFRESH_REQUIRED\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT_SUCCESS = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT_SUCCESS\"\nexport const SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT_FAIL = \"pickup/SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT_FAIL\"\n","import { combineReducers } from \"redux\";\nimport * as types from \"./types\";\nimport {\n getOrdersStats,\n isOrderPayloadPresentIn,\n removeOrderFromList,\n} from \"../../../helpers/orderFunctions\";\nimport * as orderEventTypes from \"../orderEvents/types\";\nimport * as orderTypes from \"../order/types\";\n\ntype OrderState = {\n refresh_required: boolean;\n is_loading: boolean;\n count: number;\n orders: any[];\n};\n\nconst initialOrdersState: OrderState = {\n refresh_required: false,\n is_loading: true,\n count: 0,\n orders: [],\n};\n\nconst unconfirmedPickupOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_UNCONFIRMED_PICKUP_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n case types.SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case types.SET_UNCONFIRMED_PICKUP_ORDER_REJECT_FAIL: {\n if (action.error !== undefined && action.error.status === 404) {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n return state;\n }\n case types.SET_UNCONFIRMED_PICKUP_ORDER_REJECT_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index == -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n return Object.assign(\n { ...state },\n removeOrderFromList(action.payload, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n if (\n (pusherData.order_type === \"online\" &&\n pusherData.order_status === \"unconfirmed\" &&\n pusherData.takeaway) ||\n (pusherData.order_type === \"walk_in\" &&\n pusherData.order_status === \"unconfirmed\")\n ) {\n // Push order into the unconfirmed orders list if it doesn't exist\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n { count: state.count + 1, refresh_required: true }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n return state;\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_REJECTED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CONFIRMED: {\n // Remove confirmed/rejected order from the list\n let orderId = action.payload.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n default:\n return state;\n }\n};\n\nconst newPickupOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_NEW_PICKUP_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n case types.SET_PICKUP_ORDER_MARK_AS_READY_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n // Remove the order from list once it completes 24 hours.\n return Object.assign(\n { ...state },\n removeOrderFromList(action.payload, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CONFIRMED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (\n ![\"walk_in\", \"online\"].includes(pusherData.order_type) ||\n pusherData.order_status !== \"new\" ||\n pusherData.scheduled ||\n !pusherData.takeaway\n ) {\n return state;\n }\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n { count: state.count + 1, refresh_required: true }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_VOIDED:\n case orderEventTypes.PUSHER_RECEIVED_PICKUP_ORDER_MARKED_AS_READY: {\n let orderId = action.payload.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n default:\n return state;\n }\n};\n\nconst readyPickupOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n let index;\n switch (action.type) {\n case types.FETCH_READY_PICKUP_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n case types.SET_ORDER_COLLECTED_SUCCESS: {\n let orderId = action.meta.previousAction.param.order_id;\n return Object.assign(\n { ...state },\n removeOrderFromList(orderId, state.orders)\n );\n }\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderTypes.REMOVE_EXPIRED_ORDER: {\n // Remove the order from list once it completes 24 hours.\n return Object.assign(\n { ...state },\n removeOrderFromList(action.payload, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_PICKUP_ORDER_MARKED_AS_READY: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n { count: state.count + 1, refresh_required: true }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_COLLECTED: {\n return Object.assign(\n { ...state },\n removeOrderFromList(action.payload.order_id, state.orders)\n );\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CONFIRMED:\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (\n pusherData.order_status !== \"ready\" ||\n pusherData.scheduled ||\n !pusherData.takeaway\n ) {\n return state;\n }\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n { count: state.count + 1, refresh_required: true }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n default:\n return state;\n }\n};\n\nconst collectedPickupOrdersReducer = (\n state: OrderState = initialOrdersState,\n action: any\n) => {\n switch (action.type) {\n case types.FETCH_COLLECTED_PICKUP_ORDERS_SUCCESS: {\n return Object.assign(\n { ...state },\n { is_loading: false, refresh_required: false },\n getOrdersStats(action.payload.data || [])\n );\n }\n case types.SET_ORDER_COLLECTED_SUCCESS:\n return state;\n case orderTypes.FETCH_ORDER_SUCCESS: {\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.data.order_id\n );\n if (index === -1) {\n return state;\n }\n let updatedOrders = state.orders;\n updatedOrders[index] = action.payload.data;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_REPRINTED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === pusherData.order_id\n );\n if (index === -1) {\n return state;\n }\n if (pusherDataHasOrderPayload) {\n let updatedOrders = state.orders;\n updatedOrders[index] = pusherData.order_payload;\n return Object.assign({ ...state }, getOrdersStats(updatedOrders));\n }\n return state;\n }\n case orderEventTypes.PUSHER_RECEIVED_ORDER_MARKED_AS_COLLECTED: {\n let pusherData = action.payload;\n let pusherDataHasOrderPayload = isOrderPayloadPresentIn(pusherData);\n let index = state.orders.findIndex(\n (order: any) => order.order_id === action.payload.order_id\n );\n if (index !== -1) {\n return state;\n }\n if (!pusherDataHasOrderPayload) {\n return Object.assign(\n { ...state },\n { count: state.count + 1, refresh_required: true }\n );\n }\n return Object.assign(\n { ...state },\n getOrdersStats([...state.orders, pusherData.order_payload])\n );\n }\n case types.SET_COLLECTED_ORDERS_REFRESH_REQUIRED:\n return { ...state, refresh_required: true };\n default:\n return state;\n }\n};\n\nconst reducer = combineReducers({\n unconfirmed_pickup_orders: unconfirmedPickupOrdersReducer,\n new_pickup_orders: newPickupOrdersReducer,\n ready_pickup_orders: readyPickupOrdersReducer,\n collected_pickup_orders: collectedPickupOrdersReducer,\n});\n\nexport default reducer;\n","import actions from \"./actions\";\n\nconst fetchNewPickupOrders = actions.fetchNewPickupOrders;\nconst fetchReadyPickupOrders = actions.fetchReadyPickupOrders;\nconst fetchCollectedPickupOrders = actions.fetchCollectedPickupOrders;\nconst markOrderReady = actions.markOrderReady;\nconst markOrderCollected = actions.markOrderCollected;\nconst fetchPickupUnconfirmedOrders = actions.fetchPickupUnconfirmedOrders;\nconst markPickupUnconfirmedOrderConfirm =\n actions.markPickupUnconfirmedOrderConfirm;\nconst markPickupUnconfirmedOrderReject =\n actions.markPickupUnconfirmedOrderReject;\nconst setCollectedRefreshRequired = actions.setCollectedRefreshRequired;\nconst markPickupUnconfirmedOrderRejectWithReason =\n actions.markPickupUnconfirmedOrderRejectWithReason;\nconst markPickupOrderConfirmedWithPayment = actions.markPickupOrderConfirmedWithPayment;\n \nexport default {\n fetchNewPickupOrders,\n fetchReadyPickupOrders,\n fetchCollectedPickupOrders,\n markOrderReady,\n markOrderCollected,\n fetchPickupUnconfirmedOrders,\n markPickupUnconfirmedOrderConfirm,\n markPickupUnconfirmedOrderReject,\n setCollectedRefreshRequired,\n markPickupUnconfirmedOrderRejectWithReason,\n markPickupOrderConfirmedWithPayment,\n};\n","import * as types from \"./types\";\n\nconst fetchPickupUnconfirmedOrders = (location: any) => ({\n type: types.FETCH_UNCONFIRMED_PICKUP_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/pickup/unconfirmed?location_id=${location?.id}`\n : \"/api/v1/orders/pickup/unconfirmed\",\n },\n },\n});\n\nconst markPickupUnconfirmedOrderConfirm = (orderId: any, orderSource:any) => ({\n type: types.SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/pickup/unconfirmed/${orderId}/confirm`\n },\n },\n param: { order_id: orderId, order_source: orderSource },\n});\n\nconst markPickupUnconfirmedOrderReject = (\n orderId: any,\n isAutoCancelled: boolean\n) => ({\n type: types.SET_UNCONFIRMED_PICKUP_ORDER_REJECT,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/pickup/unconfirmed/${orderId}/reject`,\n data: { auto_cancelled: isAutoCancelled },\n },\n },\n param: { order_id: orderId },\n});\n\nconst markPickupUnconfirmedOrderRejectWithReason = (\n orderId: any,\n isAutoCancelled: boolean,\n cancelReasonId: any,\n supervisorPassword:any\n) => ({\n type: types.SET_UNCONFIRMED_PICKUP_ORDER_REJECT,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/pickup/unconfirmed/${orderId}/reject`,\n data: {\n auto_cancelled: isAutoCancelled,\n cancel_reason_id: cancelReasonId,\n supervisor_password: supervisorPassword,\n },\n },\n },\n param: { order_id: orderId },\n});\n\nconst markPickupOrderConfirmedWithPayment = (orderId: any, orderPayments: any) =>({\n type: types.SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_WITH_PAYMENT,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/pickup/unconfirmed/${orderId}/confirm`,\n data: orderPayments,\n }\n }\n})\n\nconst fetchNewPickupOrders = (location: any) => ({\n type: types.FETCH_NEW_PICKUP_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/pickup/new?location_id=${location.id}`\n : \"/api/v1/orders/pickup/new\",\n },\n },\n});\n\nconst markOrderReady = (orderId: any) => ({\n type: types.SET_PICKUP_ORDER_MARK_AS_READY,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/pickup/new/${orderId}/mark-as-ready`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst fetchReadyPickupOrders = (location: any) => ({\n type: types.FETCH_READY_PICKUP_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/pickup/waiting-for-collection?location_id=${location.id}`\n : \"/api/v1/orders/pickup/waiting-for-collection\",\n },\n },\n});\n\nconst fetchCollectedPickupOrders = (location: any) => ({\n type: types.FETCH_COLLECTED_PICKUP_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/pickup/collected?location_id=${location?.id}`\n : \"/api/v1/orders/pickup/collected\",\n },\n },\n});\n\nconst markOrderCollected = (orderId: any, orderPayments: any) => ({\n type: types.SET_ORDER_COLLECTED,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/pickup/waiting-for-collection/${orderId}/mark-as-collected`,\n data: orderPayments,\n },\n },\n param: { order_id: orderId },\n});\n\nconst setCollectedRefreshRequired = () => ({\n type: types.SET_COLLECTED_ORDERS_REFRESH_REQUIRED,\n payload: [],\n});\n\nexport default {\n fetchNewPickupOrders,\n markOrderReady,\n fetchReadyPickupOrders,\n markOrderCollected,\n fetchCollectedPickupOrders,\n fetchPickupUnconfirmedOrders,\n markPickupUnconfirmedOrderConfirm,\n markPickupUnconfirmedOrderReject,\n setCollectedRefreshRequired,\n markPickupUnconfirmedOrderRejectWithReason,\n markPickupOrderConfirmedWithPayment,\n};\n","import reducer from \"./reducers\";\n\nexport { default as pickupOperations } from \"./operations\";\n\nexport default reducer;\n","export const FETCH_SCHEDULED_ORDERS = \"scheduled/FETCH_SCHEDULED_ORDERS\";\nexport const FETCH_SCHEDULED_ORDERS_SUCCESS = \"scheduled/FETCH_SCHEDULED_ORDERS_SUCCESS\";\nexport const FETCH_SCHEDULED_ORDERS_FAIL = \"scheduled/FETCH_SCHEDULED_ORDERS_FAIL\";\nexport const REMOVE_SCHEDULED_ORDER = \"scheduled/REMOVE_SCHEDULED_ORDER\";\n","import * as types from \"./types\";\nimport * as orderEventTypes from \"../orderEvents/types\";\nimport { removeExpiredScheduledOrders } from \"../../../helpers/orderFunctions\";\n\nconst initialOrdersState = {\n is_loading: true,\n orders: [],\n} as any;\n\nconst scheduledOrdersReducer = (\n state: any = initialOrdersState,\n action: any\n) => {\n let index;\n switch (action.type) {\n case types.FETCH_SCHEDULED_ORDERS_SUCCESS:\n let orders = action.payload.data || [];\n return {\n ...state,\n orders: removeExpiredScheduledOrders(orders),\n is_loading: false,\n };\n case types.REMOVE_SCHEDULED_ORDER:\n let filtered_orders = state.orders.filter((order: any) => {\n return order.order_id !== action.payload;\n });\n return { ...state, orders: filtered_orders, is_loading: false };\n case orderEventTypes.PUSHER_RECEIVED_ORDER_CREATED:\n if (action.payload.order_status !== \"new\" && !action.payload.scheduled ) {\n return state; // do nothing\n }\n if (action.payload.order_status === \"new\" && !action.payload.scheduled ) {\n return state; // do nothing\n }\n if (action.payload.order_status === \"unconfirmed\" && action.payload.scheduled) {\n return state; // do nothing\n }\n // Push order into the new orders list if it doesn't exist\n index = state.orders.findIndex((order: any) => {\n return order.order_id === action.payload.order_id; \n });\n if (index !== -1){ // order is already in the list\n return state; // do nothing\n }\n\n if (\n action.payload.order_payload == undefined ||\n Object.keys(action.payload.order_payload).length === 0\n ) {\n // Order payload is not present\n return { ...state, refresh_required: true };\n } else {\n // Order payload is present\n let updatedOrderList = [...state.orders, action.payload.order_payload];\n return { ...state, orders: updatedOrderList, refresh_required: false };\n }\n default:\n return state;\n }\n};\n\nconst reducer = scheduledOrdersReducer;\nexport default reducer;\n","import actions from \"./actions\";\n\nconst fetchScheduledOrders = actions.fetchScheduledOrders;\nconst removeScheduledOrder = actions.removeScheduledOrder;\n\nexport default { fetchScheduledOrders, removeScheduledOrder };\n","import * as types from \"./types\";\n\nconst fetchScheduledOrders = (location: any) => ({\n type: types.FETCH_SCHEDULED_ORDERS,\n payload: {\n request: {\n method: \"get\",\n url: location\n ? `/api/v1/orders/scheduled?location_id=${location.id}`\n : \"/api/v1/orders/scheduled\",\n },\n },\n});\n\nconst removeScheduledOrder = (orderId:any) =>({\n type:types.REMOVE_SCHEDULED_ORDER,\n payload:orderId\n})\n\nexport default { fetchScheduledOrders,removeScheduledOrder };\n","import reducer from \"./reducers\";\n\nexport { default as scheduledOperations } from \"./operations\";\n\nexport default reducer;\n","import actions from \"./actions\";\n\nconst fetchOrder = actions.fetchOrder;\nconst removeExpiredOrder = actions.removeExpiredOrder;\n\nexport default { fetchOrder, removeExpiredOrder };\n","import * as types from \"./types\";\n\nconst fetchOrder = (orderId: any) => ({\n type: types.FETCH_ORDER,\n payload: {\n request: {\n method: \"get\",\n url: `/api/v1/orders/${orderId}`,\n },\n },\n param: { order_id: orderId },\n});\n\nconst removeExpiredOrder = (orderId: any) => ({\n type: types.REMOVE_EXPIRED_ORDER,\n payload: orderId,\n});\n\nexport default {\n fetchOrder,\n removeExpiredOrder,\n};\n","import reducer from \"./reducers\"\n\nexport { default as orderOperations } from \"./operations\";\n\nexport default reducer;\n","import { combineReducers } from \"redux\"\nimport homeDeliveryReducer from \"../homeDelivery/index\"\nimport pickUpReducer from \"../pickup/index\"\nimport scheduledReducer from '../scheduled/index'\n\nconst reducer = combineReducers({\n home_delivery: homeDeliveryReducer,\n pickup: pickUpReducer,\n scheduled:scheduledReducer\n});\n\nexport default reducer;\n","export const FETCH_LOGISTIC_PARTNERS =\n \"logisticPartners/FETCH_LOGISTIC_PARTNERS\";\nexport const FETCH_LOGISTIC_PARTNERS_SUCCESS =\n \"logisticPartners/FETCH_LOGISTIC_PARTNERS_SUCCESS\";\nexport const FETCH_LOGISTIC_PARTNERS_FAIL =\n \"logisticPartners/FETCH_LOGISTIC_PARTNERS_FAIL\";\nexport const RESET_LOGISTIC_PARTNERS =\n \"logisticPartners/RESET_LOGISTIC_PARTNERS\";\nexport const ASSIGN_LOGISTIC_PARTNER =\n \"logisticPartners/ASSIGN_LOGISTIC_PARTNER\";\nexport const ASSIGN_LOGISTIC_PARTNER_SUCCESS =\n \"logisticPartners/ASSIGN_LOGISTIC_PARTNER_SUCCESS\";\nexport const ASSIGN_LOGISTIC_PARTNER_FAIL =\n \"logisticPartners/ASSIGN_LOGISTIC_PARTNER_FAIL\";\nexport const PUSHER_RECEIVED_LOGISTIC_JOB_CANCELLED =\n \"logisticPartners/PUSHER_RECEIVED_LOGISTIC_JOB_CANCELLED\";\nexport const CANCEL_LOGISTIC_JOB = \"logisticPartners/CANCEL_LOGISTIC_JOB\";\nexport const CANCEL_LOGISTIC_JOB_SUCCESS =\n \"logisticPartners/CANCEL_LOGISTIC_JOB_SUCCESS\";\nexport const CANCEL_LOGISTIC_JOB_FAIL =\n \"logisticPartners/CANCEL_LOGISTIC_JOB_FAIL\";\n export const PUSHER_RECEIVED_LOGISTIC_CANCEL_FAILED =\n \"logisticPartners/PUSHER_RECEIVED_LOGISTIC_CANCEL_FAILED\";\n","import actions from \"./actions\";\n\nconst fetchLogisticPartners = actions.fetchLogisticPartners;\nconst resetLogisticPartners = actions.resetLogisticPartners;\nconst assignLogisticPartner = actions.assignLogisticPartner;\nconst logisticJobCancelled = actions.logisticJobCancelled;\nconst cancelLogisticJob = actions.cancelLogisticJob;\nconst logisticCancelFailed = actions.logisticCancelFailed;\n\nexport default {\n fetchLogisticPartners,\n resetLogisticPartners,\n assignLogisticPartner,\n logisticJobCancelled,\n cancelLogisticJob,\n logisticCancelFailed\n};\n","import * as types from \"./types\";\n\nconst fetchLogisticPartners = () => ({\n type: types.FETCH_LOGISTIC_PARTNERS,\n payload: {\n request: {\n method: \"get\",\n url: `/api/v1/logistics/partners`,\n },\n },\n});\n\nconst resetLogisticPartners = () => ({\n type: types.RESET_LOGISTIC_PARTNERS,\n payload: [],\n});\n\nconst assignLogisticPartner = (orderId: any, partnerId: any) => ({\n type: types.ASSIGN_LOGISTIC_PARTNER,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/logistics/jobs`,\n data: {\n order_id: orderId,\n partner_id: partnerId,\n },\n },\n },\n});\n\nconst logisticJobCancelled = (data: any) => ({\n type: types.PUSHER_RECEIVED_LOGISTIC_JOB_CANCELLED,\n payload: data,\n});\n\nconst cancelLogisticJob = (orderId: any) => ({\n type: types.CANCEL_LOGISTIC_JOB,\n payload: {\n request: {\n method: \"delete\",\n url: `/api/v1/logistics/jobs/${orderId}`,\n },\n },\n});\n\nconst logisticCancelFailed = (data: any) => ({\n type: types.PUSHER_RECEIVED_LOGISTIC_CANCEL_FAILED,\n payload: data,\n});\n\n\nexport default {\n fetchLogisticPartners,\n resetLogisticPartners,\n assignLogisticPartner,\n logisticJobCancelled,\n cancelLogisticJob,\n logisticCancelFailed\n};\n","import reducer from \"./reducers\"\n\nexport { default as logisticPartnersOperations } from \"./operations\";\n\nexport default reducer\n","import * as types from \"./types\";\n\nconst logisticPartnersReducer = (state = [], action: any) => {\n switch (action.type) {\n case types.FETCH_LOGISTIC_PARTNERS_SUCCESS:\n return action.payload.data || [];\n case types.RESET_LOGISTIC_PARTNERS:\n return action.payload || [];\n default:\n return state;\n }\n};\n\nconst reducer = logisticPartnersReducer;\n\nexport default reducer;\n","import actions from \"./actions\";\n\nconst fetchPrintSettings = actions.fetchPrintSettings;\n\nexport default {\n fetchPrintSettings,\n};\n","import * as types from \"./types\";\n\nconst fetchPrintSettings = () => ({\n type: types.FETCH_PRINT_SETTINGS,\n payload: {\n request: {\n method: \"get\",\n url: \"/api/v1/print-settings/list\",\n },\n },\n});\n\nexport default {\n fetchPrintSettings,\n};\n","export const FETCH_PRINT_SETTINGS = \"payments/FETCH_PRINT_SETTINGS\";\nexport const FETCH_PRINT_SETTINGS_SUCCESS = \"payments/FETCH_PRINT_SETTINGS_SUCCESS\";\nexport const FETCH_PRINT_SETTINGS_FAIL = \"payments/FETCH_PRINT_SETTINGS_FAIL\";\n","import reducer from \"./reducers\"\n\nexport { default as printSettingsOperations } from \"./operations\";\n\nexport default reducer\n","import { removeLoyaltyPayment } from \"../../../helpers/orderFunctions\";\nimport * as types from \"./types\";\n\nconst printSettingsReducer = (state = [], action: any) => {\n switch (action.type) {\n case types.FETCH_PRINT_SETTINGS_SUCCESS:\n return action.payload.data || [];\n\n default:\n return state;\n }\n};\n\nconst reducer = printSettingsReducer;\n\nexport default reducer;\n","export const FETCH_RIDER_PROXIMITY = \"payments/FETCH_RIDER_PROXIMITY\";\n","import actions from \"./actions\";\n\nconst fetchRiderProximity = actions.fetchRiderProximity;\n\nexport default {\n fetchRiderProximity,\n};\n","import * as types from \"./types\";\n\nconst fetchRiderProximity = (data: any) => ({\n type: types.FETCH_RIDER_PROXIMITY,\n payload: data,\n});\n\nexport default {\n fetchRiderProximity,\n};\n","import reducer from \"./reducers\"\n\nexport { default as riderOperations } from \"./operations\";\n\nexport default reducer\n","import { removeLoyaltyPayment } from \"../../../helpers/orderFunctions\";\nimport * as types from \"./types\";\n\nconst getRiderProximity = (state = {}, action: any) => {\n switch (action.type) {\n case types.FETCH_RIDER_PROXIMITY:\n return action.payload.data || {};\n\n default:\n return state;\n }\n};\n\nconst reducer = getRiderProximity;\n\nexport default reducer;\n","import { createContext } from \"react\";\nimport { audioContextType } from \"../types/audioContextType\";\n\nexport const AudioContext = createContext(null);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport * as Sentry from \"@sentry/react\";\nimport BranchesDropdown from \"../branchesDropdown\";\nimport OrderNotification from \"../orderNotification\";\nimport DarkMode from \"../darkMode\";\nimport Loader from \"../loader\";\nimport MainNav from \"../mainNav\";\nimport { orderEventsOperations } from \"../../state/features/orderEvents\";\nimport { companyConfigurations } from \"../../state/features/company\";\nimport { paymentsOperations } from \"../../state/features/payments\";\nimport { driverOperations } from \"../../state/features/drivers\";\nimport { orderOperations } from \"../../state/features/order\";\nimport { branchOperations } from \"../../state/features/branches\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport { scheduledOperations } from \"../../state/features/scheduled\";\nimport { useSelectedBranch } from \"../../helpers/orderFunctions\";\nimport { hardRefresh } from \"../../helpers/utils\";\nimport { pickupOperations } from \"../../state/features/pickup\";\nimport { useHistory } from \"react-router\";\nimport { notificationOperations } from \"../../state/features/notifications\";\nimport { logisticPartnersOperations } from \"../../state/features/logisticPartners\";\nimport { printSettingsOperations } from \"../../state/features/printSettings\";\nimport { riderOperations } from \"../../state/features/riderProximity\";\nimport { LOGISTICS_PARTNER_ORDER_CANCELLED_STATUS } from \"../../helpers/constants\";\nimport { useNotifyAudioContext } from \"../../hooks/useNotifyAudioContext\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\n\ninterface IHeaderProps {\n loader?: any;\n selectedBranch?: any;\n branches?: any;\n company: any;\n orderMarkedReadyEvent: any;\n orderPickUpMarkedReady: any;\n orderRiderAssigned: any;\n orderMarkedDelivered: any;\n orderMarkedCollected: any;\n orderConfirmed: any;\n orderRejected: any;\n orderCreated: any;\n orderUpdated: any;\n orderVoided: any;\n payments: any;\n fetchCompany: any;\n fetchPayments: any;\n fetchDrivers: any;\n fetchOrder: any;\n fetchBranches: any;\n selectBranch: any;\n pusher: any;\n setDeliveredRefreshRequired: any;\n currentTab: any;\n fetchScheduledOrders?: any;\n orderMarkedReprinted?: any;\n setCollectedRefreshRequired?: any;\n clearHomeDeliveryNotifications?: any;\n clearPickupNotifications?: any;\n logisticJobCancelled: any;\n logisticCancelFailed?: any;\n fetchPrintSettings: any;\n fetchLogisticPartners: any;\n customerArrived: any;\n orderMarkedPickedUp: any;\n orderRiderUnassigned: any;\n orderTipCollected: any;\n orderCompanyRiderAssigned: any;\n orderPartnerRiderAssigned: any;\n notifications: any;\n}\n\nfunction Header(props: IHeaderProps) {\n let history = useHistory();\n const [hideUnconfirmed, setHideUnconfirmed] = useState(true);\n\n const {\n playNewOrderAudio,\n playUnconfirmedOrderAudio,\n cancelUnconfirmedAudio,\n } = useNotifyAudioContext();\n\n const createNotifierService = ({\n channels,\n events,\n orderTypes = [],\n orderStatuses = [],\n }: {\n channels: string[];\n events: string[];\n orderTypes?: string[];\n orderStatuses?: string[];\n }) => {\n const notifierPluginEvent = new CustomEvent(\"dmms-plugin-events-pusher\", {\n detail: { channels, events, orderTypes, orderStatuses },\n });\n dispatchEvent(notifierPluginEvent);\n };\n\n useEffect(() => {\n if (localStorage.jwt !== undefined && localStorage.rt !== undefined) {\n props\n .fetchCompany()\n .then((res: any) => {\n if (!res.error) {\n props\n .fetchBranches()\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchPayments()\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchPrintSettings()\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchLogisticPartners()\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else {\n console.debug(`[JWT] JWT/RT missing in localStorage`);\n history.push(\"/login-error\");\n }\n }, []);\n\n // Set context for Sentry\n useEffect(() => {\n // Sets User to the Sentry request context\n Sentry.setUser({\n id: props.company.user_id,\n username: props.company.user_name,\n is_admin: props.company.admin,\n });\n\n // Set general contexts\n Sentry.setContext(\"company_details\", {\n company_id: props.company.company_id,\n company_name: props.company.company_name,\n country: props.company.country,\n currency: props.company.currency,\n business_end_time: props.company.business_end_time,\n });\n\n // Sets Sentry tags\n Sentry.setTag(\"company_id\", props.company.company_id);\n Sentry.setTag(\"country\", props.company.country);\n Sentry.setTag(\"user\",props.company.user_id);\n }, [props.company]);\n\n useEffect(() => {\n let today: any = new Date();\n today.setUTCHours(0, 0, 0, 0);\n let business_end_time = props.company.business_end_time;\n let today_business_end_time = today / 1000 + business_end_time;\n let current_UTC_Time = Math.floor(new Date().getTime() / 1000);\n let timer: any;\n if (today_business_end_time >= current_UTC_Time) {\n let time_difference = today_business_end_time - current_UTC_Time;\n time_difference *= 1000;\n timer = setTimeout(() => {\n handleBusinessEndReload();\n }, time_difference);\n }\n return () => clearTimeout(timer);\n }, [props.company]);\n\n const handleBusinessEndReload = () => {\n if (\n window.location.pathname.split(\"/\").pop() === \"delivered\" ||\n window.location.pathname.split(\"/\").pop() === \"collected\"\n ) {\n hardRefresh();\n } else {\n props.setDeliveredRefreshRequired();\n props.setCollectedRefreshRequired();\n }\n };\n\n useEffect(() => {\n if (\n Object.keys(props.selectedBranch).length > 0 &&\n props.branches.length > 0 &&\n props.pusher &&\n props.company\n ) {\n if (props.selectedBranch.id) {\n console.debug(`[PUSHER] Unsubscribing from all branches`);\n props.branches.map((branch: any) => {\n return props.pusher.unsubscribe(`order_events_${branch.id}`);\n });\n let channel = props.pusher.subscribe(\n `order_events_${props.selectedBranch.id}`\n );\n console.debug(\n `[PUSHER] Subscribed to order events for ${props.selectedBranch.name}`\n );\n bindOrderEvents(channel);\n createNotifierService({\n channels: [`order_events_${props.selectedBranch.id}`],\n events: [\"created\"],\n orderStatuses: [\"unconfirmed\"],\n });\n\n props.branches.map((branch: any) => {\n return props.pusher.unsubscribe(`logistics_events_${branch.id}`);\n });\n let logisticJobChannel = props.pusher.subscribe(\n `logistics_events_${props.selectedBranch.id}`\n );\n bindLogisticJobEvents(logisticJobChannel);\n } else {\n if (props.company.admin) {\n // Admin user - All locations\n let channels = props.branches.map((branch: any) => {\n return props.pusher.subscribe(`order_events_${branch.id}`);\n });\n\n let logisticJobChannels = props.branches.map((branch: any) => {\n return props.pusher.subscribe(`logistics_events_${branch.id}`);\n });\n\n console.debug(\n `[PUSHER] Subscribed to order events for ${props.selectedBranch.name}`\n );\n\n channels.map((channel: any) => {\n bindOrderEvents(channel);\n });\n\n logisticJobChannels.map((channel: any) => {\n bindLogisticJobEvents(channel);\n });\n createNotifierService({\n channels: props.branches.map(\n (branch: any) => `order_events_${branch.id}`\n ),\n events: [\"created\"],\n orderStatuses: [\"unconfirmed\"],\n });\n } else {\n // Staff user - Multiple locations\n console.debug(`[PUSHER] Unsubscribing from all branches`);\n props.branches.map((branch: any) => {\n return props.pusher.unsubscribe(`order_events_${branch.id}`);\n });\n props.branches.map((branch: any) => {\n return props.pusher.unsubscribe(`logistics_events_${branch.id}`);\n });\n let channels = props.company.authorized_location_ids.map(\n (branch: any) => {\n return props.pusher.subscribe(`order_events_${branch}`);\n }\n );\n let logisticJobChannels = props.company.authorized_location_ids.map(\n (branch: any) => {\n return props.pusher.subscribe(`logistics_events_${branch}`);\n }\n );\n console.debug(\n `[PUSHER] Subscribed to order events for ${props.selectedBranch.name}`\n );\n createNotifierService({\n channels: props.branches.map(\n (branch: any) => `order_events_${branch.id}`\n ),\n events: [\"created\"],\n orderStatuses: [\"unconfirmed\"],\n });\n channels.map((channel: any) => {\n bindOrderEvents(channel);\n });\n logisticJobChannels.map((channel: any) => {\n bindLogisticJobEvents(channel);\n });\n }\n }\n }\n if (props.company.user_permissions?.includes(\"weborder.manage\")) {\n setHideUnconfirmed(false);\n } else if (props.company.user_permissions?.includes(\"all.manage\")) {\n setHideUnconfirmed(false);\n } else {\n setHideUnconfirmed(true);\n }\n }, [props.selectedBranch, props.branches, props.pusher, props.company]);\n\n useEffect(() => {\n if (Object.keys(props.company).length > 0 && props.pusher) {\n console.debug(`[PUSHER] Subscribing to company sync events`);\n let channel = props.pusher.subscribe(\n `company_synchronized_${props.company.company_id}`\n );\n channel.bind(\"company_synchronized\", (data: any) => {\n console.debug(`[PUSHER] [company_synchronized]`);\n // TODO: Add sweet alert to notify user\n console.debug(\"Company details have been updated! Refreshing page...\");\n setTimeout(() => {\n hardRefresh();\n }, 200);\n });\n console.debug(`[PUSHER] Subscribing to payment types sync events`);\n let paymentsChannel = props.pusher.subscribe(\n `payment_types_synchronized_${props.company.company_id}`\n );\n paymentsChannel.bind(\"payment_types_synchronized\", (data: any) => {\n console.debug(`[PUSHER] [payment_types_synchronized]`);\n props.fetchPayments();\n });\n console.debug(`[PUSHER] Subscribing to location sync events`);\n let locationsChannel = props.pusher.subscribe(\n `locations_synchronized_${props.company.company_id}`\n );\n locationsChannel.bind(\"locations_synchronized\", (data: any) => {\n console.debug(`[PUSHER] [locations_synchronized]`);\n // TODO: Add sweet alert to notify user\n console.debug(\"Branches have been updated! Refreshing page...\");\n setTimeout(() => {\n hardRefresh();\n }, 200);\n });\n console.debug(`[PUSHER] Subscribing to riders sync events`);\n let ridersChannel = props.pusher.subscribe(\n `riders_synchronized_${props.company.company_id}`\n );\n ridersChannel.bind(\"riders_synchronized\", (data: any) => {\n console.debug(`[PUSHER] [riders_synchronized]`);\n props\n .fetchDrivers(data.company_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n });\n console.debug(`[PUSHER] Subscribing to logistics partners sync events`);\n let logisticsChannel = props.pusher.subscribe(\n `logistics_partners_synchronized_${props.company.company_id}`\n );\n logisticsChannel.bind(\"logistics_partners_synchronized\", (data: any) => {\n console.debug(`[PUSHER] [logistics_partners_synchronized]`);\n props\n .fetchLogisticPartners()\n .catch((err: AxiosErrorResponse) => console.log(err));\n });\n console.debug(`[PUSHER] Subscribing to print settings sync events`);\n let printSettingsChannel = props.pusher.subscribe(\n `print_settings_synchronized_${props.company.company_id}`\n );\n printSettingsChannel.bind(\"print_settings_synchronized\", (data: any) => {\n console.debug(`[PUSHER] [print_settings_synchronized]`);\n props.fetchPrintSettings();\n });\n console.debug(`[PUSHER] Subscribing to rider proximity events`);\n let riderProximityChannel = props.pusher.subscribe(\n `riders_events_${props.company.company_id}`\n );\n riderProximityChannel.bind(\n \"rider_geo_coordinates_updated\",\n (data: any) => {\n console.debug(`[PUSHER] [rider_geo_coordinates_updated]`);\n props.fetchPrintSettings(data);\n }\n );\n }\n }, [props.company, props.pusher]);\n\n useEffect(() => {\n if (props.pusher) {\n props.pusher.connection.bind(\"connected\", () => {\n console.debug(`[PUSHER] [PUSHER-CONNECTED]`);\n });\n props.pusher.connection.bind(\"unavailable\", () => {\n console.debug(`[PUSHER] [PUSHER-UNAVAILABLE]`);\n });\n props.pusher.connection.bind(\"failed\", () => {\n console.debug(`[PUSHER] [PUSHER-FAILED]`);\n });\n props.pusher.connection.bind(\"disconnected\", () => {\n console.debug(`[PUSHER] [PUSHER-DISCONNECTED]`);\n });\n props.pusher.connection.bind(\"error\", (err: any) => {\n if (err?.data?.code === 4004) {\n Sentry.addBreadcrumb({\n category: \"pusher\",\n type: \"Error\",\n message: \"Pusher - connection limit exceeded\",\n data: err,\n level: \"error\"\n });\n let error = new Error();\n error.name = \"Pusher Error\";\n error.message = \"Pusher connection limit exceeded\";\n Sentry.captureException(error);\n }\n });\n }\n }, [props.pusher]);\n\n useEffect(() => {\n if (props.currentTab) {\n if (props.currentTab === \"homeDelivery.unconfirmed\") {\n props.clearHomeDeliveryNotifications();\n }\n if (props.currentTab === \"pickup.unconfirmed\") {\n props.clearPickupNotifications();\n }\n }\n }, [props.currentTab]);\n\n function audioCancel() {\n if (\n (props.currentTab == \"homeDelivery.unconfirmed\" ||\n props.currentTab == \"pickup.unconfirmed\") &&\n props.notifications.pickup.count == 0 &&\n props.notifications.home_delivery.count == 0\n ) {\n cancelUnconfirmedAudio();\n }\n }\n\n useEffect(() => {\n if (document.hasFocus()) {\n audioCancel();\n }\n else {\n window.addEventListener(\"focus\", audioCancel); \n }\n return () => {\n window.removeEventListener(\"focus\", audioCancel);\n };\n }, [JSON.stringify(props.notifications)]);\n\n const bindOrderEvents = (channel: any) => {\n channel.bind(\"marked_as_ready\", (data: any) => {\n console.debug(\n `[PUSHER] [marked_as_ready] [${props.selectedBranch.name}]`,\n data\n );\n let messageDelay =\n Math.floor(new Date().getTime() / 1000) -\n Math.floor(data.occurred_at / 1000);\n Sentry.setTag(\"pusherMsgDelay\", messageDelay);\n\n if (data.occurred_at && messageDelay < 5) {\n // process event only if the pusher message is delivered in under 5 seconds\n props.orderMarkedReadyEvent(data);\n } else {\n console.error(\n `[PUSHER] Delay in message delivery: ${messageDelay} seconds`\n );\n }\n });\n\n channel.bind(\"marked_pickup_as_ready\", (data: any) => {\n console.debug(\n `[PUSHER] [marked_pickup_as_ready] [${props.selectedBranch.name}]`,\n data\n );\n\n let messageDelay =\n Math.floor(new Date().getTime() / 1000) -\n Math.floor(data.occurred_at / 1000);\n Sentry.setTag(\"pusherMsgDelay\", messageDelay);\n\n if (data.occurred_at && messageDelay < 5) {\n // process event only if the pusher message is delivered in under 5 seconds\n props.orderPickUpMarkedReady(data);\n } else {\n console.error(\n `[PUSHER] Delay in message delivery: ${messageDelay} seconds`\n );\n }\n });\n\n channel.bind(\"rider_assigned\", (data: any) => {\n console.debug(\n `[PUSHER] [rider_assigned] [${props.selectedBranch.name}]`,\n data\n );\n\n let messageDelay =\n Math.floor(new Date().getTime() / 1000) -\n Math.floor(data.occurred_at / 1000);\n Sentry.setTag(\"pusherMsgDelay\", messageDelay);\n\n if (data.occurred_at && messageDelay < 5) {\n // process event only if the pusher message is delivered in under 5 seconds\n if (data.order_payload && Object.keys(data.order_payload).length > 0) {\n if (props.company.rider_app_enabled) {\n if (\n \"logistics_job\" in data.order_payload &&\n data.order_payload.logistics_job?.status !==\n LOGISTICS_PARTNER_ORDER_CANCELLED_STATUS\n ) {\n props.orderPartnerRiderAssigned(data);\n } else {\n props.orderCompanyRiderAssigned(data);\n }\n } else {\n props.orderRiderAssigned(data);\n }\n } else {\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n } else {\n console.error(\n `[PUSHER] Delay in message delivery: ${messageDelay} seconds`\n );\n }\n });\n\n channel.bind(\"marked_as_delivered\", (data: any) => {\n console.debug(\n `[PUSHER] [marked_as_delivered] [${props.selectedBranch.name}]`,\n data\n );\n\n let messageDelay =\n Math.floor(new Date().getTime() / 1000) -\n Math.floor(data.occurred_at / 1000);\n Sentry.setTag(\"pusherMsgDelay\", messageDelay);\n\n if (data.occurred_at && messageDelay < 5) {\n // process event only if the pusher message is delivered in under 5 seconds\n props.orderMarkedDelivered(data);\n } else {\n console.error(\n `[PUSHER] Delay in message delivery: ${messageDelay} seconds`\n );\n }\n });\n\n channel.bind(\"marked_as_collected\", (data: any) => {\n console.debug(\n `[PUSHER] [marked_as_collected] [${props.selectedBranch.name}]`\n );\n\n let messageDelay =\n Math.floor(new Date().getTime() / 1000) -\n Math.floor(data.occurred_at / 1000);\n Sentry.setTag(\"pusherMsgDelay\", messageDelay);\n\n if (data.occurred_at && messageDelay < 5) {\n // process event only if the pusher message is delivered in under 5 seconds\n props.orderMarkedCollected(data);\n } else {\n console.error(\n `[PUSHER] Delay in message delivery: ${messageDelay} seconds`\n );\n }\n });\n\n channel.bind(\"marked_as_reprinted\", (data: any) => {\n console.debug(\n `[PUSHER] [marked_as_reprinted] [${props.selectedBranch.name}]`\n );\n if (data.order_payload !== undefined) {\n props.orderMarkedReprinted(data);\n } else {\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n });\n\n channel.bind(\"confirmed\", (data: any) => {\n console.debug(`[PUSHER] [confirmed] [${props.selectedBranch.name}]`);\n props.orderConfirmed(data);\n });\n\n channel.bind(\"rejected\", (data: any) => {\n console.debug(`[PUSHER] [rejected] [${props.selectedBranch.name}]`);\n props.orderRejected(data);\n });\n\n channel.bind(\"created\", (data: any) => {\n console.debug(`[PUSHER] [created] [${props.selectedBranch.name}]`);\n if (data.scheduled && data.order_status !== \"unconfirmed\") {\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n if (data.order_status === \"unconfirmed\") {\n if (\n props.company.user_permissions?.includes(\"weborder.manage\") ||\n props.company.user_permissions?.includes(\"all.manage\")\n ) {\n playUnconfirmedOrderAudio();\n }\n } else {\n playNewOrderAudio();\n }\n props.orderCreated(data);\n });\n\n channel.bind(\"updated\", (data: any) => {\n console.debug(`[PUSHER] [updated] [${props.selectedBranch.name}]`);\n // props.orderUpdated(data); TODO: Confirm this behaviour\n hardRefresh();\n });\n\n channel.bind(\"voided\", (data: any) => {\n console.debug(`[PUSHER] [voided] [${props.selectedBranch.name}]`);\n // props.orderVoided(data);\n hardRefresh();\n });\n\n channel.bind(\"customer_arrived\", (data: any) => {\n console.debug(\n `[PUSHER] [customer_arrived] [${props.selectedBranch.name}]`\n );\n if (data.order_payload == undefined || data.order_payload == {}) {\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n props.customerArrived(data);\n });\n\n channel.bind(\"marked_as_picked_up\", (data: any) => {\n console.debug(\n `[PUSHER] [marked_as_picked_up] [${props.selectedBranch.name}]`\n );\n if (data.order_payload == undefined || data.order_payload == {}) {\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n props.orderMarkedPickedUp(data);\n });\n\n channel.bind(\"rider_unassigned\", (data: any) => {\n console.debug(\n `[PUSHER] [rider_unassigned] [${props.selectedBranch.name}]`\n );\n if (data.order_payload == undefined || data.order_payload == {}) {\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n props.orderRiderUnassigned(data);\n });\n\n channel.bind(\"tip_collected\", (data: any) => {\n console.debug(`[PUSHER] [tip_collected] [${props.selectedBranch.name}]`);\n if (data.order_payload == undefined || data.order_payload == {}) {\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n props.orderTipCollected(data);\n });\n };\n\n const bindLogisticJobEvents = (channel: any) => {\n channel.bind(\"job_updated\", (data: any) => {\n console.debug(`[PUSHER] [job_updated] `, data);\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n if (data.status == 3) {\n props.logisticJobCancelled(data);\n }\n if (data.metadata.failure_message) {\n props.logisticCancelFailed(data);\n }\n });\n\n channel.bind(\"job_cancelled\", (data: any) => {\n console.debug(`[PUSHER] [job_cancelled] `, data);\n props.logisticJobCancelled(data);\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n });\n\n channel.bind(\"job_created\", (data: any) => {\n console.debug(`[PUSHER] [job_created] `, data);\n props\n .fetchOrder(data.order_id)\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchScheduledOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n if (data.metadata.failure_message) {\n props.logisticCancelFailed(data);\n }\n });\n };\n\n return (\n <>\n {!hideUnconfirmed ? : null}\n
\n {props.loader.loading && }\n \n \n
\n \n
\n
\n \n );\n}\nconst mapStateToProps = (state: any) => {\n let loader = state.loader;\n let selectedBranch = state.company.selected_branch;\n let branches = state.branches;\n let company = state.company.company_details;\n let payments = state.payments;\n let currentTab = state.currentTab;\n let notifications = state.notifications;\n\n return {\n loader,\n selectedBranch,\n branches,\n company,\n payments,\n currentTab,\n notifications,\n };\n};\n\nconst mapDispatchToProps = {\n fetchCompany: companyConfigurations.fetchCompany,\n fetchBranches: branchOperations.fetchBranches,\n fetchPayments: paymentsOperations.fetchPayments,\n fetchDrivers: driverOperations.fetchDrivers,\n fetchOrder: orderOperations.fetchOrder,\n selectBranch: branchOperations.selectBranch,\n orderMarkedReadyEvent: orderEventsOperations.orderMarkedReady,\n orderPickUpMarkedReady: orderEventsOperations.orderPickUpMarkedReady,\n orderRiderAssigned: orderEventsOperations.orderRiderAssigned,\n orderMarkedDelivered: orderEventsOperations.orderMarkedDelivered,\n orderMarkedCollected: orderEventsOperations.orderMarkedCollected,\n orderCreated: orderEventsOperations.orderCreated,\n orderUpdated: orderEventsOperations.orderUpdated,\n orderVoided: orderEventsOperations.orderVoided,\n orderConfirmed: orderEventsOperations.orderConfirmed,\n orderRejected: orderEventsOperations.orderRejected,\n setDeliveredRefreshRequired:\n homeDeliveryOperations.setDeliveredRefreshRequired,\n setCollectedRefreshRequired: pickupOperations.setCollectedRefreshRequired,\n fetchScheduledOrders: scheduledOperations.fetchScheduledOrders,\n orderMarkedReprinted: orderEventsOperations.orderMarkedReprinted,\n clearHomeDeliveryNotifications:\n notificationOperations.clearHomeDeliveryUnconfirmedNotification,\n clearPickupNotifications:\n notificationOperations.clearPickupUnconfirmedNotification,\n logisticJobCancelled: logisticPartnersOperations.logisticJobCancelled,\n logisticCancelFailed: logisticPartnersOperations.logisticCancelFailed,\n fetchPrintSettings: printSettingsOperations.fetchPrintSettings,\n fetchLogisticPartners: logisticPartnersOperations.fetchLogisticPartners,\n customerArrived: orderEventsOperations.customerArrived,\n orderMarkedPickedUp: orderEventsOperations.orderMarkedPickedUp,\n fetchRiderProximity: riderOperations.fetchRiderProximity,\n orderRiderUnassigned: orderEventsOperations.orderRiderUnassigned,\n orderTipCollected: orderEventsOperations.orderTipCollected,\n orderCompanyRiderAssigned: orderEventsOperations.orderCompanyRiderAssigned,\n orderPartnerRiderAssigned: orderEventsOperations.orderPartnerRiderAssigned,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Header);\n","import { useContext } from \"react\";\nimport { AudioContext } from \"../context/audioContext\";\nimport { audioContextType } from \"../types/audioContextType\";\n\nconst useNotifyAudioContext = () => {\n const context = useContext(AudioContext) as audioContextType;\n return context;\n};\n\nexport { useNotifyAudioContext };\n","import React, { useEffect, useState } from \"react\";\nimport { useRef } from \"react\";\nimport { connect } from \"react-redux\";\nimport { usePrevious } from \"../../helpers/utils\";\n\ninterface iTabBadgeProps {\n count: any;\n is_loading: boolean;\n}\n\nfunction TabBadge(props: iTabBadgeProps) {\n const count: any = useRef(null);\n const previousCount: any = usePrevious(props.count);\n const previousLoadingState: any = usePrevious(props.is_loading);\n\n useEffect(() => {\n if (\n (previousLoadingState === false || previousLoadingState === undefined) &&\n props.count > previousCount\n ) {\n count.current.classList.add(\"bounce\");\n count.current.addEventListener(\n \"webkitAnimationEnd\",\n function () {\n count.current.classList.remove(\"bounce\");\n },\n false\n );\n }\n }, [props.count]);\n\n return (\n \n {props.count}\n {previousCount}\n \n );\n}\n\nexport default TabBadge;\n","import React from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport TabBadge from \"../tabBadge\";\n\ninterface ITabNavigationProps {\n tabInfo: any;\n}\n\nfunction TabNavigation(props: ITabNavigationProps) {\n return (\n
    \n {props.tabInfo.map((tab: any, index: any) => {\n return !tab.is_hidden ? (\n \n {tab.name}{\" \"}\n \n \n ) : null;\n })}\n
\n );\n}\n\nexport default TabNavigation;\n","export const SET_CURRENT_TAB = \"currentTab/SET_CURRENT_TAB\";\n","import actions from \"./actions\";\n\nconst setCurrentTab = actions.setCurrentTab;\n\nexport default {\n setCurrentTab,\n};\n","import * as types from \"./types\";\n\nconst setCurrentTab = (tabName: string) => ({\n type: types.SET_CURRENT_TAB,\n payload: tabName\n});\n\nexport default { setCurrentTab }","import reducer from \"./reducers\"\n\nexport { default as currentTabOperations } from \"./operations\";\n\nexport default reducer;","import * as types from \"./types\";\n\nconst currentTabReducer = (state: any=\"\", action: any) => {\n switch(action.type) {\n case types.SET_CURRENT_TAB:\n return action.payload || \"\";\n default: return state\n }\n}\n\nconst reducer = currentTabReducer;\n\nexport default reducer;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\nfunction NoOrders() {\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n );\n}\n\nexport default NoOrders;\n","import React from \"react\";\n\ninterface IModalCloseProps {\n onClick?: () => void;\n}\n\nconst ModalCloseIcon = (props: IModalCloseProps) => {\n return (\n \n \n \n );\n};\nexport default ModalCloseIcon;\n","export const FETCH_REPRINTS = \"reprints/FETCH_REPRINTS\";\nexport const FETCH_REPRINTS_SUCCESS = \"reprints/FETCH_REPRINTS_SUCCESS\";\nexport const FETCH_REPRINTS_FAIL = \"reprints/FETCH_REPRINTS_FAIL\";\nexport const RESET_REPRINTS = \"reprints/RESET_REPRINTS\";\nexport const SET_ORDER_MARK_AS_REPRINTED = \"reprints/SET_ORDER_MARK_AS_REPRINTED\";\nexport const SET_ORDER_MARK_AS_REPRINTED_SUCCESS = \"reprints/SET_ORDER_MARK_AS_REPRINTED_SUCCESS\";\nexport const SET_ORDER_MARK_AS_REPRINTED_FAIL = \"reprints/SET_ORDER_MARK_AS_REPRINTED_FAIL\";\n","import actions from \"./actions\";\n\nconst fetchReprints = actions.fetchReprints;\nconst resetReprints = actions.resetReprints;\nconst markOrderReprinted = actions.markOrderReprinted;\n\nexport default {\n fetchReprints,\n resetReprints,\n markOrderReprinted,\n};\n","import * as types from \"./types\";\n\nconst fetchReprints = (orderId: any) => ({\n type: types.FETCH_REPRINTS,\n payload: {\n request: {\n method: \"get\",\n url: `/api/v1/orders/${orderId}/print-templates`,\n },\n },\n});\n\nconst resetReprints = () => ({\n type: types.RESET_REPRINTS,\n payload: [],\n});\n\nconst markOrderReprinted = (orderId: any) => ({\n type: types.SET_ORDER_MARK_AS_REPRINTED,\n payload: {\n request: {\n method: \"post\",\n url: `/api/v1/orders/${orderId}/mark-as-reprinted`,\n },\n },\n param: { order_id: orderId },\n});\n\nexport default {\n fetchReprints,\n resetReprints,\n markOrderReprinted,\n};\n","import reducer from \"./reducers\"\n\nexport { default as reprintsOperations } from \"./operations\";\n\nexport default reducer\n","import * as types from \"./types\";\n\nconst reprintsReducer = ( state = [], action: any ) => {\n switch( action.type ) {\n case types.FETCH_REPRINTS_SUCCESS:\n return action.payload.data || [];\n case types.RESET_REPRINTS:\n return action.payload || []\n default: return state;\n }\n};\n\nconst reducer = reprintsReducer;\n\nexport default reducer;\n","import React, { useState } from \"react\";\nimport { Form, Modal } from \"react-bootstrap\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport Swal from \"sweetalert2\";\n\ninterface ICancellationPopupProps {\n onCancel: any;\n cancelReasons?: any;\n onRejectConfirm: any;\n supervisorPassword?: any;\n}\n\nfunction CancellationPopup(props: ICancellationPopupProps) {\n const [selectedReasonId, setSelectedReasonId] = useState(0 as any);\n const [cancellationReasons, setCancellationReasons] = useState([] as any);\n const [supervisorPassword, setSupervisorPassword] = useState(\"\");\n const [disabledConfirm, setDisabledConfirm] = useState(true);\n const [passwordValid, setPasswordValid] = useState(true);\n const [reasonValid, setReasonValid] = useState(true);\n const passwordInput: any = React.useRef();\n\n React.useEffect(() => {\n setCancellationReasons(props.cancelReasons);\n }, [props.cancelReasons]);\n\n React.useEffect(() => {\n if (cancellationReasons.length) {\n setSelectedReasonId(cancellationReasons[0].id);\n }\n }, [cancellationReasons]);\n\n React.useEffect(() => {\n if (selectedReasonId !== 0) {\n if (!props.supervisorPassword) {\n setDisabledConfirm(false);\n } else {\n if (supervisorPassword.length > 0) {\n setDisabledConfirm(false);\n }\n }\n }\n }, [selectedReasonId, supervisorPassword]);\n\n const onselectionchange = (e: any) => {\n setSelectedReasonId(e.target.value);\n };\n\n const onConfirm = (e: any) => {\n e.preventDefault();\n if (selectedReasonId === 0) {\n setReasonValid(false);\n }\n props.onRejectConfirm(selectedReasonId, supervisorPassword);\n };\n\n const onCancel = (e: React.SyntheticEvent) => {\n e.preventDefault();\n props.onCancel();\n };\n\n return (\n props.onCancel()}\n show={true}\n >\n
\n

\n \n \n \n

\n \n \n \n :\n \n {cancellationReasons.length ? (\n {\n setReasonValid(true);\n onselectionchange(e);\n }}\n isValid={false}\n className={!reasonValid ? \"error-input\" : \"\"}\n >\n {cancellationReasons.map((reason: any, index: any) => {\n return (\n \n {reason.reason}\n \n );\n })}\n \n ) : null}\n \n {props.supervisorPassword ? (\n \n \n :\n \n {\n setPasswordValid(true);\n setSupervisorPassword(e.target.value);\n }}\n ref={passwordInput}\n required\n type=\"password\"\n className={!passwordValid ? \"error-input\" : \"\"}\n />\n \n ) : null}\n\n
\n \n \n \n \n
\n \n
\n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let cancelReasons = state.cancelReasons;\n let supervisorPassword = state.company.company_details.supervisor_password;\n return { cancelReasons, supervisorPassword };\n};\n\nexport default connect(mapStateToProps, null)(CancellationPopup);\n","import actions from \"./actions\";\n\nconst fetchCancelReasons = actions.fetchCancelReasons;\n\nexport default {\n fetchCancelReasons,\n};\n","import * as types from \"./types\";\nconst fetchCancelReasons = () => ({\n type: types.FETCH_CANCEL_REASONS,\n payload: {\n request: {\n method: \"get\",\n url: \"/api/v1/cancellation-reasons/list\",\n },\n },\n});\n\nexport default {\n fetchCancelReasons,\n};\n","export const FETCH_CANCEL_REASONS = \"cancelReasons/FETCH_CANCEL_REASONS\";\nexport const FETCH_CANCEL_REASONS_SUCCESS =\n \"cancelReasons/FETCH_CANCEL_REASONS_SUCCESS\";\nexport const FETCH_CANCEL_REASONS_FAIL = \"cancelReasons/FETCH_CANCEL_REASONS_FAIL\";\n","import reducer from \"./reducers\";\n\nexport { default as cancelReasonsOperations } from \"./operations\";\n\nexport default reducer\n","import * as types from \"./types\";\n\nconst cancelReasonsReducer = (state = [], action: any) => {\n switch (action.type) {\n case types.FETCH_CANCEL_REASONS_SUCCESS:\n return action.payload.data || [];\n\n default:\n return state;\n }\n};\n\nconst reducer = cancelReasonsReducer;\n\nexport default reducer;\n","import SapaadLogo from \"../images/sapaad-square.png\";\nimport ZomatoLogo from \"../images/partners/zomato.png\";\nimport TalabatLogo from \"../images/partners/talabat.png\";\nimport DeliverooLogo from \"../images/partners/deliveroo.png\";\nimport SapaadOnline from \"../images/partners/sapaad-online.png\";\nimport SapaadDirect from \"../images/partners/sapaad-direct.png\";\nimport Deliverect from \"../images/partners/generic.png\";\nimport UberEats from \"../images/partners/uber.png\";\nimport Foodpanda from \"../images/partners/foodpanda.png\";\nimport Gpay from \"../images/partners/gpay.png\";\nimport Grab from \"../images/partners/grab.png\";\nimport Lalamove from \"../images/third-party-delivery/lalamove.png\";\nimport Lyve from \"../images/third-party-delivery/lyve.png\";\nimport Quiqup from \"../images/third-party-delivery/quiqup.png\";\nimport Shadowfax from \"../images/third-party-delivery/shadowfax.png\";\nimport ZomatoGo from \"../images/third-party-delivery/zomato-go.png\";\nimport Otter from \"../images/partners/generic.png\";\nimport UrbanPiper from \"../images/partners/generic.png\";\nimport MyMenu from \"../images/partners/my-menu.png\";\n\nconst orderImages = {\n sapaad_pos: {\n image: SapaadLogo,\n },\n sapaad_online: {\n image: SapaadOnline,\n },\n zomato: {\n image: ZomatoLogo,\n },\n talabat: {\n image: TalabatLogo,\n },\n deliveroo: {\n image: DeliverooLogo,\n },\n byod: {\n image: SapaadDirect,\n },\n deliverect: {\n image: Deliverect,\n },\n uber_eats: {\n image: UberEats,\n },\n foodpanda: {\n image: Foodpanda,\n },\n gpay_food: {\n image: Gpay,\n },\n grab: {\n image: Grab,\n },\n lalamove: {\n image: Lalamove,\n },\n lyve: {\n image: Lyve,\n },\n quiqup: {\n image: Quiqup,\n },\n shadowfax: {\n image: Shadowfax,\n },\n \"zomato-go\": {\n image: ZomatoGo,\n },\n otter: {\n image: Otter,\n },\n urban_piper: {\n image: UrbanPiper,\n },\n my_menu: {\n image: MyMenu,\n },\n} as any;\n\nexport default orderImages;\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport {\n calculateSubtotal,\n calculateTax,\n formatDecimal,\n} from \"../../../helpers/itemCalculations\";\nimport { updateOrderTotalAmount } from \"../../../helpers/orderFunctions\";\n\ninterface iOrderItemsDetailsProps {\n order: any;\n tax_inclusive?: any;\n currency?: any;\n}\n\nfunction OrderItemsDetails(props: iOrderItemsDetailsProps) {\n const [orderItems, setOrderItems] = useState([] as any);\n const [totalDiscount, setTotalDiscount] = useState(0);\n const [taxTotal, setTaxTotal] = useState(0);\n const [loyaltyRedeemedValue, setloyaltyRedeemedValue] = useState(0);\n\n useEffect(() => {\n setOrderItems(addModifiersToItems(props.order.order_extended_info.items));\n getTotalDiscounts(props.order.order_extended_info.items);\n if (props.order.order_extended_info.payments.length) {\n props.order.order_extended_info.payments.map((payment: any) => {\n if (payment.name === \"Loyalty\") {\n setloyaltyRedeemedValue(payment.amount);\n }\n });\n }\n }, [props.order]);\n\n const addModifiersToItems = (items: any) => {\n let parentItems = items.filter(\n (item: any) => item.order_item_parent_id === 0 && item.deleted === false\n );\n parentItems.map((parentItem: any) => {\n parentItem.modifiers = [];\n });\n\n items.map((item: any) => {\n parentItems.map((parentItem: any) => {\n if (\n item.order_item_parent_id === parentItem.order_item_id &&\n item.deleted === false\n ) {\n parentItem.modifiers.push(item);\n }\n });\n });\n return parentItems;\n };\n\n const getModifierItemSubprice = (item: any) => {\n let amount: any = item.amount;\n item.modifiers.map((modifier: any) => {\n amount += modifier.amount;\n });\n return formatDecimal(amount);\n };\n\n const getTotalDiscounts = (items: any) => {\n let discountAppliedItems = items.filter(\n (item: any) => item.discount_amount !== null\n );\n let total_discount = 0;\n discountAppliedItems.map((item: any) => {\n total_discount += item.discount_amount;\n });\n setTotalDiscount(total_discount);\n };\n\n useEffect(() => {\n setTaxTotal(\n calculateTax(orderItems, props.order.order_extended_info.surcharges)\n );\n }, [orderItems]);\n\n return (\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {orderItems.length\n ? orderItems\n .map((orderItem: any, index: any) => {\n return (\n
\n
\n {orderItem.name}\n {orderItem.discount_name ? (\n
\n \n :\n {\" \"}\n {orderItem.discount_name}\n
\n ) : null}\n {orderItem.modifiers.length ? (\n
\n
    \n {orderItem.modifiers\n\n .map((modifierItem: any, index: any) => {\n return (\n
  • \n {modifierItem.qty_dec /\n orderItem.qty_dec >\n 1\n ? `${\n modifierItem.qty_dec /\n orderItem.qty_dec\n }x `\n : null}\n {modifierItem.name}\n \n {formatDecimal(modifierItem.amount)}\n \n
  • \n );\n })\n .reverse()}\n
\n
\n ) : null}\n {orderItem.note ? (\n
\n :{\" \"}\n {orderItem.note}\n
\n ) : null}\n
\n
\n {orderItem.qty_dec}\n
\n
\n {formatDecimal(orderItem.price)}\n
\n \n {orderItem.discount_name ? (\n

\n {orderItem.modifiers.length\n ? formatDecimal(\n getModifierItemSubprice(orderItem) -\n orderItem.discount_amount\n )\n : formatDecimal(\n orderItem.amount - orderItem.discount_amount\n )}\n

\n ) : null}\n \n {orderItem.modifiers.length\n ? getModifierItemSubprice(orderItem)\n : formatDecimal(orderItem.amount)}\n

\n
\n
\n );\n })\n .reverse()\n : false}\n
\n
\n
\n
\n
\n

\n :\n

\n

{calculateSubtotal(orderItems)}

\n
\n {totalDiscount > 0 ? (\n
\n

\n :\n

\n

-{formatDecimal(totalDiscount)}

\n
\n ) : null}\n {props.order.order_extended_info.surcharges.length\n ? props.order.order_extended_info.surcharges.map(\n (surcharge: any, index: any) => {\n return (\n
\n

{surcharge.name + \" : \"}

\n

{formatDecimal(surcharge.amount)}

\n
\n );\n }\n )\n : null}\n\n {props.order.order_extended_info.discounts.length\n ? props.order.order_extended_info.discounts.map(\n (discount: any, index: any) => {\n return (\n
\n

{discount.name + \" : \"}

\n

{`-${formatDecimal(\n discount.amount\n )}`}

\n
\n );\n }\n )\n : null}\n {!props.tax_inclusive && taxTotal > 0 ? (\n
\n

\n :\n

\n

{formatDecimal(taxTotal)}

\n
\n ) : null}\n {loyaltyRedeemedValue ? (\n
\n

\n :{\" \"}\n

\n

\n -{formatDecimal(loyaltyRedeemedValue)}\n

\n
\n ) : null}\n
\n

\n :{\" \"}\n

\n

\n {props.currency}{\" \"}\n {formatDecimal(updateOrderTotalAmount(props.order))}\n

\n
\n
\n
\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let currency = state.company.company_details.currency;\n let tax_inclusive = state.company.company_details.is_tax_inclusive;\n return { currency, tax_inclusive };\n};\n\nexport default connect(mapStateToProps)(OrderItemsDetails);\n","import { faHistory } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { useEffect, useState } from \"react\";\nimport { FormattedMessage , useIntl} from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { getStatusTime } from \"../../../helpers/orderFunctions\";\nimport { getEnvValueFor } from \"../../../helpers/utils\";\n\ninterface iCustomerDetailsProps {\n order: any;\n branches?: any;\n}\n\nfunction CustomerDetails(props: iCustomerDetailsProps) {\n const [branches, setBranches] = useState([] as any);\n\n useEffect(() => {\n setBranches(props.branches);\n }, [props.branches]);\n\n const getBranchName = (locationId: any) => {\n let branchName = \"\";\n branches.find((branch: any) => {\n if (branch.id == locationId) {\n branchName = branch.name;\n }\n });\n return branchName;\n };\n\n const formattedMessage = (formatId: any) => {\n const intl = useIntl();\n const translatedMessage = intl.formatMessage({ id: formatId })\n return translatedMessage;\n };\n\n return (\n
\n {!props.order.order_extended_info.take_away ? (\n
\n {props.order.order_extended_info.delivery_address.room_number ? (\n \n {props.order.order_extended_info.delivery_address.room_number}\n \n ) : null}\n {props.order.order_extended_info.delivery_address.building ? (\n \n {props.order.order_extended_info.delivery_address.building}\n \n ) : null}\n {props.order.order_extended_info.delivery_address.land_mark ? (\n \n {props.order.order_extended_info.delivery_address.land_mark}\n \n ) : null}\n {props.order.order_extended_info.delivery_address.street ? (\n \n {props.order.order_extended_info.delivery_address.street}\n \n ) : null}\n {props.order.order_extended_info.take_away ? (\n props.order.location_id ? (\n \n {getBranchName(props.order.location_id) || \"\"}\n \n ) : null\n ) : null}\n
\n ) : null}\n
\n {props.order.scheduled_for > props.order.placed_at ? (\n
\n

\n :\n

\n : {getStatusTime(props.order.placed_at)}\n
\n ) : null}\n\n {props.order.order_extended_info.customer.name ? (\n
\n

\n \n

\n :{\" \"}\n

\n {\" \"}{props.order.order_extended_info.customer.name}\n \n \n \n \n \n

\n
\n ) : null}\n {props.order.order_extended_info.customer.telephone ? (\n
\n

\n \n

\n : {props.order.order_extended_info.customer.telephone}\n
\n ) : null}\n {props.order.order_extended_info.customer.alt_telephone_number ? (\n
\n

\n \n

\n : {props.order.order_extended_info.customer.alt_telephone_number}\n
\n ) : null}\n {props.order.location_id ? (\n
\n

\n {props.order.order_extended_info.take_away ? (\n \n ) : (\n \n )}\n

\n : {getBranchName(props.order.location_id) || \"\"}\n
\n ) : null}\n {props.order.order_extended_info.delivery_address.area ? (\n
\n

\n \n

\n : {props.order.order_extended_info.delivery_address.area}\n
\n ) : null}\n
\n {props.order.order_extended_info.notes ? (\n
\n \n

{props.order.order_extended_info.notes}

\n
\n ) : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let branches = state.branches;\n return { branches };\n};\n\nexport default connect(mapStateToProps)(CustomerDetails);\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\ninterface iThirdPartyDetailsProps {\n details: any;\n}\n\nfunction ThirdPartyDetails(props: iThirdPartyDetailsProps) {\n return (\n
\n
\n

\n \n

\n
{props.details}
\n
\n
\n );\n}\n\nexport default ThirdPartyDetails;\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { formatDecimal } from \"../../../helpers/itemCalculations\";\n\ninterface iPaymentDetailsProps {\n payments: any;\n dmCanRecordPayment: boolean;\n isOrderDelivered: boolean;\n totalAmount: any;\n}\n\nfunction PaymentDetails(props: iPaymentDetailsProps) {\n const [payments, setPayments] = useState([] as any);\n\n const getReturnedAmount = (amount: any, amountCollected: any) => {\n let balance = amountCollected - amount;\n if (balance > 0) {\n return formatDecimal(balance);\n } else {\n return formatDecimal(0);\n }\n };\n\n useEffect(() => {\n setPayments(props.payments);\n }, [props.payments]);\n\n useEffect(() => {\n // When Record payment is off and Order is delivered showing Cash as default payment\n if (props.isOrderDelivered && !props.dmCanRecordPayment) {\n let new_payment: any = {\n id: 1,\n name: \"Cash\",\n amount: props.totalAmount,\n };\n if (props.payments.length === 0) {\n setPayments([new_payment]);\n } else {\n if (\n props.payments.length === 1 &&\n props.payments[0].name === \"Loyalty\" &&\n props.totalAmount != 0\n ) {\n setPayments([\n ...props.payments,\n {\n ...new_payment,\n amount: props.totalAmount,\n },\n ]);\n }\n }\n }\n }, [props.dmCanRecordPayment, props.payments, props.totalAmount]);\n\n return (\n
\n
\n

\n \n

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {payments.length > 0 ? (\n
\n {payments.map((payment: any, index: any) => {\n return (\n
\n
{payment.name}
\n
\n {formatDecimal(payment.amount)}\n
\n
\n {payment.amount_collected\n ? formatDecimal(payment.amount_collected)\n : formatDecimal(payment.amount)}\n
\n
\n {payment.amount_collected\n ? getReturnedAmount(\n payment.amount,\n payment.amount_collected\n )\n : formatDecimal(0)}\n
\n
\n {payment.tip\n ? formatDecimal(payment.tip)\n : formatDecimal(0)}\n
\n
\n );\n })}\n
\n ) : (\n
\n \n
\n )}\n
\n
\n
\n );\n}\n\nexport default PaymentDetails;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\nconst orderStatus = {\n unconfirmed: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n created: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n marked_as_ready: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n rider_assigned: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n marked_as_picked_up: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n marked_as_delivered: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n marked_as_collected: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n order_updated: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n marked_as_reprinted: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n marked_as_confirmed: {\n online: {\n title: ,\n },\n call_center: {\n title: ,\n },\n walk_in: {\n title: ,\n },\n },\n} as any;\n\nexport default orderStatus;\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getStatusTime } from \"../../../helpers/orderFunctions\";\nimport orderStatus from \"../../../helpers/orderStatus\";\n\ninterface iStatusHistoryProps {\n order: any;\n}\n\nfunction StatusHistory(props: iStatusHistoryProps) {\n const [order, setOrder] = useState({} as any);\n\n useEffect(() => {\n setOrder(props.order);\n }, [props.order]);\n\n return (\n
\n
\n

\n \n

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n {props.order.status_updates.length > 0\n ? props.order.status_updates.map((status: any, index: any) => {\n if (status.event !== \"rider_unassigned\") {\n return (\n
\n
\n {\n orderStatus[status.event][props.order.order_type]\n .title\n }\n
\n
{status.staff_name}
\n
\n {getStatusTime(status.time)}\n
\n
\n );\n }\n })\n : null}\n
\n
\n
\n
\n );\n}\n\nexport default StatusHistory;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getWhatModifiedString } from \"../../../helpers/modificationString\";\nimport { getStatusTime } from \"../../../helpers/orderFunctions\";\n\ninterface iModificationHistoryProps {\n order: any;\n}\n\nfunction ModificationHistory(props: iModificationHistoryProps) {\n const getModificationHistory = (items: any) => {\n let modifications: any = [];\n items.filter((item: any) => {\n if (item.modification_history.length) {\n item.modification_history = item.modification_history.map(\n (modification: any) => {\n modification.item_name = item.name;\n return modification;\n }\n );\n modifications = modifications.concat(item.modification_history);\n }\n });\n let modification_history;\n if (modifications.length) {\n modification_history = modifications.map((item: any, index: any) => {\n return (\n
\n
{item.item_name}
\n
\n {getWhatModifiedString(item.item_name, item)}\n
\n
\n {item.staff_name ? item.staff_name : \"\"}\n
\n
{getStatusTime(item.created_at)}
\n
{item.reason}
\n
\n );\n });\n } else {\n modification_history = (\n
\n \n
\n );\n }\n return modification_history;\n };\n\n return (\n
\n
\n

\n \n

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {props.order.event === \"order_updated\" ||\n props.order.event === \"scheduled_order_fired\" ? (\n
\n {props.order.order_extended_info.items.length > 0\n ? getModificationHistory(props.order.order_extended_info.items)\n : null}\n
\n ) : (\n
\n \n
\n )}\n
\n
\n
\n );\n}\n\nexport default ModificationHistory;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\nconst getWhatModifiedString = (item: any, modification: any) => {\n let whatModifiedString: any = \"\";\n if (\n modification.modification_type === \"quantity_increase\" ||\n modification.modification_type === \"quantity_decrease\"\n ) {\n whatModifiedString = (\n \n );\n }\n\n if (modification.modification_type === \"delete\") {\n whatModifiedString = (\n \n );\n }\n return whatModifiedString;\n};\n\nexport { getWhatModifiedString };\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Dropdown, Modal, Tabs, Tab } from \"react-bootstrap\";\nimport ModalCloseIcon from \"../modalCloseIcon\";\nimport SapaadLogo from \"../../images/sapaad-square.png\";\nimport {\n getStatusTime,\n updateOrderTotalAmount,\n} from \"../../helpers/orderFunctions\";\nimport { connect } from \"react-redux\";\nimport { reprintsOperations } from \"../../state/features/reprints\";\nimport {\n faCheckCircle,\n faCircleNotch,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { getEnvValueFor, isAggregator } from \"../../helpers/utils\";\nimport Swal from \"sweetalert2\";\nimport CancellationPopup from \"../cancellationReasonPopup\";\nimport { cancelReasonsOperations } from \"../../state/features/cancelReasons\";\nimport Eta_Bg from \"../../images/eta-bg.png\";\nimport orderImages from \"../../helpers/orderImage\";\nimport OrderItemsTable from \"../orderDetailsPopupComponents/orderItemsTable\";\nimport CustomerDetails from \"../orderDetailsPopupComponents/customerDetails\";\nimport ThirdPartyDetails from \"../orderDetailsPopupComponents/thirdPartyDetails\";\nimport PaymentDetails from \"../orderDetailsPopupComponents/paymentDetails\";\nimport StatusHistory from \"../orderDetailsPopupComponents/statusHistory\";\nimport ModificationHistory from \"../orderDetailsPopupComponents/modificationHistory\";\nimport * as Sentry from \"@sentry/react\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\ninterface OrderPopupProps {\n onClose?: any;\n order: any;\n orderType?: any;\n fetchReprints?: any;\n reprints?: any;\n resetReprints?: any;\n markOrderReprinted?: any;\n currentTab?: any;\n orderStatus?: any;\n user_permissions?: any;\n handleOrderApprove?: any;\n handleOrderReject?: any;\n dmCanRecordPayment?: any;\n defaultDeliveryEta?: any;\n fetchCancelReasons?: any;\n handleWalkinOrderApprove?: any;\n limboStateOrders?: any;\n loyaltyDetails: any;\n isAdmin?: boolean;\n}\n\nfunction OrderPopup(props: OrderPopupProps) {\n const [show, setShow] = useState(true);\n const [showStatusHistory, setShowStatusHistory] = useState(false);\n const [showReprints, setShowReprints] = useState(false);\n const [reprintsList, setReprintsList] = useState([] as any);\n const [showModify, handleModifyShow] = useState(true);\n const [showApproveRejectCta, setShowApproveRejectCta] = useState(false);\n const [showRepay, handleRepayShow] = useState(false);\n const [disableModify, handleModifyDisable] = useState(false);\n const [order, setOrder] = useState({} as any);\n const [eta, setEta] = React.useState(0 as number);\n const [disabledConfirm, setConfirmDisabled] = useState(false);\n const [etaInputFocus, setEtaInputFocus] = useState(true);\n const [showDeliveryEta, setShowDeliveryEta] = useState(false);\n const [showCancelPopup, setShowCancelPopup] = useState(false);\n const [aggregatorsDetailsShow, setAggregatorsDetailsShow] = useState(false);\n const [isLimboState, setIsLimboState] = useState(false);\n const [disableOrderApprove, setDisableOrderApprove] = useState(false);\n\n const etaInput: any = React.useRef();\n\n const showVoidOrderCta = useMemo(() => {\n if (!(props.orderStatus === \"unconfirmed\")) {\n if (\n (props.order.order_type === \"online\" ||\n props.order.order_type === \"walk_in\") &&\n !props.order.order_status.includes(\"delivered\")\n ) {\n return true;\n }\n }\n return false;\n }, [props.orderStatus, props.order?.order_type, props.order?.order_status]);\n\n const intl = useIntl();\n const formattedMessage = (formatId: any) => {\n const translatedMessage = intl.formatMessage({ id: formatId });\n return translatedMessage;\n };\n\n useEffect(() => {\n props.resetReprints();\n Sentry.addBreadcrumb({\n category: \"props\",\n type: \"Debug\",\n message: `order item ${props.order.order_id}`,\n data: {\n ...props.order,\n order_extended_info: {\n ...props.order.order_extended_info,\n items: props.order.order_extended_info.items.length,\n },\n },\n level: \"debug\",\n });\n }, []);\n\n useEffect(() => {\n setOrder(props.order);\n setShowStatusHistory(true);\n setEta(props.order.order_extended_info.delivery_eta);\n }, [props.order]);\n\n useEffect(() => {\n if (props.limboStateOrders.length) {\n if (props.limboStateOrders.includes(props.order.order_id)) {\n setIsLimboState(true);\n }\n }\n }, [props.limboStateOrders.length]);\n\n useEffect(() => {\n if (etaInput.current) {\n etaInput.current.focus();\n }\n }, [showApproveRejectCta, etaInputFocus]);\n\n const handleClose = () => {\n setShow(false);\n setTimeout(() => {\n props.onClose();\n }, 500);\n };\n\n const toggleReprints = (orderId: any) => {\n props\n .fetchReprints(orderId)\n .catch((err: AxiosErrorResponse) => console.log(err));\n setShowReprints(true);\n };\n\n useEffect(() => {\n setReprintsList(props.reprints);\n }, [props.reprints]);\n\n const closeReprints = () => {\n setShowReprints(false);\n };\n\n useEffect(() => {\n if (!props.user_permissions.includes(\"all.manage\")) {\n if (\n props.orderStatus === \"collected\" ||\n props.orderStatus === \"delivered\"\n ) {\n if (!props.user_permissions.includes(\"order.modify\")) {\n handleModifyShow(false);\n }\n if (props.order.order_type === \"online\") {\n handleModifyShow(false);\n }\n } else {\n if (!props.user_permissions.includes(\"order.create\")) {\n handleModifyShow(false);\n }\n }\n } else {\n if (\n props.order.order_type === \"online\" &&\n props.order.order_status.includes(\"delivered\")\n ) {\n handleModifyShow(false);\n }\n }\n if (\n props.order.order_type === \"online\" &&\n props.order.order_source !== \"sapaad_online\"\n ) {\n handleModifyShow(false);\n }\n if (!props.user_permissions.includes(\"all.manage\")) {\n if (!props.user_permissions.includes(\"weborders.confirm\")) {\n setDisableOrderApprove(true);\n }\n }\n }, [props.user_permissions]);\n\n useEffect(() => {\n if (\n (props.order.order_type === \"online\" ||\n props.order.order_type === \"walk_in\") &&\n props.order.order_status.includes(\"delivered\") &&\n props.order.is_cod\n ) {\n if (props.order.order_extended_info.take_away) {\n handleRepayShow(true);\n } else {\n if (props.dmCanRecordPayment) {\n handleRepayShow(true);\n }\n }\n }\n\n if (\n !props.order.is_cod &&\n props.order.order_type === \"online\" &&\n props.order.order_source === \"sapaad_online\"\n ) {\n handleModifyDisable(true);\n }\n if (\n props.order.order_type === \"online\" &&\n props.order.placed_at === props.order.scheduled_for &&\n !props.order.order_extended_info.take_away &&\n props.order.order_status.includes(\"unconfirmed\")\n ) {\n setShowDeliveryEta(true);\n }\n\n // Modify disabled for walk_in orders\n if (props.order.order_type === \"walk_in\") {\n handleModifyShow(false);\n }\n\n // Aggregators details show handle method\n if (\n props.order.order_type === \"online\" &&\n props.order.order_source != \"sapaad_online\"\n ) {\n setAggregatorsDetailsShow(true);\n }\n }, [props.order]);\n\n useEffect(() => {\n if (props.orderStatus === \"unconfirmed\") {\n setShowApproveRejectCta(true);\n handleModifyShow(false);\n }\n }, [props.orderStatus]);\n\n const openReprintWindow = (reprintUrl: any, orderId: any) => {\n // check which tab the current user is.\n if (\n props.currentTab === \"homeDelivery.delivered\" ||\n props.currentTab === \"pickup.collected\"\n ) {\n props.markOrderReprinted(orderId).then((response: any) => {\n if (response.payload.status === 200) {\n setTimeout(() => {\n window.open(\n `${reprintUrl}`,\n \"REPRINT\",\n `resizable=yes,width=400,height=500,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0`\n );\n }, 300);\n }\n })\n .catch((err: AxiosErrorResponse) => console.log(err));;\n } else {\n setTimeout(() => {\n window.open(\n `${reprintUrl}`,\n \"REPRINT\",\n `resizable=yes,width=400,height=500,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0`\n );\n }, 300);\n }\n closeReprints();\n };\n\n const handleDisabledModifyClick = () => {\n let text: any = formattedMessage(\"modify_err1\");\n let title: any = formattedMessage(\"modify_err\");\n Swal.fire({\n title: title,\n text: text,\n icon: \"info\",\n });\n };\n\n const handleDisabledApproveClick = () => {\n let text: any = formattedMessage(\"approve_err\");\n let title: any = formattedMessage(\"oops\");\n Swal.fire({\n title: title,\n text: text,\n icon: \"info\",\n });\n };\n\n const handleInputBlur = (e: any) => {\n let regExp = /^([0-9]|[0-9][0-9]|[0-9][0-9][0-9])$/;\n setEtaInputFocus(!regExp.test(e.target.value));\n };\n\n const setEtaInput = (e: any) => {\n let regExp = /^([0-9]|[0-9][0-9]|[0-9][0-9][0-9])$/;\n setConfirmDisabled(!regExp.test(e.target.value));\n setEta(e.target.value);\n };\n\n const handleApproveOrder = () => {\n if (showDeliveryEta) {\n props.handleOrderApprove(\n props.order.order_id,\n eta,\n props.order.order_source\n );\n setConfirmDisabled(true)\n } else {\n if (\n props.order.order_type === \"walk_in\" &&\n props.order.order_extended_info.take_away\n ) {\n if (props.loyaltyDetails && props.loyaltyDetails.walkin) {\n // redirect to pos for payment\n let form = document.querySelector(\n `#walkinOrderPay-${props.order.order_id}`\n ) as HTMLFormElement;\n window.open('',`walkinOrderPay-${props.order.order_id}`);\n form.submit();\n } else {\n props.handleWalkinOrderApprove(true);\n }\n } else {\n props.handleOrderApprove(\n props.order.order_id,\n props.order.order_source\n );\n setConfirmDisabled(true)\n }\n }\n };\n\n const handleOrderRejectClick = () => {\n props\n .fetchCancelReasons()\n .catch((err: AxiosErrorResponse) => console.log(err));\n setShowCancelPopup(true);\n };\n\n const handleRejectOrder = (cancelReasonId: any, supervisorPassword: any) => {\n props.handleOrderReject(\n props.order.order_id,\n parseInt(cancelReasonId),\n supervisorPassword\n );\n };\n\n const handleAggregatorVoidClick = () => {\n let text: any = formattedMessage(\"void_err\");\n Swal.fire({\n icon: \"info\",\n text: text,\n });\n };\n\n useEffect(() => {\n if (order.logistics_job) {\n if (\n order.logistics_job.status === 5 ||\n order.logistics_job.status === 6\n ) {\n handleModifyShow(false);\n }\n }\n }, [order]);\n\n return (\n \n \n
\n
\n \n
\n \n

\n {props.order.order_extended_info.order_number}\n

\n
\n {!props.order.is_cod ? (\n \n \n \n \n ) : null}\n
\n
\n \n
\n
\n {props.order.scheduled_for > props.order.placed_at ? (\n
\n
\n

\n :\n

\n

\n {getStatusTime(props.order.scheduled_for)}\n

\n
\n
\n ) : null}\n {showDeliveryEta ? (\n \n

\n \n

\n
\n {etaInputFocus ? (\n setEtaInputFocus(true)}\n onChange={(e: any) => setEtaInput(e)}\n />\n ) : (\n setEtaInputFocus(true)}>\n {eta} {\" \"}\n \n )}\n setEtaInputFocus(true)}>\n \n \n
\n
\n ) : null}\n
\n
\n \n } className=\"pt-3\">\n \n \n {aggregatorsDetailsShow &&\n props.order.order_extended_info.meta_note ? (\n \n ) : null}\n \n
\n \n }>\n {showStatusHistory ? (\n \n \n \n
\n ) : (\n <>\n )}\n \n \n
\n \n \n
\n {showModify ? (\n disableModify ? (\n
\n handleDisabledModifyClick()}\n />\n \n \n \n
\n ) : (\n \n \n \n )\n ) : null}\n {showApproveRejectCta ? (\n <>\n {disableOrderApprove ? (\n
\n handleDisabledApproveClick()}\n />\n handleApproveOrder()}\n className=\"btn btn-success px-5 disabled-button allowed\"\n disabled\n >\n \n \n
\n ) : (\n handleApproveOrder()}\n className={\n disabledConfirm\n ? \"btn btn-success px-5 disabled-button\"\n : \"btn btn-success px-5\"\n }\n disabled={disabledConfirm}\n >\n {isLimboState ? (\n \n ) : (\n \n )}\n \n )}\n {disableOrderApprove ? (\n
\n handleDisabledApproveClick()}\n />\n \n \n \n
\n ) : (\n \n {isLimboState ? (\n \n ) : (\n \n )}\n \n )}\n \n ) : null}\n {showRepay ? (\n \n \n \n ) : null}\n\n {props.orderStatus !== \"unconfirmed\" ? (\n <>\n closeReprints()\n : () => toggleReprints(props.order.order_id)\n }\n >\n \n \n \n \n {reprintsList.length ? (\n reprintsList.map((reprint: any, index: any) => {\n return (\n \n openReprintWindow(\n reprint.print_url,\n props.order.order_id\n )\n }\n >\n {reprint.name}\n \n );\n })\n ) : (\n
\n \n
\n )}\n
\n \n \n ) : null}\n {showVoidOrderCta ? (\n isAggregator(props.order.order_source) ? (\n
\n \n \n \n \n
\n ) : (\n \n \n \n )\n ) : null}\n
\n \n {showCancelPopup ? (\n \n handleRejectOrder(cancelReasonId, supervisorPassword)\n }\n onCancel={() => setShowCancelPopup(false)}\n />\n ) : null}\n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let reprints = state.reprints;\n let currentTab = state.currentTab;\n let dmCanRecordPayment = state.company.company_details.dm_can_record_payment;\n let user_permissions = state.company.company_details.user_permissions;\n let defaultDeliveryEta =\n state.company.company_details.sapaad_online_details.default_delivery_eta;\n let limboStateOrders = state.limboStateOrders;\n let loyaltyDetails = state.company.company_details.loyalty_details;\n let isAdmin = state.company?.company_details.admin;\n\n return {\n reprints,\n user_permissions,\n currentTab,\n dmCanRecordPayment,\n defaultDeliveryEta,\n limboStateOrders,\n loyaltyDetails,\n isAdmin,\n };\n};\n\nconst mapDispatchToProps = {\n fetchReprints: reprintsOperations.fetchReprints,\n resetReprints: reprintsOperations.resetReprints,\n markOrderReprinted: reprintsOperations.markOrderReprinted,\n fetchCancelReasons: cancelReasonsOperations.fetchCancelReasons,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OrderPopup);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { orderOperations } from \"../../state/features/order\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\n\ninterface IElapsedTimeProps {\n time: number;\n removeExpiredOrder: any;\n orderId: any;\n}\n\nconst formatTimeDigits = (digits: any) => {\n digits = digits.toString();\n return digits.length === 1 ? \"0\" + digits : digits;\n};\n\nconst calculateElapsedTime = (epochTime: any) => {\n var currentTime = new Date().getTime();\n var differenceInTime = Math.abs((epochTime - currentTime) / 1000);\n var differenceInMins = Math.floor(differenceInTime / 60);\n var elapsedHours = differenceInTime / (60 * 60);\n var elapsedMinutes = (elapsedHours * 60) % 60;\n var elapsedSeconds = (elapsedMinutes * 60) % 60;\n var elapsedTime =\n formatTimeDigits(Math.floor(elapsedHours)) +\n \":\" +\n formatTimeDigits(Math.floor(elapsedMinutes)) +\n \":\" +\n formatTimeDigits(Math.floor(elapsedSeconds));\n return elapsedTime;\n};\n\nfunction ElapsedTime(props: IElapsedTimeProps) {\n const [elapsedTime, setElapsedTime] = React.useState(\"\");\n const [timeElapsed, setTimeElapsed] = React.useState(0);\n const [timeLimit, setTimeLimit] = React.useState(false);\n\n const calculateTimeLimit = (epochTime: any) => {\n var currentTime = new Date().getTime();\n var differenceInTime = Math.abs((epochTime - currentTime) / 1000);\n var elapsedHours = differenceInTime / (60 * 60);\n var differenceInMins = Math.floor(differenceInTime / 60);\n if (differenceInMins > 55) {\n setTimeLimit(true);\n } else {\n setTimeLimit(false);\n }\n \n // dividing by 3600 to convert seconds into hours\n var orderExpiryHours = parseInt(getEnvValueFor(\"ORDER_EXPIRY_THRESHOLD\") || `${48 * 60 * 60}`) / 3600;\n\n if (parseInt(elapsedHours as any) >= orderExpiryHours) {\n props.removeExpiredOrder(props.orderId);\n }\n };\n\n React.useEffect(() => {\n if (props.time !== undefined) {\n setTimeElapsed(props.time);\n }\n }, [props.time]);\n \n React.useEffect(()=>{\n let updateTime = setInterval(() => {\n if (timeElapsed > 0) {\n calculateTimeLimit(timeElapsed);\n }\n return setElapsedTime(\n props.time > 0 ? calculateElapsedTime(timeElapsed) : \"\"\n );\n }, 500);\n return () => {\n setElapsedTime(\"\");\n clearInterval(updateTime);\n };\n },[timeElapsed])\n\n return

{elapsedTime}

;\n}\n\nconst mapDispatchToProps = {\n removeExpiredOrder:orderOperations.removeExpiredOrder\n}\n\nexport default connect(null, mapDispatchToProps)(ElapsedTime);\n","import React, {\n Dispatch,\n SetStateAction,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport KeyboardReact, { SimpleKeyboard } from \"react-simple-keyboard\";\nimport { numberInputRegex } from \"../../helpers/utils\";\n\ninterface IKeypadProps {\n inputValue: any;\n setInputValue: Dispatch>;\n setKeyboardRef: (ref: simpleKeyboard) => void;\n setShowKeypad: (value: boolean) => void;\n paymentAction: () => void;\n isPaymentActionDisabled: boolean;\n showPaymentBoxCCInput: boolean;\n refCodeInputValue: string;\n setRefCodeInputValue: Dispatch>;\n showPaymentBreakDown: boolean;\n}\n\ninterface simpleKeyboard {\n current: SimpleKeyboard;\n}\n\nfunction Keypad(props: IKeypadProps) {\n const intl = useIntl();\n const formattedMessage = (formatId: any) => {\n const translatedMessage = intl.formatMessage({ id: formatId });\n return translatedMessage;\n };\n\n const keyMessages = {\n keypadClear: formattedMessage(\"keypad_clear\"),\n keypadDelete: formattedMessage(\"keypad_delete\"),\n keypadClose: formattedMessage(\"keypad_close\"),\n keypadPay: formattedMessage(\"keypad_pay\"),\n };\n const [layout, setLayout] = useState({\n num: [\n \"7 8 9 {bksp}\",\n \"4 5 6 {clearInput}\",\n \"1 2 3 {close}\",\n \"0 {dot} {void} {payNow}\",\n ],\n });\n\n const keyboard = useRef() as simpleKeyboard;\n\n useEffect(() => {\n props.setKeyboardRef(keyboard);\n keyboard.current.setInput(getInputValue());\n }, []);\n\n useEffect(() => {\n //sync the remaining amt value with the keyboard \n if (keyboard.current.input.default !== props.inputValue){\n keyboard.current.setInput(props.inputValue)\n }\n }, [props.inputValue]);\n\n useEffect(() => {\n keyboard.current.setInput(getInputValue());\n }, [props.showPaymentBoxCCInput]);\n\n const getInputValue = () => {\n return props.showPaymentBoxCCInput\n ? props.refCodeInputValue\n : props.inputValue;\n };\n\n const onKeyPress = (button: string) => {\n // map button press events\n let currentValue = keyboard.current!.getInput() as string;\n switch (button) {\n case \"{dot}\":\n if (numberInputRegex.test(currentValue)) {\n if (!currentValue.includes(\".\")) {\n currentValue += \".\";\n keyboard.current!.setInput(currentValue);\n }\n }\n break;\n case \"{close}\":\n props.setShowKeypad(false);\n break;\n case \"{clearInput}\":\n keyboard.current!.setInput(\"\");\n break;\n case \"{payNow}\":\n if (!props.isPaymentActionDisabled) {\n props.paymentAction();\n }\n break;\n default:\n return;\n }\n };\n const onChange = (input: string) => {\n if (props.showPaymentBoxCCInput) {\n props.setRefCodeInputValue(input);\n } else {\n props.setInputValue(input);\n }\n };\n return (\n (keyboard.current = r)}\n layoutName=\"num\"\n layout={layout}\n onChange={onChange}\n onKeyPress={onKeyPress}\n display={{\n \"{clearInput}\": keyMessages.keypadClear,\n \"{bksp}\": keyMessages.keypadDelete,\n \"{void}\": \" \",\n \"{close}\": keyMessages.keypadClose,\n \"{payNow}\": keyMessages.keypadPay,\n \"{dot}\": \".\",\n }}\n theme={\n props.showPaymentBoxCCInput\n ? `hg-theme-default cc-input-position ${\n props.showPaymentBreakDown ? \"with-breakdown\" : \"\"\n }`\n : \"hg-theme-default default-position\"\n }\n buttonTheme={[\n {\n class: \"action-btn\",\n buttons: \"{clearInput} {bksp} {void} {close} {payNow}\",\n },\n {\n class: \"empty-btn\",\n buttons: \"{void}\",\n },\n {\n class: \"number-btn\",\n buttons: \"0 1 2 3 4 5 6 7 8 9 {dot}\",\n },\n {\n class: \"pay-btn\",\n buttons: \"{payNow}\",\n },\n ]}\n />\n );\n}\n\nexport default Keypad;\n","import { TypedUseSelectorHook, useSelector } from \"react-redux\";\nimport { RootState } from \"../state/store\";\n\nconst useTypedSelector: TypedUseSelectorHook = useSelector;\nexport const useAppStateSelector = (\n selector: (state: RootState) => T\n): T => {\n return useTypedSelector(selector);\n};\n","import { useEffect, useState } from \"react\";\n\nenum PAYMENT_PARTNER {\n STRIPE_CONNECT = \"Stripe Connect\",\n MAGNATI = \"Magnati\",\n RAZORPAY = \"Razorpay\",\n}\n\nenum STRIPE_CONNECT_ERROR {\n GENERIC_ERROR = \"generic_error\",\n DISCONNECTION_ERROR = \"disconnection_error\",\n DISCOVERY_ERROR = \"discovery_error\",\n NO_READERS = \"no_readers_error\",\n READER_NOT_FOUND = \"reader_not_found_error\",\n REQUIRES_CONFIRMATION = \"requires_confirmation\",\n REQUEST_TIMED_OUT = \"request_timed_out\",\n READER_CONNECT_ERROR = \"unable_to_connect_reader_error\",\n PAYMENT_CONFIRMATION_ERROR = \"payment_confirmation_error\",\n PAYMENT_COLLECTION_ERROR = \"payment_collection_error\",\n}\n\nenum STRIPE_CONNECT_TXN_STEP {\n INITIATING_TERMINAL = \"initiating_terminal\",\n DISCOVERING_READER = \"discovering_reader\",\n COLLECT_PAYMENT_INTENT = \"collecting_payment_intent\",\n CANCEL_PAYMENT_INTENT = \"cancelling_payment_intent\",\n CONFIRM_PAYMENT_INTENT = \"confirm_payment_intent\",\n}\n\nenum MAGNATI_ERROR{\n GENERIC_ERROR = \"generic_error\",\n NO_READERS = \"no_readers_error\",\n REQUEST_TIMED_OUT = \"request_timed_out\",\n}\n\nconst getIconImageSource = (path: string) => {\n let a = \"\";\n try {\n a = require(`../../images/${path}`);\n } catch (err) {\n // fallback image if it fails to load\n a = require(`../../images/payment-types/cash-black.png`);\n }\n return a;\n};\n\n/**\n * if a location has a payment partner enabled, show that partner's\n * payment type in list only if that partner's terminal device(s)\n * is connected and available.\n */\nconst filterTakeawayPaymentPartnersByLocation = (\n paymentTypesList,\n locationPaymentPartner,\n integratedPaymentPartners,\n isTakeAway\n) => {\n return paymentTypesList.filter((p: any) => {\n if (\n integratedPaymentPartners.includes(p.name) &&\n locationPaymentPartner &&\n locationPaymentPartner.name === p.name\n ) {\n return Boolean(\n \"devices\" in locationPaymentPartner &&\n typeof locationPaymentPartner == \"object\" &&\n isTakeAway\n );\n }\n return true;\n });\n};\n\nconst filterCashRoundingPaymentTypes = (paymentTypesList: any) => {\n return paymentTypesList.filter((d: any) => {\n return d.display_name !== \"Cash Rounding\";\n });\n};\n\nconst getPaginatedData = ({ itemsList, currentPageNo, itemsPerPage }) => {\n const endIndex = currentPageNo * itemsPerPage;\n const startIndex = endIndex - itemsPerPage;\n return itemsList.slice(startIndex, endIndex);\n};\n\nconst usePagination = ({ itemsList = [], itemsPerPage = 8 }) => {\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [paginatedItems, setPaginatedItems] = useState([]);\n\n useEffect(() => {\n if (itemsList.length > 0) {\n let totPages = Math.ceil(itemsList.length / itemsPerPage);\n if (totPages > 0 && totalPages === 0) {\n setTotalPages(totPages);\n setPaginatedItems(\n getPaginatedData({ itemsList, currentPageNo: 1, itemsPerPage })\n );\n }\n }\n }, [itemsList.length]);\n\n useEffect(() => {\n if (itemsList.length > 0 && currentPage > 0) {\n setPaginatedItems(\n getPaginatedData({\n itemsList,\n currentPageNo: currentPage,\n itemsPerPage,\n })\n );\n }\n }, [itemsList.length, currentPage]);\n\n const navigateNextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage((c) => c + 1);\n }\n };\n\n const navigatePrevPage = () => {\n if (currentPage > 1) {\n setCurrentPage((c) => c - 1);\n }\n };\n\n return {\n paginatedItems,\n totalPages,\n currentPage,\n navigateNextPage,\n navigatePrevPage,\n };\n};\n\nexport {\n PAYMENT_PARTNER,\n STRIPE_CONNECT_ERROR,\n STRIPE_CONNECT_TXN_STEP,\n MAGNATI_ERROR,\n getIconImageSource,\n filterTakeawayPaymentPartnersByLocation,\n filterCashRoundingPaymentTypes,\n getPaginatedData,\n usePagination,\n};\n","import React from \"react\";\nimport { getIconImageSource } from \"./utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronLeft,\n faChevronRight,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FormattedMessage } from \"react-intl\";\n\ninterface IItemSelectionGridViewProps {\n title?: string;\n itemsList: {\n id: number | string;\n icon?: string;\n name: string;\n }[];\n onSelect: (item: any) => void;\n}\nconst ItemSelectionGridView = ({\n title,\n itemsList,\n onSelect: handleSelect,\n}: IItemSelectionGridViewProps) => {\n return (\n <>\n {title ?

{title}

: null}\n
\n {itemsList.map((item, index) => (\n handleSelect(item)}>\n {item.icon ? (\n \n {item.icon}\n \n ) : null}\n

{item.name}

\n
\n ))}\n \n \n );\n};\n\ninterface IItemSelectionGridFooterProps {\n showCloseButtonAs?: \"back\" | \"\";\n currentPage: number;\n totalPages: number;\n nextPageAction(): void;\n prevPageAction(): void;\n onClose(): void;\n}\n\nconst ItemSelectionGridFooter = ({\n showCloseButtonAs = \"\",\n currentPage,\n totalPages,\n nextPageAction,\n prevPageAction,\n onClose: handleClose,\n}: IItemSelectionGridFooterProps) => {\n return (\n <>\n {showCloseButtonAs === \"back\" ? (\n \n Back\n \n ) : (\n
\n \n
\n )}\n

\n {currentPage} {totalPages}\n

\n
\n \n \n
\n \n );\n};\n\nexport { ItemSelectionGridView, ItemSelectionGridFooter };\n","enum PAYMENT_STATUS {\n WAITING = \"waiting\",\n IN_PROGRESS = \"in_progress\",\n PAID = \"paid\",\n FAILED = \"failed\",\n CANCELLED = \"cancelled\",\n}\n\nexport { PAYMENT_STATUS };\n","import { useEffect, useRef, useState } from \"react\";\nimport \"@stripe/terminal-js\";\nimport type { Terminal } from \"@stripe/terminal-js\";\nimport { STRIPE_CONNECT_ERROR, STRIPE_CONNECT_TXN_STEP } from \"../../utils\";\nimport { PAYMENT_STATUS } from \"../../../../types/payments\";\n\ninterface Params {\n amount: string | number;\n paymentTypeId: string;\n getDeviceId: any;\n clearDeviceId: any;\n locationPartnerConfig: any;\n locationId: number;\n simulated?: boolean;\n processStripeConnectTerminalPayment(stripeLocationId: any): Promise;\n fetchStripeConnectTerminalPayment(paymentIntentId: any): Promise;\n initiateStripeConnectPaymentIntentCreate(payload: any): Promise;\n cancelStripeConnectTerminalPayment(\n paymentIntentId: any,\n payload: any\n ): Promise;\n handleCloseTxnStatusView(): void;\n onTransactionCancel(): void;\n onTransactionSuccess(configs?: any): void;\n}\n\nconst useStripeConnectPayment = ({\n amount,\n orderId,\n orderNo,\n paymentTypeId,\n getDeviceId,\n clearDeviceId,\n locationPartnerConfig,\n locationId,\n simulated = false,\n processStripeConnectTerminalPayment,\n fetchStripeConnectTerminalPayment,\n initiateStripeConnectPaymentIntentCreate,\n cancelStripeConnectTerminalPayment,\n handleCloseTxnStatusView,\n onTransactionCancel,\n onTransactionSuccess,\n}: Params) => {\n const stripeLocationId = locationPartnerConfig?.stripe_location_id ?? null;\n const stripeCurrencyValue = locationPartnerConfig?.currency ?? null;\n const stripeAccountId =\n locationPartnerConfig?.stripe_connected_account_id ?? null;\n const stripeAccountMCC = locationPartnerConfig?.mcc ?? null;\n const [stripeConnectError, setStripeConnectError] = useState(null);\n const [txnStatus, setTxnStatus] = useState(\n PAYMENT_STATUS.WAITING\n );\n const [enableCancelTxn, setEnableCancelTxn] = useState(true);\n\n const txnSuccessTimeout = useRef(null);\n const txnStep = useRef(\"\");\n const stripeConnectTerminal = useRef(null);\n const paymentIntentResponse = useRef(null);\n const paymentIntent = useRef(null);\n const canProceedTxn = useRef(true);\n\n const checkTxnProgress = (txnStepMethod: () => any) => {\n if (canProceedTxn.current) {\n return txnStepMethod();\n }\n };\n\n const resetTxnProgressValues = () => {\n txnStep.current = \"\";\n txnSuccessTimeout.current = null;\n paymentIntentResponse.current = null;\n paymentIntent.current = null;\n stripeConnectTerminal.current = null;\n canProceedTxn.current = true;\n };\n\n useEffect(() => {\n if (stripeConnectError) {\n setTxnStatus(PAYMENT_STATUS.FAILED);\n }\n }, [stripeConnectError]);\n\n const handleCancelTxnCtaClick = () => {\n if (txnStep.current === STRIPE_CONNECT_TXN_STEP.COLLECT_PAYMENT_INTENT) {\n cancelOutstandingCollectPayment(stripeConnectTerminal.current);\n }\n // If PaymentIntent is present, request for cancellation\n if (paymentIntentResponse.current) {\n initiateStripeConnectPaymentIntentCancel(paymentIntentResponse.current);\n }\n resetTxnProgressValues();\n handleCloseTxnStatusView();\n clearDeviceId();\n };\n\n const handleRetryTxnCtaClick = () => {\n if (txnStep.current === STRIPE_CONNECT_TXN_STEP.COLLECT_PAYMENT_INTENT) {\n collectStripeConnectPaymentMethod(\n stripeConnectTerminal.current,\n paymentIntentResponse.current\n );\n }\n if (txnStep.current === STRIPE_CONNECT_TXN_STEP.CONFIRM_PAYMENT_INTENT) {\n confirmStripeConnectPaymentIntent(\n paymentIntent.current,\n paymentIntentResponse.current\n );\n }\n };\n\n const initiatePaymentWithStripeConnect = () => {\n checkTxnProgress(() => createConnectionToken());\n };\n\n const createConnectionToken = () => {\n setTxnStatus(PAYMENT_STATUS.IN_PROGRESS);\n processStripeConnectTerminalPayment(stripeLocationId)\n .then((response: any) => {\n if (!response.error) {\n let token = response.payload.data.connection_token;\n console.log(\"token created, creating terminal...\");\n checkTxnProgress(() => initiateStripeConnectTerminalPayment(token));\n } else {\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.GENERIC_ERROR });\n console.error(\n \"Failed to generate a valid Connection Token\",\n response\n );\n }\n })\n .catch((error: any) => {\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.GENERIC_ERROR });\n console.error(\"Error occured while generating Connection Token\", error);\n });\n };\n\n const initiateStripeConnectTerminalPayment = (connectionToken: string) => {\n txnStep.current = STRIPE_CONNECT_TXN_STEP.INITIATING_TERMINAL;\n // Initialise Stripe Terminal SDK\n let stripeTerminal = StripeTerminal.create({\n onFetchConnectionToken() {\n return connectionToken;\n },\n onUnexpectedReaderDisconnect() {\n canProceedTxn.current = false;\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.DISCONNECTION_ERROR,\n data: { deviceId: getDeviceId() },\n });\n },\n });\n checkTxnProgress(() =>\n discoverAndConnectStripeConnectReader(stripeTerminal)\n );\n stripeConnectTerminal.current = stripeTerminal;\n };\n\n const discoverAndConnectStripeConnectReader = (\n stripeConnectTerminal: any\n ) => {\n txnStep.current = STRIPE_CONNECT_TXN_STEP.DISCOVERING_READER;\n let config = { simulated, location: stripeLocationId };\n stripeConnectTerminal.discoverReaders(config).then((result: any) => {\n console.log(result);\n if (result.error) {\n console.error(\"Unable to discover readers\", result.error);\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.DISCOVERY_ERROR });\n }\n if (result.discoveredReaders.length === 0) {\n console.warn(\"No readers found in the network\");\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.NO_READERS });\n }\n if (result.discoveredReaders.length > 0) {\n let selectedReader = result.discoveredReaders.find(\n (reader: any) => reader.serial_number === getDeviceId()\n );\n if (selectedReader) {\n stripeConnectTerminal\n .connectReader(selectedReader, {\n fail_if_in_use: true,\n })\n .then((connectResult: any) => {\n if (connectResult.error) {\n console.error(\n \"Unable to connect to selected reader\",\n connectResult.error\n );\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.READER_CONNECT_ERROR,\n data: { deviceId: getDeviceId() },\n });\n } else {\n checkTxnProgress(() => requestPaymentIntent());\n }\n });\n } else {\n console.log(\n \"Unable to find the selected reader in the network\",\n getDeviceId()\n );\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.READER_NOT_FOUND,\n data: { deviceId: getDeviceId() },\n });\n }\n }\n });\n };\n\n const requestPaymentIntent = () => {\n let referenceId = `stripe-connect-transaction-${locationId}-${getDeviceId()}-${new Date().getTime()}`;\n let payload = {\n payment_type_id: paymentTypeId,\n device_id: getDeviceId(),\n amount: parseFloat(amount),\n reference_id: referenceId,\n location_id: locationId,\n order_type: \"call-center\",\n order_id: orderId,\n order_number: orderNo,\n currency: stripeCurrencyValue,\n stripe_connected_account_id: stripeAccountId,\n mcc: stripeAccountMCC,\n };\n initiateStripeConnectPaymentIntentCreate(payload)\n .then((response) => {\n if (response?.payload?.status === 200) {\n let paymentIntentObject = {\n ...response.payload.data,\n referenceId: referenceId,\n deviceId: getDeviceId(),\n };\n paymentIntentResponse.current = paymentIntentObject;\n if (\n paymentIntentObject?.payment_intent_id &&\n paymentIntentObject?.client_secret\n ) {\n console.info(\n \"Received Payment Intent\",\n paymentIntentObject.payment_intent_id\n );\n checkTxnProgress(() =>\n collectStripeConnectPaymentMethod(\n stripeConnectTerminal.current,\n paymentIntentObject\n )\n );\n } else if (paymentIntentObject?.payment_intent_id) {\n console.error(\n \"Unable to begin processing Payment Intent due to request being terminated\",\n paymentIntentObject\n );\n initiateStripeConnectPaymentIntentCancel(paymentIntentObject);\n } else {\n console.error(\n \"Failed to create a Payment Intent\",\n paymentIntentObject\n );\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.GENERIC_ERROR });\n }\n }\n })\n .catch((error) => {\n console.error(\"Error occured while creating Payment Intent\", error);\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.GENERIC_ERROR });\n });\n };\n\n const collectStripeConnectPaymentMethod = (\n stripeConnectTerminal: any,\n paymentIntentResponse: any\n ) => {\n console.log(\"paymentIntentResponse:\", paymentIntentResponse);\n txnStep.current = STRIPE_CONNECT_TXN_STEP.COLLECT_PAYMENT_INTENT;\n stripeConnectTerminal\n .collectPaymentMethod(paymentIntentResponse.client_secret)\n .then((result: any) => {\n if (result.error) {\n console.error(\n \"Unable to collect Payment Method.\",\n result.error.message\n );\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.PAYMENT_COLLECTION_ERROR,\n message: result.error.message,\n });\n } else {\n console.info(\n \"Initiating Payment Intent processing\",\n paymentIntentResponse.payment_intent_id\n );\n let stripeConnectPaymentIntent = result.paymentIntent;\n paymentIntent.current = stripeConnectPaymentIntent;\n confirmStripeConnectPaymentIntent(\n stripeConnectPaymentIntent,\n paymentIntentResponse\n );\n }\n });\n };\n\n const confirmStripeConnectPaymentIntent = (\n paymentIntent: any,\n paymentIntentResponse: any\n ) => {\n txnStep.current = STRIPE_CONNECT_TXN_STEP.CONFIRM_PAYMENT_INTENT;\n // Disable cancel button once payment is collected.\n setEnableCancelTxn(false);\n // Confirm the collected Payment method\n stripeConnectTerminal.current\n .processPayment(paymentIntent)\n .then((result: any) => {\n if (result.error) {\n if (result.error.payment_intent) {\n paymentIntent = result.error.payment_intent;\n let stripeConnectPaymentIntentId = paymentIntent.id;\n let stripeConnectPaymentIntentClientSecret =\n paymentIntent.client_secret;\n if (paymentIntent.status == \"succeeded\") {\n console.info(\n \"Payment Confirmation already completed\",\n stripeConnectPaymentIntentId\n );\n fetchUpdatedPaymentIntent(paymentIntentResponse);\n } else if (paymentIntent.status == \"requires_confirmation\") {\n console.error(\n \"Temporary connectivity problem.\",\n stripeConnectPaymentIntentId,\n result.error.message\n );\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.REQUIRES_CONFIRMATION,\n data: { reference: stripeConnectPaymentIntentId },\n });\n } else {\n console.error(\n \"Payment method declined.\",\n stripeConnectPaymentIntentId,\n result.error.message\n );\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.PAYMENT_CONFIRMATION_ERROR,\n message: result.error.message,\n });\n }\n } else {\n let stripeConnectPaymentIntentId = paymentIntent.id;\n console.error(\n \"Request to Stripe timed out, unknown PaymentIntent status\",\n stripeConnectPaymentIntentId,\n result.error.message\n );\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.REQUEST_TIMED_OUT,\n data: { reference: stripeConnectPaymentIntentId },\n });\n }\n } else {\n console.info(\n \"Payment Confirmation completed\",\n paymentIntentResponse.payment_intent_id\n );\n fetchUpdatedPaymentIntent(paymentIntentResponse);\n }\n });\n };\n\n const fetchUpdatedPaymentIntent = (paymentIntentResponse: any) => {\n fetchStripeConnectTerminalPayment(paymentIntentResponse.payment_intent_id)\n .then((response: any) => {\n if (response.payload.status == 200) {\n console.info(\n \"Payment Capture completed\",\n paymentIntentResponse.payment_intent_id\n );\n let configs = {\n referenceId: response.payload.data.metadata.reference_id,\n deviceId: response.payload.data.metadata.device_id,\n locationId: response.payload.data.metadata.location_id,\n metaData: response.payload.data.metadata,\n refCode: response.payload.data.metadata.card_no,\n };\n setTxnStatus(PAYMENT_STATUS.PAID);\n txnStep.current = \"\";\n txnSuccessTimeout.current = setTimeout(() => {\n handleCloseTxnStatusView();\n clearDeviceId();\n }, 5000);\n resetTxnProgressValues();\n onTransactionSuccess(configs);\n } else {\n console.error(\n \"Payment was not captured\",\n paymentIntentResponse.payment_intent_id,\n response.failure_message\n );\n initiateStripeConnectPaymentIntentCancel(paymentIntentResponse);\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.PAYMENT_CONFIRMATION_ERROR,\n message: response.failure.message,\n });\n }\n })\n .catch((error: any) => {\n console.error(\n \"Error occured while finding updated Payment Intent\",\n error\n );\n initiateStripeConnectPaymentIntentCancel(paymentIntentResponse);\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.GENERIC_ERROR });\n });\n };\n\n const initiateStripeConnectPaymentIntentCancel = (\n paymentIntentResponse: any\n ) => {\n txnStep.current = STRIPE_CONNECT_TXN_STEP.CANCEL_PAYMENT_INTENT;\n console.info(\n \"Cancelling Payment Intent\",\n paymentIntentResponse.payment_intent_id\n );\n let payload = {\n payment_type_id: paymentTypeId,\n device_id: paymentIntentResponse.deviceId,\n amount: parseFloat(amount),\n reference_id: paymentIntentResponse.referenceId,\n location_id: locationId,\n remote_transaction_id: paymentIntentResponse.payment_intent_id,\n };\n\n cancelStripeConnectTerminalPayment(\n paymentIntentResponse.payment_intent_id,\n payload\n )\n .then((response) => {\n console.info(\"Payment Intent Cancelled\");\n onTransactionCancel();\n })\n .catch((error) => {\n console.error(\"Error occured while cancelling Terminal payment\", error);\n setStripeConnectError({\n type: STRIPE_CONNECT_ERROR.GENERIC_ERROR,\n message: error?.message,\n });\n });\n resetTxnProgressValues();\n };\n\n const cancelOutstandingCollectPayment = (stripeConnectTerminal: any) => {\n stripeConnectTerminal\n .cancelCollectPaymentMethod()\n .then((res: any) => {\n console.info(\"cancelled collect payment\");\n })\n .catch((error: any) => {\n console.error(\"Error occured while cancelling Collect payment step\", error);\n setStripeConnectError({ type: STRIPE_CONNECT_ERROR.GENERIC_ERROR });\n });\n };\n\n return {\n stripeConnectError,\n txnStatus,\n enableCancelTxn,\n handleCancelTxnCtaClick,\n handleRetryTxnCtaClick,\n initiatePaymentWithStripeConnect,\n };\n};\n\nexport default useStripeConnectPayment;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { STRIPE_CONNECT_ERROR } from \"../../utils\";\n\nconst TransactionFailReason = ({\n stripeConnectError,\n}: {\n stripeConnectError: {\n type: STRIPE_CONNECT_ERROR;\n data?: any;\n message: string;\n } | null;\n}) => {\n if (!stripeConnectError) {\n return (\n ,\n }}\n />\n );\n }\n\n switch (stripeConnectError.type) {\n case STRIPE_CONNECT_ERROR.DISCONNECTION_ERROR:\n return (\n {stripeConnectError.data.deviceId},\n break:
,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.DISCOVERY_ERROR:\n return (\n ,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.NO_READERS:\n return (\n ,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.READER_NOT_FOUND:\n return (\n {stripeConnectError.data.deviceId},\n break:
,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.REQUIRES_CONFIRMATION:\n return (\n \n {stripeConnectError.data.reference}\n \n ),\n break:
,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.REQUEST_TIMED_OUT:\n return (\n \n {stripeConnectError.data.reference}\n \n ),\n break:
,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.READER_CONNECT_ERROR:\n return (\n {stripeConnectError.data.deviceId},\n break:
,\n }}\n />\n );\n case STRIPE_CONNECT_ERROR.PAYMENT_COLLECTION_ERROR:\n case STRIPE_CONNECT_ERROR.PAYMENT_CONFIRMATION_ERROR:\n return <>{stripeConnectError.message};\n\n default:\n return (\n ,\n }}\n />\n );\n }\n};\n\nexport default TransactionFailReason;\n","import React, { useMemo } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport PaymentPendingDark from \"../../../../images/payment-status/payment-animation-dark.gif\";\nimport PaymentPending from \"../../../../images/payment-status/payment-animation.gif\";\nimport PaymentErrorGeneric from \"../../../../images/payment-status/payment-error-generic.png\";\nimport { PAYMENT_STATUS } from \"../../../../types/payments\";\nimport { useAppStateSelector } from \"../../../../hooks/useAppStateSelector\";\nimport { STRIPE_CONNECT_ERROR } from \"../../utils\";\nimport TransactionFailReason from \"./transactionFailReason\";\n\nconst PaymentSuccessAnimation = () => {\n return (\n \n \n \n \n \n );\n};\n\nconst StripeConnectTxnStatusView = ({\n txnStatus,\n showCancelTxnCta,\n stripeConnectError,\n onTxnCancelCtaClick,\n onRetryCtaClick,\n onCloseTxnStatusViewClick,\n}: any) => {\n const theme = useAppStateSelector((state) => state.theme);\n\n const showCloseTxnViewCta = useMemo(\n () =>\n [\n STRIPE_CONNECT_ERROR.GENERIC_ERROR,\n STRIPE_CONNECT_ERROR.DISCONNECTION_ERROR,\n STRIPE_CONNECT_ERROR.DISCOVERY_ERROR,\n STRIPE_CONNECT_ERROR.NO_READERS,\n STRIPE_CONNECT_ERROR.READER_CONNECT_ERROR,\n STRIPE_CONNECT_ERROR.READER_NOT_FOUND,\n ].includes(stripeConnectError?.type),\n [stripeConnectError]\n );\n\n const showRetryCta = useMemo(\n () =>\n [\n STRIPE_CONNECT_ERROR.REQUIRES_CONFIRMATION,\n STRIPE_CONNECT_ERROR.PAYMENT_CONFIRMATION_ERROR,\n STRIPE_CONNECT_ERROR.REQUEST_TIMED_OUT,\n ].includes(stripeConnectError?.type),\n [stripeConnectError]\n );\n\n return (\n
\n
\n {txnStatus === PAYMENT_STATUS.IN_PROGRESS ? (\n <>\n \n

\n \n

\n

\n \n

\n
\n {showCancelTxnCta ? (\n \n \n \n ) : null}\n
\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.PAID && (\n <>\n \n

\n \n

\n

\n \n

\n \n )}\n {txnStatus === PAYMENT_STATUS.FAILED && (\n <>\n \n

\n \n

\n \n \n \n
\n {showCloseTxnViewCta ? (\n \n \n \n ) : null}\n {showRetryCta ? (\n \n ) : null}\n
\n \n )}\n
\n
\n );\n};\nexport default StripeConnectTxnStatusView;\n","import React, { useMemo } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport PaymentPendingDark from \"../../../../images/payment-status/payment-animation-dark.gif\";\nimport PaymentPending from \"../../../../images/payment-status/payment-animation.gif\";\nimport PaymentErrorGeneric from \"../../../../images/payment-status/payment-error-generic.png\";\nimport { PAYMENT_STATUS } from \"../../../../types/payments\";\nimport { useAppStateSelector } from \"../../../../hooks/useAppStateSelector\";\n\nconst PaymentSuccessAnimation = () => {\n return (\n \n \n \n \n \n );\n};\n\nconst MagnatiTxnStatusView = ({\n txnDeclineReason,\n txnStatus,\n showCancelTxnCta,\n onTxnCancelCtaClick,\n onCloseTxnStatusViewClick,\n}: any) => {\n const theme = useAppStateSelector((state) => state.theme);\n\n return (\n
\n
\n {[PAYMENT_STATUS.IN_PROGRESS, PAYMENT_STATUS.WAITING].includes(\n txnStatus\n ) ? (\n <>\n \n

\n \n

\n

\n \n

\n
\n {showCancelTxnCta ? (\n \n \n \n ) : null}\n
\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.PAID ? (\n <>\n \n

\n \n

\n

\n \n

\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.FAILED ? (\n <>\n \n \n \n \n \n

{txnDeclineReason}

\n
\n

\n \n

\n
\n \n \n \n
\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.CANCELLED && (\n <>\n \n

\n \n

\n

\n \n

\n
\n \n \n \n
\n \n )}\n
\n \n );\n};\nexport default MagnatiTxnStatusView;\n","import React from \"react\";\nimport { useAppStateSelector } from \"../../../../hooks/useAppStateSelector\";\nimport PaymentPendingDark from \"../../../../images/payment-status/payment-animation-dark.gif\";\nimport PaymentPending from \"../../../../images/payment-status/payment-animation.gif\";\nimport PaymentErrorGeneric from \"../../../../images/payment-status/payment-error-generic.png\";\nimport { PAYMENT_STATUS } from \"../../../../types/payments\";\nimport { FormattedMessage } from \"react-intl\";\n\nconst PaymentSuccessAnimation = () => {\n return (\n \n \n \n \n \n );\n};\n\ninterface Props {\n txnDeclineReason: string;\n txnStatus: PAYMENT_STATUS;\n showCancelTxnCta: boolean;\n onTxnCancelCtaClick: () => void;\n onCloseTxnStatusViewClick: () => void;\n}\n\nconst RazorpayTxnStatusView = ({\n txnDeclineReason,\n txnStatus,\n showCancelTxnCta,\n onTxnCancelCtaClick,\n onCloseTxnStatusViewClick,\n}: Props) => {\n const theme = useAppStateSelector((state) => state.theme);\n\n return (\n
\n
\n {[PAYMENT_STATUS.IN_PROGRESS, PAYMENT_STATUS.WAITING].includes(\n txnStatus\n ) ? (\n <>\n \n

\n \n

\n

\n \n

\n
\n {showCancelTxnCta ? (\n \n \n \n ) : null}\n
\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.PAID ? (\n <>\n \n

\n \n

\n

\n \n

\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.FAILED ? (\n <>\n \n \n \n \n \n

{txnDeclineReason}

\n
\n

\n \n

\n
\n \n \n \n
\n \n ) : null}\n {txnStatus === PAYMENT_STATUS.CANCELLED && (\n <>\n \n

\n \n

\n

\n \n

\n
\n \n \n \n
\n \n )}\n
\n \n );\n};\n\nexport default RazorpayTxnStatusView;\n","import React from \"react\";\nimport { ReactNode } from \"react\";\nimport { PAYMENT_PARTNER } from \"./utils\";\nimport StripeConnectTxnStatusView from \"./paymentPartners/stripeConnect\";\nimport MagnatiTxnStatusView from \"./paymentPartners/magnati\";\nimport RazorpayTxnStatusView from \"./paymentPartners/razorpay\";\n\nconst TransactionStatusView = ({\n selectedPaymentPartner,\n stripeConnectConfigs,\n magnatiConfigs,\n razorpayConfigs,\n children,\n}: {\n selectedPaymentPartner: string | PAYMENT_PARTNER;\n stripeConnectConfigs: any;\n magnatiConfigs: any;\n razorpayConfigs: any;\n children: ReactNode;\n}) => {\n switch (selectedPaymentPartner){\n case PAYMENT_PARTNER.STRIPE_CONNECT:\n return ;\n case PAYMENT_PARTNER.MAGNATI:\n return ;\n case PAYMENT_PARTNER.RAZORPAY:\n return ;\n default:\n return <>{children};\n }\n};\n\nexport default TransactionStatusView;\n","import type Pusher from \"pusher-js\";\nimport { createContext } from \"react\";\n\nexport const PusherContext = createContext(undefined);\n","import type Pusher from \"pusher-js\";\nimport { useContext } from \"react\";\nimport { PusherContext } from \"../context/pusherContext\";\n\nconst usePusher = () => {\n const context = useContext(PusherContext) as Pusher;\n return context;\n};\n\nexport { usePusher };\n","import { useEffect, useRef, useState } from \"react\";\nimport { PAYMENT_PARTNER } from \"../../utils\";\nimport { PAYMENT_STATUS } from \"../../../../types/payments\";\nimport { usePusher } from \"../../../../hooks/usePusher\";\nimport type { Channel } from \"pusher-js\";\nimport * as Sentry from \"@sentry/react\";\n\ninterface Params {\n amount: any;\n paymentType: any;\n getDeviceId: any;\n clearDeviceId: any;\n locationId: number;\n initiateMagnatiTransaction(payload: any): Promise;\n cancelMagnatiTransaction(transRefId: any, data: any): Promise;\n handleCloseTxnStatusView(): void;\n onTransactionSuccess(configs?: any): void;\n}\n\nconst useMagnatiPayment = ({\n amount,\n paymentType,\n getDeviceId,\n clearDeviceId,\n locationId,\n initiateMagnatiTransaction,\n cancelMagnatiTransaction,\n handleCloseTxnStatusView,\n onTransactionSuccess,\n}: Params) => {\n const [intentConfigs, setIntentConfigs] = useState(null);\n const [isTxnInitiateFailed, setIsTxnInitiateFailed] = useState(false);\n const [isTxnInitiated, setIsTxnInitiated] = useState(false);\n const [txnStatus, setTxnStatus] = useState(\n PAYMENT_STATUS.WAITING\n );\n const [enableCancelTxn, setEnableCancelTxn] = useState(false);\n const [txnDeclineReason, setTxnDeclineReason] = useState(\"\");\n const pusher = usePusher();\n\n const cancelTxnTimeout = useRef(null);\n const txnSuccessTimeout = useRef(null);\n\n const resetTxnProgressValues = () => {\n txnSuccessTimeout.current = null;\n cancelTxnTimeout.current = null;\n };\n\n useEffect(() => {\n return () => {\n // Clean up on unmount\n if (txnSuccessTimeout.current) {\n clearTimeout(txnSuccessTimeout.current);\n }\n if (cancelTxnTimeout.current) {\n clearTimeout(cancelTxnTimeout.current);\n }\n };\n }, []);\n\n useEffect(() => {\n let channel: Channel | null = null;\n if (paymentType.name == PAYMENT_PARTNER.MAGNATI) {\n if (intentConfigs && !isTxnInitiated) {\n setTxnStatus(PAYMENT_STATUS.CANCELLED);\n }\n if (isTxnInitiateFailed) {\n setTxnStatus(PAYMENT_STATUS.FAILED);\n setTxnDeclineReason(\"Internet connection failure\");\n }\n if (intentConfigs && isTxnInitiated) {\n setTxnStatus(PAYMENT_STATUS.IN_PROGRESS);\n if (!intentConfigs.referenceId) {\n console.error(\"reference id is undefined\");\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Magnati - reference id undefined\",\n level: \"debug\",\n });\n } else {\n let { referenceId, deviceId, locationId } = intentConfigs;\n channel = pusher.subscribe(`private_magnati_transaction_${deviceId}`);\n channel.bind(\"payment_success\", (data: any) => {\n const {\n transaction_reference_id,\n transaction_id,\n metadata: metaData,\n } = data;\n if (transaction_reference_id == referenceId) {\n let cardNo = metaData.card_no.toString();\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Magnati - Transaction successful\",\n level: \"debug\",\n });\n clearTimeout(txnSuccessTimeout.current);\n clearTimeout(cancelTxnTimeout.current);\n channel?.unbind();\n setTxnStatus(PAYMENT_STATUS.PAID);\n handleMagnatiTransactionSuccess({\n refCode: cardNo.slice(-4),\n metaData,\n });\n setTimeout(() => {\n resetTxnProgressValues();\n handleCloseTxnStatusView();\n clearDeviceId();\n }, 5000);\n }\n });\n channel.bind(\"payment_failed\", (data: any) => {\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Magnati - Transaction failed\",\n level: \"debug\",\n });\n if (data.transaction_reference_id == referenceId) {\n clearTimeout(txnSuccessTimeout.current);\n clearTimeout(cancelTxnTimeout.current);\n channel?.unbind();\n setTxnStatus(PAYMENT_STATUS.FAILED);\n if (data.response_message) {\n setTxnDeclineReason(data.response_message);\n } else {\n setTxnDeclineReason(\"Internet connection failure\");\n }\n if (data.response_message) {\n handleMagnatiTransactionFail({\n referenceId,\n configs: { device_id: deviceId, location_id: locationId },\n });\n resetTxnProgressValues();\n }\n }\n });\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Magnati - Transaction started\",\n level: \"debug\",\n });\n startTransaction();\n }\n }\n }\n return () => {\n // Clean up on unmount\n if (channel) {\n channel.unsubscribe();\n }\n };\n }, [intentConfigs, isTxnInitiateFailed]);\n\n const handlePaymentWithMagnati = () => {\n let referenceId = `magnati-transaction-${locationId}-${getDeviceId()}-${new Date().getTime()}`;\n let payload = {\n device_id: getDeviceId(),\n amount: parseFloat(amount),\n payment_type_id: paymentType.id,\n location_id: locationId,\n reference_id: referenceId,\n order_type: \"call-center\",\n };\n setIsTxnInitiated(true);\n initiateMagnatiTransaction(payload)\n .then((response) => {\n if (!response.error && response?.payload?.status === 200) {\n setIntentConfigs({ referenceId, deviceId: getDeviceId(), locationId });\n }\n })\n .catch((err) => {\n setIsTxnInitiateFailed(true);\n setIsTxnInitiated(false);\n handleMagnatiTransactionFail({\n referenceId,\n configs: { device_id: getDeviceId(), location_id: locationId },\n });\n });\n };\n\n const startTransaction = () => {\n // DMMS will wait till 3 minutes for the the payment.\n // If we didnt get the response within 3 minutes it will cancel the transaction.\n txnSuccessTimeout.current = setTimeout(() => {\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Magnati - Transaction timed out\",\n level: \"debug\",\n });\n handleTransactionTimedOut();\n }, 180000);\n // Show cancel button after 1 minute\n cancelTxnTimeout.current = setTimeout(() => {\n setEnableCancelTxn(true);\n }, 60000);\n };\n\n const handleTransactionTimedOut = () => {\n setTxnStatus(PAYMENT_STATUS.CANCELLED);\n handleMagnatiTransactionFail({\n referenceId: intentConfigs?.referenceId,\n configs: {\n device_id: intentConfigs.deviceId,\n location_id: intentConfigs.locationId,\n },\n });\n clearTimeout(txnSuccessTimeout.current);\n clearTimeout(cancelTxnTimeout.current);\n };\n\n const handleCancelTxnCtaClick = () => {\n handleMagnatiTransactionFail({\n referenceId: intentConfigs?.referenceId,\n configs: {\n device_id: intentConfigs.deviceId,\n location_id: intentConfigs.locationId,\n },\n });\n resetTxnProgressValues();\n handleCloseTxnStatusView();\n clearDeviceId();\n };\n\n const handleMagnatiTransactionSuccess = (configs: any) => {\n setIsTxnInitiateFailed(false);\n setIsTxnInitiated(false);\n setIntentConfigs(null);\n onTransactionSuccess(configs);\n };\n\n const handleMagnatiTransactionFail = ({ referenceId, configs }: any) => {\n setIntentConfigs(null);\n cancelMagnatiTransaction(referenceId, configs).catch((err) => {\n console.log(err);\n });\n };\n\n return {\n txnDeclineReason,\n txnStatus,\n enableCancelTxn,\n handleCancelTxnCtaClick,\n handlePaymentWithMagnati,\n };\n};\n\nexport default useMagnatiPayment;\n","import * as Sentry from \"@sentry/react\";\n\nconst razorpayLogger = {\n addDebugLog: (message: string) => {\n Sentry.addBreadcrumb({\n category: \"payments\",\n message,\n level: \"debug\",\n });\n },\n};\n\nexport { razorpayLogger };\n","import React, {\n useEffect,\n useState,\n useRef,\n MutableRefObject,\n Dispatch,\n SetStateAction,\n KeyboardEvent,\n useMemo,\n} from \"react\";\nimport { connect } from \"react-redux\";\nimport { Modal } from \"react-bootstrap\";\nimport $ from \"jquery\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronDown,\n faTh,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { paymentsOperations } from \"../../state/features/payments\";\nimport { formatDecimal } from \"../../helpers/itemCalculations\";\nimport ccMapBackground from \"../../images/ccmap.jpg\";\nimport Keypad from \"../keypad\";\nimport Swal from \"sweetalert2\";\nimport { hardRefresh, numberInputRegex } from \"../../helpers/utils\";\nimport * as Sentry from \"@sentry/react\";\nimport {\n computeCashRounding,\n generateCashRoundingString,\n} from \"../../helpers/utils\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport { useAppStateSelector } from \"../../hooks/useAppStateSelector\";\nimport {\n PAYMENT_PARTNER,\n filterCashRoundingPaymentTypes,\n filterTakeawayPaymentPartnersByLocation,\n usePagination,\n} from \"./utils\";\nimport {\n ItemSelectionGridFooter,\n ItemSelectionGridView,\n} from \"./itemSelectionGridView\";\nimport useStripeConnectPayment from \"./paymentPartners/stripeConnect/useStripeConnectPayment\";\nimport TransactionStatusView from \"./txnStatusView\";\nimport useMagnatiPayment from \"./paymentPartners/magnati/useMagnatiPayment\";\nimport { useRazorpayPayment } from \"./paymentPartners/razorpay/useRazorpayPayment\";\n\ninterface IPaymentPopupProps {\n showModal: boolean;\n setShowModal: Dispatch>;\n orderId: number;\n orderNo: number;\n paymentAmount: number;\n paymentAction: (orderId: number, payments: any) => any;\n payments: any[];\n currency: string;\n fetchPayments: () => any;\n orderPayments: any[];\n cash_rounding: any;\n isTakeAway?: boolean;\n locationId: number;\n initiateMagnatiTransaction(payload: any): Promise;\n cancelMagnatiTransaction(transRefId: any, data: any): Promise;\n processStripeConnectTerminalPayment(stripeLocationId: any): Promise;\n initiateStripeConnectPaymentIntentCreate(payload: any): Promise;\n fetchStripeConnectTerminalPayment(paymentIntentId: any): Promise;\n cancelStripeConnectTerminalPayment(\n paymentIntentId: any,\n payload: any\n ): Promise;\n initiateRazorpayTransaction(payload: any): Promise;\n cancelRazorpayTransaction(transRefId: any, data: any): Promise;\n locations: any[];\n currentTab: any;\n}\n\nconst PaymentPopUp = (props: IPaymentPopupProps) => {\n const [showPaymentTypes, setShowPaymentTypes] = useState(false);\n const [selectedPayment, setSelectedPayment] = useState({\n display_name: \"Select Payment\",\n } as any);\n const [paymentAmount, setPaymentAmount] = useState(0);\n const [paymentAmountCopy, setPaymentAmountCopy] = useState(0);\n const [inputValue, setInputValue] = useState(\"\");\n const [refCodeInputValue, setRefCodeInputValue] = useState(\"\");\n const [remainingAmount, setRemainingAmount] = useState(0);\n const [balanceAmount, setBalanceAmount] = useState(0);\n const [paymentBreakdown, setPaymentBreakdown] = useState([] as any[]);\n const [showPaymentBreakDown, setShowPaymentBreakdown] = useState(false);\n const [showPaymentBoxCCInput, setShowPaymentBoxCCInput] = useState(false);\n const [showChangePreview, setShowChangePreview] = useState(false);\n const [paymentsList, setPaymentsList] = useState([] as any);\n const [disablePayButton, setPayButtonDisabled] = useState(false);\n\n // Keypad controls\n const [showKeypad, setShowKeypad] = useState(false);\n const [keyboardRef, setKeyboardRef] = useState(null as any);\n\n const paymentInputRef = useRef() as MutableRefObject;\n // Cash rounding\n const [roundedAmount, setCashRoundedAmount] = useState(0);\n const [showRoundedString, setShowRoundedString] = useState(false);\n const [roundedString, setRoundedString] = useState(\"\");\n const [excessAmount, setExcessAmount] = useState(0);\n const [totalPaymentAmount, setTotalPaymentAmount] = useState(0);\n\n const integratedPaymentPartners = [\n PAYMENT_PARTNER.MAGNATI,\n PAYMENT_PARTNER.STRIPE_CONNECT,\n PAYMENT_PARTNER.RAZORPAY,\n ];\n\n const { payments: companyPaymentTypes, branches: companyLocations } =\n useAppStateSelector((state) => state);\n\n const locationPaymentPartner = useMemo(() => {\n let orderLocation = companyLocations.find(\n (loc: any) => loc.id === props.locationId\n );\n if (\n orderLocation?.payment_partners &&\n orderLocation?.payment_partners.length > 0\n ) {\n return orderLocation?.payment_partners[0];\n }\n return null;\n }, [JSON.stringify(companyLocations), props.locationId]);\n\n const paymentTypes = useMemo(\n () =>\n filterCashRoundingPaymentTypes(\n filterTakeawayPaymentPartnersByLocation(\n companyPaymentTypes,\n locationPaymentPartner,\n integratedPaymentPartners,\n props.isTakeAway\n )\n ),\n [locationPaymentPartner, locationPaymentPartner, props.isTakeAway]\n );\n\n const {\n currentPage: paymentTypesCurrentPage,\n navigateNextPage: navPaymentTypesNextPage,\n navigatePrevPage: navPaymentTypesPrevPage,\n paginatedItems: paginatedPaymentTypes,\n totalPages: paymentTypesTotalPages,\n } = usePagination({\n itemsList: paymentTypes,\n });\n\n const partnerTermDevices = useMemo(() => {\n if (!locationPaymentPartner) {\n return [];\n }\n return locationPaymentPartner.devices;\n }, [locationPaymentPartner]);\n\n const {\n currentPage: devicesCurrentPage,\n navigateNextPage: navDevicesNextPage,\n navigatePrevPage: navDevicesPrevPage,\n paginatedItems: paginatedDevicesPage,\n totalPages: devicesTotalPages,\n } = usePagination({ itemsList: partnerTermDevices });\n\n const [showDevices, setShowDevices] = useState(false);\n const [selectedPaymentPartner, setSelectedPaymentPartner] = useState(\"\");\n\n const intl = useIntl();\n const formattedMessage = (formatId: any) => {\n const translatedMessage = intl.formatMessage({ id: formatId });\n return translatedMessage;\n };\n\n const terminalDeviceId = useRef(null);\n\n const {\n txnDeclineReason: razorpayTxnDeclineReason,\n txnStatus: razorpayTxnStatus,\n enableCancelTxn: enableRazorpayCancelTxn,\n handleCancelTxnCtaClick: onRazorpayTxnCtaClick,\n handlePaymentWithRazorpay,\n } = useRazorpayPayment({\n amount: inputValue,\n getDeviceId: () => terminalDeviceId.current,\n clearDeviceId: () => (terminalDeviceId.current = null),\n locationId: props.locationId,\n paymentType: selectedPayment,\n razorpayTxn: {\n initiate: props.initiateRazorpayTransaction,\n cancel: props.cancelRazorpayTransaction,\n },\n onTransactionSuccess(configs) {\n addPayment(configs);\n },\n handleCloseTxnStatusView() {\n setSelectedPaymentPartner(\"\");\n },\n });\n\n const {\n stripeConnectError,\n initiatePaymentWithStripeConnect,\n txnStatus: stripeConnectTxnStatus,\n enableCancelTxn: enableStripeConnectCancelTxn,\n handleCancelTxnCtaClick: stripeConnectCancelCtaClick,\n handleRetryTxnCtaClick: stripeConnectRetryCtaClick,\n } = useStripeConnectPayment({\n amount: inputValue,\n orderId: props.orderId,\n orderNo: props.orderNo,\n getDeviceId: () => terminalDeviceId.current,\n clearDeviceId: () => terminalDeviceId.current = null,\n locationId: props.locationId,\n locationPartnerConfig: locationPaymentPartner,\n paymentTypeId: selectedPayment.id,\n handleCloseTxnStatusView() {\n setSelectedPaymentPartner(\"\");\n },\n onTransactionSuccess(configs) {\n addPayment(configs);\n },\n onTransactionCancel() {},\n initiateStripeConnectPaymentIntentCreate:\n props.initiateStripeConnectPaymentIntentCreate,\n fetchStripeConnectTerminalPayment: props.fetchStripeConnectTerminalPayment,\n processStripeConnectTerminalPayment:\n props.processStripeConnectTerminalPayment,\n cancelStripeConnectTerminalPayment:\n props.cancelStripeConnectTerminalPayment,\n });\n\n const {\n txnDeclineReason: magnatiTxnDeclineReason,\n txnStatus: magnatiTxnStatus,\n enableCancelTxn: enableMagnatiCancelTxn,\n handleCancelTxnCtaClick: onMagnatiTxnCtaClick,\n handlePaymentWithMagnati,\n } = useMagnatiPayment({\n amount: inputValue,\n getDeviceId: () => terminalDeviceId.current,\n clearDeviceId: () => terminalDeviceId.current = null,\n locationId: props.locationId,\n paymentType: selectedPayment,\n initiateMagnatiTransaction: props.initiateMagnatiTransaction,\n cancelMagnatiTransaction: props.cancelMagnatiTransaction,\n handleCloseTxnStatusView() {\n setSelectedPaymentPartner(\"\");\n },\n onTransactionSuccess(configs) {\n addPayment(configs);\n },\n });\n\n useEffect(() => {\n if (props.payments.length === 0) {\n props\n .fetchPayments()\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Initiated Payment\",\n level: \"debug\",\n });\n setPaymentStates();\n }, []);\n\n useEffect(() => {\n let amountToPay: any;\n if (selectedPayment?.display_name) {\n if (\n props.cash_rounding?.enabled &&\n selectedPayment?.display_name == \"Cash\" &&\n props.isTakeAway\n ) {\n let cashroundedValues: any = computeCashRounding(\n props.paymentAmount,\n props.cash_rounding.rule,\n props.cash_rounding.interval\n );\n let cashRoundedString = generateCashRoundingString(\n props.paymentAmount,\n props.cash_rounding.rule,\n props.cash_rounding.interval\n );\n let roundedValue = formatDecimal(cashroundedValues.roundedAmount);\n let excessValue = formatDecimal(cashroundedValues.excessAmount);\n excessValue = parseFloat(cashroundedValues.excessAmount);\n setCashRoundedAmount(roundedValue);\n setRoundedString(cashRoundedString);\n if (roundedValue !== props.paymentAmount) {\n setShowRoundedString(true);\n setExcessAmount(excessValue);\n } else {\n setShowRoundedString(false);\n }\n amountToPay = formatDecimal(roundedValue);\n } else {\n amountToPay = formatDecimal(props.paymentAmount);\n setShowRoundedString(false);\n }\n }\n setTotalPaymentAmount(amountToPay);\n }, [props.paymentAmount, selectedPayment]);\n\n useEffect(() => {\n setPaymentStates();\n let breakdownTotal = paymentBreakdown.reduce(\n (total: number, item: any) => total + parseFloat(item.amount),\n 0\n );\n let remainingValue = totalPaymentAmount - breakdownTotal;\n setInputValue(formatDecimal(remainingValue));\n setRemainingAmount(parseFloat(formatDecimal(remainingValue)));\n }, [totalPaymentAmount, paymentBreakdown]);\n\n useEffect(() => {\n if (paymentInputRef.current) {\n paymentInputRef.current.focus();\n }\n props.showModal && setPaymentStates();\n }, [props.showModal]);\n\n useEffect(() => {\n if (paymentTypes.length > 1) {\n // TODO:: Get default payment type from API.\n let defaultPayment = paymentTypes.find(\n (payment: any) => payment.primary === true\n );\n if (defaultPayment) {\n setSelectedPayment(defaultPayment);\n } else {\n setSelectedPayment(paymentTypes[0]);\n }\n }\n }, [paymentTypes]);\n\n useEffect(() => {\n if (showPaymentTypes && paymentBreakdown.length === 0) {\n $(\".modal-content\").removeClass(\"split-payment\");\n } else if (showPaymentTypes && paymentBreakdown.length > 0) {\n $(\".modal-content\").removeClass(\"split-payment\");\n } else if (!showPaymentTypes && paymentBreakdown.length === 0) {\n $(\".modal-content\").removeClass(\"split-payment\");\n } else {\n $(\".modal-content\").addClass(\"split-payment\");\n }\n }, [showPaymentTypes]);\n\n useEffect(() => {\n if (showPaymentBoxCCInput) {\n $(\".modal-content\").addClass(\"split-payment\");\n }\n }, [showPaymentBoxCCInput]);\n\n useEffect(() => {\n showChangePreview && $(\".modal-content\").removeClass(\"split-payment\");\n }, [showChangePreview]);\n\n useEffect(() => {\n if (paymentBreakdown.length > 0) {\n setShowPaymentBreakdown(true);\n $(\".modal-content\").addClass(\"split-payment\");\n let breakDownContainerElement = document.querySelector(\n \".payment-breakdown-container\"\n ) as HTMLDivElement;\n if (breakDownContainerElement) {\n breakDownContainerElement.scrollTop =\n breakDownContainerElement.scrollHeight;\n }\n } else {\n // setInputValue(formatDecimal(paymentAmount));\n setPaymentAmountCopy(0);\n setShowPaymentBreakdown(false);\n $(\".modal-content\").removeClass(\"split-payment\");\n }\n }, [paymentBreakdown]);\n\n useEffect(() => {\n setPayButtonDisabled(!(parseFloat(inputValue) >= 0));\n }, [inputValue]);\n\n const handleSelectionWithPaymentPartner = (selectedPayment: any) => {\n if (partnerTermDevices.length > 1) {\n setShowDevices(true);\n } else {\n handleDeviceSelection({ name: selectedPayment, id: partnerTermDevices[0].device_id });\n }\n };\n\n const handleDeviceSelection = (data: any) => {\n terminalDeviceId.current = data.id;\n setShowDevices(false);\n setShowPaymentTypes(false);\n initiateWithPaymentPartner({ paymentPartner: selectedPayment.name })\n };\n\n const selectPayment = (payment: {\n id: number;\n name: string;\n icon: string;\n }) => {\n let selectedPayment = paymentTypes.find((d: any) => d.id === payment.id);\n if (\n integratedPaymentPartners.includes(\n selectedPayment.name as PAYMENT_PARTNER\n ) &&\n partnerTermDevices.length === 0\n ) {\n Swal.fire({\n icon: \"warning\",\n title: \"Oops!\",\n text: \"No devices added. Please add a device by going to payment partner settings in your location setup\",\n });\n return;\n }\n setSelectedPayment(selectedPayment);\n setShowPaymentTypes(!showPaymentTypes);\n };\n\n const setPaymentStates = () => {\n let amountToPay = formatDecimal(totalPaymentAmount);\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Setting local state payment amount\",\n data: {\n amountToPay,\n },\n level: \"debug\",\n });\n setPaymentAmount(parseFloat(amountToPay));\n setPaymentAmountCopy(parseFloat(amountToPay));\n };\n\n const flushPaymentStates = () => {\n setPaymentAmount(0);\n setRemainingAmount(0);\n setInputValue(\"\");\n setBalanceAmount(0);\n setPaymentAmountCopy(0);\n setRefCodeInputValue(\"\");\n setPaymentBreakdown([]);\n setShowPaymentBreakdown(false);\n setShowChangePreview(false);\n setShowPaymentBreakdown(false);\n setPaymentsList([]);\n setShowKeypad(false);\n };\n\n const addRefCode = (e: any) => {\n setRefCodeInputValue(e.target.value);\n };\n\n const addAmountForPayment = (e: React.ChangeEvent) => {\n let validInput = numberInputRegex.test(e.target.value)\n ? e.target.value\n : inputValue;\n paymentInputRef.current.value = validInput;\n setInputValue(validInput);\n if (keyboardRef !== null) {\n keyboardRef.current.setInput(validInput);\n }\n };\n\n const removePaymentFromBreakdown = (paymentIndex: number) => {\n let filteredPaymentBreakdown = paymentBreakdown.filter(\n (paymentMode: any, index: number) => paymentIndex !== index\n );\n let removedPayment = paymentBreakdown[paymentIndex];\n setPaymentBreakdown(filteredPaymentBreakdown);\n let breakdownTotal = filteredPaymentBreakdown.reduce(\n (total: number, item: any) => total + parseFloat(item.amount),\n 0\n );\n let remainingAmt = formatDecimal(paymentAmount - breakdownTotal);\n Sentry.addBreadcrumb({\n category: \"payments\",\n data: {\n removedPayment,\n breakdownTotal,\n remainingAmt,\n },\n });\n setRemainingAmount(parseFloat(remainingAmt));\n setInputValue(remainingAmt);\n };\n\n const initiateWithPaymentPartner = ({\n paymentPartner,\n }: {\n paymentPartner: PAYMENT_PARTNER;\n }) => {\n switch (paymentPartner) {\n case PAYMENT_PARTNER.MAGNATI:\n setSelectedPaymentPartner(PAYMENT_PARTNER.MAGNATI);\n handlePaymentWithMagnati();\n break;\n case PAYMENT_PARTNER.STRIPE_CONNECT:\n setSelectedPaymentPartner(PAYMENT_PARTNER.STRIPE_CONNECT);\n initiatePaymentWithStripeConnect();\n break;\n case PAYMENT_PARTNER.RAZORPAY:\n setSelectedPaymentPartner(PAYMENT_PARTNER.RAZORPAY);\n handlePaymentWithRazorpay()\n break;\n default:\n break;\n }\n };\n\n // Check if selected payment requires reference code\n const addSelectedPayment = () => {\n if (\n integratedPaymentPartners.includes(selectedPayment.name) &&\n props.isTakeAway\n ) {\n handleSelectionWithPaymentPartner(selectedPayment.name);\n } else if (\n selectedPayment.requires_reference_code &&\n !showPaymentBoxCCInput\n ) {\n setShowPaymentBoxCCInput(true);\n } else if (\n selectedPayment.requires_reference_code &&\n showPaymentBoxCCInput\n ) {\n if (refCodeInputValue) {\n setShowPaymentBoxCCInput(false);\n addPayment({ refCode: refCodeInputValue });\n }\n } else {\n addPayment(undefined);\n }\n };\n\n const addPayment = (config: any) => {\n setRefCodeInputValue(\"\");\n let paymentInputValue = parseFloat(inputValue);\n let skipRemainingSplit = false;\n if (parseFloat(formatDecimal(paymentInputValue)) < remainingAmount) {\n // split payment case\n setShowPaymentBoxCCInput(false);\n let partialPayment: any = {\n payment: selectedPayment,\n amount: parseFloat(formatDecimal(paymentInputValue)),\n amount_collected: parseFloat(formatDecimal(paymentInputValue)),\n };\n if (config?.refCode) {\n partialPayment[\"referenceCode\"] = config?.refCode;\n }\n if (config?.metaData) {\n partialPayment[\"metaData\"] = config?.metaData;\n }\n setPaymentBreakdown([...paymentBreakdown, partialPayment]);\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Split payment initiated, adding payment to breakdown\",\n data: {\n amount: partialPayment.amount,\n amount_collected: partialPayment.amount_collected,\n user_input_value: paymentInputValue,\n },\n level: \"debug\",\n });\n let computedRemainingAmount =\n paymentAmountCopy === 0\n ? paymentAmount - parseFloat(formatDecimal(paymentInputValue))\n : paymentAmountCopy - parseFloat(formatDecimal(paymentInputValue));\n setInputValue(formatDecimal(computedRemainingAmount));\n setPaymentAmountCopy(parseFloat(formatDecimal(computedRemainingAmount)));\n setRemainingAmount(parseFloat(formatDecimal(computedRemainingAmount)));\n if (paymentInputRef.current) {\n paymentInputRef.current.focus();\n }\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Computed remaining amount values\",\n data: {\n paymentAmountCopy,\n computedRemainingAmount,\n },\n level: \"debug\",\n });\n } else {\n // single payment or remaining payment from split payment\n let paymentBreakdownArray = paymentBreakdown;\n let selectedPaymentObject = selectedPayment;\n let balance =\n parseFloat(formatDecimal(paymentInputValue)) - remainingAmount;\n skipRemainingSplit =\n remainingAmount <= 0 &&\n parseFloat(formatDecimal(paymentInputValue)) <= 0 &&\n paymentAmount !== 0;\n if (parseFloat(formatDecimal(paymentInputValue)) >= remainingAmount) {\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Excess amount has been given as input.\",\n data: {\n remainingAmount,\n paymentInputValue: parseFloat(formatDecimal(paymentInputValue)),\n paymentAmount,\n },\n });\n if (paymentBreakdownArray.length > 0) {\n // Adds remaining value to the split\n let partialPaymentObject: any = {\n payment: selectedPayment,\n amount: parseFloat(formatDecimal(remainingAmount)),\n amount_collected: parseFloat(formatDecimal(paymentInputValue)),\n };\n if (config?.refCode) {\n partialPaymentObject[\"referenceCode\"] = config?.refCode;\n }\n if (config?.metaData) {\n partialPaymentObject[\"metaData\"] = config?.metaData;\n }\n paymentBreakdownArray.push(partialPaymentObject);\n Sentry.addBreadcrumb({\n category: \"payments\",\n message:\n \"Split payment - transforming payload and appending it to breakdown array\",\n data: {\n payment: partialPaymentObject,\n paymentBreakdownArray,\n skipRemainingSplit,\n balance,\n },\n level: \"debug\",\n });\n } else {\n selectedPaymentObject = {\n ...selectedPaymentObject,\n payment: selectedPayment,\n amount: parseFloat(formatDecimal(remainingAmount)),\n amount_collected: parseFloat(formatDecimal(paymentInputValue)),\n };\n if (config?.refCode) {\n selectedPaymentObject[\"referenceCode\"] = config?.refCode;\n }\n if (config?.metaData) {\n selectedPaymentObject[\"metaData\"] = config?.metaData;\n }\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Single payment - transforming payload\",\n data: {\n payment: selectedPaymentObject,\n paymentBreakdownArray,\n skipRemainingSplit,\n balance,\n },\n level: \"debug\",\n });\n }\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Emptying states\",\n data: {\n skipRemainingSplit,\n balance,\n },\n level: \"debug\",\n });\n setInputValue(formatDecimal(0));\n setPaymentAmountCopy(formatDecimal(0));\n setRemainingAmount(parseFloat(formatDecimal(0)));\n if (balance >= 0) {\n setBalanceAmount(parseFloat(formatDecimal(balance)));\n }\n }\n if (paymentBreakdownArray.length > 0) {\n let paymentsArray: any[] = [];\n paymentBreakdownArray.map((payment: any, index: number) => {\n let paymentPayload = createPaymentPayload(payment);\n paymentsArray.push(paymentPayload);\n });\n paymentAction(paymentsArray);\n Sentry.addBreadcrumb({\n category: \"payments\",\n message:\n \"Split payment - Building payload and appending to payload list\",\n data: {\n payments_list: paymentsArray,\n },\n level: \"debug\",\n });\n } else {\n if (skipRemainingSplit) {\n Sentry.addBreadcrumb({\n category: \"payments\",\n message: \"Skipping remaining split payment\",\n data: {\n skipRemainingSplit,\n },\n level: \"debug\",\n });\n paymentAction([]);\n } else {\n let paymentPayload = createPaymentPayload(selectedPaymentObject);\n paymentAction([paymentPayload]);\n Sentry.addBreadcrumb({\n category: \"Payments\",\n message: \"Single payment - Building payload for single payment\",\n data: {\n payments_list: [paymentPayload],\n },\n level: \"debug\",\n });\n }\n }\n }\n };\n\n const createPaymentPayload = (selectedPayment: any) => {\n let paymentObject: any = new Object();\n paymentObject[\"name\"] = selectedPayment.payment.display_name;\n paymentObject[\"id\"] = selectedPayment.payment.id;\n paymentObject[\"amount\"] = selectedPayment.amount;\n paymentObject[\"amount_collected\"] = selectedPayment.amount_collected;\n if (selectedPayment.referenceCode) {\n paymentObject[\"reference_code\"] = selectedPayment.referenceCode;\n }\n if (selectedPayment.metaData) {\n paymentObject[\"meta_data\"] = selectedPayment.metaData;\n }\n return paymentObject;\n };\n\n const paymentAction = (paymentsArray: any) => {\n setPaymentsList(paymentsArray);\n setShowChangePreview(true);\n };\n\n const validatePayment = (\n collectedPayments: any[],\n completePayment: () => void\n ) => {\n let totalCollectedAmount = parseFloat(\n formatDecimal(\n collectedPayments.reduce((totalAmount: number, payment: any) => {\n return totalAmount + Math.abs(payment.amount_collected);\n }, 0)\n )\n );\n Sentry.addBreadcrumb({\n category: \"payments\",\n level: \"debug\",\n data: {\n order_id: props.orderId,\n collected_total: totalCollectedAmount,\n payment_amount: paymentAmount,\n collected_payments: collectedPayments,\n },\n message: `Collected payment for amount ${paymentAmount} ${props.currency}`,\n });\n if (\n !(totalCollectedAmount >= parseFloat(formatDecimal(props.paymentAmount)))\n ) {\n console.debug(\n `[APP] Collected payment total of ${totalCollectedAmount} does not add up to order total ${paymentAmount}`,\n collectedPayments\n );\n let text: any = formattedMessage(\"payment.err1\");\n Swal.fire({\n icon: \"error\",\n title: \"Payment Error\",\n text: text,\n }).then(() => {\n closePaymentModal();\n hardRefresh();\n });\n } else {\n console.debug(\n `[APP] Collected payment for amount ${paymentAmount} ${props.currency}`,\n collectedPayments\n );\n completePayment();\n }\n };\n\n const confirmPaymentChangePreview = () => {\n let collectedPayments: any[] = [];\n let paymentArray: any[] = paymentsList;\n if (showRoundedString) {\n paymentArray = handleCashRoundedPayment(paymentsList);\n }\n if (\n props.orderPayments.length === 1 &&\n props.orderPayments[0].name === \"Loyalty\"\n ) {\n if (props.paymentAmount === 0) {\n // If order is fully paid with Loyalty\n Sentry.addBreadcrumb({\n category: \"payments\",\n level: \"debug\",\n data: {\n collectedPayments,\n },\n message: `Confirming fully paid loyalty order`,\n });\n collectedPayments = [\n {\n ...props.orderPayments[0],\n amount_collected: props.orderPayments[0].amount,\n },\n ];\n validatePayment(collectedPayments, () =>\n props.paymentAction(props.orderId, {\n payments: collectedPayments,\n })\n );\n } else {\n // If order has partial payment done with Loyalty\n Sentry.addBreadcrumb({\n category: \"payments\",\n level: \"debug\",\n data: {\n collectedPayments,\n },\n message: `Confirming partially paid loyalty order`,\n });\n collectedPayments = [...paymentArray, props.orderPayments[0]];\n validatePayment(collectedPayments, () =>\n props.paymentAction(props.orderId, {\n payments: collectedPayments,\n })\n );\n }\n } else {\n Sentry.addBreadcrumb({\n category: \"payments\",\n level: \"debug\",\n data: {\n collectedPayments,\n },\n message: `Validating order from payment popup`,\n });\n validatePayment(paymentArray, () =>\n props.paymentAction(props.orderId, { payments: paymentArray })\n );\n }\n closePaymentModal();\n };\n\n const payButtonAction = () => {\n addSelectedPayment();\n };\n\n const backButtonAction = () => {\n setShowPaymentBoxCCInput(false);\n closePaymentModal();\n };\n\n const closePaymentModal = () => {\n flushPaymentStates();\n props.setShowModal(false);\n };\n\n const onEnterKeyPress = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n payButtonAction();\n }\n };\n\n const handleCashRoundedPayment = (paymentArray: any[]) => {\n let cashRoundingPaymentType: any = props.payments.find(\n (payment: any) => payment.display_name == \"Cash Rounding\"\n );\n let cashRoundedAmountObject: any = new Object();\n cashRoundedAmountObject[\"name\"] = cashRoundingPaymentType.display_name;\n cashRoundedAmountObject[\"id\"] = cashRoundingPaymentType.id;\n cashRoundedAmountObject[\"amount\"] = excessAmount;\n cashRoundedAmountObject[\"amount_collected\"] = excessAmount;\n\n return [...paymentArray, cashRoundedAmountObject];\n };\n\n return (\n \n {\n setSelectedPaymentPartner(\"\");\n },\n }}\n magnatiConfigs={{\n magnatiTxnDeclineReason,\n txnStatus: magnatiTxnStatus,\n showCancelTxnCta: enableMagnatiCancelTxn,\n onTxnCancelCtaClick: onMagnatiTxnCtaClick,\n onCloseTxnStatusViewClick: () => {\n setSelectedPaymentPartner(\"\");\n },\n }}\n razorpayConfigs={{\n txnDeclineReason: razorpayTxnDeclineReason,\n txnStatus: razorpayTxnStatus,\n showCancelTxnCta: enableRazorpayCancelTxn,\n onTxnCancelCtaClick: onRazorpayTxnCtaClick,\n onCloseTxnStatusViewClick: () => {\n setSelectedPaymentPartner(\"\");\n },\n }}>\n \n {showChangePreview ? (\n
\n \n ({props.currency})\n \n

\n \n {formatDecimal(balanceAmount)}\n \n

\n
\n ) : (\n <>\n {showPaymentTypes || showDevices ? (\n showDevices ? (\n ({\n id: d.device_id,\n name: d.name,\n }))}\n onSelect={handleDeviceSelection}\n />\n ) : (\n ({\n id: d.id,\n name: d.display_name,\n icon: d.icon,\n }))}\n onSelect={selectPayment}\n />\n )\n ) : (\n
\n
\n \n (\n {props.currency})\n \n \n {formatDecimal(paymentAmount)}\n \n {showRoundedString ? (\n

{roundedString}

\n ) : null}\n
\n {showPaymentBreakDown && !showPaymentTypes ? (\n <>\n

\n \n

\n
\n
\n

\n :\n

\n

\n {props.currency +\n \" \" +\n formatDecimal(paymentAmount)}\n

\n
\n \n \n {paymentBreakdown.map(\n (payment: any, index: number) => (\n <>\n \n \n \n \n \n \n )\n )}\n \n
\n {payment.payment.display_name}\n {payment.referenceCode\n ? `(${payment.referenceCode})`\n : null}\n \n {props.currency + \" \" + payment.amount}\n \n \n removePaymentFromBreakdown(index)\n }\n >\n \n \n
\n
\n \n ) : null}\n
\n
\n
\n setShowKeypad(!showKeypad)}\n icon={faTh}\n />\n
\n \n
\n {showKeypad ? (\n \n ) : null}\n {showPaymentBoxCCInput ? (\n \n setShowPaymentBoxCCInput(false)}\n >\n \n \n \n {selectedPayment ? selectedPayment.display_name : \"\"}\n \n
\n setShowKeypad(!showKeypad)}\n icon={faTh}\n />\n
\n \n {(placeholder) => (\n addRefCode(e)}\n placeholder={placeholder}\n />\n )}\n \n
\n ) : null}\n setShowPaymentTypes(true)}\n >\n \n {selectedPayment ? selectedPayment.display_name : \"\"}\n \n \n \n \n \n
\n
\n \n )}\n \n )}\n
\n \n {showChangePreview ? (\n
\n \n \n \n
\n ) : (\n <>\n {showPaymentTypes || showDevices ? (\n showDevices ? (\n {\n setShowDevices((t) => !t);\n setSelectedPaymentPartner(\"\");\n }}\n />\n ) : (\n setShowPaymentTypes((t) => !t)}\n />\n )\n ) : (\n <>\n \n \n {parseFloat(inputValue) < remainingAmount ? (\n \n ) : (\n \n )}\n \n \n )}\n \n )}\n \n \n \n );\n};\n\nconst mapStateToProps = (state: any) => {\n let payments = state.payments || [];\n let currency = state.company.company_details.currency;\n let cash_rounding = state.company.company_details.cash_rounding;\n let locations = state.branches;\n let currentTab = state.currentTab;\n\n return { payments, currency, cash_rounding, locations, currentTab };\n};\n\nconst mapDispatchToProps = {\n fetchPayments: paymentsOperations.fetchPayments,\n initiateMagnatiTransaction: paymentsOperations.initiateMagnatiTransaction,\n cancelMagnatiTransaction: paymentsOperations.cancelMagnatiTransaction,\n processStripeConnectTerminalPayment:\n paymentsOperations.processStripeConnectTerminalPayment,\n initiateStripeConnectPaymentIntentCreate:\n paymentsOperations.initiateStripeConnectPaymentIntentCreate,\n fetchStripeConnectTerminalPayment:\n paymentsOperations.fetchStripeConnectTerminalPayment,\n cancelStripeConnectTerminalPayment:\n paymentsOperations.cancelStripeConnectTerminalPayment,\n initiateRazorpayTransaction: paymentsOperations.initiateRazorpayTransaction,\n cancelRazorpayTransaction: paymentsOperations.cancelRazorpayTransaction,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PaymentPopUp);\n","import { useEffect, useRef, useState } from \"react\";\nimport { PAYMENT_STATUS } from \"../../../../types/payments\";\nimport { usePusher } from \"../../../../hooks/usePusher\";\nimport { PAYMENT_PARTNER } from \"../../utils\";\nimport type { Channel } from \"pusher-js\";\nimport { razorpayLogger } from \"./utils\";\n\ninterface Params {\n amount: number | string;\n paymentType: () => any;\n getDeviceId: () => any;\n clearDeviceId: any;\n locationId: number;\n razorpayTxn?: {\n initiate: (payload: any) => Promise | void;\n cancel: (transRefId: any, data: any) => Promise | void;\n };\n handleCloseTxnStatusView(): void;\n onTransactionSuccess(configs?: any): void;\n}\n\nconst useRazorpayPayment = ({\n amount,\n paymentType,\n getDeviceId,\n clearDeviceId,\n locationId,\n razorpayTxn = {\n initiate: (payload) => {},\n cancel: (transRefId, data) => {},\n },\n handleCloseTxnStatusView,\n onTransactionSuccess,\n}: Params) => {\n const [configs, setConfigs] = useState();\n const [isTxnInitiateFailed, setIsTxnInitiateFailed] = useState(false);\n const [isTxnInitiated, setIsTxnInitiated] = useState(false);\n const [txnStatus, setTxnStatus] = useState(PAYMENT_STATUS.WAITING);\n\n const [enableCancelTxn, setEnableCancelTxn] = useState(true);\n const [txnDeclineReason, setTxnDeclineReason] = useState(\"\");\n const pusher = usePusher();\n\n const cancelTxnTimeout = useRef(null);\n const txnSuccessTimeout = useRef(null);\n\n const resetTxnProgressValues = () => {\n txnSuccessTimeout.current = null;\n cancelTxnTimeout.current = null;\n };\n\n useEffect(() => {\n return () => {\n // Clean up on unmount\n if (txnSuccessTimeout.current) {\n clearTimeout(txnSuccessTimeout.current);\n }\n if (cancelTxnTimeout.current) {\n clearTimeout(cancelTxnTimeout.current);\n }\n };\n }, []);\n\n useEffect(() => {\n let channel: Channel | null = null;\n if (paymentType.name == PAYMENT_PARTNER.RAZORPAY) {\n if (configs && !isTxnInitiated) {\n setTxnStatus(PAYMENT_STATUS.CANCELLED);\n }\n if (isTxnInitiateFailed) {\n setTxnStatus(PAYMENT_STATUS.FAILED);\n setTxnDeclineReason(\"Internet connection failure\");\n }\n if (configs && isTxnInitiated) {\n setTxnStatus(PAYMENT_STATUS.IN_PROGRESS);\n if (!configs.referenceId) {\n console.error(\"reference id is undefined\");\n razorpayLogger.addDebugLog(\"Razorpay - reference id undefined\");\n } else {\n let { referenceId, deviceId, locationId } = configs;\n channel = pusher.subscribe(\n `private_razorpay_transaction_${deviceId}`\n );\n channel.bind(\"payment_success\", (data: any) => {\n const {\n transaction_reference_id,\n transaction_id,\n metadata: metaData,\n } = data;\n if (transaction_reference_id == referenceId) {\n let cardNo = metaData.card_no.toString();\n razorpayLogger.addDebugLog(\"Razorpay - Transaction successful\");\n clearTimeout(txnSuccessTimeout.current);\n clearTimeout(cancelTxnTimeout.current);\n setTxnStatus(PAYMENT_STATUS.PAID);\n handleRazorpayTransactionSuccess({\n refCode: cardNo.slice(-4),\n metaData,\n });\n setTimeout(() => {\n resetTxnProgressValues();\n handleCloseTxnStatusView();\n clearDeviceId();\n }, 5000);\n channel?.unbind();\n }\n });\n channel.bind(\"payment_failed\", (data: any) => {\n razorpayLogger.addDebugLog(\"Razorpay - Transaction failed\");\n if (data.transaction_reference_id == referenceId) {\n clearTimeout(txnSuccessTimeout.current);\n clearTimeout(cancelTxnTimeout.current);\n setTxnStatus(PAYMENT_STATUS.FAILED);\n if (data?.metadata?.response_from_partner) {\n setTxnDeclineReason(data?.metadata?.response_from_partner);\n handleRazorpayTransactionFail({\n referenceId,\n configs: { device_id: deviceId, location_id: locationId },\n });\n } else {\n setTxnDeclineReason(\"Internet connection failure\");\n }\n resetTxnProgressValues();\n channel?.unbind();\n }\n });\n razorpayLogger.addDebugLog(\"Razorpay - Transaction started\");\n startTransaction();\n }\n }\n }\n return () => {\n // Clean up on unmount\n if (channel) {\n channel.unsubscribe();\n }\n };\n }, [configs, isTxnInitiateFailed]);\n\n const handlePaymentWithRazorpay = () => {\n setTxnStatus(PAYMENT_STATUS.WAITING);\n let referenceId = `razorpay-transaction-${locationId}-${getDeviceId()}-${new Date().getTime()}`;\n let payload = {\n device_id: getDeviceId(),\n amount: parseFloat(amount),\n payment_type_id: paymentType.id,\n location_id: locationId,\n reference_id: referenceId,\n order_type: \"call-center\",\n };\n setIsTxnInitiated(true);\n razorpayTxn\n .initiate(payload)\n .then((response) => {\n if (!response.error && response?.payload?.status === 200) {\n setConfigs({ referenceId, deviceId: getDeviceId(), locationId });\n }\n })\n .catch((err) => {\n setIsTxnInitiateFailed(true);\n setIsTxnInitiated(false);\n handleRazorpayTransactionFail({\n referenceId,\n configs: { device_id: getDeviceId(), location_id: locationId },\n });\n });\n };\n\n const startTransaction = () => {\n // DMMS will wait till 3 minutes for the the payment.\n // If we didnt get the response within 3 minutes it will cancel the transaction.\n txnSuccessTimeout.current = setTimeout(() => {\n razorpayLogger.addDebugLog(\"Razorpay - Transaction timed out\");\n handleTransactionTimedOut();\n }, 180000);\n };\n\n const handleTransactionTimedOut = () => {\n setTxnStatus(PAYMENT_STATUS.CANCELLED);\n handleRazorpayTransactionFail({\n referenceId: configs?.referenceId,\n configs: {\n device_id: configs.deviceId,\n location_id: configs.locationId,\n },\n });\n clearTimeout(txnSuccessTimeout.current);\n clearTimeout(cancelTxnTimeout.current);\n };\n\n const handleCancelTxnCtaClick = () => {\n handleRazorpayTransactionFail({\n referenceId: configs?.referenceId,\n configs: {\n device_id: configs.deviceId,\n location_id: configs.locationId,\n },\n });\n resetTxnProgressValues();\n handleCloseTxnStatusView();\n clearDeviceId();\n };\n\n const handleRazorpayTransactionSuccess = (configs: any) => {\n setIsTxnInitiateFailed(false);\n setIsTxnInitiated(false);\n setConfigs(null);\n onTransactionSuccess(configs);\n };\n\n const handleRazorpayTransactionFail = ({ referenceId, configs }: any) => {\n setConfigs(null);\n razorpayTxn.cancel(referenceId, configs).catch((err) => {\n console.log(err);\n });\n };\n\n return {\n txnDeclineReason,\n txnStatus,\n enableCancelTxn,\n handleCancelTxnCtaClick,\n handlePaymentWithRazorpay,\n };\n};\n\nexport { useRazorpayPayment };\n","import React, { useEffect, useState } from \"react\";\nimport { CountdownCircleTimer } from \"react-countdown-circle-timer\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\n\ninterface iRadialTimeCountProps {\n auto_reject_in?: any;\n placedTime?: any;\n orderId?: any;\n handleAutoReject?: any;\n limboStateOrders?:any;\n}\n\nfunction RadialTimeCount(props: iRadialTimeCountProps) {\n const [autoRejectInSecs, setAutoRejectInSecs] = useState(0);\n const [differenceInTime, setDifferenceInTime] = useState(60);\n const [startTimer, setStartTimer] = useState(false);\n const [timer, setTimer] = useState((
) as any);\n const [isLimboState, setIsLimboState] = useState(false);\n\n useEffect(() => {\n let placed_at_time: any = new Date(props.placedTime);\n let reject_time: any = new Date(\n placed_at_time.getTime() + props.auto_reject_in * 60000\n );\n let current_time: any = new Date();\n var differenceInTimeCopy = (reject_time - current_time) / 1000;\n if (differenceInTimeCopy < 60 && differenceInTimeCopy > 0) {\n setDifferenceInTime(differenceInTimeCopy);\n }\n if (differenceInTimeCopy <= 0 && !isLimboState) {\n props.handleAutoReject(props.orderId);\n }\n\n let timeout = setTimeout(() => {\n setStartTimer(false);\n setTimer(\n
\n
\n
\n );\n if (props.orderId && !isLimboState) {\n props.handleAutoReject(props.orderId);\n }\n }, differenceInTimeCopy * 1000);\n let elapsedSeconds: any;\n let timeIntervel = setInterval(() => {\n let current_time: any = new Date();\n var differenceInTime = Math.abs((current_time - reject_time) / 1000);\n let elapsedHours: any = differenceInTime / (60 * 60);\n var elapsedMinutes: any = (elapsedHours * 60) % 60;\n elapsedSeconds = (elapsedMinutes * 60) % 60;\n if (parseInt(elapsedHours) > 0) {\n setTimer(\n
\n
{parseInt(elapsedHours)}
\n
\n
\n );\n } else if (parseInt(elapsedMinutes) > 0) {\n setTimer(\n
\n
{parseInt(elapsedMinutes + 1)}
\n
\n
\n );\n } else {\n setTimer(\n
\n
{parseInt(elapsedSeconds)}
\n
\n
\n );\n setStartTimer(true);\n }\n }, 1000);\n setAutoRejectInSecs(parseInt(elapsedSeconds));\n return () => {\n clearInterval(timeIntervel);\n clearTimeout(timeout);\n };\n }, [props.placedTime]);\n\n useEffect(() => {\n if (props.limboStateOrders.length) {\n if (props.limboStateOrders.includes(props.orderId)) {\n setIsLimboState(true);\n }\n }\n }, [props.limboStateOrders.length]);\n\n return (\n
\n
\n [true, 1000]}\n >\n {timer}\n \n
\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let limboStateOrders = state.limboStateOrders;\n return { limboStateOrders };\n};\n\nexport default connect(mapStateToProps)(RadialTimeCount);\n","import React, { useEffect } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { FormattedMessage } from \"react-intl\";\n\ninterface ISetDeliveryTimePopup {\n show: any;\n handleShow: any;\n handleApprove: any;\n orderId: any;\n defaultDeliveryEta: any;\n}\n\nfunction SetDeliveryTimePopup(props: ISetDeliveryTimePopup) {\n const [eta, setEta] = React.useState(0 as number);\n const [disabledConfirm, setConfirmDisabled] = React.useState(false);\n const etaInput: any = React.useRef();\n const setEtaInput = (e: any) => {\n let regExp = /^([0-9]|[0-9][0-9]|[0-9][0-9][0-9])$/;\n setConfirmDisabled(!regExp.test(e.target.value));\n setEta(e.target.value);\n };\n\n useEffect(() => {\n if (etaInput.current) {\n etaInput.current.focus();\n }\n }, [props.show]);\n\n useEffect(() => {\n setEta(props.defaultDeliveryEta);\n }, [props.defaultDeliveryEta]);\n\n return (\n props.handleShow(!props.show)}\n >\n \n

\n \n

\n

\n \n

\n
\n setEtaInput(e)}\n />\n

\n {\" \"}\n

\n
\n
\n \n props.handleShow(!props.show)}\n >\n \n \n props.handleApprove(props.orderId, eta)}\n >\n \n \n \n \n );\n}\n\nexport default SetDeliveryTimePopup;\n","import DriverSearchImage from \"../images/third-party-delivery/driver-search.svg\";\nimport WaitingToPickImage from \"../images/third-party-delivery/waiting-to-pick.svg\";\nimport DriverWaitingImage from \"../images/third-party-delivery/driver-waiting.svg\";\nimport RequestCancelledImage from \"../images/third-party-delivery/request-cancelled.svg\";\nimport DeliveringImage from \"../images/third-party-delivery/delivering.svg\";\nimport {\n faBiking,\n faBox,\n faUserCheck,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FormattedMessage } from \"react-intl\";\nimport React from \"react\";\n\nconst logisticOrderStatus = {\n 1: {\n class: \"pending_assignment\",\n btn_text: ,\n btn_icon: \"\",\n class_name: \"search-for-driver\",\n popup_title: ,\n concatString:\"...\",\n popup_text: ,\n popup_image: DriverSearchImage,\n },\n 2: {\n class: \"assigned\",\n btn_text: ,\n btn_icon: faBiking,\n class_name: \"waiting-to-pick\",\n popup_title: ,\n concatString:\"...\",\n popup_text: ,\n popup_image: WaitingToPickImage,\n },\n 3: {\n class: \"cancelled\",\n btn_text: ,\n btn_icon: \"\",\n class_name: \"cancelled\",\n popup_title: ,\n concatString:\"\",\n popup_text: ,\n popup_image: RequestCancelledImage,\n },\n 4: {\n class: \"assigned\",\n btn_text: ,\n btn_icon: faBox,\n class_name: \"driver-waiting\",\n popup_title: (\n \n ),\n concatString:\"\",\n popup_text: ,\n popup_image: DriverWaitingImage,\n },\n 5: {\n class: \"items_purchased\",\n btn_text: ,\n btn_icon: faBiking,\n popup_title: ,\n concatString:\"...\",\n popup_text: ,\n popup_image: DeliveringImage,\n },\n 6: {\n class: \"complete\",\n btn_text: ,\n btn_icon: faUserCheck,\n popup_title: ,\n concatString:\"\",\n popup_text: ,\n popup_image: \"\",\n },\n 7: {\n class: \"pending_assignment\",\n btn_text: ,\n btn_icon: \"\",\n class_name: \"search-for-driver\",\n popup_title: ,\n concatString:\"...\",\n popup_text: ,\n popup_image: DriverSearchImage,\n },\n} as any;\n\nexport default logisticOrderStatus;\n","import React, { useRef } from \"react\";\nimport { Button } from \"react-bootstrap\";\n\ninterface OrderButtonGroupProps {\n title: any;\n setOrderAction: any;\n disable: any;\n}\n\nexport default function OrderButtonGroup(props: OrderButtonGroupProps) {\n const debouncedClick = useRef(false);\n\n const handleClick = () => {\n if (!debouncedClick.current) {\n props.setOrderAction();\n debouncedClick.current = true;\n setTimeout(() => {\n debouncedClick.current = false;\n }, 3000);\n }\n };\n\n return (\n
\n \n {props.title}\n \n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { logisticPartnersOperations } from \"../../state/features/logisticPartners\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport ModalCloseIcon from \"../modalCloseIcon\";\nimport OrderButtonGroup from \"../orderButtonGroup\";\n\ninterface iLogisticDetailsPopupProps {\n handleClose: any;\n orderId: any;\n trackUrl: any;\n cancelLogisticJob: any;\n onCancel: any;\n logisticStatus: any;\n}\n\nfunction LogisticDetailsPopup(props: iLogisticDetailsPopupProps) {\n const [show, setShow] = useState(true);\n const [showCancelPickup, setShowCancelPickup] = useState(true);\n const handleClose = () => {\n setShow(false);\n props.handleClose();\n };\n const setCancelCtaText = () => {\n return ;\n }\n const handleCancelPickup = () => {\n props\n .cancelLogisticJob(props.orderId)\n .then((res: any) => {\n props.onCancel();\n handleClose();\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n };\n\n useEffect(() => {\n if (props.logisticStatus == 5 || props.logisticStatus == 6) {\n setShowCancelPickup(false);\n }\n }, [props.logisticStatus]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {showCancelPickup ? (\n \n ) : null}\n \n \n );\n}\n\nconst mapDispatchToProps = {\n cancelLogisticJob: logisticPartnersOperations.cancelLogisticJob,\n};\n\nexport default connect(null, mapDispatchToProps)(LogisticDetailsPopup);\n","import React from \"react\";\n\nexport default function Loader() {\n return (\n
\n \n \n \n
\n );\n}\n","import React from \"react\";\n\nexport default function Refresh() {\n return (\n
\n \n \n \n \n
\n );\n}\n","import {\n DirectionsRenderer,\n GoogleMap,\n Marker,\n useJsApiLoader,\n} from \"@react-google-maps/api\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { CoordinateLiteral } from \"../riderTracking\";\nimport { FormattedMessage } from \"react-intl\";\nimport { faMapPin } from \"@fortawesome/free-solid-svg-icons\";\nimport motorCycleIcon from \"./icons/motorcycle-icon-pin.svg\";\nimport Loader from \"./icons/loader\";\nimport Refresh from \"./icons/refresh\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\n\ninterface IRiderMapContainerProps {\n order: any;\n userCoords: CoordinateLiteral;\n riderCoords: CoordinateLiteral;\n riderDetails: any;\n riderLastGeoUpdate: any;\n fetchRiderLocation: any;\n}\n\nconst RiderMapContainer = (props: IRiderMapContainerProps) => {\n const [directions, setDirections] = useState();\n const [riderEta, setRiderEta] = useState(undefined);\n const [showInactiveBanner, setShowInactiveBanner] = useState(false);\n const [refeshLoading, setRefreshLoading] = useState(false);\n\n const { isLoaded: isMapLoaded, loadError: mapLoadError } = useJsApiLoader({\n googleMapsApiKey: getEnvValueFor(\"GOOGLE_MAPS_API_KEY\") as string,\n });\n\n const debouncedClick = useRef(false);\n\n const mapRef = useRef();\n const onMapLoad = useCallback((map) => (mapRef.current = map), []);\n const mapOptions = useMemo(\n () => ({\n disableDefaultUI: true,\n clickableIcons: false,\n }),\n []\n );\n const directionsOptions = useMemo(\n () => ({\n markerOptions: { clickable: false },\n suppressMarkers: true,\n }),\n []\n );\n\n useEffect(() => {\n if (elapsedTime() > 5) {\n setShowInactiveBanner(true);\n } else {\n setShowInactiveBanner(false);\n }\n }, [props.riderLastGeoUpdate]);\n\n function elapsedTime() {\n let currentTime = Date.now();\n\n return (currentTime - props.riderLastGeoUpdate) / (1000 * 60);\n }\n\n useEffect(() => {\n if (mapLoadError) {\n throw new Error(\"Map Load error\");\n }\n }, [mapLoadError]);\n\n useEffect(() => {\n if (isMapLoaded && props.riderCoords) {\n calculateRoute(props.riderCoords, props.userCoords);\n }\n }, [props.riderCoords, isMapLoaded]);\n\n const calculateRoute = (\n origin: CoordinateLiteral,\n destination: CoordinateLiteral\n ) => {\n const service = new google.maps.DirectionsService();\n service.route(\n {\n origin,\n destination,\n travelMode: google.maps.TravelMode.DRIVING,\n },\n (result, status) => {\n if (status == \"OK\" && result) {\n setDirections(result);\n setRiderEta(result.routes[0].legs[0].duration?.text);\n }\n }\n );\n };\n\n const refreshMap = () => {\n if (!debouncedClick.current) {\n debouncedClick.current = true;\n setRefreshLoading(true);\n setTimeout(() => {\n props.fetchRiderLocation();\n if (elapsedTime() > 5) {\n setShowInactiveBanner(true);\n }\n setRefreshLoading(false);\n }, 1000);\n setTimeout(() => {\n debouncedClick.current = false;\n }, 3000);\n }\n };\n\n return isMapLoaded ? (\n \n {showInactiveBanner ? (\n
\n \n \n \n \n {Math.round(elapsedTime())} mins ago\n \n
\n ) : null}\n \n {props.riderCoords ? (\n \n ) : null}\n {props.order.order_status?.includes(\"in_progress\") ? (\n
\n {isMapLoaded ? (\n refreshMap()}>\n {refeshLoading ? : }\n \n ) : null}\n

\n \n

\n

\n {\" \"}\n {riderEta}\n

\n
\n ) : (\n
\n {isMapLoaded ? (\n refreshMap()}>\n {refeshLoading ? : }\n \n ) : null}\n

\n {riderEta}\n

\n

\n : {props.riderDetails.name}\n

\n
\n )}\n {directions && (\n \n )}\n
\n ) : null;\n};\n\nexport default RiderMapContainer;\n","import noMap from \"../../images/no-map.svg\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport React from \"react\";\n\nconst FallbackUiOnError = () => {\n return (\n
\n
\n
\n \"no-map\"\n
\n
\n

Oops! Unable to load map

\n

Please try again by reloading the page

\n
\n
\n
\n );\n};\n\nconst MapErrorBoundary = ({ children }:any) => {\n return (\n }>\n {children}\n \n );\n};\n\nexport default MapErrorBoundary;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { driverOperations } from \"../../state/features/drivers\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport RiderMapContainer from \"../riderMapContainer\";\nimport MarkerPinSlashedIcon from \"../../images/marker-pin-slash.svg\";\nimport MapErrorBoundary from \"../mapErrorBoundary\";\nimport { useAppStateSelector } from \"../../hooks/useAppStateSelector\";\n\nexport type CoordinateLiteral = { lat: number; lng: number };\n\ninterface iRiderTrackingProps {\n order: any;\n riderDetails?: any;\n locationId?: any;\n locations?: any;\n fetchRiderCoordinates?: any;\n companyRiders: any;\n}\n\nconst RiderTracking = (props: iRiderTrackingProps) => {\n const [riderDetails, setRiderDetails] = useState({});\n const [riderCoords, setRiderCoords] = useState(null);\n const [locationCoords, setLocationCoords] = useState(null);\n const [locationName, setLocationName] = useState(\"\");\n const [riderLastGeoUpdate, setRiderLastGeoUpdate] = useState(Date.now());\n\n const { theme } = useAppStateSelector((state) => state);\n\n const rider = useMemo(() => {\n let isAssignedToOrder = Boolean(props.order.rider_id);\n let isRiderMissingFromCompany = !Boolean(\n props.companyRiders.find((r) => r.id === props.order.rider_id)\n );\n return { isAssignedToOrder, isRiderMissingFromCompany };\n }, [props.order, props.companyRiders]);\n\n const fetchRiderLocation = () => {\n props\n .fetchRiderCoordinates(props.riderDetails.id)\n .then((res: any) => {\n let data = res?.payload?.data;\n let isRiderCoordsPresent =\n data &&\n Object.entries(data).filter(\n (entry) => [\"lat\", \"long\"].includes(entry[0]) && Boolean(entry[1])\n ).length === 2;\n if (!isRiderCoordsPresent) {\n console.log(\"Could not retrieve rider coordinates\");\n }\n if (isRiderCoordsPresent) {\n setRiderCoords({\n lat: parseFloat(data.lat),\n lng: parseFloat(data.long),\n });\n setRiderLastGeoUpdate(data.last_geo_updated_at);\n }\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(\"Could not fetch rider coordinates\", err);\n });\n };\n\n useEffect(() => {\n if (props.riderDetails?.id) {\n setRiderDetails(props.riderDetails);\n fetchRiderLocation();\n }\n if (props.locationId && props.locations.length) {\n let locationData = props.locations.find(\n (loc: any) => loc.id === props.locationId\n );\n setLocationName(locationData.name);\n let isLocationCoordsPresent =\n Object.entries(locationData).filter(\n (entry) =>\n [\"latitude\", \"longitude\"].includes(entry[0]) && Boolean(entry[1])\n ).length === 2;\n if (!isLocationCoordsPresent) {\n console.log(\"Could not retrieve location coordinates\");\n }\n if (isLocationCoordsPresent) {\n setLocationCoords({\n lat: locationData.latitude,\n lng: locationData.longitude,\n });\n }\n }\n }, []);\n\n return (\n
\n
\n {locationCoords ? (\n rider.isAssignedToOrder && rider.isRiderMissingFromCompany ? (\n
\n
\n

\n \n

\n

\n ,\n }}\n />\n

\n
\n
\n ) : (\n \n \n \n )\n ) : (\n
\n
\n
\n \n
\n

\n \n

\n

\n {locationName} }}\n />\n

\n
    \n Locations > {locationName}\"\n tagName=\"code\"\n values={{ locationName }}\n />\n ),\n }}\n />\n \n ),\n }}\n />\n \n
\n
\n
\n )}\n
\n
\n );\n};\n\nconst mapStateToProps = (state: any) => {\n let locations = state.branches;\n let companyRiders = state.drivers.company_drivers;\n\n return { locations, companyRiders };\n};\n\nconst mapDispatchToProps = {\n fetchRiderCoordinates: driverOperations.fetchRiderCoordinates,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RiderTracking);\n","import React, { useRef } from \"react\";\n\ninterface ThrottleButtonProps {\n onClick?: (event?: any) => any;\n className?: string;\n style?: any;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport function Button({\n onClick = () => {},\n className = \"\",\n style = {},\n disabled = false,\n children,\n}: ThrottleButtonProps) {\n const debouncedClick = useRef(false);\n\n const handleClick = (e: any) => {\n if (!debouncedClick.current) {\n onClick(e);\n debouncedClick.current = true;\n setTimeout(() => {\n debouncedClick.current = false;\n }, 3000);\n }\n };\n\n return (\n \n {children}\n \n );\n}\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { useMemo, useState } from \"react\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport MapSvg from \"../../images/svg\";\nimport { Button } from \"../throttleButton\";\n\ninterface IRiderRosterProps {\n showCompanyRiders: boolean;\n companyRiders: any[];\n partnerRiders: any[];\n onCompanyRiderSelect: (rider: any) => void;\n onShowRiderTracking: (rider: any) => void;\n onPartnerRiderSelect: (partnerRider: any) => void;\n assignCompanyRider: (rider: any) => void;\n}\n\nfunction RidersRoster({\n showCompanyRiders = false,\n companyRiders = [],\n partnerRiders = [],\n onCompanyRiderSelect = (rider) => {},\n onShowRiderTracking = (rider) => {},\n onPartnerRiderSelect = (partnerRider) => {},\n assignCompanyRider = (rider) => {},\n}: IRiderRosterProps) {\n const [searchValue, setSearchValue] = useState(\"\");\n\n const intl = useIntl();\n\n const companyRidersFilter = useMemo(() => {\n let requiredDrivers = companyRiders.filter((e: any) => {\n return e.name.toLowerCase().includes(searchValue.toLowerCase());\n });\n if (requiredDrivers.length == 0 && searchValue) {\n requiredDrivers.push(\"No Drivers\");\n }\n return requiredDrivers;\n }, [searchValue, companyRiders]);\n\n const partnerRidersFilter = useMemo(() => {\n let requiredDrivers = partnerRiders.filter((e: any) => {\n return e.name.toLowerCase().includes(searchValue.toLowerCase());\n });\n if (requiredDrivers.length == 0 && searchValue) {\n requiredDrivers.push(\"No Drivers\");\n }\n return requiredDrivers;\n }, [searchValue, partnerRiders]);\n\n const handleCompanyRiderSelect = (rider: any) => {\n onCompanyRiderSelect(rider);\n };\n\n const handleShowRiderTracking = (rider: any) => {\n onCompanyRiderSelect(rider);\n onShowRiderTracking(rider);\n };\n\n const handlePartnerRiderSelect = (partnerRider: any) => {\n onPartnerRiderSelect(partnerRider);\n };\n\n return (\n <>\n

\n \n

\n

\n \n

\n {showCompanyRiders ? (\n <>\n
\n
\n
\n \n
\n setSearchValue(e.target.value)}\n />\n
\n
\n

\n \n

\n
    0 ? {} : { height: \"360px\" }}>\n {companyRiders.length > 0 &&\n companyRidersFilter[0] != \"No Drivers\" ? (\n <>\n {(companyRidersFilter.length != 0\n ? companyRidersFilter\n : companyRiders\n ).map((rider: any, index: number) => {\n return (\n handleCompanyRiderSelect(rider)}\n className=\"driver-option\">\n {rider.name}\n
    \n {\n handleShowRiderTracking(rider);\n }}\n className=\"dropdown-group-btn show-map-button btn mr-3\">\n \n \n {\n handleCompanyRiderSelect(rider);\n assignCompanyRider(rider);\n }}\n className=\"dropdown-group-btn light-green btn px-4\">\n \n \n
    \n \n );\n })}\n \n ) : (\n
  • \n \n
  • \n )}\n
\n {partnerRiders.length > 0 ? (\n <>\n

\n {\" \"}\n \n

\n
    \n {partnerRiders.length > 0 &&\n partnerRidersFilter[0] != \"No Drivers\" ? (\n <>\n {(partnerRidersFilter.length != 0\n ? partnerRidersFilter\n : partnerRiders\n ).map((partner: any, index: number) => {\n return (\n
  • \n {partner.name}\n
    \n handlePartnerRiderSelect(partner)}\n className=\"dropdown-group-btn light-green btn px-4\">\n \n \n
    \n
  • \n );\n })}\n \n ) : (\n
  • \n \n
  • \n )}\n
\n \n ) : null}\n \n ) : null}\n \n );\n}\nexport default RidersRoster;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport ModalCloseIcon from \"../modalCloseIcon\";\nimport logisticOrderStatus from \"../../helpers/logisticOrderStatus\";\nimport LogisticDetailsPopup from \"../logisticDetailsPopup\";\nimport { connect } from \"react-redux\";\nimport { logisticPartnersOperations } from \"../../state/features/logisticPartners\";\nimport { FormattedMessage } from \"react-intl\";\nimport RiderTracking from \"../riderTracking\";\nimport { driverOperations } from \"../../state/features/drivers\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport RidersRoster from \"./ridersRoster\";\nimport { Button } from \"../throttleButton\";\nimport { useDebouncer } from \"../../hooks/useDebouncer\";\n\ninterface iDeliveryPartnerPopupProps {\n order: any;\n handleClose: any;\n deliveryPartners: any[];\n assignPartner: any;\n onPartnerAssign: any;\n cancelLogisticJob?: any;\n companyDrivers?: any;\n assignNewOrderRider?: any;\n assignReadyOrderRiderWithoutStateChange?: any;\n riderAppEnabled?: boolean;\n unassignReadyOrderRider?: any;\n unassignNewOrderRider?: any;\n orderType: string;\n handleOrder: any;\n}\n\nfunction DeliveryPartnerPopup(props: iDeliveryPartnerPopupProps) {\n const [show, setShow] = useState(true);\n const [showLoading, setShowLoading] = useState(true);\n const [showThirdPartyDetails, setShowThirdPartyDetails] = useState(false);\n const [partnerDrivers, setPartnerDrivers] = useState([] as any);\n const [trackingUrl, setTrackingUrl] = useState(\"\");\n const [selectedDriver, setSelectedDriver] = useState({} as any);\n const [showOwnDriverStatus, setShowOwnDriverStatus] = useState(false);\n const [companyDrivers, setCompanyDrivers] = useState([] as any);\n\n const { debounceFn } = useDebouncer({ interval: 3000 });\n\n const handleClose = () => {\n setShow(false);\n props.handleClose();\n };\n\n useEffect(() => {\n setShowLoading(false);\n }, []);\n\n const findDriver = (partner: any) => {\n props.onPartnerAssign(true);\n props\n .assignPartner(props.order.order_id, parseInt(partner.id))\n .then((res: any) => {\n props.handleClose();\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n };\n\n useEffect(() => {\n // Close popup when order has delivered status\n if (\n props.order.logistics_job !== undefined &&\n props.order.logistics_job?.status === 6\n ) {\n handleClose();\n }\n if (\n props.order.logistics_job !== undefined &&\n props.order.logistics_job?.metadata !== undefined\n ) {\n setTrackingUrl(props.order.logistics_job.metadata.track_url || \"\");\n }\n if (props.riderAppEnabled && props.order.rider_id) {\n if (props.companyDrivers) {\n let assignedRider = props.companyDrivers.find(\n (driver: any) => driver.id === props.order.rider_id\n );\n setSelectedDriver(assignedRider);\n setShowOwnDriverStatus(true);\n }\n }\n }, [props.order]);\n\n useEffect(() => {\n setPartnerDrivers(props.deliveryPartners);\n }, [props.deliveryPartners.length]);\n\n const handleCancelPickup = () => {\n props\n .cancelLogisticJob(props.order.order_id)\n .then((res: any) => {\n handleClose();\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n };\n\n const handleDriverSelect = (driver: any, type: string) => {\n if (type !== \"own\") {\n findDriver(driver);\n } else {\n setSelectedDriver(driver);\n }\n };\n\n const handleRiderAssign = (driver: any) => {\n if (props.order.order_status.includes(\"ready\")) {\n props\n .assignReadyOrderRiderWithoutStateChange(\n props.order.order_id,\n driver.id\n )\n .then((res: any) => {\n if (!res.error) {\n handleClose();\n }\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else {\n props\n .assignNewOrderRider(props.order.order_id, driver.id)\n .then((res: any) => {\n if (!res.error) {\n handleClose();\n }\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n };\n\n useEffect(() => {\n let drivers = props.companyDrivers.filter((driver: any) =>\n driver.assigned_locations.includes(props.order.location_id)\n );\n setCompanyDrivers(drivers);\n }, [props.companyDrivers, props.order]);\n\n const showCompanyRiders = useMemo(() => {\n return (\n props.order.order_status.includes(\"ready\") ||\n (props.riderAppEnabled && props.orderType !== \"scheduled\")\n );\n }, [props.riderAppEnabled, props.order, props.orderType]);\n\n const handleRiderUnassign = () => {\n if (props.order.order_status.includes(\"ready\")) {\n props\n .unassignReadyOrderRider(props.order.order_id)\n .then((res: any) => {\n if (!res.error) {\n handleClose();\n }\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else {\n props\n .unassignNewOrderRider(props.order.order_id)\n .then((res: any) => {\n if (!res.error) {\n handleClose();\n }\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n };\n\n return (\n <>\n \n \n
\n {showLoading ? (\n
\n \n
\n ) : (\n <>\n {props.order.logistics_job &&\n props.order.logistics_job.status != 3 ? (\n \n

\n {\n logisticOrderStatus[props.order.logistics_job.status]\n .popup_title\n }\n {\n logisticOrderStatus[props.order.logistics_job.status]\n .concatString\n }\n

\n

\n {\n logisticOrderStatus[props.order.logistics_job.status]\n .popup_text\n }\n

\n \n {props.order.logistics_job.metadata.track_url ? (\n
\n setShowThirdPartyDetails(true)}>\n \n \n
\n ) : (\n
\n handleCancelPickup()}>\n \n \n
\n )}\n
\n ) : props.riderAppEnabled ? (\n
\n {showOwnDriverStatus ? (\n
\n

\n \n

\n

{selectedDriver?.name ?? \"\"}

\n \n
\n ) : (\n <>\n {\n handleDriverSelect(rider, \"own\");\n }}\n onShowRiderTracking={(rider) => {\n handleDriverSelect(rider, \"own\");\n setShowOwnDriverStatus(true);\n }}\n onPartnerRiderSelect={(partnerRider) => {\n handleDriverSelect(partnerRider, \"logistics\");\n }}\n assignCompanyRider={(rider) => handleRiderAssign(rider)}\n />\n \n )}\n
\n {showOwnDriverStatus &&\n !props.order.order_status?.includes(\"in_progress\") &&\n (props.order.rider_id ? (\n <>\n {props.order.order_status?.includes(\"ready\") ? (\n props.handleOrder()}\n className=\"dropdown-group-btn btn light-green popup-footer-btn\">\n \n \n ) : null}\n \n \n \n \n ) : (\n setShowOwnDriverStatus(false)}\n className=\"dropdown-group-btn light-green btn px-5\">\n \n \n ))}\n
\n
\n ) : (\n
\n

\n \n

\n

\n \n

\n
    \n {partnerDrivers.length > 0 ? (\n <>\n {partnerDrivers.map((partner: any, index: number) => {\n return (\n debounceFn(findDriver(partner))}>\n {partner.name}\n \n );\n })}\n \n ) : (\n
  • \n \n
  • \n )}\n
\n
\n )}\n \n )}\n \n \n {showThirdPartyDetails && props.order.logistics_job ? (\n setShowThirdPartyDetails(false)}\n trackUrl={trackingUrl}\n logisticStatus={props.order.logistics_job.status}\n orderId={props.order.order_id}\n onCancel={handleClose}\n />\n ) : null}\n \n );\n}\n\nconst mapDispatchToProps = {\n cancelLogisticJob: logisticPartnersOperations.cancelLogisticJob,\n assignNewOrderRider: driverOperations.assignNewOrderRider,\n assignReadyOrderRiderWithoutStateChange:\n driverOperations.assignReadyOrderRiderWithoutStateChange,\n unassignNewOrderRider: driverOperations.unassignNewOrderRider,\n unassignReadyOrderRider: driverOperations.unassignReadyOrderRider,\n};\n\nexport default connect(null, mapDispatchToProps)(DeliveryPartnerPopup);\n","import React from \"react\";\nimport { useRef } from \"react\";\n\ninterface Params {\n /**how long to delay further calls (in milliseconds) */\n interval?: number;\n}\n\nfunction useDebouncer({ interval = 3000 }: Params) {\n const isDebounced = useRef(false);\n const debounceFn = (callback: any) => {\n if (!isDebounced.current) {\n callback();\n isDebounced.current = true;\n setTimeout(() => {\n isDebounced.current = false;\n }, interval);\n }\n };\n return { debounceFn };\n}\n\nexport { useDebouncer };\n","import { filterOrderLogisticsPartners } from \"../../helpers/orderFunctions\";\n\nexport const logisticsConfigsInitialState = {\n logisticsPartnerAssigned: false,\n orderLogisticsPartners: [],\n showEmptyCell: false,\n skipInactiveLogisticsJobs: false\n};\n\nexport const logisticsReducer = (\n state: typeof logisticsConfigsInitialState,\n action: any\n) => {\n let logisticsEnabledOrderStatuses = [\"new\", \"ready\", \"in_progress\", \"scheduled\"];\n let logisticsEnabledOrderTypes = [\"homeDelivery\", \"scheduled\"];\n \n switch (action.type) {\n case \"SET_LOGISTICS_DETAILS\":\n let logisticsPartnerAssigned =\n action.order.logistics_job !== undefined &&\n action.order.logistics_job.status !== 3 &&\n logisticsEnabledOrderTypes.includes(action.orderType) &&\n logisticsEnabledOrderStatuses.includes(action.orderStatus);\n let cancelledJob =\n action.order.logistics_job !== undefined &&\n action.order.logistics_job.status === 3;\n let noRunningJobs = action.order.logistics_job === undefined;\n let skipInactiveLogisticsJobs = !(\n logisticsEnabledOrderTypes.includes(action.orderType) &&\n action.orderStatus === \"in_progress\" &&\n (cancelledJob || noRunningJobs)\n );\n return { ...state, logisticsPartnerAssigned, skipInactiveLogisticsJobs };\n case \"SET_ORDER_LOGISTICS_PARTNERS\":\n let orderLogisticsPartners = [];\n if (\n logisticsEnabledOrderTypes.includes(action.orderType) &&\n logisticsEnabledOrderStatuses.includes(action.orderStatus)\n ) {\n orderLogisticsPartners = filterOrderLogisticsPartners(\n action.order.location_id,\n action.logisticsPartners\n );\n if (\n action.orderType === \"scheduled\" &&\n action.orderStatus === \"scheduled\"\n ) {\n orderLogisticsPartners = orderLogisticsPartners.filter(\n (item: any) => {\n let partnerEnabledCountries =\n item?.configuration?.partner_config?.enabled_regions || [];\n let isScheduledOrdersSupported =\n item?.configuration?.partner_config\n ?.scheduled_order_assignment || false;\n return (\n partnerEnabledCountries.includes(action.countryCode) &&\n isScheduledOrdersSupported\n );\n }\n );\n }\n }\n return { ...state, orderLogisticsPartners };\n case \"SET_ASSIGNED_LOGISTICS_ORDER_PRESENCE\":\n let showEmptyCell =\n logisticsEnabledOrderTypes.includes(action.orderType) &&\n logisticsEnabledOrderStatuses.includes(action.orderStatus) &&\n action.hasLogistics;\n return { ...state, showEmptyCell };\n default:\n return state;\n }\n};\n","import React from \"react\";\nimport {\n faBiking,\n faExclamationTriangle,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FormattedMessage } from \"react-intl\";\nimport logisticOrderStatus from \"../../helpers/logisticOrderStatus\";\n\ninterface IOrderLogisticsControlProps {\n order: any;\n isPartnerAssignmentPending: boolean;\n logisticsConfigs: any;\n onClickAction(): any;\n isRiderAppEnabled: boolean | undefined;\n riderName: string;\n orderType: string;\n orderStatus: string;\n}\n\nconst OrderLogisticsControl = ({\n order,\n isPartnerAssignmentPending,\n logisticsConfigs,\n onClickAction: handleOnClickAction,\n isRiderAppEnabled,\n riderName,\n orderType,\n orderStatus,\n}: IOrderLogisticsControlProps) => {\n if (order?.order_extended_info?.take_away) {\n return null;\n }\n // If rider app is enabled and rider is assigned to order\n const ownRiderAssignedState =\n isRiderAppEnabled &&\n Boolean(order.rider_id) &&\n ((order.logistics_job && order.logistics_job?.status === 3) ||\n !order.logistics_job);\n const partnerRiderAssignedState =\n isRiderAppEnabled &&\n Boolean(order.rider_id) &&\n order.logistics_job &&\n order.logistics_job?.status !== 3;\n\n if (partnerRiderAssignedState) {\n let isRiderAssignedState = Boolean(order.rider_id);\n let isItemsPurchasedState =\n order.logistics_job && order.logistics_job?.status !== 3;\n return (\n
\n \n

\n {logisticOrderStatus[order.logistics_job.status].btn_icon ? (\n \n ) : null}\n {logisticOrderStatus[order.logistics_job.status].btn_text}\n

\n \n
\n );\n }\n\n if(ownRiderAssignedState){\n let isRiderAssignedState = Boolean(order.rider_id);\n let isItemsPurchasedState =\n order.logistics_job && order.logistics_job?.status !== 3;\n return (\n
\n \n {isRiderAssignedState ? (\n

\n {riderName ? (\n {riderName}\n ),\n }}\n />\n ) : (\n <>\n \n \n \n )}\n

\n ) : null}\n \n
\n );\n }\n\n if (isPartnerAssignmentPending) {\n return (\n
\n \n \n \n
\n );\n }\n\n if (logisticsConfigs.logisticsPartnerAssigned) {\n return (\n
\n \n {logisticOrderStatus[order.logistics_job.status].btn_icon ? (\n \n ) : null}\n {logisticOrderStatus[order.logistics_job.status].btn_text}\n \n
\n );\n }\n\n if (\n (logisticsConfigs.orderLogisticsPartners.length > 0 &&\n logisticsConfigs.skipInactiveLogisticsJobs) ||\n (isRiderAppEnabled && orderType !== \"scheduled\")\n ) {\n return (\n
\n \n \n {orderType !== \"scheduled\" ? (\n isRiderAppEnabled ? (\n \n ) : (\n \n )\n ) : (\n \n )}\n \n
\n );\n }\n return null;\n};\n\nexport default OrderLogisticsControl;\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { Button as ThrottleButton } from \"../throttleButton\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport { Modal } from \"react-bootstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSearch, faBiking } from \"@fortawesome/free-solid-svg-icons\";\nimport { connect } from \"react-redux\";\n\ninterface IRiderSelectionProps {\n orderType: any;\n orderStatus: any;\n isRiderAppEnabled: any;\n order: any;\n assignRiderToOrder: any;\n company: any;\n drivers: any;\n}\n\nfunction RiderSelctionPopup(props: IRiderSelectionProps) {\n const [showRiderPopup, setShowRiderPopup] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n const [riders, setRiders] = useState([] as any);\n const [selectedRider, setSelectedRider] = useState(null);\n\n const intl = useIntl();\n\n useEffect(() => {\n if (\n Object.keys(props.company).length > 0 &&\n props.drivers.length > 0\n ) {\n let locationDrivers = [] as any;\n props.drivers.map((driver: any) => {\n if (driver.assigned_locations.includes(props.order.location_id)) {\n locationDrivers.push(driver);\n }\n });\n setRiders(locationDrivers);\n }\n }, [props.drivers, props.order.location_id]);\n\n const assignDriverToOrder = (riderId?: any) => {\n setShowRiderPopup(false);\n props.assignRiderToOrder(props.order, riderId)\n setSelectedRider(null);\n };\n\n const companyRiderFilter = useMemo(() => {\n let requiredRiders = riders.filter((e: any) => {\n return e.name.toLowerCase().includes(searchValue.toLowerCase());\n });\n if (requiredRiders.length == 0 && searchValue) {\n requiredRiders.push(\"No Drivers\");\n }\n return requiredRiders;\n }, [searchValue, riders]);\n\n return (\n <>\n setShowRiderPopup(true)}\n disabled={props.order.logistics_job && props.order.logistics_job?.status !== 3}\n >\n \n \n \n {\n setSelectedRider(null);\n setShowRiderPopup(false);\n }}\n centered\n >\n
\n

\n {\" \"}\n {props.order.order_extended_info.order_number}\n

\n
\n
\n
\n \n
\n setSearchValue(e.target.value)}\n />\n
\n
\n
    \n {riders.length > 0 && companyRiderFilter[0] != \"No Drivers\" ? (\n (companyRiderFilter.length > 0 ? companyRiderFilter : riders).map(\n (rider: any, index: any) => {\n return (\n {\n setSelectedRider(rider);\n }}\n >\n

    {rider.name}

    \n \n );\n }\n )\n ) : (\n
  • \n \n
  • \n )}\n
\n
\n {\n setShowRiderPopup(false);\n setSelectedRider(null);\n }}\n className=\"rider-selection-button cancel-button\"\n >\n \n \n assignDriverToOrder(selectedRider?.id)}\n className=\"rider-selection-button assign-button\"\n disabled={!Boolean(selectedRider)}\n >\n \n \n
\n
\n \n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let drivers = state.drivers.company_drivers || [];\n let company = state.company.company_details;\n\n return { drivers, company };\n};\n\nexport default connect(mapStateToProps)(RiderSelctionPopup);\n","import React, { useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport {\n addModifiersToItems,\n getBranchName,\n getLogisticName,\n getOrderScheduledForDate,\n getOrderTime,\n updateOrderTotalAmount,\n} from \"../../helpers/orderFunctions\";\nimport OrderPopup from \"../orderPopup\";\nimport ElapsedTime from \"../elapsedTime\";\nimport { connect } from \"react-redux\";\nimport { formatDecimal } from \"../../helpers/itemCalculations\";\nimport PaymentPopUp from \"../paymentPopup\";\nimport orderImages from \"../../helpers/orderImage\";\nimport SapaadLogo from \"../../images/sapaad-square.png\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCheckCircle,\n faExclamation,\n faExclamationTriangle,\n faShoppingBag,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { scheduledOperations } from \"../../state/features/scheduled\";\nimport RadialTimeCount from \"../radialTimeCount\";\nimport SetDeliveryTimePopup from \"../setDeliveryTimePopup\";\nimport { logisticPartnersOperations } from \"../../state/features/logisticPartners\";\nimport DeliveryPartnerPopup from \"../deliveryPartnerPopup\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\nimport Swal, { SweetAlertResult } from \"sweetalert2\";\nimport { logisticsConfigsInitialState, logisticsReducer } from \"./utils\";\nimport { ZOMATO_GO_PARTNER_UNIQUE_ID } from \"../../helpers/constants\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport OrderLogisticsControl from \"./orderLogisticsControl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport RiderSelectionPopup from \"../riderSelectionPopup\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport OrderButtonGroup from \"../orderButtonGroup\";\n\ninterface IOrderProps {\n item: any;\n handleOrderState?: any;\n orderStatus?: any;\n companyDrivers?: any;\n currency?: any;\n orderType: any;\n dmCanRecordPayment?: any;\n branches?: any;\n disableButton?: boolean;\n removeScheduledOrder?: any;\n handleApprove?: any;\n handleReject?: any;\n autoRejectionSla: any;\n handleAutoReject?: any;\n defaultDeliveryEta?: any;\n hideDetails?: any;\n limboStateOrders?: any;\n logisticPartners?: any;\n assignLogisticPartner?: any;\n loyaltyDetails: any;\n showEmptyCell?: boolean;\n payments?: any;\n riderAppEnabled?: boolean;\n countryCode: string;\n assignDriver:any;\n selectedRider?: any;\n setSelectedRider?: any;\n newRiderSelection?: boolean;\n}\n\nfunction Order(props: IOrderProps) {\n const [order, setOrder] = useState({} as any);\n const [showDetails, setShowDetails] = useState(false);\n const [showPaymentPopup, setShowPaymentPopup] = useState(false);\n const [orderItems, setOrderItems] = useState([] as any);\n const [showDeliveryEtaPopup, setShowDeliveryEtaPopup] = useState(false);\n const [walkInOrderType, setWalkInOrderType] = useState(false);\n const [isLimboState, setIsLimboState] = useState(true);\n const [isZomatoDeliveryOrder, setIsZomatoDeliveryOrder] = useState(false);\n const [showDeliveryPartnerPopup, setShowDeliveryPartnerPopup] =\n useState(false);\n const [pendingPartnerAssign, setPendingPartnerAssign] = useState(false);\n const [logisticsConfigs, setLogisticsConfigs] = useReducer(\n logisticsReducer,\n logisticsConfigsInitialState\n );\n const [selectedOrderId, setSelectedOrderId] = useState(0);\n const [showPartnerRiderAssign, setShowPartnerRiderAssign] = useState(false);\n const partnerRiderAssignRef = useRef(null);\n const intl = useIntl();\n const handleShowDetails = () => {\n setShowDetails(true);\n };\n const formattedMessage = (formatId: any) => {\n const translatedMessage = intl.formatMessage({ id: formatId });\n return translatedMessage;\n };\n useEffect(() => {\n setOrderItems(addModifiersToItems(props.item.order_extended_info.items));\n setOrder(props.item);\n setLogisticsConfigs({\n type: \"SET_LOGISTICS_DETAILS\",\n order: props.item,\n orderStatus: props.orderStatus,\n orderType: props.orderType,\n });\n }, [props.item]);\n\n useEffect(() => {\n if (props.limboStateOrders.length) {\n setIsLimboState(props.limboStateOrders.includes(props.item.order_id));\n } else {\n setIsLimboState(false);\n }\n }, [props.limboStateOrders.length, props.limboStateOrders]);\n\n const setOrderStatusText = useMemo(() => {\n if(props.orderStatus == \"unconfirmed\"){\n return \n }\n else if (props.orderType == \"homeDelivery\") {\n switch (props.orderStatus) {\n case \"new\":\n return ;\n case \"ready\":\n if (props.riderAppEnabled && props.item.rider_id) {\n return ;\n } else if (\n !props.newRiderSelection &&\n !props.riderAppEnabled &&\n props.selectedRider &&\n props.selectedRider.assigned_locations.includes(\n props.item.location_id\n )\n ) {\n return ;\n } else {\n return ;\n }\n case \"in_progress\":\n return ;\n default:\n return ;\n }\n } else if (props.orderType == \"pickup\") {\n switch (props.orderStatus) {\n case \"new\":\n return ;\n case \"ready\":\n return ;\n case \"in_progress\":\n return ;\n case \"collected\":\n return ;\n default:\n return ;\n }\n } else {\n return ;\n }\n }, [\n props.orderType,\n props.orderStatus,\n props.newRiderSelection,\n props.riderAppEnabled,\n props.selectedRider,\n props.item.rider_id,\n ]);\n\n const getDisabledState = useMemo(() => {\n if (\n props.orderType == \"homeDelivery\" &&\n props.orderStatus == \"ready\" &&\n ((!props.riderAppEnabled &&\n !props.newRiderSelection &&\n props.selectedRider &&\n !props.selectedRider.assigned_locations.includes(\n props.item.location_id\n )) ||\n !props.selectedRider ||\n (props.riderAppEnabled && !props.item.rider_id) ||\n props.disableButton)\n ) {\n return true;\n }\n if (\n props.item.logistics_job &&\n props.item.logistics_job?.status !== 3 &&\n props.orderStatus == \"ready\"\n ) {\n return true;\n }\n return false\n }, [\n props.orderType,\n props.orderStatus,\n props.newRiderSelection,\n props.riderAppEnabled,\n props.selectedRider,\n props.item.rider_id,\n props.disableButton,\n props.item.logistics_job\n ]);\n\n function getOrderActions() {\n if(props.orderStatus == \"unconfirmed\"){\n return handleShowDetails()\n } else if(props.orderType == \"homeDelivery\"){\n switch (props.orderStatus) {\n case \"new\":\n return handleHomedeliveryOrderAction(props.item)\n case \"ready\":\n return handleHomedeliveryOrderAction(props.item)\n case \"in_progress\":\n return handleHomedeliveryOrderPayment(props.item)\n default : \n return\n }\n } else if (props.orderType == \"pickup\") {\n switch (props.orderStatus) {\n case \"new\":\n return props.handleOrderState(props.item.order_id)\n case \"ready\":\n return checkPaymentStatus(props.item)\n default:\n return\n }\n } else return\n }\n\n const checkPaymentStatus = (order: any) => {\n let payments: any[] = order.order_extended_info.payments;\n let isTakeAwayOrder: boolean = order.order_extended_info.take_away;\n let dmCanRecordPayment: boolean = props.dmCanRecordPayment;\n // if there are more than one payment exists\n let generatedCashPayments = [];\n generatedCashPayments = createPaymentPayload();\n if (payments.length > 0) {\n if (payments.length === 1 && payments[0].name === \"Loyalty\") {\n if (isTakeAwayOrder) {\n setShowPaymentPopup(true);\n } else {\n if (dmCanRecordPayment) {\n setShowPaymentPopup(true);\n } else {\n props.handleOrderState(props.item.order_id, {\n payments: payments,\n });\n }\n }\n } else {\n if (dmCanRecordPayment || isTakeAwayOrder) {\n props.handleOrderState(props.item.order_id);\n } else {\n props.handleOrderState(props.item.order_id, {\n payments: payments,\n });\n }\n }\n } else {\n if (isTakeAwayOrder) {\n setShowPaymentPopup(true);\n } else {\n if (props.dmCanRecordPayment) {\n setShowPaymentPopup(true);\n } else {\n props.handleOrderState(props.item.order_id, {\n payments: generatedCashPayments,\n });\n }\n }\n }\n };\n\n const riderName = useMemo(() => {\n if (props.companyDrivers.length) {\n let rider = props.companyDrivers.find(\n (rider: any) => rider.id == props.item.rider_id\n );\n return rider?.name ?? \"\";\n }\n return \"\";\n }, [JSON.stringify(props.companyDrivers), props.item]);\n\n useEffect(() => {\n let timer: any;\n if (props.orderType === \"scheduled\") {\n let today: any = new Date();\n let scheduled_for = props.item.scheduled_for;\n let time_difference = scheduled_for - today;\n /**\n * ## Workaround fix for setTimeout code block\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox\n * store the delay as a 32-bit signed integer internally.\n * This causes an integer overflow when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * Therefore we run the timer only for orders scheduled for less than 10 days\n */\n let tenth_day = new Date().setDate(today.getDate() + 10);\n let ten_days_difference = tenth_day - today.getTime();\n if (time_difference < ten_days_difference) {\n timer = setTimeout(() => {\n props.removeScheduledOrder(props.item.order_id);\n }, time_difference);\n }\n }\n if (\n props.item.order_type === \"walk_in\" &&\n props.item.order_extended_info.take_away\n ) {\n setWalkInOrderType(true);\n }\n return () => clearTimeout(timer);\n }, [props.item]);\n\n const handleDeliveryEtaConfirm = (orderId: any, eta: any) => {\n props.handleApprove(orderId, eta, props.item.order_source);\n if (showDetails) {\n setShowDetails(false);\n }\n setShowDeliveryEtaPopup(false);\n };\n\n useEffect(() => {\n if (props.hideDetails) {\n setShowDetails(false);\n }\n }, [props.hideDetails]);\n\n useEffect(() => {\n setLogisticsConfigs({\n type: \"SET_ORDER_LOGISTICS_PARTNERS\",\n order: props.item,\n logisticsPartners: props.logisticPartners,\n orderType: props.orderType,\n orderStatus: props.orderStatus,\n countryCode: props.countryCode,\n });\n }, [props.logisticPartners, props.item]);\n\n useEffect(() => {\n setLogisticsConfigs({\n type: \"SET_ASSIGNED_LOGISTICS_ORDER_PRESENCE\",\n hasLogistics: props.showEmptyCell,\n orderType: props.orderType,\n orderStatus: props.orderStatus,\n });\n }, [props.showEmptyCell, props.item]);\n\n useEffect(() => {\n let meta_note: string | undefined =\n order?.order_extended_info?.meta_note?.system_note;\n if (\n order.order_source === \"zomato\" &&\n meta_note?.includes(\"Zomato Delivery\")\n ) {\n setIsZomatoDeliveryOrder(true);\n } else {\n setIsZomatoDeliveryOrder(false);\n }\n if (order.logistics_job) {\n setPendingPartnerAssign(false);\n }\n }, [order]);\n\n const handleHomedeliveryOrderAction = (order: any, riderId?: any) => {\n if (\n props.orderType === \"homeDelivery\" &&\n props.orderStatus === \"ready\" &&\n order.logistics_job &&\n order.logistics_job.status !== 3\n ) {\n let title: any = formattedMessage(\"logistic_pickup_assign_err\");\n let text: any = formattedMessage(\"logistic_pickup_assign_err1\");\n Swal.fire({\n icon: \"warning\",\n title: title,\n text: text,\n showCancelButton: true,\n confirmButtonText: \"Yes\",\n confirmButtonColor: \"#3085D6\",\n cancelButtonText: \"No\",\n cancelButtonColor: \"#DD3333\",\n }).then((result: SweetAlertResult) => {\n if (result.isConfirmed) {\n if (riderId) {\n props\n .assignDriver(order.order_id, riderId)\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else {\n props.handleOrderState(order.order_id);\n }\n }\n });\n } else {\n if (riderId && props.orderStatus === \"ready\") {\n props\n .assignDriver(order.order_id, riderId)\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else if (order.rider_id && props.orderStatus === \"ready\") {\n props.handleOrderState(order.order_id, order.rider_id);\n } else {\n props.handleOrderState(order.order_id);\n }\n }\n };\n\n const handleHomedeliveryOrderPayment = (order: any) => {\n if (\n props.orderType === \"homeDelivery\" &&\n props.orderStatus === \"in_progress\" &&\n order.logistics_job &&\n order.logistics_job.status !== 3\n ) {\n let title: any = formattedMessage(\"logistic_delivered_err\");\n let text: any = formattedMessage(\"logistic_delivered_err1\");\n Swal.fire({\n icon: \"warning\",\n title: title,\n text: text,\n showCancelButton: true,\n confirmButtonText: \"Yes\",\n confirmButtonColor: \"#3085D6\",\n cancelButtonText: \"No\",\n cancelButtonColor: \"#DD3333\",\n }).then((result: SweetAlertResult) => {\n if (result.isConfirmed) {\n checkPaymentStatus(order);\n }\n });\n } else {\n checkPaymentStatus(order);\n }\n };\n\n const handleDeliveryPartnerPopup = (order: any) => {\n if (\n \"logistics_job\" in order &&\n order.logistics_job.partner_unique_id === ZOMATO_GO_PARTNER_UNIQUE_ID\n ) {\n let text: any = formattedMessage(\"zomato_err\");\n Swal.fire({\n icon: \"info\",\n text: text,\n });\n } else {\n if (!order.order_status?.includes(\"delivered\")) {\n setShowDeliveryPartnerPopup(true);\n } else {\n if(order.logistics_job){\n setShowDeliveryPartnerPopup(true);\n } else {\n setShowDeliveryPartnerPopup(false);\n }\n } \n }\n };\n\n const createPaymentPayload = () => {\n let cashPaymentType: any = props.payments.find(\n (payment: any) => payment.display_name == \"Cash\"\n );\n let paymentObject: any = new Object();\n paymentObject[\"name\"] = cashPaymentType.display_name;\n paymentObject[\"id\"] = cashPaymentType.id;\n paymentObject[\"amount\"] = order.order_extended_info.total_amount;\n paymentObject[\"amount_collected\"] = order.order_extended_info.total_amount;\n let mockPayments: any[] = [];\n mockPayments.push(paymentObject);\n return mockPayments;\n };\n\n const getPartnerRiderId = () =>{\n const partnerId = props.item.logistics_job.partner_id;\n const partner = props.logisticPartners.find((i: any) => i.id == partnerId);\n return partner.configuration.driver_id\n }\n\n useEffect(() => {\n setShowPartnerRiderAssign(false);\n clearTimeout(partnerRiderAssignRef.current);\n if (\n props.item.logistics_job &&\n props.item.order_status?.includes(\"ready\")\n ) {\n const current_time = Date.now();\n if ((current_time - props.item.logistics_job.updated_at) / 60000 > 15) {\n setShowPartnerRiderAssign(true);\n } else {\n partnerRiderAssignRef.current = setTimeout(() => {\n setShowPartnerRiderAssign(true);\n }, props.item.logistics_job.updated_at + 900000 - current_time);\n }\n }\n }, [props.item.logistics_job]);\n\n return (\n \n {((props.orderType === \"homeDelivery\" &&\n props.orderStatus === \"in_progress\") ||\n (props.orderType === \"pickup\" && props.orderStatus === \"ready\") ||\n walkInOrderType) &&\n showPaymentPopup ? (\n \n ) : null}\n {props.orderType === \"unconfirmed\" ? (\n \n ) : null}\n {showDetails ? (\n setShowDetails(false)}\n handleOrderApprove={props.handleApprove}\n handleOrderReject={(\n orderId: any,\n cancelReasonId: any,\n supervisorPassword: any\n ) => props.handleReject(orderId, cancelReasonId, supervisorPassword)}\n handleWalkinOrderApprove={setShowPaymentPopup}\n />\n ) : null}\n \n \n \n \n \n
\n

\n {props.item.order_extended_info.order_number}\n {!props.item.is_cod ? (\n \n \n \n \n ) : null}\n

\n {props.item.order_extended_info.foreign_order_no &&\n props.item.order_extended_info.foreign_order_no !== null ? (\n

\n Partner Order No:\n {props.item.order_extended_info.foreign_order_no}\n

\n ) : null}\n
\n {orderItems.length\n ? orderItems.slice(0, 3).map((orderItem: any, index: any) => {\n return (\n

\n {!orderItem.deleted &&\n orderItem.qty_dec + \"x \" + orderItem.name}\n

\n );\n })\n : null}\n {orderItems.length > 3 ? (\n

\n {orderItems.length - 3}\n \n ...\n

\n ) : null}\n
\n
\n \n\n {props.orderType === \"scheduled\" ? (\n \n

\n {props.item.scheduled_for\n ? getOrderTime(props.item.scheduled_for)\n : \"\"}\n

\n

\n {props.item.scheduled_for\n ? getOrderScheduledForDate(props.item.scheduled_for)\n : \"\"}\n

\n \n ) : null}\n\n {props.orderStatus !== \"collected\" &&\n props.orderType !== \"scheduled\" ? (\n \n {props.orderType !== \"unconfirmed\" ? (\n

\n {getOrderTime(\n props.item.scheduled_for\n ? props.item.scheduled_for\n : props.item.placed_at\n )}\n

\n ) : (\n

{getOrderTime(props.item.placed_at)}

\n )}\n \n ) : null}\n {props.orderType !== \"scheduled\" &&\n props.orderStatus !== \"collected\" ? (\n props.orderType !== \"unconfirmed\" ? (\n \n
\n \n
\n \n ) : null\n ) : null}\n {props.orderType === \"pickup\" ||\n props.orderType === \"scheduled\" ||\n props.orderType === \"unconfirmed\" ? (\n \n {props.item.order_extended_info.customer.name ||\n props.item.order_extended_info.customer.telephone ? (\n

\n {props.item.order_extended_info.customer.name}\n {\" / \"}\n {props.item.order_extended_info.customer.telephone}\n

\n ) : (\n \"NA\"\n )}\n \n ) : null}\n {props.orderType === \"pickup\" ? (\n \n

\n {props.item.order_extended_info.user_name}\n

\n \n ) : null}\n {props.orderType === \"homeDelivery\" &&\n props.orderStatus === \"in_progress\" ? (\n props.riderAppEnabled ? null : (\n \n \n {!props.riderAppEnabled && props.item.rider_id ? (\n riderName ? (\n riderName\n ) : (\n <>\n \n \n \n )\n ) : (\n \"-\"\n )}\n

\n \n )\n ) : null}\n {props.orderType === \"homeDelivery\" ||\n props.orderType === \"scheduled\" ? (\n props.orderStatus === \"ready\" ||\n props.orderStatus === \"in_progress\" ? (\n \n
\n {props.item.order_extended_info.delivery_address?.building ||\n \"\"}\n {logisticsConfigs.logisticsPartnerAssigned ? (\n \n
\n \n ) : null}\n {isZomatoDeliveryOrder ? (\n \n \n \n ) : null}\n \n \n ) : (\n \n {props.item.order_extended_info.take_away ? (\n
\n

\n {getBranchName(props.branches, props.item.location_id)}\n

\n

\n {\" \"}\n \n \n \n

\n
\n ) : (\n
\n
\n {props.item.order_extended_info.delivery_address?.area ||\n \"\"}\n {logisticsConfigs.logisticsPartnerAssigned ? (\n \n
\n \n ) : null}\n {isZomatoDeliveryOrder ? (\n \n
\n \n ) : null}\n \n

\n {props.item.order_extended_info.delivery_address\n ?.room_number ? (\n \n {\n props.item.order_extended_info.delivery_address\n .room_number\n }\n \n ) : null}\n {props.item.order_extended_info.delivery_address\n ?.building ? (\n \n {\n props.item.order_extended_info.delivery_address\n .building\n }\n \n ) : null}\n {props.item.order_extended_info.delivery_address\n ?.land_mark ? (\n \n {\n props.item.order_extended_info.delivery_address\n .land_mark\n }\n \n ) : null}\n {props.item.order_extended_info.delivery_address?.street ? (\n \n {props.item.order_extended_info.delivery_address.street}\n \n ) : null}\n {props.item.order_extended_info.delivery_address?.area ? (\n \n {props.item.order_extended_info.delivery_address.area}\n \n ) : null}\n

\n \n )}\n \n )\n ) : null}\n\n \n

\n {formatDecimal(updateOrderTotalAmount(props.item))} {props.currency}\n

\n \n\n {props.orderType === \"unconfirmed\" ? (\n \n

\n {!isLimboState &&\n props.item.order_extended_info.auto_rejection_sla > 0 &&\n props.item.order_type === \"online\" ? (\n \n ) : (\n <>--\n )}\n

\n \n ) : null}\n\n {[\"scheduled\", \"homeDelivery\"].includes(props.orderType) &&\n !order?.order_extended_info?.take_away &&\n logisticsConfigs.showEmptyCell ? (\n \n {\n handleDeliveryPartnerPopup(order);\n setSelectedOrderId(order.order_id);\n }}\n isRiderAppEnabled={props.riderAppEnabled}\n riderName={riderName}\n orderType={props.orderType}\n orderStatus={props.orderStatus}\n />\n {props.item.order_status?.includes(\"ready\") &&\n props.item.logistics_job &&\n props.item.logistics_job.status !== 3 &&\n showPartnerRiderAssign ? (\n {\n handleHomedeliveryOrderAction(\n props.item,\n getPartnerRiderId()\n );\n }}\n >\n Mark as collected\n \n ) : null}\n \n ) : !props.riderAppEnabled && logisticsConfigs.showEmptyCell ? (\n \n ) : null}\n\n {props.orderType !== \"scheduled\" &&\n !(\n props.orderType == \"homeDelivery\" &&\n props.riderAppEnabled &&\n props.orderStatus == \"ready\"\n ) ? (\n \n
\n {props.orderType === \"homeDelivery\" &&\n props.orderStatus == \"ready\" &&\n !props.riderAppEnabled &&\n props.newRiderSelection ? (\n \n ) : (\n getOrderActions()}\n disable={getDisabledState}\n />\n )}\n
\n \n ) : null}\n\n {order.order_type === \"walk_in\" &&\n props.loyaltyDetails &&\n props.loyaltyDetails.walkin ? (\n \n \n \n ) : null}\n \n {showDeliveryPartnerPopup && order.order_id === selectedOrderId ? (\n setShowDeliveryPartnerPopup(false)}\n deliveryPartners={logisticsConfigs.orderLogisticsPartners}\n assignPartner={props.assignLogisticPartner}\n onPartnerAssign={setPendingPartnerAssign}\n companyDrivers={props.companyDrivers}\n riderAppEnabled={props.riderAppEnabled}\n orderType={props.orderType}\n handleOrder={() => handleHomedeliveryOrderAction(props.item)}\n />\n ) : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let companyDrivers = state.drivers.company_drivers || [];\n let currency = state.company.company_details.currency;\n let dmCanRecordPayment = state.company.company_details.dm_can_record_payment;\n let branches = state.branches;\n let autoRejectionSla =\n state.company.company_details.sapaad_online_details.auto_rejection_sla;\n let defaultDeliveryEta =\n state.company.company_details.sapaad_online_details.default_delivery_eta;\n let limboStateOrders = state.limboStateOrders;\n let logisticPartners = state.logisticPartners;\n let loyaltyDetails = state.company.company_details.loyalty_details;\n let payments = state.payments || [];\n let riderAppEnabled = state.company.company_details.rider_app_enabled;\n let countryCode = state.company.company_details.country;\n return {\n companyDrivers,\n currency,\n dmCanRecordPayment,\n branches,\n autoRejectionSla,\n defaultDeliveryEta,\n limboStateOrders,\n logisticPartners,\n loyaltyDetails,\n payments,\n riderAppEnabled,\n countryCode,\n };\n};\n\nconst mapDispatchToProps = {\n removeScheduledOrder: scheduledOperations.removeScheduledOrder,\n assignLogisticPartner: logisticPartnersOperations.assignLogisticPartner,\n assignDriver: homeDeliveryOperations.assignDriver,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Order);","import React, { useMemo } from \"react\";\nimport { ReactElement, createRef, useEffect, useState } from \"react\";\nimport { TransitionGroup, CSSTransition } from \"react-transition-group\";\n\ninterface IAnimateOrderTransitionsProps {\n orders: any[];\n component({ item }: { item: any }): ReactElement;\n enableEntryTransition: boolean;\n}\n\nconst AnimateOrderTransitions = ({\n orders,\n component,\n enableEntryTransition\n}: IAnimateOrderTransitionsProps) => {\n\n const ordersWithRef = useMemo(\n () =>\n orders.map((o) => ({\n ...o,\n id: o?.order_id,\n ref: createRef(),\n })),\n [JSON.stringify(orders)]\n );\n\n return (\n \n {ordersWithRef.map((item: any) => (\n \n {component({ item })}\n \n ))}\n \n );\n};\n\nexport { AnimateOrderTransitions };\n","import React from \"react\";\nimport { useRef } from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\n\nconst AnimateDeliveryAreaTransition = ({ show, component }) => {\n const nodeRef = useRef();\n return (\n \n {component({ areaRef: nodeRef })}\n \n );\n};\n\nexport { AnimateDeliveryAreaTransition };\n","import React from \"react\";\nimport { useRef } from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\n\ninterface IAnimateTableTransitionProps {\n component: any;\n show: boolean;\n isVisited: boolean;\n}\n\nconst AnimateTableTransition = ({\n component,\n show,\n isVisited,\n}: IAnimateTableTransitionProps) => {\n const nodeRef = useRef();\n return (\n \n {component({ ref: nodeRef })}\n \n );\n};\n\nexport { AnimateTableTransition };\n","import { useLayoutEffect, useState } from \"react\";\n\nconst useEntryTransitionConfig = () => {\n const [enableEntryTransition, setEnableEntryTransition] = useState(false);\n\n useLayoutEffect(() => {\n setTimeout(() => {\n setEnableEntryTransition(true);\n }, 1000);\n }, []);\n\n return { enableEntryTransition };\n};\n\nexport { useEntryTransitionConfig };\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport { groupOrders } from \"../../helpers/orderFunctions\";\nimport Swal from \"sweetalert2\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { groupOrdersByDeliveryArea } from \"../../helpers/utils\";\nimport { AnimateDeliveryAreaTransition } from \"../animateDeliveryAreaTransitions\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { useAppStateSelector } from \"../../hooks/useAppStateSelector\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\n\ninterface IUnconfirmedOrdersProps {\n unconfirmedOrders: any;\n setCurrentTab: any;\n markOrderConfirm?: any;\n markOrderReject?: any;\n markOrderConfirmWithEta?: any;\n markOrderRejectWithReason?: any;\n}\n\nfunction UnconfirmedOrders(props: IUnconfirmedOrdersProps) {\n const [filteredUnconfirmedOrders, setFilteredUnconfirmedOrders] = useState(\n {} as any\n );\n const [selectedOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const [hideDetails, setHideDetails] = useState(false);\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n const intl = useIntl();\n const formattedMessage = (formatId: any) => {\n const translatedMessage = intl.formatMessage({ id: formatId });\n return translatedMessage;\n };\n\n const { remove_grouping_by_delivery_area } = useAppStateSelector(\n (state) => state.company.company_details\n );\n\n useEffect(() => {\n props.setCurrentTab(\"homeDelivery.unconfirmed\");\n }, []);\n\n useEffect(() => {\n setFilteredUnconfirmedOrders(groupOrders(props.unconfirmedOrders));\n }, [JSON.stringify(props.unconfirmedOrders)]);\n\n const handleApprove = (orderId: any, eta: any, orderSource: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n setHideDetails(false);\n if (eta) {\n props\n .markOrderConfirmWithEta(orderId, eta, orderSource)\n .then(() => {\n setDisable(false);\n setHideDetails(true);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n } else {\n props\n .markOrderConfirm(orderId, orderSource)\n .then(() => {\n setDisable(false);\n setHideDetails(true);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n }\n };\n const handleReject = (\n orderId: any,\n cancelReasonId: any,\n supervisorPassword: any\n ) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n setHideDetails(false);\n props\n .markOrderRejectWithReason(\n orderId,\n false,\n cancelReasonId,\n supervisorPassword\n )\n .then((res: any) => {\n setDisable(false);\n setHideDetails(true);\n })\n .catch((err: any) => {\n if (\n err.error.response !== undefined &&\n err.error.response.status === 422\n ) {\n setDisable(false);\n let text: any = formattedMessage(\"global.password_invalid\");\n Swal.fire({\n icon: \"warning\",\n text: text,\n });\n }\n });\n };\n\n const handleAutoReject = (orderId: any) => {\n props.markOrderReject(orderId, true);\n };\n\n const hasOrders = useMemo(\n () => Object.keys(filteredUnconfirmedOrders).length > 0,\n [JSON.stringify(filteredUnconfirmedOrders)]\n );\n\n const ordersByDeliveryArea = groupOrdersByDeliveryArea(\n filteredUnconfirmedOrders\n );\n\n return (\n
\n (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {remove_grouping_by_delivery_area ? (\n \n (\n \n handleReject(\n orderId,\n cancelReasonId,\n supervisorPassword\n )\n }\n handleAutoReject={handleAutoReject}\n orderType=\"unconfirmed\"\n orderStatus=\"unconfirmed\"\n key={order.order_id}\n disableButton={\n order.order_id === selectedOrderId && disableButton\n }\n item={order}\n hideDetails={hideDetails}\n />\n )}\n />\n \n ) : (\n <>\n {ordersByDeliveryArea.map((item: any) => (\n (\n \n \n \n {item.deliveryArea == \"null\"\n ? \"N/A\"\n : item.deliveryArea}\n \n \n (\n \n handleReject(\n orderId,\n cancelReasonId,\n supervisorPassword\n )\n }\n handleAutoReject={handleAutoReject}\n orderType=\"unconfirmed\"\n orderStatus=\"unconfirmed\"\n key={order.order_id}\n disableButton={\n order.order_id === selectedOrderId &&\n disableButton\n }\n item={order}\n hideDetails={hideDetails}\n />\n )}\n />\n \n )}\n />\n ))}\n \n )}\n \n )}\n />\n {!hasOrders ? : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let unconfirmedOrders =\n state.order.home_delivery.unconfirmed_orders.orders || [];\n return { unconfirmedOrders };\n};\n\nconst mapDispatchToProps = {\n setCurrentTab: currentTabOperations.setCurrentTab,\n markOrderConfirm: homeDeliveryOperations.markOrderConfirm,\n markOrderConfirmWithEta: homeDeliveryOperations.markOrderConfirmWithEta,\n markOrderReject: homeDeliveryOperations.markOrderReject,\n markOrderRejectWithReason: homeDeliveryOperations.markOrderRejectWithReason,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UnconfirmedOrders);\n","enum ORDER_STATUS {\n DELIVERY_UNCONFIRMED = \"homeDelivery.unconfirmed\",\n DELIVERY_NEW = \"homeDelivery.new\",\n DELIVERY_IN_PROGRESS = \"homeDelivery.inProgress\",\n DELIVERY_READY = \"homeDelivery.ready\",\n DELIVERY_DELIVERED = \"homeDelivery.delivered\",\n PICKUP_UNCONFIRMED = \"pickup.unconfirmed\",\n PICKUP_NEW = \"pickup.new\",\n PICKUP_READY = \"pickup.ready\",\n PICKUP_COLLECTED = \"pickup.collected\",\n}\n\nexport { ORDER_STATUS };\n","enum ORDER_FILTERS {\n ALL,\n IN_HOUSE,\n PARTNER_DELIVERY,\n}\n\nexport { ORDER_FILTERS };\n","import { ORDER_STATUS } from \"../../types/orderStatus\";\nimport { filterLabels } from \"../../helpers/orderFunctions\";\nimport { ORDER_FILTERS } from \"../../types/filters\";\n\nconst orderFilterOptions = [\n {\n id: ORDER_FILTERS.ALL,\n name: filterLabels.all_delivery.title,\n },\n {\n id: ORDER_FILTERS.IN_HOUSE,\n name: filterLabels.in_house_delivery.title,\n },\n {\n id: ORDER_FILTERS.PARTNER_DELIVERY,\n name: filterLabels.partner_delivery.title,\n },\n];\n\nconst filterConfigs = [\n {\n showFilterTab: true,\n orderStatus: ORDER_STATUS.DELIVERY_NEW,\n filterOptions: orderFilterOptions,\n showSearch: false,\n },\n {\n showFilterTab: true,\n orderStatus: ORDER_STATUS.DELIVERY_IN_PROGRESS,\n filterOptions: orderFilterOptions,\n showSearch: false,\n },\n {\n showFilterTab: false,\n orderStatus: ORDER_STATUS.PICKUP_READY,\n filterOptions: [],\n showSearch: true,\n },\n];\n\nconst getCurrentTabConfigs = (currentTabName: string) => {\n let tabConfig = filterConfigs.find(\n (config) => config.orderStatus === currentTabName\n );\n return tabConfig;\n};\n\nexport { getCurrentTabConfigs };\n","import React, { useMemo, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getCurrentTabConfigs } from \"./utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSearch } from \"@fortawesome/free-solid-svg-icons\";\n\ninterface IOrderFiltersTab {\n currentTab: string;\n updateSelectedFilterOption?(selectedOptionId: number): void;\n onSearch?(searchTerm: string): void;\n}\n\nconst OrderFiltersTab = ({\n currentTab,\n updateSelectedFilterOption,\n onSearch,\n}: IOrderFiltersTab) => {\n const [selectedFilterOption, setSelectedFilterOption] = useState(0);\n\n const updateSelectedFilterOptionId = (option: number) => {\n setSelectedFilterOption(option);\n updateSelectedFilterOption(option);\n };\n\n const currentTabConfigs = useMemo(() => {\n let tabConfig = getCurrentTabConfigs(currentTab);\n let showFilterSection = tabConfig?.showFilterTab ?? false;\n let showSearchBar = tabConfig?.showSearch ?? false;\n let filterOptions = tabConfig?.filterOptions ?? [];\n return { showFilterSection, showSearchBar, filterOptions };\n }, [currentTab]);\n\n const onSearchChange = (e: any) => {\n onSearch(e.target.value);\n };\n\n return (\n <>\n
\n {currentTabConfigs.showFilterSection ? (\n
\n

\n :\n

\n {currentTabConfigs.filterOptions.length\n ? currentTabConfigs.filterOptions.map(\n (option: any, index: any) => {\n return (\n updateSelectedFilterOptionId(option.id)}\n className={\n selectedFilterOption === option.id\n ? \"filter-item active\"\n : \"filter-item\"\n }\n >\n {option.name}\n
\n );\n }\n )\n : null}\n
\n ) : (\n false\n )}\n {currentTabConfigs.showSearchBar ? (\n
\n
\n
\n \n
\n \n {(placeholder: any) => (\n \n )}\n \n
\n
\n ) : (\n false\n )}\n \n \n );\n};\n\nexport default OrderFiltersTab;\n","import { useMemo, useState } from \"react\";\nimport { ORDER_FILTERS } from \"../types/filters\";\nimport order from \"../components/order\";\n\nconst useOrdersFilter = (orders: any[]) => {\n const [filterId, setFilterId] = useState(0);\n const [searchResultOrders, setSearchResultOrders] = useState([]);\n\n const updateFilterId = (newFilterId: number) => {\n setFilterId(newFilterId);\n };\n\n const filteredOrders = useMemo(() => {\n switch (filterId) {\n case ORDER_FILTERS.ALL:\n return orders;\n case ORDER_FILTERS.IN_HOUSE:\n return orders.filter((order: any) => {\n if (!order.logistics_job) {\n return order;\n } else if (order.logistics_job.status == 3) {\n return order;\n }\n });\n case ORDER_FILTERS.PARTNER_DELIVERY:\n return orders.filter(\n (order: any) => order.logistics_job && order.logistics_job.status != 3\n );\n default:\n return orders;\n }\n }, [orders, filterId]);\n\n const onSearchChange = (searchValue: string) => {\n let key = searchValue;\n let searchOrders = orders.filter((order: any) => {\n if (\n order.order_extended_info.order_number\n .toLowerCase()\n .includes(key.toLowerCase())\n ) {\n return true;\n } else if (\n order.order_extended_info.customer.telephone &&\n order.order_extended_info.customer.telephone.includes(key)\n ) {\n return true;\n }\n return false;\n });\n if (searchOrders.length === order.length) {\n setSearchResultOrders([]);\n } else {\n setSearchResultOrders(searchOrders);\n }\n };\n\n return { filteredOrders, updateFilterId, searchResultOrders, onSearchChange };\n};\n\nexport default useOrdersFilter;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport {\n getLogisticsVisibilityConfig,\n groupOrders,\n} from \"../../helpers/orderFunctions\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { AnimateDeliveryAreaTransition } from \"../animateDeliveryAreaTransitions\";\nimport { groupOrdersByDeliveryArea } from \"../../helpers/utils\";\nimport { useAppStateSelector } from \"../../hooks/useAppStateSelector\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\nimport OrderFiltersTab from \"../orderFilters\";\nimport { ORDER_STATUS } from \"../../types/orderStatus\";\nimport useOrderFilter from \"../../hooks/useOrderFilter\";\ninterface INewOrdersProps {\n markOrderReady: any;\n newOrders: any;\n company: any;\n setCurrentTab: any;\n logisticsPartners: any[];\n riderAppEnabled?: boolean;\n}\n\nfunction NewOrders(props: INewOrdersProps) {\n const [orderReady, markOrderReady] = useState(false);\n const [selecteOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n const { remove_grouping_by_delivery_area } = useAppStateSelector(\n (state) => state.company.company_details\n );\n const { filteredOrders, updateFilterId} = useOrderFilter(props.newOrders);\n\n useEffect(() => {\n props.setCurrentTab(\"homeDelivery.new\");\n }, []);\n\n useEffect(() => {\n markOrderReady(false);\n }, [orderReady]);\n\n const filterdNewOrders = useMemo(() => {\n return groupOrders(filteredOrders)\n }, [filteredOrders]);\n\n const logisticsControlColumn = useMemo(\n () =>\n getLogisticsVisibilityConfig(\n props.newOrders,\n props.logisticsPartners,\n props.riderAppEnabled\n ),\n [\n JSON.stringify(props.newOrders),\n props.logisticsPartners,\n props.riderAppEnabled,\n ]\n );\n\n const setOrderReady = (orderId: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n props\n .markOrderReady(orderId)\n .then(() => {\n setDisable(false);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n markOrderReady(true);\n };\n\n const hasOrders = useMemo(\n () => Object.keys(filterdNewOrders).length > 0,\n [JSON.stringify(filterdNewOrders)]\n );\n\n const ungroupedFilteredOrders = useMemo(() => {\n //for filtered orders without grouping by area\n let ordersArray:any[] = [];\n if(filterdNewOrders) {\n ordersArray = [].concat(...Object.values(filterdNewOrders));\n }\n return ordersArray;\n },[filterdNewOrders]);\n\n const ordersByDeliveryArea = groupOrdersByDeliveryArea(filterdNewOrders);\n\n return (\n
\n \n (\n \n \n \n {\"\"}\n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n {logisticsControlColumn.show ? (\n props.riderAppEnabled ? (\n \n \n \n ) : (\n \n \n \n )\n ) : null}\n {\"\"}\n \n \n {remove_grouping_by_delivery_area ? (\n \n (\n \n setOrderReady(orderId)\n }\n item={order}\n showEmptyCell={logisticsControlColumn.show}\n />\n )}\n />\n \n ) : (\n <>\n {ordersByDeliveryArea.map((item: any) => {\n return (\n (\n \n \n \n {item.deliveryArea == \"null\"\n ? \"N/A\"\n : item.deliveryArea}\n \n \n (\n \n setOrderReady(orderId)\n }\n item={order}\n showEmptyCell={logisticsControlColumn.show}\n />\n )}\n />\n \n )}\n />\n );\n })}\n \n )}\n \n )}\n />\n {!hasOrders ? : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let newOrders = state.order.home_delivery.new_orders.orders || [];\n let company = state.company.company_details;\n let logisticsPartners = state.logisticPartners;\n let riderAppEnabled = state.company.company_details.rider_app_enabled;\n\n return {\n newOrders,\n company,\n logisticsPartners,\n riderAppEnabled,\n };\n};\n\nconst mapDispatchToProps = {\n markOrderReady: homeDeliveryOperations.markOrderReady,\n setCurrentTab: currentTabOperations.setCurrentTab,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NewOrders);\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { Dropdown } from \"react-bootstrap\";\nimport { connect } from \"react-redux\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FormattedMessage } from \"react-intl\";\n\ninterface IFilterDropdownProps {\n drivers: any;\n selectedBranch: any;\n company: any;\n selectedRider: any;\n setSelectedRider: any;\n theme: any;\n}\n\nfunction FilterDropdown(props: IFilterDropdownProps) {\n const [show, setShow] = useState(false);\n const [drivers, setDrivers] = useState([]);\n\n const onDropdownToggle = (e: any) => {\n setShow(!show);\n };\n\n useEffect(() => {\n props.setSelectedRider(null);\n if (\n props.drivers.length > 0 &&\n Object.keys(props.selectedBranch).length > 0\n ) {\n if (props.selectedBranch.id) {\n let locationDrivers = [] as any;\n props.drivers.map((driver: any) => {\n if (driver.assigned_locations.includes(props.selectedBranch.id)) {\n locationDrivers.push(driver);\n }\n });\n setDrivers(locationDrivers);\n } else {\n if (\n props.company.admin &&\n props.company.authorized_location_ids.length < 1\n ) {\n setDrivers(props.drivers);\n } else {\n // staff user - Multiple branches\n let locationDrivers = [] as any;\n props.company.authorized_location_ids.map(\n (locationId: any, index: number) => {\n props.drivers.map((driver: any) => {\n if (driver.assigned_locations.includes(locationId)) {\n if (\n locationDrivers.filter(\n (locDriver: any) => locDriver.id === driver.id\n ).length === 0\n ) {\n // Check if driver already exists - TODO: revisit\n locationDrivers.push(driver);\n }\n }\n });\n }\n );\n setDrivers(locationDrivers);\n }\n }\n }\n }, [props.drivers, props.selectedBranch]);\n\n return (\n
\n \n onDropdownToggle(e)}\n >\n \n \n {props.selectedRider?.name || }\n \n \n \n \n {drivers.map((driver: any, index: number) => {\n return (\n
\n props.setSelectedRider(driver)}\n >\n {driver.name}\n \n
\n );\n })}\n
\n \n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let drivers = state.drivers.company_drivers || [];\n let selectedBranch = state.company?.selected_branch;\n let company = state.company.company_details;\n let theme = state.theme\n\n return { drivers, selectedBranch, company, theme };\n};\n\nexport default connect(mapStateToProps)(FilterDropdown);","import React, { useEffect, useState } from \"react\";\nimport { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FormattedMessage } from \"react-intl\";\nimport FilterDropdown from \"../filterDropdown\";\ninterface ITableFilterTabProps {\n filterOptions?: any;\n onFilterClick?: any;\n onSearch?: any;\n orderStatus: any;\n orderType: any;\n allowSearch?: boolean;\n riderAppEnabled?: boolean;\n selectedRider: any;\n setSelectedRider: any;\n newRiderSelection: boolean;\n}\n\nfunction TableFilterTab(props: ITableFilterTabProps) {\n const [filterOptions, setFilterOptions] = useState([] as any);\n const [selectedFilter, setSelectedFilter] = useState(0);\n\n useEffect(() => {\n setFilterOptions(props.filterOptions);\n }, [props.filterOptions]);\n\n const onSearchChange = (e: any) => {\n props.onSearch(e.target.value);\n };\n\n const onFilterClick = (option: any) => {\n setSelectedFilter(option.id);\n props.onFilterClick(option.name);\n };\n\n return (\n
\n {!props.riderAppEnabled &&\n !props.newRiderSelection &&\n props.orderStatus == \"ready\" &&\n props.orderType == \"homeDelivery\" ? (\n \n ) : null}\n {props.orderType == \"homeDelivery\" ? (\n <>\n

\n :\n

\n {filterOptions.length\n ? filterOptions.map((option: any, index: any) => {\n return (\n onFilterClick(option)}\n className={\n selectedFilter === option.id\n ? \"filter-item active\"\n : \"filter-item\"\n }\n >\n {option.name}\n
\n );\n })\n : null}\n \n ) : null}\n {props.allowSearch ? (\n
\n
\n
\n \n
\n \n {(placeholder: any) => (\n \n )}\n \n
\n
\n ) : null}\n \n );\n}\n\nexport default TableFilterTab as any;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { getOrderFilterOptions } from \"../../helpers/orderFunctions\";\nimport TableFilterTab from \"../tableFilterTab\";\n\ninterface IOrdersFilterSectionProps {\n orders: any;\n orderType: any;\n orderStatus: any;\n onSearch?: any;\n allowSearch?: boolean;\n filterOptions?: any;\n onFilterChanges?: any;\n currentTab?: any;\n riderAppEnabled?: boolean;\n selectedRider: any;\n setSelectedRider:any;\n newRiderSelection:boolean;\n}\n\nfunction OrdersFilterSection(props: IOrdersFilterSectionProps) {\n const [filterOptions, setFilterOptions] = useState(\n getOrderFilterOptions(props.orderType)\n );\n const [showFilter, setShowFilter] = useState(false);\n\n const onFilterClick = (selectedFilter: any) => {\n setFilterOptions(filterOptions);\n props.onFilterChanges(selectedFilter);\n };\n\n useCallback(() => setFilterOptions(filterOptions), [filterOptions]);\n\n const onSearchChange = (searchKeyword: any) => {\n let filteringOrders = props.orders;\n props.onSearch(searchKeyword);\n };\n\n useEffect(() => {\n if (\n props.currentTab === \"pickup.new\" ||\n props.currentTab === \"pickup.collected\"\n ) {\n setShowFilter(false);\n } else {\n setShowFilter(true);\n }\n }, [props.currentTab]);\n\n return (\n \n {showFilter ? (\n onFilterClick(filter)}\n allowSearch={props.allowSearch}\n onSearch={\n props.onSearch\n ? (searchKeyword: any) => onSearchChange(searchKeyword)\n : null\n }\n orderStatus={props.orderStatus}\n orderType={props.orderType}\n riderAppEnabled={props.riderAppEnabled}\n selectedRider={props.selectedRider}\n setSelectedRider={props.setSelectedRider}\n newRiderSelection={props.newRiderSelection}\n />\n ) : null}\n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let currentTab = state.currentTab;\n let riderAppEnabled = state.company.company_details.rider_app_enabled;\n\n return { currentTab, riderAppEnabled };\n};\n\nexport default connect(mapStateToProps)(OrdersFilterSection);\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport Order from \"../order\";\nimport OrdersFilterSection from \"../ordersFilterSection\";\nimport NoOrders from \"../noOrders\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport {\n filterOrders,\n getLogisticsVisibilityConfig,\n groupOrders,\n filterLabels,\n} from \"../../helpers/orderFunctions\";\nimport { FormattedMessage } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { groupOrdersByDeliveryArea } from \"../../helpers/utils\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { AnimateDeliveryAreaTransition } from \"../animateDeliveryAreaTransitions\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\n\ninterface IWaitingForCollectionOrdersProps {\n assignDriver: any;\n readyOrders: any;\n selectedBranch: any;\n logisticsPartnerDrivers: any;\n company: any;\n setCurrentTab: any;\n refreshRequired: any;\n logisticsPartners: any[];\n markOrderPickedUp: any;\n riderAppEnabled?: boolean;\n newFeatureEnabled: boolean;\n}\n\nfunction WaitingForCollectionOrders(props: IWaitingForCollectionOrdersProps) {\n const [selecteOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const [selectedRider, setSelectedRider] = useState(null);\n const [filterOption, setFilterOption] = useState(\n filterLabels[\"all_delivery\"].title\n );\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n useEffect(() => {\n props.setCurrentTab(\"homeDelivery.ready\");\n }, []);\n\n const filterdReadyOrders = useMemo(() => {\n return groupOrders(filterOrders(filterOption, props.readyOrders));\n }, [JSON.stringify(props.readyOrders), filterOption]);\n\n const logisticsControlColumn = useMemo(\n () =>\n getLogisticsVisibilityConfig(\n props.readyOrders,\n props.logisticsPartners,\n props.riderAppEnabled\n ),\n [\n JSON.stringify(props.readyOrders),\n props.logisticsPartners,\n props.riderAppEnabled,\n ]\n );\n\n const assignDriverToOrder = (orderId: any, riderId?: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n if (riderId) {\n props\n .markOrderPickedUp(orderId)\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else {\n props\n .assignDriver(orderId, selectedRider?.id)\n .then(() => {\n setDisable(false);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n }\n };\n\n const hasOrders = useMemo(\n () => Object.keys(filterdReadyOrders).length > 0,\n [JSON.stringify(filterdReadyOrders)]\n );\n\n const ordersByDeliveryArea = groupOrdersByDeliveryArea(filterdReadyOrders);\n\n return (\n
\n setFilterOption(option)}\n selectedRider={selectedRider}\n setSelectedRider={setSelectedRider}\n newRiderSelection={props.newFeatureEnabled}\n />\n (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n {logisticsControlColumn.show ? (\n props.riderAppEnabled ? (\n \n \n \n ) : (\n <>\n \n \n \n  \n \n )\n ) : (\n  \n )}\n \n \n {ordersByDeliveryArea.map((item: any) => (\n (\n \n \n \n {item.deliveryArea == \"null\"\n ? \"N/A\"\n : item.deliveryArea}\n \n \n (\n \n assignDriverToOrder(orderId, riderId)\n }\n item={order}\n showEmptyCell={logisticsControlColumn.show}\n selectedRider={selectedRider}\n setSelectedRider={setSelectedRider}\n newRiderSelection={props.newFeatureEnabled}\n />\n )}\n />\n \n )}\n />\n ))}\n \n )}\n />\n {!hasOrders ? : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let readyOrders = state.order.home_delivery.ready_orders.orders || [];\n let selectedBranch = state.company?.selected_branch;\n let logisticsPartnerDrivers = state.drivers.logistics_partner_drivers || [];\n let company = state.company.company_details;\n let refreshRequired = state.order.home_delivery.ready_orders.refresh_required;\n let logisticsPartners = state.logisticPartners;\n let riderAppEnabled = state.company.company_details.rider_app_enabled;\n let newFeatureEnabled = state.company.company_details.rider_assign_through_popup\n\n return {\n readyOrders,\n selectedBranch,\n logisticsPartnerDrivers,\n company,\n refreshRequired,\n logisticsPartners,\n riderAppEnabled,\n newFeatureEnabled\n };\n};\n\nconst mapDispatchToProps = {\n assignDriver: homeDeliveryOperations.assignDriver,\n markOrderPickedUp: homeDeliveryOperations.markOrderPickedUp,\n setCurrentTab: currentTabOperations.setCurrentTab,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(WaitingForCollectionOrders);\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport {\n getLogisticsVisibilityConfig,\n groupOrders,\n validateCollectedPayments,\n} from \"../../helpers/orderFunctions\";\nimport { getEnvValueFor, groupOrdersByDeliveryArea } from \"../../helpers/utils\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport Swal from \"sweetalert2\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { AnimateDeliveryAreaTransition } from \"../animateDeliveryAreaTransitions\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\nimport OrderFiltersTab from \"../orderFilters\";\nimport { ORDER_STATUS } from \"../../types/orderStatus\";\nimport useOrderFilter from \"../../hooks/useOrderFilter\";\ninterface IDeliveryInProgressOrdersProps {\n deliveryInProgressOrders: any;\n markOrderDelivered: any;\n selectedBranch: any;\n company: any;\n setCurrentTab: any;\n refreshRequired: any;\n riderAppEnabled?: boolean;\n logisticsPartners: any[];\n companyRiders: any[];\n}\n\nfunction DeliveryInProgressOrders(props: IDeliveryInProgressOrdersProps) {\n const [inProgressOrders, setInProgressOrders] = useState([] as any);\n const [selecteOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const { enableEntryTransition } = useEntryTransitionConfig();\n const { filteredOrders, updateFilterId} = useOrderFilter(inProgressOrders);\n\n const markOrderStatusDelivered = (orderId: number, orderPayments: any[]) => {\n props\n .markOrderDelivered(orderId, orderPayments)\n .then(() => {\n setDisable(false);\n })\n .catch((err: AxiosErrorResponse) => {\n setDisable(false);\n console.log(err);\n });\n };\n\n const handleValidateAssignedRider = (order: any, next: any) => {\n if (order.rider_id) {\n let isRiderExistsInCompany = props.companyRiders.find(\n (r) => r.id === order.rider_id\n );\n if (!isRiderExistsInCompany) {\n Swal.fire({\n icon: \"warning\",\n title: \"Oops!\",\n html: \"The rider assigned to this order was deleted by your account’s administrator.
Please contact your account administrator.
\",\n confirmButtonText: \"Proceed\",\n allowOutsideClick: false,\n }).then((res) => {\n next();\n });\n } else {\n next();\n }\n } else {\n next();\n }\n };\n\n const handlePaymentsValidation = (\n order: any,\n orderPayments: any[],\n next: any\n ) => {\n let validationEnabledCompanies: any = JSON.parse(\n getEnvValueFor(\"VALIDATION_ENABLED_COMPANIES\") || \"[]\"\n );\n if (validationEnabledCompanies.includes(props.company.company_id)) {\n console.debug(\"[APP] Initiating payment validation\");\n if (\n props.company.dm_can_record_payment &&\n (order.order_extended_info.payments.length === 0 ||\n (order.order_extended_info.payments.length === 1 &&\n order.order_extended_info.payments[0].name === \"Loyalty\"))\n ) {\n validateCollectedPayments(order, orderPayments, () => {\n next();\n });\n } else {\n console.debug(\"[APP] Skipping validation\");\n next();\n }\n } else {\n next();\n }\n };\n\n const postOrderPayments = (orderId: any, orderPayments: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n let order = props.deliveryInProgressOrders.find(\n (o: any) => o.order_id === orderId\n );\n if (order) {\n handleValidateAssignedRider(order, () =>\n handlePaymentsValidation(order, orderPayments, () =>\n markOrderStatusDelivered(orderId, orderPayments)\n )\n );\n } else {\n console.log(\"Order not found!\");\n }\n };\n\n useEffect(() => {\n props.setCurrentTab(\"homeDelivery.inProgress\");\n }, []);\n\n useEffect(() => {\n setInProgressOrders(props.deliveryInProgressOrders);\n }, [JSON.stringify(props.deliveryInProgressOrders)]);\n\n const filteredInProgressOrders = useMemo(() => {\n return groupOrders(filteredOrders)\n }, [filteredOrders]);\n\n const logisticsControlColumn = useMemo(() => {\n let show = false;\n if (inProgressOrders.length) {\n const {\n hasCompanyRiderAssignedOrders,\n hasLogisticsPartnerAssignedOrders,\n } = getLogisticsVisibilityConfig(\n inProgressOrders,\n props.logisticsPartners,\n props.riderAppEnabled\n );\n show = hasCompanyRiderAssignedOrders || hasLogisticsPartnerAssignedOrders;\n }\n return { show };\n }, [\n JSON.stringify(inProgressOrders),\n props.logisticsPartners,\n props.riderAppEnabled,\n ]);\n\n const hasOrders = useMemo(\n () => Object.keys(filteredInProgressOrders).length > 0,\n [JSON.stringify(filteredInProgressOrders)]\n );\n\n const ordersByDeliveryArea = groupOrdersByDeliveryArea(filteredInProgressOrders);\n\n return (\n
\n \n (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n {!props.riderAppEnabled ? (\n \n \n \n ) : null}\n \n \n \n \n \n \n {logisticsControlColumn.show ? (\n props.riderAppEnabled ? (\n \n \n \n ) : (\n \n \n \n )\n ) : null}\n \n \n \n \n \n {ordersByDeliveryArea.map((item: any) => (\n (\n \n \n \n {item.deliveryArea == \"null\"\n ? \"N/A\"\n : item.deliveryArea}\n \n \n (\n \n )}\n />\n \n )}\n />\n ))}\n \n )}\n />\n {!hasOrders ? : null}\n
\n );\n}\nconst mapStateToProps = (state: any) => {\n let deliveryInProgressOrders =\n state.order.home_delivery.in_progress_orders.orders || [];\n let selectedBranch = state.company?.selected_branch;\n let company = state.company.company_details;\n let refreshRequired =\n state.order.home_delivery.in_progress_orders.refresh_required;\n let riderAppEnabled = state.company.company_details.rider_app_enabled;\n let logisticsPartners = state.logisticPartners;\n let companyRiders = state.drivers.company_drivers;\n\n return {\n deliveryInProgressOrders,\n selectedBranch,\n company,\n refreshRequired,\n riderAppEnabled,\n logisticsPartners,\n companyRiders,\n };\n};\n\nconst mapDispatchToProps = {\n markOrderDelivered: homeDeliveryOperations.markOrderDelivered,\n setCurrentTab: currentTabOperations.setCurrentTab,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(DeliveryInProgressOrders);\n","import React, { useEffect, useState } from \"react\";\nimport { Spinner } from \"react-bootstrap\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { formatDecimal } from \"../../helpers/itemCalculations\";\nimport {\n formatTime,\n getOrderTime,\n getTime,\n updateOrderTotalAmount,\n} from \"../../helpers/orderFunctions\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport OrderPopup from \"../orderPopup\";\n\ninterface DriverOrderDetailsProps {\n deliveredDriverOrdersDetails?: any;\n fetchDeliveredDriverOrderDetails?: any;\n driverId: any;\n resetDeliveredDriverOrderDetails?: any;\n currency?: any;\n selectedBranch: any;\n driverDetails?: any;\n dmCanRecordPayment?: any;\n}\n\nfunction DriverOrderDetails(props: DriverOrderDetailsProps) {\n const [showOrderPopup, setShowOrderPopup] = useState(false);\n const [orderDetails, setOrderDetails] = useState([] as any);\n const [selectedOrderId, setSelectedOrderId] = useState(0 as any);\n const [showLoading, setShowLoading] = useState(true);\n\n useEffect(() => {\n props.resetDeliveredDriverOrderDetails();\n }, []);\n\n useEffect(() => {\n if (props.selectedBranch.id) {\n props\n .fetchDeliveredDriverOrderDetails(props.driverId, props.selectedBranch)\n .then((res: any) => {\n setShowLoading(false);\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n } else {\n props\n .fetchDeliveredDriverOrderDetails(props.driverId)\n .then((res: any) => {\n setShowLoading(false);\n })\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n }, [props.selectedBranch]);\n\n useEffect(() => {\n setOrderDetails(props.deliveredDriverOrdersDetails);\n }, [props.deliveredDriverOrdersDetails]);\n\n const getPerformance = (order: any) => {\n let reverse_status_updates = [].concat(order.status_updates).reverse();\n let delivered_status: any = reverse_status_updates.find((status: any) => {\n return status.event === \"marked_as_delivered\";\n });\n let rider_assigned_status: any = reverse_status_updates.find(\n (status: any) => {\n return status.event === \"rider_assigned\";\n }\n );\n let ready_status: any = reverse_status_updates.find((status: any) => {\n return status.event === \"marked_as_ready\";\n });\n let created_status: any = reverse_status_updates.find((status: any) => {\n return status.event === \"created\" || status.event === \"unconfirmed\";\n });\n let prep_time_sec: any = (ready_status.time - created_status.time) / 1000;\n let pickup_time_sec: any =\n (rider_assigned_status.time - ready_status.time) / 1000;\n let delivery_time_sec: any =\n (delivered_status.time - rider_assigned_status.time) / 1000;\n prep_time_sec = Math.trunc(prep_time_sec);\n pickup_time_sec = Math.trunc(pickup_time_sec);\n delivery_time_sec = Math.trunc(delivery_time_sec);\n let total_time = prep_time_sec + pickup_time_sec + delivery_time_sec;\n let prep_perc = (prep_time_sec / total_time) * 100;\n let pick_perc = (pickup_time_sec / total_time) * 100;\n let del_perc = (delivery_time_sec / total_time) * 100;\n return (\n
\n
\n {getTime(prep_time_sec)}\n
\n
\n {getTime(pickup_time_sec)}\n
\n
\n {getTime(delivery_time_sec)}\n
\n
\n );\n };\n\n const getTakenTime = (order: any) => {\n let deliveredStatus = order.status_updates.find((status: any) => {\n return status.event === \"marked_as_delivered\";\n });\n let timeTaken = (deliveredStatus.time - order.scheduled_for) / 1000;\n return getTime(timeTaken);\n };\n\n const handleOrderPopup = (orderId: any) => {\n setShowOrderPopup(true);\n setSelectedOrderId(orderId);\n };\n\n return (\n
\n {showLoading ? (\n
\n \n
\n ) : (\n <>\n {orderDetails.length ? (\n \n \n \n \n \n \n \n \n \n \n \n {orderDetails.map((order: any, index: any) => {\n return (\n \n handleOrderPopup(order.order_id)}\n >\n {order.order_extended_info.order_number}\n \n \n \n \n \n {selectedOrderId === order.order_id && showOrderPopup ? (\n setShowOrderPopup(false)}\n />\n ) : (\n false\n )}\n \n );\n })}\n \n \n
\n
\n

\n :\n

\n

\n {props.driverDetails.total_orders}\n

\n
\n
\n

\n :\n

\n

\n {formatDecimal(props.driverDetails.total_amount) +\n \" \" +\n props.currency}\n

\n

\n :{\" \"}\n {formatDecimal(\n props.driverDetails.amount_breakdown.cash\n )}{\" \"}\n /:{\" \"}\n {formatDecimal(\n props.driverDetails.amount_breakdown.others\n )}\n

\n
\n
\n

\n :\n

\n

\n {formatTime(\n props.driverDetails.average_delivery_time\n )}\n

\n
\n
\n \n
\n \n
\n \n \n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n {getOrderTime(order.scheduled_for)}\n {getTakenTime(order)}\n {formatDecimal(updateOrderTotalAmount(order)) +\n \" \" +\n props.currency}\n \n {getPerformance(order)}\n
\n ) : null}\n \n )}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let deliveredDriverOrdersDetails =\n state.order.home_delivery.delivered_driver_order_details || [];\n let currency = state.company.company_details.currency;\n let selectedBranch = state.company.selected_branch;\n let dmCanRecordPayment = state.company.company_details.dm_can_record_payment;\n\n return {\n deliveredDriverOrdersDetails,\n currency,\n selectedBranch,\n dmCanRecordPayment,\n };\n};\nconst mapDispatchToProps = {\n fetchDeliveredDriverOrderDetails:\n homeDeliveryOperations.fetchDeliveredDriverOrderDetails,\n resetDeliveredDriverOrderDetails:\n homeDeliveryOperations.resetDeliveredDriverOrderDetails,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DriverOrderDetails);\n","import { faChevronDown, faChevronUp } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { formatDecimal } from \"../../helpers/itemCalculations\";\nimport { formatTime } from \"../../helpers/orderFunctions\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport DriverOrderDetails from \"../driverOrderDetails\";\n\ninterface DeliveredDriverProps {\n driver: any;\n fetchDeliveredDriverOrderDetails?: any;\n deliveredDriverOrdersDetails?: any;\n isExpandable: boolean;\n handleExpand: any;\n currency?: any;\n}\n\nfunction DeliveredDriver(props: DeliveredDriverProps) {\n const [showDetails, setShowDetails] = useState(false);\n const [driver, setDriver] = useState({} as any);\n\n useEffect(() => {\n setDriver(props.driver);\n }, [props.driver]);\n\n useEffect(() => {\n if (props.isExpandable) {\n setShowDetails(true);\n } else {\n setShowDetails(false);\n }\n }, [props.isExpandable]);\n\n const fetchDriverOrderDetails = (driverId: any) => {\n props.handleExpand(driverId);\n };\n\n const collapseOrderDetails = () => {\n setShowDetails(false);\n props.handleExpand(0);\n };\n\n const covertTimeIntoMinutes = (time: any) => {\n let minutes = Math.floor(time / 60);\n return minutes;\n };\n\n return (\n \n \n \n collapseOrderDetails()\n : () => fetchDriverOrderDetails(driver.id)\n }\n >\n {driver.name}\n \n \n \n

\n \n \n

{driver.total_orders}

\n \n \n

\n {formatDecimal(driver.total_amount) + \" \" + props.currency}\n

\n \n \n

\n {formatTime(driver.average_delivery_time)}\n

\n \n \n\n {props.deliveredDriverOrdersDetails.length ? (\n showDetails ? (\n \n \n \n \n \n ) : null\n ) : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let deliveredOrders = state.order.home_delivery.delivered_orders.orders || [];\n let deliveredDriverOrdersDetails =\n state.order.home_delivery.delivered_orders.orders || [];\n let currency = state.company.company_details.currency;\n\n return { deliveredOrders, deliveredDriverOrdersDetails, currency };\n};\n\nconst mapDispatchToProps = {\n fetchDeliveredDriverOrderDetails:\n homeDeliveryOperations.fetchDeliveredDriverOrderDetails,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DeliveredDriver);\n","import { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { useEffect, useState } from \"react\";\nimport { Dropdown } from \"react-bootstrap\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { formatDecimal } from \"../../helpers/itemCalculations\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\n\nimport \"./index.scss\";\n\ninterface IRiderStatsSectionProps {\n fetchRiderStats: any;\n companyId: any;\n riderStats: any;\n currency: any;\n selectDriver: any;\n selectedDriver: any;\n}\n\nconst RiderStatsSection = (props: IRiderStatsSectionProps) => {\n const [riders, setRiders] = useState([] as any);\n const [avgDeliveryTime, setAvgDeliveryTime] = useState(0 as any);\n const [totalAmount, setTotalAmount] = useState(0 as any);\n const [showDriverDropdown, setShowDriverDropdown] = useState(false);\n\n useEffect(() => {\n setRiders(props.riderStats);\n }, [props.riderStats]);\n\n useEffect(() => {\n if (riders.length > 0) {\n let riderStats = riders.filter(\n (rider: any) => rider.name !== \"All Riders\"\n );\n let avg_time = Math.floor(\n riderStats.reduce(\n (total: number, rider: any) => total + rider.average_delivery_time,\n 0\n ) / riderStats.length\n );\n\n setAvgDeliveryTime(riderStats.length == 0 ? \"0\" : formatTime(avg_time));\n setTotalAmount(\n formatDecimal(\n riderStats.reduce(\n (total: number, rider: any) => total + rider.total_amount,\n 0\n )\n )\n );\n }\n }, [riders]);\n\n const formatTime = (seconds: number) => {\n let time;\n if (seconds < 60) {\n return seconds === 1 ? \"1 second\" : `${seconds} seconds`;\n } else if (seconds >= 60 && seconds < 3600) {\n time = Math.floor(seconds / 60);\n return time === 1 ? \"1 minute\" : `${time} minutes`;\n } else {\n time = Math.floor(seconds / 3600);\n return time === 1 ? \"1 hour\" : `${time} hours`;\n }\n };\n\n const selectDriver = (rider: any) => {\n setShowDriverDropdown(false);\n props.selectDriver(rider);\n };\n\n return (\n
\n {riders.length > 0 ? (\n <>\n
\n \n setShowDriverDropdown(!showDriverDropdown)}\n >\n \n \n {props.selectedDriver ? (\n props.selectedDriver.name !== \"All Riders\" ? (\n props.selectedDriver.name\n ) : (\n \n )\n ) : (\n \n )}\n \n \n \n \n {riders.map((rider: any, index: number) => (\n selectDriver(rider)}\n >\n {rider.name}\n
\n ))}\n \n \n
\n
\n \n \n \n

{avgDeliveryTime}

\n
\n
\n \n \n \n

\n {totalAmount + \" \"}\n {props.currency ? props.currency : \"\"}\n

\n
\n \n ) : null}\n \n );\n};\n\nconst mapStateToProps = (state: any) => {\n let currency = state.company.company_details.currency;\n let companyId = state.company.company_details.company_id;\n\n return { currency, companyId };\n};\n\nconst mapDispatchToProps = {\n fetchRiderStats: homeDeliveryOperations.fetchDeliveredDriverOrderDetails,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RiderStatsSection);\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport DeliveredDriver from \"../deliveredDriver\";\nimport NoOrders from \"../noOrders\";\nimport RiderStatsSection from \"../riderStatsSection\";\n\ninterface IDeliveredOrdersProps {\n deliveredOrders: any;\n fetchDeliveredDriverOrderDetails: any;\n selectedBranch: any;\n company: any;\n setCurrentTab: any;\n refreshRequired: any;\n}\n\nfunction DeliveredOrders(props: IDeliveredOrdersProps) {\n const [deliveredOrders, setDeliveredOrders] = useState([] as any);\n const [filteredRiders, setFilteredRiders] = useState([] as any);\n const [selectedDriver, selectDriver] = useState({} as any);\n const [isExpandable, setExpandable] = useState(false);\n const [expandDriverId, setExpandDriverId] = useState(0 as any);\n\n useEffect(() => {\n let allDrivers = { name: \"All Riders\" };\n selectDriver(allDrivers);\n props.setCurrentTab(\"homeDelivery.delivered\");\n }, []);\n\n useEffect(() => {\n if (selectedDriver.name === \"All Riders\") {\n setDeliveredOrders(props.deliveredOrders);\n } else {\n setDeliveredOrders([selectedDriver]);\n }\n }, [selectedDriver]);\n\n useEffect(() => {\n setDeliveredOrders(props.deliveredOrders);\n setFilteredRiders(props.deliveredOrders);\n }, [JSON.stringify(props.deliveredOrders)]);\n\n const covertTimeIntoMinutes = (time: any) => {\n let minutes = Math.floor(time / 60);\n return minutes;\n };\n\n const handleExpand = (driverId: any) => {\n setExpandDriverId(driverId);\n };\n\n return (\n
\n \n {deliveredOrders.length ? (\n \n \n \n \n \n \n \n \n \n \n {deliveredOrders.map((driver: any, index: number) => {\n return (\n handleExpand(driverId)}\n key={index}\n driver={driver}\n />\n );\n })}\n \n
\n \n \n \n \n \n \n \n
\n ) : (\n \n )}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let deliveredOrders = state.order.home_delivery.delivered_orders.orders || [];\n let selectedBranch = state.company?.selected_branch;\n let company = state.company.company_details;\n let refreshRequired =\n state.order.home_delivery.delivered_orders.refresh_required;\n\n return { deliveredOrders, company, selectedBranch, refreshRequired };\n};\n\nconst mapDispatchToProps = {\n fetchDeliveredDriverOrderDetails:\n homeDeliveryOperations.fetchDeliveredDriverOrderDetails,\n setCurrentTab: currentTabOperations.setCurrentTab,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DeliveredOrders);\n","import React, { useEffect, useState } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { homeDeliveryOperations } from \"../../state/features/homeDelivery\";\nimport TabNavigation from \"../../components/tabs\";\nimport UnconfirmedOrders from \"../../components/unconfirmedOrders\";\nimport NewOrders from \"../../components/newOrders\";\nimport WaitingForCollectionOrders from \"../../components/waitingForCollectionOrders\";\nimport DeliveryInProgressOrders from \"../../components/deliveryInProgressOrders\";\nimport DeliveredOrders from \"../../components/deliveredOrders\";\nimport { branchOperations } from \"../../state/features/branches\";\nimport { driverOperations } from \"../../state/features/drivers\";\nimport { useSelectedBranch } from \"../../helpers/orderFunctions\";\nimport { logisticPartnersOperations } from \"../../state/features/logisticPartners\";\nimport LogisticDetailsPopup from \"../../components/logisticDetailsPopup\";\nimport { FormattedMessage } from 'react-intl';\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\n\ninterface HomeDeliveriesProps {\n company: any;\n branches: any;\n homeDeliveryOrders: any;\n fetchNewOrders: any;\n fetchInProgressOrders: any;\n fetchReadyOrders: any;\n fetchUnconfirmedOrders: any;\n fetchDeliveredOrders: any;\n selectedBranch: any;\n selectBranch: any;\n fetchDrivers: any;\n currentTab: any;\n fetchLogisticPartners: any;\n}\n\nfunction HomeDeliveries(props: HomeDeliveriesProps) {\n const [hideUnconfirmed, setHideUnconfirmed] = useState(true);\n useEffect(() => {\n if (Object.keys(props.selectedBranch).length > 0) {\n props\n .fetchUnconfirmedOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchNewOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchReadyOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchInProgressOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchDeliveredOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n }, [props.selectedBranch]);\n\n useEffect(() => {\n if (\n props.currentTab.length > 0 &&\n Object.keys(props.homeDeliveryOrders).length > 0 &&\n Object.keys(props.selectedBranch).length > 0\n ) {\n switch (props.currentTab) {\n case \"homeDelivery.unconfirmed\":\n if (props.homeDeliveryOrders.unconfirmed_orders.refresh_required) {\n props\n .fetchUnconfirmedOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"homeDelivery.new\":\n if (props.homeDeliveryOrders.new_orders.refresh_required) {\n props\n .fetchNewOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"homeDelivery.ready\":\n if (props.homeDeliveryOrders.ready_orders.refresh_required) {\n props\n .fetchReadyOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"homeDelivery.inProgress\":\n if (props.homeDeliveryOrders.in_progress_orders.refresh_required) {\n props\n .fetchInProgressOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"homeDelivery.delivered\":\n if (props.homeDeliveryOrders.delivered_orders.refresh_required) {\n props\n .fetchDeliveredOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n default:\n \"\";\n }\n }\n if (props.company.user_permissions?.includes(\"weborder.manage\")) {\n setHideUnconfirmed(false);\n } else if (props.company.user_permissions?.includes(\"all.manage\")) {\n setHideUnconfirmed(false);\n } else {\n setHideUnconfirmed(true);\n }\n }, [\n props.currentTab,\n props.homeDeliveryOrders,\n props.selectedBranch,\n props.company,\n ]);\n\n const tabs = [\n {\n name: ,\n path: \"/home-delivery/unconfirmed\",\n orders_count: props.homeDeliveryOrders.unconfirmed_orders.count,\n is_loading: props.homeDeliveryOrders.unconfirmed_orders.is_loading,\n is_hidden: hideUnconfirmed,\n },\n {\n name: ,\n path: \"/home-delivery/new\",\n orders_count: props.homeDeliveryOrders.new_orders.count,\n is_loading: props.homeDeliveryOrders.new_orders.is_loading,\n is_hidden: false,\n },\n {\n name:,\n path: \"/home-delivery/waiting-for-pickup\",\n orders_count: props.homeDeliveryOrders.ready_orders.count,\n is_loading: props.homeDeliveryOrders.ready_orders.is_loading,\n is_hidden: false,\n },\n {\n name: ,\n path: \"/home-delivery/in-progress\",\n orders_count: props.homeDeliveryOrders.in_progress_orders.count,\n is_loading: props.homeDeliveryOrders.in_progress_orders.is_loading,\n is_hidden: false,\n },\n {\n name: ,\n path: \"/home-delivery/delivered\",\n orders_count: props.homeDeliveryOrders.delivered_orders.count,\n is_loading: props.homeDeliveryOrders.delivered_orders.is_loading,\n is_hidden: false,\n },\n ];\n\n return (\n
\n \n \n \n \n \n \n \n \n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let homeDeliveryOrders = state.order.home_delivery;\n let selectedBranch = state.company?.selected_branch;\n let branches = state.branches || [];\n let company = state.company.company_details;\n let currentTab = state.currentTab;\n\n return { homeDeliveryOrders, branches, selectedBranch, company, currentTab };\n};\n\nconst mapDispatchToProps = {\n fetchNewOrders: homeDeliveryOperations.fetchNewOrders,\n fetchInProgressOrders: homeDeliveryOperations.fetchInProgressOrders,\n fetchReadyOrders: homeDeliveryOperations.fetchReadyOrders,\n fetchUnconfirmedOrders: homeDeliveryOperations.fetchUnconfirmedOrders,\n fetchDeliveredOrders: homeDeliveryOperations.fetchDeliveredOrders,\n fetchDrivers: driverOperations.fetchDrivers,\n selectBranch: branchOperations.selectBranch,\n fetchLogisticPartners: logisticPartnersOperations.fetchLogisticPartners,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(HomeDeliveries);\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { filterOrders } from \"../../helpers/orderFunctions\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport { pickupOperations } from \"../../state/features/pickup\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\n\ninterface IPickupNewOrdersProps {\n markOrderReady: any;\n newOrders: any;\n setCurrentTab: any;\n}\n\nfunction PickupNewOrders(props: IPickupNewOrdersProps) {\n const [selecteOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const [filterdNewOrders, setFilteredNewOrders] = useState([] as any);\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n useEffect(() => {\n props.setCurrentTab(\"pickup.new\");\n }, []);\n\n useEffect(() => {\n setFilteredNewOrders(props.newOrders);\n }, [JSON.stringify(props.newOrders)]);\n\n const setOrderReady = (orderId: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n props\n .markOrderReady(orderId)\n .then(() => {\n setDisable(false);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n };\n\n const onFilterChanges = (filterOption: any) => {\n setFilteredNewOrders(filterOrders(filterOption, props.newOrders));\n };\n\n return (\n
\n 0}\n component={({ ref }) => (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n setOrderReady(orderId)}\n item={order}\n disableButton={\n order.order_id === selecteOrderId && disableButton\n }\n />\n )}\n />\n \n \n )}\n />\n {!filterdNewOrders.length ? : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n const newOrders = state.order.pickup.new_pickup_orders.orders || [];\n return { newOrders };\n};\n\nconst mapDispatchToProps = {\n setCurrentTab: currentTabOperations.setCurrentTab,\n markOrderReady: pickupOperations.markOrderReady,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PickupNewOrders);\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport Order from \"../order\";\n\nconst SearchResults = ({\n orders,\n selecteOrderId,\n disableButton,\n markOrderCollected,\n}: any) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {orders.length > 0\n ? orders.map((order: any) => (\n \n ))\n : null}\n \n
\n .\n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport { SearchResults };\n","import React, { createRef, useEffect, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport { pickupOperations } from \"../../state/features/pickup\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport {\n hasLocalPrint,\n validateCollectedPayments,\n} from \"../../helpers/orderFunctions\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\nimport { reprintsOperations } from \"../../state/features/reprints\";\nimport { FormattedMessage } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { SearchResults } from \"./searchResults\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\nimport OrderFiltersTab from \"../orderFilters\";\nimport { ORDER_STATUS } from \"../../types/orderStatus\";\nimport useOrderFilter from \"../../hooks/useOrderFilter\";\n\ninterface IPickupWaitingForCollectionProps {\n markOrderCollected: any;\n readyOrders: any;\n selectedBranch: any;\n company: any;\n setCurrentTab: any;\n refreshRequired: any;\n getLocalPrint?: any;\n printSettings?: any;\n}\n\nfunction PickupWaitingForCollection(props: IPickupWaitingForCollectionProps) {\n const [markCollected, setMarkCollected] = useState(false);\n const [selecteOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const { enableEntryTransition } = useEntryTransitionConfig();\n const { searchResultOrders, onSearchChange } = useOrderFilter(\n props.readyOrders\n );\n\n useEffect(() => {\n props.setCurrentTab(\"pickup.ready\");\n }, []);\n\n const markOrderCollected = (orderId: number, orderPayments: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n let validationEnabledCompanies: any = JSON.parse(\n getEnvValueFor(\"VALIDATION_ENABLED_COMPANIES\") || \"[]\"\n );\n let order: any = null;\n let collectedOrderIndex = props.readyOrders.findIndex(\n (order: any) => order.order_id === orderId\n );\n if (validationEnabledCompanies.includes(props.company.company_id)) {\n console.debug(\"[APP] Initiating payment validation\");\n if (collectedOrderIndex !== -1) {\n order = props.readyOrders[collectedOrderIndex];\n if (\n order.order_extended_info.payments.length === 0 ||\n (order.order_extended_info.payments.length === 1 &&\n order.order_extended_info.payments[0].name === \"Loyalty\")\n ) {\n validateCollectedPayments(order, orderPayments, () => {\n handleMarkOrderCollected(orderId, orderPayments, order);\n });\n } else {\n handleMarkOrderCollected(orderId, orderPayments, order);\n }\n } else {\n console.debug(\"[APP] Skipping validation\");\n if (collectedOrderIndex !== -1) {\n order = props.readyOrders[collectedOrderIndex];\n handleMarkOrderCollected(orderId, orderPayments, order);\n }\n }\n } else {\n if (collectedOrderIndex !== -1) {\n order = props.readyOrders[collectedOrderIndex];\n handleMarkOrderCollected(orderId, orderPayments, order);\n }\n }\n setMarkCollected(true);\n };\n\n const handleMarkOrderCollected = (\n orderId: number,\n orderPayments: any,\n order: any\n ) => {\n props\n .markOrderCollected(orderId, orderPayments)\n .then((response: any) => {\n setDisable(false);\n if (response.payload.status === 200) {\n setTimeout(() => {\n if (\n (order.order_type == \"call_center\" ||\n order.order_type == \"online\") &&\n hasLocalPrint(order, props.printSettings)\n ) {\n window.open(\n `${getEnvValueFor(\n \"SAPAAD_CORE_BASE_URL\"\n )}/local_prints/pays_bill_for_takeaway_order?order_id=${orderId}`,\n \"PRINT\",\n `resizable=yes,width=400,height=500,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0`\n );\n }\n }, 300);\n }\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n };\n\n useEffect(() => {\n if (markCollected) {\n setMarkCollected(false);\n }\n }, [markCollected]);\n\n const showSearchResults = useMemo(() => {\n return Boolean(searchResultOrders.length > 0);\n }, [searchResultOrders.length]);\n\n const searchResults = useMemo(() => {\n return searchResultOrders.map((o) => ({\n ...o,\n id: o.order_id,\n ref: createRef(),\n }));\n }, [JSON.stringify(searchResultOrders)]);\n\n return (\n
\n onSearchChange(searchValue)}\n />\n {showSearchResults ? (\n \n ) : (\n 0 && !showSearchResults}\n component={({ ref }) => (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n \n )}\n />\n \n \n )}\n />\n )}\n {!props.readyOrders.length ? : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let readyOrders = state.order.pickup.ready_pickup_orders.orders || [];\n let selectedBranch = state.company?.selected_branch;\n let company = state.company.company_details;\n let refreshRequired = state.order.home_delivery.ready_orders.refresh_required;\n let printSettings = state.printSettings;\n return {\n readyOrders,\n selectedBranch,\n company,\n refreshRequired,\n printSettings,\n };\n};\n\nconst mapDispatchToProps = {\n markOrderCollected: pickupOperations.markOrderCollected,\n setCurrentTab: currentTabOperations.setCurrentTab,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(PickupWaitingForCollection);\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { filterOrders } from \"../../helpers/orderFunctions\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport OrdersFilterSection from \"../ordersFilterSection\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\n\ninterface IPickupCollectedProps {\n collectedOrders: any;\n selectedBranch: any;\n company: any;\n setCurrentTab: any;\n refreshRequired: any;\n}\n\nfunction PickupCollected(props: IPickupCollectedProps) {\n const [collectedOrders, setCollectedOrders] = useState([]);\n const [filteredCollectedOrders, setFilteredCollectedOrders] = useState(\n [] as any\n );\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n useEffect(() => {\n props.setCurrentTab(\"pickup.collected\");\n }, []);\n\n useEffect(() => {\n setCollectedOrders(props.collectedOrders);\n }, [JSON.stringify(props.collectedOrders)]);\n\n useEffect(() => {\n setFilteredCollectedOrders(collectedOrders);\n }, [JSON.stringify(collectedOrders)]);\n\n const onFilterChanges = (filterOption: any) => {\n setFilteredCollectedOrders(filterOrders(filterOption, collectedOrders));\n };\n\n return (\n
\n onFilterChanges(filterOption)}\n />\n {filteredCollectedOrders.length > 0 ? (\n \n \n \n \n \n \n \n \n \n \n \n \n (\n {}}\n item={item}\n />\n )}\n />\n \n
.
\n ) : (\n \n )}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let collectedOrders = state.order.pickup.collected_pickup_orders.orders || [];\n let selectedBranch = state.company?.selected_branch;\n let company = state.company.company_details;\n let refreshRequired = state.order.home_delivery.ready_orders.refresh_required;\n\n return { collectedOrders, selectedBranch, company, refreshRequired };\n};\n\nconst mapDispatchToProps = {\n setCurrentTab: currentTabOperations.setCurrentTab,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PickupCollected);\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { currentTabOperations } from \"../../state/features/currentTab\";\nimport NoOrders from \"../noOrders\";\nimport Order from \"../order\";\nimport { pickupOperations } from \"../../state/features/pickup\";\nimport Swal from \"sweetalert2\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\nimport { validateCollectedPayments } from \"../../helpers/orderFunctions\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport { AnimateOrderTransitions } from \"../animateOrderTransitions\";\nimport { AnimateTableTransition } from \"../animateTableTransitions\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\n\ninterface IPickupUnconfirmedOrdersProps {\n unconfirmedOrders: any;\n setCurrentTab: any;\n markOrderConfirm?: any;\n markOrderReject?: any;\n markOrderRejectWithReason?: any;\n markPickupOrderConfirmedWithPayment?: any;\n company: any;\n}\n\nfunction PickupUnconfirmedOrders(props: IPickupUnconfirmedOrdersProps) {\n const [selectedOrderId, setSelectedOrderId] = useState(0);\n const [disableButton, setDisable] = useState(false);\n const [hideDetails, setHideDetails] = useState(false);\n const intl = useIntl();\n const formattedMessage = (formatId: any) => {\n const translatedMessage = intl.formatMessage({ id: formatId });\n return translatedMessage;\n };\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n useEffect(() => {\n props.setCurrentTab(\"pickup.unconfirmed\");\n }, []);\n\n const handleApprove = (orderId: any, orderSource: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n setHideDetails(false);\n props\n .markOrderConfirm(orderId, orderSource)\n .then((res: any) => {\n setDisable(false);\n setHideDetails(true);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n };\n const handleReject = (\n orderId: any,\n cancelReasonId: any,\n supervisorPassword: any\n ) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n setHideDetails(false);\n props\n .markOrderRejectWithReason(\n orderId,\n false,\n cancelReasonId,\n supervisorPassword\n )\n .then((res: any) => {\n setHideDetails(true);\n setDisable(false);\n })\n .catch((err: any) => {\n if (\n err.error.response !== undefined &&\n err.error.response.status === 422\n ) {\n setDisable(false);\n let text: any = formattedMessage(\"global.password_invalid\");\n Swal.fire({\n icon: \"warning\",\n text: text,\n });\n }\n });\n };\n\n const handleAutoReject = (orderId: any) => {\n props\n .markOrderReject(orderId, true)\n .catch((err: AxiosErrorResponse) => console.log(err));\n };\n\n const handleConfirmWithPayment = (orderId: any, orderPayments: any) => {\n setDisable(true);\n setSelectedOrderId(orderId);\n setHideDetails(false);\n let validationEnabledCompanies: any = JSON.parse(\n getEnvValueFor(\"VALIDATION_ENABLED_COMPANIES\") || \"[]\"\n );\n if (validationEnabledCompanies?.includes(props.company.company_id)) {\n console.debug(\"[APP] Initiating payment validation\");\n let order: any = null;\n let orderIndex = props.unconfirmedOrders.findIndex(\n (order: any) => order.order_id === orderId\n );\n if (orderIndex !== -1) {\n order = props.unconfirmedOrders[orderIndex];\n validateCollectedPayments(order, orderPayments, () => {\n props\n .markPickupOrderConfirmedWithPayment(orderId, orderPayments)\n .then((response: any) => {\n setHideDetails(true);\n setDisable(false);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n });\n }\n } else {\n props\n .markPickupOrderConfirmedWithPayment(orderId, orderPayments)\n .then((response: any) => {\n setHideDetails(true);\n setDisable(false);\n })\n .catch((err: AxiosErrorResponse) => {\n console.log(err);\n setDisable(false);\n });\n }\n };\n\n return (\n
\n 0}\n component={({ ref }) => (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {props.unconfirmedOrders.length > 0 ? (\n (\n \n handleReject(\n orderId,\n cancelReasonId,\n supervisorPassword\n )\n }\n handleAutoReject={handleAutoReject}\n orderType=\"unconfirmed\"\n orderStatus=\"unconfirmed\"\n handleOrderState={handleConfirmWithPayment}\n key={item.order_id}\n disableButton={\n item.order_id === selectedOrderId && disableButton\n }\n item={item}\n hideDetails={hideDetails}\n />\n )}\n />\n ) : null}\n \n \n )}\n />\n {!props.unconfirmedOrders.length ? : null}\n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let unconfirmedOrders =\n state.order.pickup.unconfirmed_pickup_orders.orders || [];\n let company = state.company.company_details;\n\n return { unconfirmedOrders, company };\n};\n\nconst mapDispatchToProps = {\n setCurrentTab: currentTabOperations.setCurrentTab,\n markOrderConfirm: pickupOperations.markPickupUnconfirmedOrderConfirm,\n markOrderReject: pickupOperations.markPickupUnconfirmedOrderReject,\n markOrderRejectWithReason:\n pickupOperations.markPickupUnconfirmedOrderRejectWithReason,\n markPickupOrderConfirmedWithPayment:\n pickupOperations.markPickupOrderConfirmedWithPayment,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(PickupUnconfirmedOrders);\n","import React, { useEffect, useState } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { pickupOperations } from \"../../state/features/pickup\";\nimport TabNavigation from \"../../components/tabs\";\nimport PickupNewOrders from \"../../components/pickupNewOrders\";\nimport pickupWaitingForCollection from \"../../components/pickupWaitingForCollection\";\nimport pickupCollected from \"../../components/pickupCollected\";\nimport { branchOperations } from \"../../state/features/branches\";\nimport { useSelectedBranch } from \"../../helpers/orderFunctions\";\nimport pickupUnconfirmed from \"../../components/pickupUnconfirmed\";\nimport { FormattedMessage } from \"react-intl\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\n\ninterface PickupsProps {\n company: any;\n branches: any;\n pickupOrders: any;\n fetchNewPickupOrders: any;\n fetchReadyPickupOrders: any;\n fetchCollectedPickupOrders: any;\n selectBranch: any;\n selectedBranch: any;\n currentTab: any;\n fetchPickupUnconfirmedOrders: any;\n}\n\nfunction Pickups(props: PickupsProps) {\n const [hideUnconfirmed, setHideUnconfirmed] = useState(true);\n useEffect(() => {\n if (Object.keys(props.selectedBranch).length > 0) {\n props\n .fetchPickupUnconfirmedOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchNewPickupOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchReadyPickupOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n props\n .fetchCollectedPickupOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n }, [props.selectedBranch]);\n\n useEffect(() => {\n if (\n props.currentTab.length > 0 &&\n Object.keys(props.pickupOrders).length > 0 &&\n Object.keys(props.selectedBranch).length > 0\n ) {\n switch (props.currentTab) {\n case \"pickup.unconfirmed\":\n if (props.pickupOrders.unconfirmed_pickup_orders.refresh_required) {\n props\n .fetchPickupUnconfirmedOrders(\n useSelectedBranch(props.selectedBranch)\n )\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"pickup.new\":\n if (props.pickupOrders.new_pickup_orders.refresh_required) {\n props\n .fetchNewPickupOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"pickup.ready\":\n if (props.pickupOrders.ready_pickup_orders.refresh_required) {\n props\n .fetchReadyPickupOrders(useSelectedBranch(props.selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n case \"pickup.collected\":\n if (props.pickupOrders.collected_pickup_orders.refresh_required) {\n props\n .fetchCollectedPickupOrders(\n useSelectedBranch(props.selectedBranch)\n )\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n break;\n default:\n \"\";\n }\n }\n if (props.company.user_permissions?.includes(\"weborder.manage\")) {\n setHideUnconfirmed(false);\n } else if (props.company.user_permissions?.includes(\"all.manage\")) {\n setHideUnconfirmed(false);\n } else {\n setHideUnconfirmed(true);\n }\n }, [\n props.currentTab,\n props.pickupOrders,\n props.selectedBranch,\n props.company,\n ]);\n\n const tabs = [\n {\n name: ,\n path: \"/pickup/unconfirmed\",\n orders_count: props.pickupOrders.unconfirmed_pickup_orders.count,\n is_loading: props.pickupOrders.unconfirmed_pickup_orders.is_loading,\n is_hidden: hideUnconfirmed,\n },\n {\n name: ,\n path: \"/pickup/new\",\n orders_count: props.pickupOrders.new_pickup_orders.count,\n is_loading: props.pickupOrders.new_pickup_orders.is_loading,\n is_hidden: false,\n },\n {\n name: ,\n path: \"/pickup/waiting-for-collection\",\n orders_count: props.pickupOrders.ready_pickup_orders.count,\n is_loading: props.pickupOrders.ready_pickup_orders.is_loading,\n is_hidden: false,\n },\n {\n name: ,\n path: \"/pickup/collected\",\n orders_count: props.pickupOrders.collected_pickup_orders.count,\n is_loading: props.pickupOrders.collected_pickup_orders.is_loading,\n is_hidden: false,\n },\n ];\n\n return (\n
\n \n \n \n \n \n \n \n
\n );\n}\n\nconst mapStateToProps = (state: any) => {\n let pickupOrders = state.order.pickup;\n let branches = state.branches || [];\n let company = state.company.company_details;\n let selectedBranch = state.company?.selected_branch;\n let currentTab = state.currentTab;\n\n return { pickupOrders, branches, company, selectedBranch, currentTab };\n};\n\nconst mapDispatchToProps = {\n fetchNewPickupOrders: pickupOperations.fetchNewPickupOrders,\n fetchReadyPickupOrders: pickupOperations.fetchReadyPickupOrders,\n fetchCollectedPickupOrders: pickupOperations.fetchCollectedPickupOrders,\n fetchPickupUnconfirmedOrders: pickupOperations.fetchPickupUnconfirmedOrders,\n selectBranch: branchOperations.selectBranch,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Pickups);\n","import React, { useEffect, useMemo } from \"react\";\nimport { connect } from \"react-redux\";\nimport NoOrders from \"../../components/noOrders\";\nimport { filterOrderLogisticsPartners, useSelectedBranch } from \"../../helpers/orderFunctions\";\nimport { scheduledOperations } from \"../../state/features/scheduled\";\nimport Order from \"../../components/order\";\nimport { FormattedMessage } from \"react-intl\";\nimport { logisticPartnersOperations } from \"../../state/features/logisticPartners\";\nimport { driverOperations } from \"../../state/features/drivers\";\nimport { useAppStateSelector } from \"../../hooks/useAppStateSelector\";\nimport type { AxiosErrorResponse } from \"../../types/axiosMiddleware\";\nimport { AnimateOrderTransitions } from \"../../components/animateOrderTransitions\";\nimport { AnimateTableTransition } from \"../../components/animateTableTransitions\";\nimport { useEntryTransitionConfig } from \"../../hooks/useEntryTransitionConfig\";\n\ninterface iScheduledProps {\n fetchScheduledOrders: any;\n fetchDrivers: any;\n fetchLogisticPartners: any;\n}\n\nfunction Scheduled(props: iScheduledProps) {\n const selectedBranch = useAppStateSelector(\n (state) => state.company?.selected_branch\n );\n const scheduledOrders = useAppStateSelector(\n (state) => state.order.scheduled.orders\n );\n const logisticsPartners = useAppStateSelector(\n (state) => state.logisticPartners\n );\n const companyCountry = useAppStateSelector(\n (state) => state.company.company_details.country\n );\n const logisticsPartnersWithSchedulingSupport = logisticsPartners.filter(\n (item: any) => {\n let partnerEnabledCountries =\n item?.configuration?.partner_config?.enabled_regions || [];\n let isScheduledOrdersSupported =\n item?.configuration?.partner_config?.scheduled_order_assignment ||\n false;\n return (\n partnerEnabledCountries.includes(companyCountry) &&\n isScheduledOrdersSupported\n );\n }\n );\n\n const { enableEntryTransition } = useEntryTransitionConfig();\n\n const homeDeliveryScheduledOrders = useMemo(() => {\n return scheduledOrders.filter((s: any) => !s.order_extended_info.take_away);\n }, [JSON.stringify(scheduledOrders)]);\n\n const scheduledOrdersWithAssignablePartners = useMemo(() => {\n return homeDeliveryScheduledOrders.filter(\n (o: any) =>\n filterOrderLogisticsPartners(\n o.location_id,\n logisticsPartnersWithSchedulingSupport\n ).length > 0\n );\n }, [\n JSON.stringify(homeDeliveryScheduledOrders),\n JSON.stringify(logisticsPartnersWithSchedulingSupport),\n ]);\n\n const showLogisticsPartnersColumn =\n scheduledOrdersWithAssignablePartners.length > 0 &&\n homeDeliveryScheduledOrders.length > 0;\n\n useEffect(() => {\n if (Object.keys(selectedBranch).length > 0) {\n props\n .fetchScheduledOrders(useSelectedBranch(selectedBranch))\n .catch((err: AxiosErrorResponse) => console.log(err));\n }\n }, [selectedBranch]);\n\n return (\n
\n

\n \n

\n 0}\n component={({ ref }) => (\n \n \n \n \n \n .\n \n \n \n \n \n \n \n \n \n \n \n \n \n {showLogisticsPartnersColumn ? (\n \n \n \n ) : null}\n \n \n {scheduledOrders.length > 0 ? (\n \n (\n \n )}\n />\n \n ) : null}\n \n )}\n />\n {!scheduledOrders.length && (\n \n \n \n \n
\n \n
\n )}\n
\n );\n}\n\nconst mapDispatchToProps = {\n fetchScheduledOrders: scheduledOperations.fetchScheduledOrders,\n fetchDrivers: driverOperations.fetchDrivers,\n fetchLogisticPartners: logisticPartnersOperations.fetchLogisticPartners,\n};\n\nexport default connect(null, mapDispatchToProps)(Scheduled);\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { hardRefresh } from \"../../helpers/utils\";\n\nfunction NoInternet() {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n

\n \n

\n
\n \n \n \n \n \n \n
\n \n
\n );\n}\n\nexport default NoInternet;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\n\ninterface iDmmsDisabledProps {\n branchName: string;\n}\n\nfunction DmmsDisabled(props: iDmmsDisabledProps) {\n return (\n
\n

\n \n

\n

\n {\" \"}\n . :{\" \"}\n

\n
    \n
  1. \n >{\" \"}\n \n \n \n
  2. \n
  3. \n \n
  4. \n
  5. \n \n
  6. \n
\n
\n );\n}\n\nexport default DmmsDisabled;\n","import React, { useEffect, useState } from \"react\";\nimport Header from \"../header\";\nimport { Redirect, Route, Switch, useHistory } from \"react-router-dom\";\nimport HomeDeliveries from \"../../containers/homeDeliveries\";\nimport Pickups from \"../../containers/pickups\";\nimport Scheduled from \"../../containers/scheduled\";\nimport LoginError from \"../../containers/loginError\";\nimport { connect } from \"react-redux\";\nimport NoInternet from \"../noInternet\";\nimport Swal from \"sweetalert2\";\nimport DmmsDisabled from \"../dmmsDisabled\";\nimport { hardRefresh } from \"../../helpers/utils\";\n\ninterface IAppProps {\n pusher: any;\n error: any;\n selectedBranch?: any;\n}\n\nfunction App(props: IAppProps) {\n const [showOfflineOverlay, setShowOfflineOverlay] = useState(false);\n const [loginErrorRedirect, setLoginErrorRedirect] = useState(false);\n const [isDmmsDisabled, setIsDmmsDisabled] = useState(false);\n\n const history = useHistory();\n\n useEffect(() => {\n if (props.error.showError) {\n switch (props.error.errorType) {\n case \"noInternet\":\n setShowOfflineOverlay(true);\n break;\n case \"generic\":\n Swal.fire(props.error.errorMessage).then((res: any) => {\n hardRefresh();\n });\n break;\n case \"jwtRefreshFailed\":\n history.push(\"/login-error\");\n break;\n default:\n Swal.fire(props.error.errorMessage);\n }\n } else {\n setShowOfflineOverlay(false);\n setLoginErrorRedirect(false);\n }\n }, [props.error]);\n\n useEffect(() => {\n if (Object.keys(props.selectedBranch).length > 0) {\n if (\n props.selectedBranch.name === \"All branches\" ||\n props.selectedBranch.name === \"Multiple Branches\"\n ) {\n setIsDmmsDisabled(false);\n } else if (!props.selectedBranch.delivery_enabled) {\n setIsDmmsDisabled(true);\n } else {\n setIsDmmsDisabled(false);\n }\n }\n }, [props.selectedBranch]);\n\n return (\n <>\n {showOfflineOverlay && }\n {loginErrorRedirect ? (\n
\n \n
\n ) : (\n
\n
\n {isDmmsDisabled ? (\n \n ) : (\n \n \n \n \n \n \n )}\n
\n )}\n \n );\n}\n\nconst mapStateToProps = (state: any) => {\n let error = state.error;\n let selectedBranch = state.company.selected_branch;\n return { error, selectedBranch };\n};\n\nexport default connect(mapStateToProps)(App);\n","export const UPDATE_LOADER = \"loader/UPDATE_LOADER\";\nexport const RESET_LOADER = \"loader/RESET_LOADER\";\nexport const SHOW_LOADER = \"loader/SHOW_LOADER\";\n","import actions from \"./actions\";\n\nconst updateLoader = actions.updateLoader;\nconst resetLoader = actions.resetLoader;\nconst showLoader = actions.showLoader;\n\nexport default { updateLoader, resetLoader, showLoader };\n","import reducer from \"./reducers\";\n\nexport { default as loaderOperations } from \"./operations\";\n\n\nexport default reducer;\n","import * as orderTypes from \"../homeDelivery/types\";\nimport * as types from \"./types\"\nimport * as companyTypes from \"../company/types\";\nimport * as pickupOrderTypes from '../pickup/types'\n\nconst loaderReducer = (state = {}, action: any) => {\n switch(action.type){\n\n // case orderTypes.FETCH_UNCONFIRMED_ORDERS:\n // case orderTypes.FETCH_NEW_ORDERS:\n // case orderTypes.FETCH_IN_PROGRESS_ORDERS:\n // case orderTypes.FETCH_READY_ORDERS:\n // case orderTypes.FETCH_RIDER_STATS:\n // case companyTypes.FETCH_COMPANY:\n // return { loading: true };\n case orderTypes.FETCH_UNCONFIRMED_ORDERS_SUCCESS:\n case orderTypes.FETCH_UNCONFIRMED_ORDERS_FAIL:\n case orderTypes.FETCH_NEW_ORDERS_SUCCESS:\n case orderTypes.FETCH_NEW_ORDERS_FAIL:\n case orderTypes.FETCH_READY_ORDERS_SUCCESS:\n case orderTypes.FETCH_READY_ORDERS_FAIL:\n case orderTypes.FETCH_IN_PROGRESS_ORDERS_SUCCESS:\n case orderTypes.FETCH_IN_PROGRESS_ORDERS_FAIL:\n case orderTypes.FETCH_RIDER_STATS_SUCCESS:\n case orderTypes.FETCH_RIDER_STATS_FAIL:\n case companyTypes.FETCH_COMPANY_SUCCESS:\n case companyTypes.FETCH_COMPANY_FAIL:\n return { loading: false };\n case types.UPDATE_LOADER:\n return action.payload;\n case types.RESET_LOADER:\n return null;\n default:\n return state;\n }\n}\n\nconst reducer = loaderReducer;\n\nexport default reducer;\n","export const REFRESH_TOKEN_FAILED = \"jwt/REFRESH_TOKEN_FAILED\";\n","export const NETWORK_ERROR = \"error/NETWORK_ERROR\";\n","import React from \"react\";\nimport * as companyTypes from \"../company/types\";\nimport * as branchesTypes from \"../branches/types\";\nimport * as paymentTypes from \"../payments/types\";\nimport * as homeDeliveryTypes from \"../homeDelivery/types\";\nimport * as pickupTypes from \"../pickup/types\";\nimport * as riderTypes from \"../drivers/types\";\nimport * as orderTypes from \"../order/types\";\nimport * as reprintTypes from \"../reprints/types\";\nimport * as jwtTypes from \"../jwt/types\";\nimport * as logisticTypes from \"../logisticPartners/types\";\nimport * as driversTypes from \"../drivers/types\";\nimport * as types from \"./types\";\nimport {\n generateAggregatorError,\n generateErrorMessage,\n} from \"../../../helpers/utils\";\nimport { logisticErrors } from \"../../../helpers/logisticErrors\";\n\nlet errorMessage = {\n title: generateErrorMessage(logisticErrors.oops),\n text: generateErrorMessage(logisticErrors.globalErr),\n icon: \"warning\",\n};\n\nlet thirdPartyCancelErr = {\n title: generateErrorMessage(logisticErrors.thirdPartyErr),\n};\n\nconst aggregtorErrorMessage = (orderSource: any) => {\n return {\n icon: \"error\",\n title: generateErrorMessage(logisticErrors.unConfirmErr),\n text: generateAggregatorError(orderSource),\n };\n};\n\nconst errorReducer = (state: any = { showError: false }, action: any) => {\n switch (action.type) {\n case types.NETWORK_ERROR:\n return { ...state, showError: true, errorType: \"noInternet\" };\n case companyTypes.FETCH_COMPANY_FAIL:\n case branchesTypes.FETCH_BRANCHES_FAIL:\n case paymentTypes.FETCH_PAYMENTS_FAIL:\n case homeDeliveryTypes.FETCH_NEW_ORDERS_FAIL:\n case homeDeliveryTypes.FETCH_UNCONFIRMED_ORDERS_FAIL:\n case homeDeliveryTypes.FETCH_READY_ORDERS_FAIL:\n case homeDeliveryTypes.FETCH_IN_PROGRESS_ORDERS_FAIL:\n case homeDeliveryTypes.FETCH_RIDER_STATS_FAIL:\n case homeDeliveryTypes.FETCH_RIDER_ORDERS_FAIL:\n case riderTypes.FETCH_DRIVERS_FAIL:\n case orderTypes.FETCH_ORDER_FAIL:\n case reprintTypes.FETCH_REPRINTS_FAIL:\n case reprintTypes.SET_ORDER_MARK_AS_REPRINTED_FAIL:\n case homeDeliveryTypes.SET_ORDER_MARK_AS_READY_FAIL:\n case homeDeliveryTypes.SET_ORDER_ASSIGN_RIDER_FAIL:\n case homeDeliveryTypes.SET_ORDER_MARK_AS_PICKUP_FAIL:\n case homeDeliveryTypes.SET_ORDER_MARK_AS_DELIVERED_FAIL:\n case pickupTypes.FETCH_NEW_PICKUP_ORDERS_FAIL:\n case pickupTypes.FETCH_READY_PICKUP_ORDERS_FAIL:\n case pickupTypes.FETCH_COLLECTED_PICKUP_ORDERS_FAIL:\n case pickupTypes.SET_PICKUP_ORDER_MARK_AS_READY_FAIL:\n case pickupTypes.SET_ORDER_COLLECTED_FAIL:\n case pickupTypes.FETCH_UNCONFIRMED_PICKUP_ORDERS_FAIL:\n case logisticTypes.CANCEL_LOGISTIC_JOB_FAIL:\n case logisticTypes.FETCH_LOGISTIC_PARTNERS_FAIL:\n case logisticTypes.ASSIGN_LOGISTIC_PARTNER_FAIL:\n case driversTypes.ASSIGN_NEW_RIDER_FAIL:\n case driversTypes.ASSIGN_READY_ORDER_RIDER_FAIL:\n case driversTypes.UNASSIGN_NEW_ORDER_RIDER_FAIL:\n case driversTypes.UNASSIGN_READY_ORDER_RIDER_FAIL:\n if (action.error.response !== undefined) {\n switch (action.error.response.status) {\n case 401:\n case 403:\n case 404:\n case 422:\n case 500:\n return {\n ...state,\n showError: true,\n errorType: \"generic\",\n errorMessage,\n };\n default:\n return state;\n }\n }\n break;\n case jwtTypes.REFRESH_TOKEN_FAILED:\n return { ...state, showError: true, errorType: \"jwtRefreshFailed\" };\n case homeDeliveryTypes.SET_UNCONFIRMED_ORDER_CONFIRM_FAIL:\n case pickupTypes.SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_FAIL:\n if (action.error.response.status !== undefined) {\n if ([401, 403, 404, 422].includes(action.error.response.status)) {\n return {\n ...state,\n showError: true,\n errorType: \"generic\",\n errorMessage,\n };\n }\n if (action.error.response.status === 500) {\n let sapaad_order_sources = [\"sapaad_pos\", \"sapaad_online\", \"byod\"];\n if (\n !sapaad_order_sources.includes(\n action.meta.previousAction.param.order_source\n )\n ) {\n return {\n ...state,\n showError: true,\n errorMessage: aggregtorErrorMessage(\n action.meta.previousAction.param.order_source\n ),\n };\n }\n return {\n ...state,\n showError: true,\n errorType: \"generic\",\n errorMessage,\n };\n }\n }\n return state;\n case homeDeliveryTypes.SET_UNCONFIRMED_ORDER_REJECT_FAIL:\n case pickupTypes.SET_UNCONFIRMED_PICKUP_ORDER_REJECT_FAIL:\n if (action.error.response.status !== undefined) {\n if ([404, 422].includes(action.error.response.status)) {\n return { ...state, showError: false };\n }\n return {\n ...state,\n showError: true,\n errorType: \"generic\",\n errorMessage,\n };\n }\n return state;\n case logisticTypes.PUSHER_RECEIVED_LOGISTIC_JOB_CANCELLED:\n return {\n ...state,\n showError: true,\n errorMessage: {\n title: action.payload.metadata.failure_message\n ? generateErrorMessage(logisticErrors.oops)\n : \"\",\n text: action.payload.metadata.failure_message\n ? action.payload.metadata.failure_message\n : `${thirdPartyCancelErr.title} ${action.payload.order_number}`,\n icon: action.payload.metadata.failure_message ? \"warning\" : \"info\",\n },\n };\n case logisticTypes.PUSHER_RECEIVED_LOGISTIC_CANCEL_FAILED:\n return {\n ...state,\n showError: true,\n errorMessage: {\n title: \"\",\n text: action.payload.metadata.failure_message,\n icon: \"info\",\n },\n };\n default:\n return state;\n }\n};\n\nconst reducer = errorReducer;\n\nexport default reducer;\n","import * as types from \"./types\";\n\nconst setNetworkError = () => ({\n type: types.NETWORK_ERROR,\n});\n\nexport default {\n setNetworkError,\n};\n","import actions from \"./actions\";\nimport { dispatchAction } from \"../../store\";\n\nconst setNetworkError = () => dispatchAction(actions.setNetworkError());\n\nexport default { setNetworkError };\n","import reducer from \"./reducers\";\n\nexport { default as errorOperations } from \"./operations\";\n\nexport default reducer;\n","import { isAggregator } from \"../../../helpers/utils\";\nimport * as homeDeliveryTypes from \"../homeDelivery/types\";\nimport * as pickupTypes from \"../pickup/types\";\n\nconst limboStateOrdersReducer = (state: any = [], action: any) => {\n switch (action.type) {\n case homeDeliveryTypes.SET_UNCONFIRMED_ORDER_CONFIRM_FAIL:\n case pickupTypes.SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_FAIL:\n if (action.error.response.status !== undefined) {\n if (\n action.error.response.status === 500 &&\n isAggregator(action.meta.previousAction.param.order_source)\n ) {\n let limboStateOrders = state;\n let orderId = action.meta.previousAction.param.order_id;\n if (limboStateOrders.length) {\n if (!limboStateOrders.includes(orderId)) {\n limboStateOrders.push(orderId);\n }\n } else {\n limboStateOrders.push(orderId);\n }\n return limboStateOrders\n }\n return state\n }\n return state;\n default:\n return state;\n }\n};\n\nconst reducer = limboStateOrdersReducer;\n\nexport default reducer;\n","import reducer from \"./reducers\";\n\nexport default reducer;\n","export const SET_AUTHORIZE_USER = \"auth/SET_AUTHORIZE_USER\";\nexport const SET_INITIATE_TICKER = \"auth/SET_INITIATE_TICKER\";\nexport const SET_TOKEN_EXPIRY = \"auth/SET_TOKEN_EXPIRY\";\nexport const SET_JWT_DATA = \"auth/SET_JWT_DATA\";\nexport const SET_SESSION_EXPIRED = \"auth/SET_SESSION_EXPIRED\";\n","import { JWT_REFRESH_TIMER_THRESHOLD_SECONDS } from \"../../../helpers/constants\";\nimport * as types from \"./types\";\n\nconst initialState = {\n authorize: false,\n tokenExpiry: null,\n jwtData: null,\n isTokenExpired: false,\n initiateTicker: false,\n};\n\nconst authReducer = (\n state = initialState,\n action: { payload: any; type: string }\n) => {\n switch (action.type) {\n case types.SET_AUTHORIZE_USER:\n return { ...state, authorize: action.payload };\n case types.SET_JWT_DATA:\n let tokenExpiry = action.payload.exp;\n let jwtData = action.payload;\n let updatedState = { ...state, tokenExpiry, jwtData };\n let timeDiff = tokenExpiry - new Date().getTime() / 1000;\n if (timeDiff <= JWT_REFRESH_TIMER_THRESHOLD_SECONDS) {\n return { ...updatedState, isTokenExpired: true, initiateTicker: false };\n }\n return {\n ...updatedState,\n authorize: true,\n isTokenExpired: false,\n initiateTicker: true,\n };\n case types.SET_INITIATE_TICKER:\n return { ...state, initiateTicker: action.payload };\n case types.SET_SESSION_EXPIRED:\n return { ...state, authorize: false };\n case types.SET_TOKEN_EXPIRY:\n return { ...state, tokenExpiry: action.payload };\n default:\n return state;\n }\n};\n\nconst reducer = authReducer;\n\nexport { reducer };\n","import { dispatchAction } from \"../../store\";\nimport * as actions from \"./actions\";\n\nconst authorizeUser = (params: any) =>\n dispatchAction(actions.authorizeUser(params));\n\nconst setInitiateTicker = (params: any) =>\n dispatchAction(actions.setInitiateTicker(params));\n\nconst setJwtData = (params: any) => dispatchAction(actions.setJwtData(params));\n\nconst setSessionExpired = () => dispatchAction(actions.setSessionExpired());\n\nexport default {\n authorizeUser,\n setInitiateTicker,\n setJwtData,\n setSessionExpired,\n};\n","import * as types from \"./types\";\n\nconst authorizeUser = (value: boolean) => ({\n type: types.SET_AUTHORIZE_USER,\n payload: value,\n});\n\nconst setInitiateTicker = (value: boolean) => ({\n type: types.SET_INITIATE_TICKER,\n payload: value,\n});\n\nconst setJwtData = (value: any) => ({\n type: types.SET_JWT_DATA,\n payload: value,\n});\n\nconst setSessionExpired = () => ({\n type: types.SET_SESSION_EXPIRED,\n});\n\nexport { authorizeUser, setInitiateTicker, setJwtData, setSessionExpired };\n","import { reducer } from \"./reducers\";\n\nexport { default as authOperations } from \"./operations\";\n\nexport default reducer;\n","const storeInitialState = {\n company: {\n selected_branch: {},\n company_details: {},\n },\n currentTab: \"\",\n order: {},\n theme: {\n dark_mode: false,\n },\n drivers: {\n company_drivers: [],\n logistics_partner_drivers: [],\n },\n loader: {\n loading: false,\n },\n branches: [],\n payments: [],\n reprints: [],\n cancelReasons: [],\n notifications: {\n home_delivery: {\n count: 0,\n },\n pickup: {\n count: 0,\n },\n },\n limboStateOrders: [],\n logisticPartners: [],\n printSettings: [],\n riderProximity: {},\n};\n\nexport default storeInitialState;\n","import axios from \"axios\";\n\nconst dmmsApi = axios.create({\n baseURL: \"\",\n responseType: \"json\",\n});\n\nconst authmsApi = axios.create({\n responseType: \"json\",\n});\n\nconst posApi = axios.create({});\n\nauthmsApi.interceptors.response.use((response: any) => {\n console.debug(\n `[AUTHMS] ${response.config.method.toUpperCase()} ${response.status} ${response.config.url}`,\n response.data\n )\n return response;\n});\n\nexport { dmmsApi, authmsApi };\n","import * as axiosClient from \"./axios\";\n\nexport default axiosClient\n","import * as Sentry from \"@sentry/react\";\n\nexport const reportExceptionToSentry = ({\n title = \"Error\",\n message,\n tags = {},\n}) => {\n let error = new Error(message);\n error.name = title;\n Object.entries(tags).forEach((tagEntry) => {\n Sentry.setTag(tagEntry[0], tagEntry[1]);\n });\n Sentry.captureException(error);\n};\n","import { createStore, combineReducers, applyMiddleware } from \"redux\";\nimport * as reducers from \"./features\";\nimport storeInitialState from \"./storeInitialState\";\nimport axiosMiddleware from \"redux-axios-middleware\";\nimport axiosClient from \"./middlewares\";\nimport {\n _getAccessToken,\n _getRefreshToken,\n _setToken,\n loadState,\n saveState,\n} from \"../helpers/localstorageService\";\nimport { composeWithDevTools } from \"redux-devtools-extension\";\nimport { authOperations } from \"./features/auth\";\nimport { errorOperations } from \"./features/error\";\nimport * as Sentry from \"@sentry/react\";\nimport { reportExceptionToSentry } from \"../helpers/sentry\";\n\nconst rootReducer = combineReducers(reducers);\n\naxiosClient.dmmsApi.interceptors.response.use(\n (res) => res,\n (err) => {\n if (err.message.includes(\"Network Error\")) {\n errorOperations.setNetworkError();\n }\n if (err?.response) {\n if (err?.response?.status === 401) {\n authOperations.setSessionExpired();\n }\n if (err?.response?.status === 500) {\n reportExceptionToSentry({\n title: \"Received response with status 500\",\n message: \"Please check breadcrumb log for more trace of events\",\n });\n }\n }\n return Promise.reject(err);\n }\n);\n\nconst options = {\n returnRejectedPromiseOnError: true,\n interceptors: {\n request: [\n ({ getState, dispatch }: any, config: any) => {\n const token = localStorage.getItem(\"jwt\");\n if (token) {\n config.headers[\"Authorization\"] = \"Bearer \" + token;\n }\n return config;\n },\n ],\n },\n};\n\nconst sentryReduxEnhancer = Sentry.createReduxEnhancer({\n attachReduxState: false,\n});\n\nconst persistedState = loadState();\nlet initialState = storeInitialState as any;\ninitialState = { ...persistedState };\nconst store = createStore(\n rootReducer,\n initialState,\n composeWithDevTools(\n applyMiddleware(axiosMiddleware(axiosClient.dmmsApi, options)),\n sentryReduxEnhancer\n )\n);\n\nstore.subscribe(() => {\n saveState({\n limboStateOrders: store.getState().limboStateOrders,\n });\n});\n\nconst dispatchAction = store.dispatch;\nexport type RootState = ReturnType;\n\nexport { store, dispatchAction };\n","function _setToken(tokenObj: any) {\n localStorage.setItem(\"jwt\", tokenObj.jwt);\n}\nfunction _getAccessToken() {\n return localStorage.getItem(\"jwt\");\n}\nfunction _getRefreshToken() {\n return localStorage.getItem(\"rt\");\n}\nfunction _clearToken() {\n localStorage.removeItem(\"jwt\");\n localStorage.removeItem(\"rt\");\n}\n\nfunction loadState() {\n try {\n const serializedState = localStorage.getItem(\"state\");\n if (serializedState === null) {\n return undefined;\n }\n return JSON.parse(serializedState);\n } catch (error) {\n console.debug(`[APP] Unable to fetch state from localStorage`);\n return undefined;\n }\n}\n\nfunction saveState(state: any) {\n try {\n const serializedState = JSON.stringify(state);\n localStorage.setItem(\"state\", serializedState);\n } catch (error) {\n console.debug(`[APP] Failed to persist state to localStorage`);\n }\n}\n\nexport {\n _setToken,\n _getAccessToken,\n _getRefreshToken,\n _clearToken,\n loadState,\n saveState,\n};\n","import React, { useEffect, useState } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\n\ninterface IBrowserCompatibilityProps {\n children?: any;\n}\n\nconst cookieDisabledScreenStyles: any = {\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n marginTop: \"40vh\",\n },\n cookieIcon: {\n width: \"100%\",\n textAlign: \"center\",\n },\n cookieDisabledText: {\n paddingLeft: \"30vw\",\n paddingRight: \"30vw\",\n textAlign: \"center\",\n marginTop: \"1rem\",\n },\n};\n\nfunction BrowserCompatibility(props: IBrowserCompatibilityProps) {\n const [cookieEnabled, setCookieEnabled] = useState(false);\n\n useEffect(() => {\n setCookieEnabled(() => window.navigator.cookieEnabled);\n }, []);\n\n return cookieEnabled ? (\n props.children\n ) : (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n
\n );\n}\n\nexport default BrowserCompatibility;\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { IntlProvider } from \"react-intl\";\n\n// Import translation data for each supported locale\nimport EnglishLocale from \"../locales/en.json\";\n\n// Used to send locale data and methods to update locale data in all components\nexport const LocaleContext = React.createContext();\n\nfunction loadMessages(locale: any) {\n switch (locale) {\n case \"ar\":\n return import(\"../locales/ar.json\");\n case \"en\":\n return import(\"../locales/en.json\");\n case \"ms\":\n return import(\"../locales/ms.json\");\n case \"zh\":\n return import(\"../locales/zh.json\");\n default:\n return import(\"../locales/en.json\");\n }\n}\n\ninterface ILocaleWrapperProps {\n company: any;\n children?: any;\n}\n\nconst LocaleWrapper = (props: ILocaleWrapperProps) => {\n const [locale, setLocale] = useState(\"en\");\n const [messages, setMessages] = useState(EnglishLocale);\n\n useEffect(() => {\n if (props.company.user_locale) {\n updateLocale(props.company.user_locale);\n } else {\n updateLocale(\"en\");\n }\n }, [props.company]);\n\n const updateLocale = (userLocale: any) => {\n setLocale(userLocale);\n loadMessages(userLocale).then((messages: any) => {\n setMessages(messages);\n });\n\n // Update RTL or LTR based on selected locale\n document.getElementsByTagName(\"html\")[0].setAttribute(\"lang\", userLocale);\n localStorage.setItem(\"locale\", userLocale);\n // if (userLocale == \"ar\") {\n // document.getElementsByTagName(\"html\")[0].setAttribute(\"dir\", \"rtl\");\n // document.getElementsByTagName(\"body\")[0].setAttribute(\"dir\", \"rtl\");\n // document.getElementsByTagName(\"body\")[0].classList.add(\"rtl\");\n // } else {\n // document.getElementsByTagName(\"html\")[0].setAttribute(\"dir\", \"ltr\");\n // document.getElementsByTagName(\"body\")[0].setAttribute(\"dir\", \"ltr\");\n // document.getElementsByTagName(\"body\")[0].classList.remove(\"rtl\");\n // }\n };\n\n return (\n \n \n {props.children}\n \n \n );\n};\n\nconst mapStateToProps = (state: any) => {\n let company = state.company.company_details;\n\n return {\n company,\n };\n};\n\nexport default connect(mapStateToProps)(LocaleWrapper);\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\n\nfunction LoginError() {\n const redirectToPos = () => {\n window.location.href = `${getEnvValueFor(\n \"SAPAAD_CORE_BASE_URL\"\n )}/sso/dmms` as any;\n };\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n\n

\n !\n

\n
\n \n \n \n
\n \n
\n );\n}\n\nexport default LoginError;\n","import { useState } from \"react\";\n\n/**\n *\n * @param key Key\n * @param initialValue initial value\n * @returns Initial value or localStorage value\n */\nfunction useLocalStorage(key, initialValue) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState(() => {\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? item : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(\n key,\n typeof value === \"string\" ? value : JSON.stringify(valueToStore)\n );\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n return [storedValue, setValue];\n}\n\nexport { useLocalStorage };\n","import React, { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport LoginError from \"../../containers/loginError\";\nimport { JWT_REFRESH_TIMER_THRESHOLD_SECONDS } from \"../../helpers/constants\";\nimport { getEnvValueFor } from \"../../helpers/utils\";\nimport { useLocalStorage } from \"../../hooks/useLocalStorage\";\nimport { authOperations } from \"../../state/features/auth\";\nimport axiosClient from \"../../state/middlewares\";\nimport { useTicker } from \"./useTicker\";\n\nconst AuthProvider = ({ children }: any) => {\n const [jwt, setJwt] = useLocalStorage(\"jwt\", \"\");\n const [refreshToken] = useLocalStorage(\"rt\", \"\");\n\n const { authorize, tokenExpiry, initiateTicker, isTokenExpired } =\n useSelector((state: any) => state.auth);\n const { authorizeUser, setJwtData } = authOperations;\n\n const decodeAuthDataFromJwt = (token: string) => {\n try {\n if (token) {\n const authData = JSON.parse(atob(token.split(\".\")[1]));\n console.debug(`[AUTH] Token parse success. expiry: ${authData.exp} seconds`);\n console.debug(\n `[AUTH] New token will expire on ${new Date(authData.exp * 1000)}`\n );\n setJwtData(authData);\n }\n } catch (error) {\n console.debug(\"[AUTH] Invalid Token\");\n console.log(error);\n authorizeUser(false);\n }\n };\n\n const handleTokenRefresh = () => {\n console.debug(\"[AUTH] Refreshing JWT token\");\n axiosClient.authmsApi\n .post(\n `/api/dmms/v1/tokens/refresh`,\n {\n jwt: jwt,\n refresh_token: refreshToken,\n },\n {\n baseURL: `${getEnvValueFor(\"AUTH_MS_BASE_URL\")}`,\n }\n )\n .then((response) => {\n console.debug(\"[AUTH] JWT token refresh success\");\n setJwt(response.data.jwt);\n })\n .catch((error) => {\n console.debug(\"[AUTH] JWT token refresh failed\");\n console.log(error);\n authorizeUser(false);\n });\n };\n\n const [tickerStatus, startTicker, setTokenExpiry] = useTicker({\n thresholdValue: JWT_REFRESH_TIMER_THRESHOLD_SECONDS,\n onThresholdTrigger: handleTokenRefresh,\n });\n\n useEffect(() => {\n if (isTokenExpired) {\n handleTokenRefresh();\n }\n }, [isTokenExpired]);\n\n useEffect(() => {\n if (jwt) {\n decodeAuthDataFromJwt(jwt);\n } else {\n // If jwt is missing in localStorage\n authorizeUser(false);\n }\n }, [jwt]);\n\n useEffect(() => {\n if (initiateTicker && tokenExpiry) {\n setTokenExpiry(tokenExpiry); // Pass expiry value to ticker\n startTicker(true);\n }\n }, [initiateTicker, tokenExpiry]);\n\n return authorize ? <>{children} : ;\n};\n\nexport default AuthProvider;\n","import { useEffect, useState } from \"react\";\n\ninterface TickerParms {\n /** Threshold value in seconds */\n thresholdValue: number;\n /** Callback to execute when timer reaches threshold value */\n onThresholdTrigger: () => void;\n}\n/** Custom hook for creating a timer to trigger token refresh */\nconst useTicker = ({ thresholdValue, onThresholdTrigger }: TickerParms) => {\n const [timerStatus, setTimerStatus] = useState(false);\n const [expiry, setExpiry] = useState(null);\n\n const handleSetTimerStatus = (value: boolean) => {\n setTimerStatus(value);\n };\n\n const handleSetTokenExpiry = (value: number) => {\n setExpiry(value);\n };\n\n useEffect(() => {\n let timer: any = undefined;\n if (timerStatus && expiry) {\n timer = setInterval(() => {\n let currentTimeInSecs = new Date().getTime() / 1000;\n let remainingTime = expiry - currentTimeInSecs;\n if (remainingTime <= thresholdValue) {\n onThresholdTrigger();\n setTimerStatus(false);\n }\n }, 1000);\n }\n if (timer) {\n return () => clearInterval(timer);\n }\n return () => {};\n }, [timerStatus]);\n\n return [timerStatus, handleSetTimerStatus, handleSetTokenExpiry];\n};\n\nexport { useTicker };\n","import React, { useRef, ReactNode } from \"react\";\nimport { usePlayAudioOnLoop } from \"../../hooks/usePlayAudioOnLoop\";\nimport { AudioContext } from \"../../context/audioContext\";\n\ninterface IAudioProviderProps {\n children: ReactNode;\n}\n\nconst AudioProvider = ({ children }: IAudioProviderProps) => {\n const newOrderAudioRef = useRef(null);\n const unconfirmedAudioRef = useRef(null);\n\n const handleUnconfirmedAudio = () => {\n if (unconfirmedAudioRef.current) {\n unconfirmedAudioRef.current.play().catch((e) => console.log(e));\n }\n };\n\n const { playAudioOnLoop, clearActivePlayAudio } = usePlayAudioOnLoop({\n playAudio: handleUnconfirmedAudio,\n });\n\n const handlePlayNewNotifyAudio = () => {\n if (newOrderAudioRef.current) {\n newOrderAudioRef.current.play().catch((e) => console.log(e));\n }\n };\n\n const handlePlayUnconfirmedNotifyAudio = () => {\n playAudioOnLoop();\n };\n\n const handleCancelUnconfirmedAudio = () => {\n clearActivePlayAudio();\n };\n\n return (\n \n \n \n {children}\n \n );\n};\n\nexport default AudioProvider;\n","import { useState, useEffect } from \"react\";\n\ninterface IPlayAudioOnLoopHookProps {\n playAudio: () => void;\n}\n\nconst usePlayAudioOnLoop = ({ playAudio }: IPlayAudioOnLoopHookProps) => {\n const [play, setPlay] = useState(false);\n useEffect(() => {\n let interval: any;\n if (play) {\n playAudio();\n interval = setInterval(() => {\n playAudio();\n }, 3000);\n }\n\n return () => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [play]);\n\n const handlePlayAudioOnLoop = () => {\n setPlay(true);\n };\n\n const clearActivePlayAudio = () => {\n setPlay(false);\n };\n\n return { playAudioOnLoop: handlePlayAudioOnLoop, clearActivePlayAudio };\n};\n\nexport { usePlayAudioOnLoop };\n","import React from \"react\";\nimport type Pusher from \"pusher-js\";\nimport { PusherContext } from \"../../context/pusherContext\";\n\ninterface IPusherProviderProps {\n children: React.ReactNode;\n /** Pusher Instance */\n pusher: Pusher | undefined;\n}\n\nconst PusherProvider = ({ children, pusher }: IPusherProviderProps) => {\n return (\n {children}\n );\n};\n\nexport default PusherProvider;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as Sentry from \"@sentry/react\";\nimport { Integrations } from \"@sentry/tracing\";\nimport \"./app.scss\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport App from \"../components/app\";\nimport { Provider } from \"react-redux\";\nimport { store } from \"../state/store\";\nimport Pusher from \"pusher-js\";\nimport { getEnvValueFor } from \"../helpers/utils\";\nimport BrowserCompatibility from \"../components/browserCompatibility\";\nimport LocaleWrapper from \"../wrappers/localeWrapper\";\nimport AuthProvider from \"../components/authProvider\";\nimport AudioProvider from \"../components/audioProvider\";\nimport PusherProvider from \"../components/pusherProvider\";\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n // Initializing Pusher\n let element = document.getElementById(\"root\") as any;\n let pusherId = element?.dataset.pusherId;\n let pusher;\n // Pusher.logToConsole = true\n if (pusherId !== undefined) {\n pusher = new Pusher(pusherId, {});\n } else {\n console.log(\"[PUSHER] ERROR: Pusher ID is undefined\");\n pusher = undefined;\n }\n\n // Initializing Sentry\n Sentry.init({\n dsn: getEnvValueFor(\"SENTRY_APP_URL\"),\n normalizeDepth: 15,\n integrations: [new Integrations.BrowserTracing()],\n environment: getEnvValueFor(\"SENTRY_ENVIRONMENT\") || \"development\",\n tracesSampleRate: parseFloat(\n getEnvValueFor(\"SENTRY_TRACE_SAMPLE_RATE\") || \"0.5\"\n ),\n });\n\n ReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n );\n});\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","React","className","height","viewBox","width","xmlns","style","d","modifierItemSubtotal","item","amount","modifiers","modifier","formatDecimal","number","precision","parseInt","localStorage","company_currency_precision","parseFloat","toFixed","rounder","Math","pow","round","logisticErrors","en","ar","ms","zh","generateErrorMessage","getItem","usePrevious","value","ref","useRef","useEffect","current","getEnvValueFor","envKey","reFormattedKey","toLocaleLowerCase","replace","k","toUpperCase","envValue","document","getElementById","dataset","undefined","console","error","hardRefresh","setAttribute","window","location","reload","generateAggregatorError","orderSource","parseOrderSource","isAggregator","includes","numberInputRegex","RegExp","computeCashRounding","rule","interval","roundingRule","roundingInterval","totalAmount","roundedAmount","excess","roundDown","ceil","roundMidpoint","excessAmount","Number","prototype","modVal","this","compute","groupOrdersByDeliveryArea","orders","entries","deliveryArea","SELECT_BRANCH","reducer","branchesReducer","state","action","type","branches","sort","first","second","name","toLowerCase","localeCompare","sortBranchesAlphabetically","payload","data","fetchBranches","request","method","url","selectBranch","locationId","types","fetchDrivers","companyId","fetchRiderCoordinates","driverId","assignNewOrderRider","orderId","param","order_id","assignReadyOrderRiderWithoutStateChange","unassignNewOrderRider","unassignReadyOrderRider","combineReducers","company_drivers","driverReducer","mapDispatchToProps","branchOperations","driverOperations","connect","company","company_details","selectedBranch","selected_branch","props","show","setShow","useState","branch","setBranch","branchList","setBranchList","length","company_id","catch","err","log","defaultLocation","admin","authorized_location_ids","index","filter","JSON","parse","checkBranchExists","find","concat","Dropdown","drop","onToggle","onDropdownToggle","Toggle","variant","title","FormattedMessage","FontAwesomeIcon","icon","faChevronDown","Menu","flip","key","onClick","stringify","removeItem","CLEAR_HOME_DELIVERY_UNCONFIRMED_NOTIFICATION","CLEAR_PICKUP_UNCONFIRMED_NOTIFICATION","PUSHER_RECEIVED_ORDER_CREATED","PUSHER_RECEIVED_ORDER_VOIDED","PUSHER_RECEIVED_ORDER_CONFIRMED","PUSHER_RECEIVED_ORDER_REJECTED","PUSHER_RECEIVED_ORDER_MARKED_AS_READY","PUSHER_RECEIVED_PICKUP_ORDER_MARKED_AS_READY","PUSHER_RECEIVED_RIDER_ASSIGNED","PUSHER_RECEIVED_ORDER_MARKED_AS_DELIVERED","PUSHER_RECEIVED_ORDER_MARKED_AS_COLLECTED","PUSHER_RECEIVED_ORDER_REPRINTED","PUSHER_RECEIVED_ORDER_MARKED_AS_PICKED_UP","PUSHER_RECEIVED_RIDER_UNASSIGNED","PUSHER_RECEIVED_TIP_COLLECTED","PUSHER_RECEIVED_COMPANY_RIDER_ASSIGNED","PUSHER_RECEIVED_PARTNER_RIDER_ASSIGNED","initialState","count","clearHomeDeliveryUnconfirmedNotification","clearPickupUnconfirmedNotification","home_delivery","homeDeliveryNotificationReducer","orderEventTypes","order_type","order_status","takeaway","pickup","pickupNotificationReducer","clearHomeDeliveryNotifications","notificationOperations","clearPickupNotifications","notificaions","notifications","currentTab","history","useHistory","setCurrentTab","getTimeNow","time","Date","toLocaleTimeString","hour12","timeStyle","toLocaleUpperCase","split","fixedTime","join","onViewClick","path","push","faMotorcycle","faShoppingBag","SET_THEME","setAppTheme","mode","themeReducer","body","lightTheme","darkTheme","theme","setTheme","dispatch","useDispatch","savedTheme","themeOperations","classList","add","setItem","message","selectedNavId","setSelectedNavId","mainNavs","pathname","navItem","NavLink","strict","onNavClick","activeClassName","to","orderCreated","orderUpdated","orderConfirmed","orderRejected","orderVoided","orderMarkedReady","orderPickUpMarkedReady","orderRiderAssigned","orderMarkedDelivered","orderMarkedCollected","orderMarkedReprinted","customerArrived","orderMarkedPickedUp","orderRiderUnassigned","orderTipCollected","orderCompanyRiderAssigned","orderPartnerRiderAssigned","FETCH_COMPANY_SUCCESS","FETCH_COMPANY_FAIL","fetchCompany","selectedBranchReducer","branchTypes","companyDetailsReducer","refresh_required","currency_precision","getOrdersStats","sortOrdersByTimePlaced","getOrderTime","epochTime","hour","minute","filterLabels","all_delivery","in_house_delivery","partner_delivery","curbside_pickup","in_store_pickup","all_pickup","removeOrderFromList","ordersList","filteredOrders","order","getStatusTime","timeStamp","timeString","toLocaleString","dateStyle","updatedTime","formatTime","seconds","values","floor","minutes","hours","getTime","hrs","mins","secs","ret","min","groupOrders","filteredObject","order_extended_info","delivery_address","area","useSelectedBranch","filterOrders","filterOption","logistics_job","status","updateOrderTotalAmount","total_amount","order_copy","loyalty_payment","payments","payment","getLogisticName","logisticPartners","partnerId","partnerName","partner","logisticPartner","filterOrderLogisticsPartners","orderLocationId","logisticsPartners","deliveryPartner","location_id","a","b","scheduled_for","placed_at","validateCollectedPayments","orderPayments","settlePaymentForOrder","failedAttempts","collectedTotalAmount","reduce","total","abs","amount_collected","paymentsTotalAmount","orderTotal","isLoyaltyPaidOrder","Sentry","category","level","capturedPaymentDetails","paymentFailedOrders","failedAttemptCount","fOrderId","failedPaymentAttemptsCount","errorMessage","text","Swal","allowOutsideClick","then","res","getLogisticsVisibilityConfig","isRiderAppEnabled","ordersWithLogisticsPartnersAssigned","ordersWithCompanyRidersAssigned","rider_id","ordersWithAssignableLogisticsPartners","activeZomatoGoOrdersExists","forEach","partner_unique_id","activeZomatoGoOrderCount","hasLogisticsPartnerAssignedOrders","hasCompanyRiderAssignedOrders","hasOrdersWithAssignablePartners","removeExpiredScheduledOrders","todayTimestamp","isOrderPayloadPresentIn","order_payload","fetchPayments","initiateMagnatiTransaction","cancelMagnatiTransaction","transRefId","processStripeConnectTerminalPayment","stripeLocationId","initiateStripeConnectPaymentIntentCreate","fetchStripeConnectTerminalPayment","paymentIntentId","cancelStripeConnectTerminalPayment","initiateRazorpayTransaction","cancelRazorpayTransaction","paymentsReducer","paymentTypes","display_name","FETCH_NEW_ORDERS_SUCCESS","FETCH_NEW_ORDERS_FAIL","FETCH_UNCONFIRMED_ORDERS_SUCCESS","FETCH_UNCONFIRMED_ORDERS_FAIL","FETCH_READY_ORDERS_SUCCESS","FETCH_READY_ORDERS_FAIL","FETCH_IN_PROGRESS_ORDERS_SUCCESS","FETCH_IN_PROGRESS_ORDERS_FAIL","FETCH_RIDER_STATS_SUCCESS","FETCH_RIDER_STATS_FAIL","RESET_DELIVERED_DRIVER_ORDER_DETAILS","SET_ORDER_ASSIGN_RIDER_SUCCESS","SET_ORDER_MARK_AS_DELIVERED_SUCCESS","SET_DELIVERED_ORDERS_REFRESH_REQUIRED","SET_UNCONFIRMED_ORDER_CONFIRM","SET_UNCONFIRMED_ORDER_CONFIRM_FAIL","SET_UNCONFIRMED_ORDER_REJECT","SET_UNCONFIRMED_ORDER_REJECT_FAIL","SET_ORDER_MARK_AS_PICKUP_SUCCESS","FETCH_ORDER_SUCCESS","REMOVE_EXPIRED_ORDER","initialOrdersState","is_loading","new_orders","newOrdersReducer","assign","meta","previousAction","orderTypes","findIndex","updatedOrders","pusherData","pusherDataHasOrderPayload","scheduled","unconfirmed_orders","unconfirmedOrdersReducer","ready_orders","readyOrdersReducer","in_progress_orders","inProgressOrdersReducer","delivered_orders","deliveredOrdersReducer","riders","rider","total_orders","delivered_driver_order_details","deliveredDriverOrderDetailsReducer","orderList","fetchNewOrders","fetchInProgressOrders","fetchReadyOrders","fetchUnconfirmedOrders","fetchDeliveredOrders","markOrderReady","assignDriver","markOrderDelivered","fetchDeliveredDriverOrderDetails","riderId","resetDeliveredDriverOrderDetails","setDeliveredRefreshRequired","markOrderConfirm","order_source","markOrderReject","isAutoCancelled","auto_cancelled","markOrderConfirmWithEta","eta","delivery_time","markOrderRejectWithReason","cancelReasonId","supervisorPassword","cancel_reason_id","supervisor_password","markOrderPickedUp","SET_ORDER_COLLECTED_SUCCESS","SET_UNCONFIRMED_PICKUP_ORDER_CONFIRM_FAIL","SET_UNCONFIRMED_PICKUP_ORDER_REJECT","SET_UNCONFIRMED_PICKUP_ORDER_REJECT_FAIL","SET_COLLECTED_ORDERS_REFRESH_REQUIRED","unconfirmed_pickup_orders","unconfirmedPickupOrdersReducer","new_pickup_orders","newPickupOrdersReducer","ready_pickup_orders","readyPickupOrdersReducer","collected_pickup_orders","collectedPickupOrdersReducer","fetchNewPickupOrders","fetchReadyPickupOrders","fetchCollectedPickupOrders","markOrderCollected","fetchPickupUnconfirmedOrders","markPickupUnconfirmedOrderConfirm","markPickupUnconfirmedOrderReject","setCollectedRefreshRequired","markPickupUnconfirmedOrderRejectWithReason","markPickupOrderConfirmedWithPayment","REMOVE_SCHEDULED_ORDER","scheduledOrdersReducer","filtered_orders","updatedOrderList","fetchScheduledOrders","removeScheduledOrder","fetchOrder","removeExpiredOrder","homeDeliveryReducer","pickUpReducer","scheduledReducer","RESET_LOGISTIC_PARTNERS","PUSHER_RECEIVED_LOGISTIC_JOB_CANCELLED","PUSHER_RECEIVED_LOGISTIC_CANCEL_FAILED","fetchLogisticPartners","resetLogisticPartners","assignLogisticPartner","partner_id","logisticJobCancelled","cancelLogisticJob","logisticCancelFailed","logisticPartnersReducer","fetchPrintSettings","printSettingsReducer","FETCH_RIDER_PROXIMITY","fetchRiderProximity","getRiderProximity","AudioContext","createContext","companyConfigurations","paymentsOperations","orderOperations","orderMarkedReadyEvent","orderEventsOperations","homeDeliveryOperations","pickupOperations","scheduledOperations","logisticPartnersOperations","printSettingsOperations","riderOperations","loader","hideUnconfirmed","setHideUnconfirmed","playNewOrderAudio","playUnconfirmedOrderAudio","cancelUnconfirmedAudio","useContext","createNotifierService","channels","events","orderStatuses","notifierPluginEvent","CustomEvent","detail","dispatchEvent","jwt","rt","debug","user_id","username","user_name","is_admin","company_name","country","currency","business_end_time","today","setUTCHours","timer","today_business_end_time","current_UTC_Time","time_difference","setTimeout","handleBusinessEndReload","clearTimeout","pop","audioCancel","pusher","unsubscribe","channel","subscribe","bindOrderEvents","logisticJobChannel","bindLogisticJobEvents","logisticJobChannels","user_permissions","bind","connection","hasFocus","addEventListener","removeEventListener","messageDelay","occurred_at","rider_app_enabled","metadata","failure_message","OrderNotification","loading","Loader","BranchesDropdown","MainNav","DarkMode","previousCount","previousLoadingState","remove","tabInfo","tab","is_hidden","TabBadge","orders_count","SET_CURRENT_TAB","tabName","currentTabReducer","RESET_REPRINTS","fetchReprints","resetReprints","markOrderReprinted","reprintsReducer","cancelReasons","selectedReasonId","setSelectedReasonId","cancellationReasons","setCancellationReasons","setSupervisorPassword","disabledConfirm","setDisabledConfirm","passwordValid","setPasswordValid","reasonValid","setReasonValid","passwordInput","Modal","centered","dialogClassName","onHide","onCancel","Form","onSubmit","preventDefault","onRejectConfirm","onReset","Group","Label","Control","as","required","onChange","target","onselectionchange","isValid","reason","selected","controlId","disabled","fetchCancelReasons","cancelReasonsReducer","sapaad_pos","image","SapaadLogo","sapaad_online","SapaadOnline","zomato","ZomatoLogo","talabat","TalabatLogo","deliveroo","DeliverooLogo","byod","SapaadDirect","deliverect","Deliverect","uber_eats","UberEats","foodpanda","Foodpanda","gpay_food","Gpay","grab","Grab","lalamove","Lalamove","lyve","Lyve","quiqup","Quiqup","shadowfax","Shadowfax","ZomatoGo","otter","Otter","urban_piper","UrbanPiper","my_menu","MyMenu","tax_inclusive","is_tax_inclusive","orderItems","setOrderItems","totalDiscount","setTotalDiscount","taxTotal","setTaxTotal","loyaltyRedeemedValue","setloyaltyRedeemedValue","addModifiersToItems","items","getTotalDiscounts","parentItems","order_item_parent_id","deleted","parentItem","order_item_id","getModifierItemSubprice","discountAppliedItems","discount_amount","total_discount","calculateTax","surcharges","tax","surcharge","tax_amount","orderItem","discount_name","modifierItem","qty_dec","reverse","note","price","subTotal","calculateSubtotal","discounts","discount","setBranches","getBranchName","branchName","take_away","room_number","building","land_mark","street","customer","href","formatId","useIntl","formatMessage","faHistory","telephone","alt_telephone_number","notes","details","setPayments","isOrderDelivered","dmCanRecordPayment","new_payment","getReturnedAmount","amountCollected","balance","tip","unconfirmed","online","call_center","walk_in","created","marked_as_ready","rider_assigned","marked_as_picked_up","marked_as_delivered","marked_as_collected","order_updated","marked_as_reprinted","marked_as_confirmed","setOrder","status_updates","event","orderStatus","staff_name","modification_history","modifications","modification","item_name","getWhatModifiedString","whatModifiedString","modification_type","oldValue","trunc","old_value","newValue","new_value","itemName","created_at","getModificationHistory","reprintsOperations","cancelReasonsOperations","reprints","dm_can_record_payment","defaultDeliveryEta","sapaad_online_details","default_delivery_eta","limboStateOrders","loyaltyDetails","loyalty_details","isAdmin","showStatusHistory","setShowStatusHistory","showReprints","setShowReprints","reprintsList","setReprintsList","showModify","handleModifyShow","showApproveRejectCta","setShowApproveRejectCta","showRepay","handleRepayShow","disableModify","handleModifyDisable","setEta","setConfirmDisabled","etaInputFocus","setEtaInputFocus","showDeliveryEta","setShowDeliveryEta","showCancelPopup","setShowCancelPopup","aggregatorsDetailsShow","setAggregatorsDetailsShow","isLimboState","setIsLimboState","disableOrderApprove","setDisableOrderApprove","etaInput","showVoidOrderCta","useMemo","intl","formattedMessage","delivery_eta","focus","handleClose","onClose","closeReprints","is_cod","handleDisabledApproveClick","handleApproveOrder","handleOrderApprove","walkin","form","querySelector","open","submit","handleWalkinOrderApprove","size","ModalCloseIcon","src","orderImages","order_number","faCheckCircle","OrderItemsTable","backgroundImage","Eta_Bg","onBlur","test","onFocus","setEtaInput","Tabs","defaultActiveKey","Tab","eventKey","flex","overflow","CustomerDetails","meta_note","ThirdPartyDetails","system_note","PaymentDetails","display","flexDirection","StatusHistory","ModificationHistory","position","marginRight","zIndex","handleDisabledModifyClick","handleOrderRejectClick","toggleReprints","reprint","openReprintWindow","reprintUrl","print_url","response","faCircleNotch","handleAggregatorVoidClick","CancellationPopup","handleRejectOrder","handleOrderReject","formatTimeDigits","digits","toString","elapsedTime","setElapsedTime","timeElapsed","setTimeElapsed","timeLimit","setTimeLimit","updateTime","setInterval","currentTime","differenceInTime","elapsedHours","differenceInMins","orderExpiryHours","calculateTimeLimit","elapsedSeconds","elapsedMinutes","clearInterval","keyMessages","keypadClear","keypadDelete","keypadClose","keypadPay","layout","setLayout","num","keyboard","setKeyboardRef","setInput","getInputValue","input","default","inputValue","showPaymentBoxCCInput","refCodeInputValue","KeyboardReact","keyboardRef","r","layoutName","setRefCodeInputValue","setInputValue","onKeyPress","button","currentValue","getInput","setShowKeypad","isPaymentActionDisabled","paymentAction","showPaymentBreakDown","buttonTheme","class","buttons","useTypedSelector","useSelector","useAppStateSelector","selector","PAYMENT_PARTNER","STRIPE_CONNECT_ERROR","STRIPE_CONNECT_TXN_STEP","MAGNATI_ERROR","getIconImageSource","require","getPaginatedData","itemsList","currentPageNo","itemsPerPage","endIndex","startIndex","slice","usePagination","currentPage","setCurrentPage","totalPages","setTotalPages","paginatedItems","setPaginatedItems","totPages","navigateNextPage","c","navigatePrevPage","ItemSelectionGridView","onSelect","handleSelect","alt","ItemSelectionGridFooter","showCloseButtonAs","nextPageAction","prevPageAction","faChevronLeft","faTimes","faChevronRight","PAYMENT_STATUS","useStripeConnectPayment","orderNo","paymentTypeId","getDeviceId","clearDeviceId","locationPartnerConfig","simulated","handleCloseTxnStatusView","onTransactionCancel","onTransactionSuccess","stripe_location_id","stripeCurrencyValue","stripeAccountId","stripe_connected_account_id","stripeAccountMCC","mcc","stripeConnectError","setStripeConnectError","txnStatus","setTxnStatus","WAITING","enableCancelTxn","setEnableCancelTxn","txnSuccessTimeout","txnStep","stripeConnectTerminal","paymentIntentResponse","paymentIntent","canProceedTxn","checkTxnProgress","txnStepMethod","resetTxnProgressValues","FAILED","createConnectionToken","IN_PROGRESS","GENERIC_ERROR","token","connection_token","initiateStripeConnectTerminalPayment","connectionToken","INITIATING_TERMINAL","stripeTerminal","StripeTerminal","create","onFetchConnectionToken","onUnexpectedReaderDisconnect","DISCONNECTION_ERROR","deviceId","discoverAndConnectStripeConnectReader","DISCOVERING_READER","config","discoverReaders","result","DISCOVERY_ERROR","discoveredReaders","warn","NO_READERS","selectedReader","reader","serial_number","connectReader","fail_if_in_use","connectResult","READER_CONNECT_ERROR","requestPaymentIntent","READER_NOT_FOUND","referenceId","payment_type_id","device_id","reference_id","paymentIntentObject","payment_intent_id","client_secret","info","collectStripeConnectPaymentMethod","initiateStripeConnectPaymentIntentCancel","COLLECT_PAYMENT_INTENT","collectPaymentMethod","PAYMENT_COLLECTION_ERROR","stripeConnectPaymentIntent","confirmStripeConnectPaymentIntent","CONFIRM_PAYMENT_INTENT","processPayment","payment_intent","stripeConnectPaymentIntentId","fetchUpdatedPaymentIntent","REQUIRES_CONFIRMATION","reference","PAYMENT_CONFIRMATION_ERROR","REQUEST_TIMED_OUT","configs","metaData","refCode","card_no","PAID","failure","CANCEL_PAYMENT_INTENT","remote_transaction_id","cancelOutstandingCollectPayment","cancelCollectPaymentMethod","handleCancelTxnCtaClick","handleRetryTxnCtaClick","initiatePaymentWithStripeConnect","TransactionFailReason","defaultMessage","break","deviceName","PaymentSuccessAnimation","fill","cx","cy","stroke","points","StripeConnectTxnStatusView","showCancelTxnCta","onTxnCancelCtaClick","onRetryCtaClick","onCloseTxnStatusViewClick","showCloseTxnViewCta","showRetryCta","PaymentPending","PaymentPendingDark","borderColor","color","PaymentErrorGeneric","MagnatiTxnStatusView","txnDeclineReason","CANCELLED","RazorpayTxnStatusView","TransactionStatusView","selectedPaymentPartner","stripeConnectConfigs","magnatiConfigs","razorpayConfigs","children","STRIPE_CONNECT","MAGNATI","RAZORPAY","PusherContext","usePusher","useMagnatiPayment","paymentType","intentConfigs","setIntentConfigs","isTxnInitiateFailed","setIsTxnInitiateFailed","isTxnInitiated","setIsTxnInitiated","setTxnDeclineReason","cancelTxnTimeout","transaction_reference_id","transaction_id","cardNo","unbind","handleMagnatiTransactionSuccess","response_message","handleMagnatiTransactionFail","startTransaction","handleTransactionTimedOut","handlePaymentWithMagnati","razorpayLogger","cash_rounding","locations","showPaymentTypes","setShowPaymentTypes","selectedPayment","setSelectedPayment","paymentAmount","setPaymentAmount","paymentAmountCopy","setPaymentAmountCopy","remainingAmount","setRemainingAmount","balanceAmount","setBalanceAmount","paymentBreakdown","setPaymentBreakdown","setShowPaymentBreakdown","setShowPaymentBoxCCInput","showChangePreview","setShowChangePreview","paymentsList","setPaymentsList","disablePayButton","setPayButtonDisabled","showKeypad","paymentInputRef","setCashRoundedAmount","showRoundedString","setShowRoundedString","roundedString","setRoundedString","setExcessAmount","totalPaymentAmount","setTotalPaymentAmount","integratedPaymentPartners","companyPaymentTypes","companyLocations","locationPaymentPartner","orderLocation","loc","payment_partners","filterCashRoundingPaymentTypes","paymentTypesList","filterTakeawayPaymentPartnersByLocation","isTakeAway","p","Boolean","paymentTypesCurrentPage","navPaymentTypesNextPage","navPaymentTypesPrevPage","paginatedPaymentTypes","paymentTypesTotalPages","partnerTermDevices","devices","devicesCurrentPage","navDevicesNextPage","navDevicesPrevPage","paginatedDevicesPage","devicesTotalPages","showDevices","setShowDevices","setSelectedPaymentPartner","terminalDeviceId","razorpayTxnDeclineReason","razorpayTxnStatus","enableRazorpayCancelTxn","onRazorpayTxnCtaClick","handlePaymentWithRazorpay","useRazorpayPayment","razorpayTxn","initiate","cancel","setConfigs","handleRazorpayTransactionSuccess","response_from_partner","handleRazorpayTransactionFail","addPayment","stripeConnectTxnStatus","enableStripeConnectCancelTxn","stripeConnectCancelCtaClick","stripeConnectRetryCtaClick","magnatiTxnDeclineReason","magnatiTxnStatus","enableMagnatiCancelTxn","onMagnatiTxnCtaClick","setPaymentStates","amountToPay","enabled","cashroundedValues","cashRoundedString","generateCashRoundingString","roundedValue","excessValue","breakdownTotal","remainingValue","showModal","defaultPayment","primary","$","removeClass","addClass","breakDownContainerElement","scrollTop","scrollHeight","handleDeviceSelection","initiateWithPaymentPartner","paymentPartner","addSelectedPayment","handleSelectionWithPaymentPartner","requires_reference_code","paymentInputValue","skipRemainingSplit","partialPayment","user_input_value","computedRemainingAmount","paymentBreakdownArray","selectedPaymentObject","partialPaymentObject","paymentsArray","paymentPayload","createPaymentPayload","payments_list","paymentObject","referenceCode","validatePayment","collectedPayments","completePayment","totalCollectedAmount","collected_total","payment_amount","collected_payments","closePaymentModal","payButtonAction","setShowModal","onEnterKeyPress","handleCashRoundedPayment","paymentArray","cashRoundingPaymentType","cashRoundedAmountObject","backdrop","Body","paymentIndex","filteredPaymentBreakdown","paymentMode","removedPayment","remainingAmt","removePaymentFromBreakdown","faTh","validInput","autoFocus","Keypad","background","ccMapBackground","placeholder","addRefCode","Footer","confirmPaymentChangePreview","t","backButtonAction","autoRejectInSecs","setAutoRejectInSecs","setDifferenceInTime","startTimer","setStartTimer","setTimer","placed_at_time","placedTime","reject_time","auto_reject_in","current_time","differenceInTimeCopy","handleAutoReject","timeout","timeIntervel","CountdownCircleTimer","isPlaying","strokeWidth","trailColor","initialRemainingTime","duration","colors","onComplete","contentClassName","handleShow","handleApprove","btn_text","btn_icon","class_name","popup_title","concatString","popup_text","popup_image","DriverSearchImage","faBiking","WaitingToPickImage","RequestCancelledImage","faBox","DriverWaitingImage","DeliveringImage","faUserCheck","OrderButtonGroup","debouncedClick","Button","handleClick","setOrderAction","disable","showCancelPickup","setShowCancelPickup","logisticStatus","Header","Title","scrolling","trackUrl","frameBorder","allowTransparency","justifyContent","handleCancelPickup","Refresh","directions","setDirections","riderEta","setRiderEta","showInactiveBanner","setShowInactiveBanner","refeshLoading","setRefreshLoading","isLoaded","isMapLoaded","loadError","mapLoadError","useJsApiLoader","googleMapsApiKey","mapRef","onMapLoad","useCallback","mapOptions","disableDefaultUI","clickableIcons","directionsOptions","markerOptions","clickable","suppressMarkers","now","riderLastGeoUpdate","riderCoords","calculateRoute","userCoords","origin","destination","google","maps","DirectionsService","route","travelMode","TravelMode","DRIVING","routes","legs","refreshMap","fetchRiderLocation","GoogleMap","center","zoom","mapContainerClassName","options","onLoad","Marker","faMapPin","fillColor","fillOpacity","anchor","Point","strokeWeight","strokeColor","scale","scaledSize","Size","riderDetails","DirectionsRenderer","FallbackUiOnError","noMap","MapErrorBoundary","ErrorBoundary","FallbackComponent","companyRiders","drivers","setRiderDetails","setRiderCoords","locationCoords","setLocationCoords","locationName","setLocationName","setRiderLastGeoUpdate","isAssignedToOrder","isRiderMissingFromCompany","isRiderCoordsPresent","entry","lat","lng","long","last_geo_updated_at","locationData","isLocationCoordsPresent","latitude","longitude","RiderMapContainer","MarkerPinSlashedIcon","tagName","posSettingBreadCrumb","showCompanyRiders","partnerRiders","onCompanyRiderSelect","onShowRiderTracking","onPartnerRiderSelect","partnerRider","assignCompanyRider","searchValue","setSearchValue","companyRidersFilter","requiredDrivers","partnerRidersFilter","handleCompanyRiderSelect","faSearch","handleShowRiderTracking","MapSvg","pointerEvents","showLoading","setShowLoading","showThirdPartyDetails","setShowThirdPartyDetails","partnerDrivers","setPartnerDrivers","trackingUrl","setTrackingUrl","selectedDriver","setSelectedDriver","showOwnDriverStatus","setShowOwnDriverStatus","companyDrivers","setCompanyDrivers","debounceFn","isDebounced","callback","useDebouncer","findDriver","onPartnerAssign","assignPartner","track_url","riderAppEnabled","assignedRider","driver","deliveryPartners","handleDriverSelect","assigned_locations","orderType","minHeight","padding","logisticOrderStatus","RiderTracking","RidersRoster","handleRiderAssign","handleOrder","handleRiderUnassign","LogisticDetailsPopup","logisticsConfigsInitialState","logisticsPartnerAssigned","orderLogisticsPartners","showEmptyCell","skipInactiveLogisticsJobs","logisticsReducer","logisticsEnabledOrderStatuses","logisticsEnabledOrderTypes","cancelledJob","noRunningJobs","partnerEnabledCountries","configuration","partner_config","enabled_regions","isScheduledOrdersSupported","scheduled_order_assignment","countryCode","hasLogistics","OrderLogisticsControl","isPartnerAssignmentPending","logisticsConfigs","onClickAction","handleOnClickAction","riderName","ownRiderAssignedState","isRiderAssignedState","isItemsPurchasedState","ridername","textTransform","faExclamationTriangle","showRiderPopup","setShowRiderPopup","setRiders","selectedRider","setSelectedRider","locationDrivers","companyRiderFilter","requiredRiders","ThrottleButton","assignDriverToOrder","assignRiderToOrder","autoRejectionSla","auto_rejection_sla","showDetails","setShowDetails","showPaymentPopup","setShowPaymentPopup","showDeliveryEtaPopup","setShowDeliveryEtaPopup","walkInOrderType","setWalkInOrderType","isZomatoDeliveryOrder","setIsZomatoDeliveryOrder","showDeliveryPartnerPopup","setShowDeliveryPartnerPopup","pendingPartnerAssign","setPendingPartnerAssign","setLogisticsConfigs","useReducer","selectedOrderId","setSelectedOrderId","showPartnerRiderAssign","setShowPartnerRiderAssign","partnerRiderAssignRef","handleShowDetails","setOrderStatusText","newRiderSelection","getDisabledState","disableButton","checkPaymentStatus","isTakeAwayOrder","generatedCashPayments","handleOrderState","setDate","getDate","hideDetails","handleHomedeliveryOrderAction","showCancelButton","confirmButtonText","confirmButtonColor","cancelButtonText","cancelButtonColor","isConfirmed","handleHomedeliveryOrderPayment","cashPaymentType","mockPayments","updated_at","PaymentPopUp","SetDeliveryTimePopup","handleDeliveryEtaConfirm","OrderPopup","handleReject","foreign_order_no","schduled_for_day","date","toDateString","day","Intl","DateTimeFormat","weekday","format","ye","year","mo","month","getOrderScheduledForDate","ElapsedTime","RadialTimeCount","handleDeliveryPartnerPopup","getPartnerRiderId","i","driver_id","RiderSelectionPopup","getOrderActions","DeliveryPartnerPopup","AnimateOrderTransitions","component","enableEntryTransition","ordersWithRef","createRef","TransitionGroup","CSSTransition","nodeRef","enter","exit","in","mountOnEnter","classNames","unmountOnExit","AnimateDeliveryAreaTransition","areaRef","AnimateTableTransition","isVisited","useEntryTransitionConfig","setEnableEntryTransition","useLayoutEffect","currentTabOperations","ORDER_STATUS","ORDER_FILTERS","unconfirmedOrders","filteredUnconfirmedOrders","setFilteredUnconfirmedOrders","setDisable","setHideDetails","remove_grouping_by_delivery_area","hasOrders","ordersByDeliveryArea","cellPadding","cellSpacing","Order","colSpan","NoOrders","orderFilterOptions","ALL","IN_HOUSE","PARTNER_DELIVERY","filterConfigs","showFilterTab","DELIVERY_NEW","filterOptions","showSearch","DELIVERY_IN_PROGRESS","PICKUP_READY","OrderFiltersTab","updateSelectedFilterOption","onSearch","selectedFilterOption","setSelectedFilterOption","currentTabConfigs","tabConfig","currentTabName","showFilterSection","showSearchBar","onSearchChange","option","updateSelectedFilterOptionId","filterId","setFilterId","searchResultOrders","setSearchResultOrders","updateFilterId","newFilterId","searchOrders","newOrders","orderReady","selecteOrderId","useOrderFilter","filterdNewOrders","logisticsControlColumn","setOrderReady","ungroupedFilteredOrders","ordersArray","setDrivers","locDriver","Item","setFilterOptions","selectedFilter","setSelectedFilter","FilterDropdown","onFilterClick","allowSearch","active","getOrderFilterOptions","showFilter","setShowFilter","TableFilterTab","onFilterChanges","searchKeyword","readyOrders","logisticsPartnerDrivers","logistics_partner_drivers","refreshRequired","newFeatureEnabled","rider_assign_through_popup","setFilterOption","filterdReadyOrders","OrdersFilterSection","deliveryInProgressOrders","inProgressOrders","setInProgressOrders","postOrderPayments","handleValidateAssignedRider","next","html","handlePaymentsValidation","markOrderStatusDelivered","filteredInProgressOrders","deliveredDriverOrdersDetails","showOrderPopup","setShowOrderPopup","orderDetails","setOrderDetails","Spinner","animation","handleOrderPopup","timeTaken","getTakenTime","reverse_status_updates","delivered_status","rider_assigned_status","ready_status","created_status","prep_time_sec","pickup_time_sec","delivery_time_sec","total_time","prep_perc","pick_perc","del_perc","getPerformance","driverDetails","amount_breakdown","cash","others","average_delivery_time","deliveredOrders","setDriver","isExpandable","handleExpand","fetchDriverOrderDetails","faChevronUp","DriverOrderDetails","fetchRiderStats","avgDeliveryTime","setAvgDeliveryTime","setTotalAmount","showDriverDropdown","setShowDriverDropdown","riderStats","avg_time","selectDriver","setDeliveredOrders","filteredRiders","setFilteredRiders","setExpandable","expandDriverId","setExpandDriverId","RiderStatsSection","DeliveredDriver","homeDeliveryOrders","tabs","TabNavigation","Switch","Route","UnconfirmedOrders","NewOrders","WaitingForCollectionOrders","DeliveryInProgressOrders","DeliveredOrders","setFilteredNewOrders","SearchResults","printSettings","markCollected","setMarkCollected","validationEnabledCompanies","collectedOrderIndex","handleMarkOrderCollected","hasLocalPrint","printRule","setting","category_print_rule_enabled","categoryItems","orderPrintBatchNo","print_batch_number","order_type_rules","template_rules","templateRule","templateId","showOnlyItems","show_only_new_items","print_batch_no","is_new","categoryRules","category_print_rules","categoryRule","cacategory_id","category_id","some","template_id","showSearchResults","searchResults","collectedOrders","setCollectedOrders","filteredCollectedOrders","setFilteredCollectedOrders","setOrders","handleConfirmWithPayment","orderIndex","pickupOrders","pickupUnconfirmed","PickupNewOrders","pickupWaitingForCollection","pickupCollected","scheduledOrders","companyCountry","logisticsPartnersWithSchedulingSupport","homeDeliveryScheduledOrders","s","showLogisticsPartnersColumn","branchname","showOfflineOverlay","setShowOfflineOverlay","loginErrorRedirect","setLoginErrorRedirect","isDmmsDisabled","setIsDmmsDisabled","showError","errorType","delivery_enabled","NoInternet","Redirect","DmmsDisabled","HomeDeliveries","Pickups","exact","Scheduled","UPDATE_LOADER","RESET_LOADER","loaderReducer","companyTypes","NETWORK_ERROR","thirdPartyCancelErr","setNetworkError","dispatchAction","actions","errorReducer","homeDeliveryTypes","pickupTypes","logisticTypes","limboStateOrdersReducer","SET_AUTHORIZE_USER","SET_INITIATE_TICKER","SET_JWT_DATA","SET_SESSION_EXPIRED","authorize","tokenExpiry","jwtData","isTokenExpired","initiateTicker","authorizeUser","params","setInitiateTicker","setJwtData","setSessionExpired","authReducer","exp","updatedState","dark_mode","riderProximity","dmmsApi","axios","baseURL","responseType","authmsApi","interceptors","use","rootReducer","reducers","axiosClient","errorOperations","authOperations","reportExceptionToSentry","tags","tagEntry","Promise","reject","returnRejectedPromiseOnError","getState","headers","sentryReduxEnhancer","attachReduxState","storeInitialState","serializedState","loadState","store","createStore","composeWithDevTools","applyMiddleware","axiosMiddleware","saveState","cookieDisabledScreenStyles","container","marginTop","cookieIcon","textAlign","cookieDisabledText","paddingLeft","paddingRight","cookieEnabled","setCookieEnabled","navigator","version","x","y","LocaleContext","locale","setLocale","messages","setMessages","EnglishLocale","user_locale","updateLocale","userLocale","loadMessages","getElementsByTagName","Provider","IntlProvider","redirectToPos","useLocalStorage","initialValue","storedValue","setStoredValue","valueToStore","Function","AuthProvider","setJwt","refreshToken","auth","handleTokenRefresh","post","refresh_token","tickerStatus","startTicker","setTokenExpiry","useTicker","thresholdValue","onThresholdTrigger","timerStatus","setTimerStatus","expiry","setExpiry","currentTimeInSecs","authData","atob","decodeAuthDataFromJwt","LoginError","AudioProvider","newOrderAudioRef","unconfirmedAudioRef","playAudioOnLoop","clearActivePlayAudio","usePlayAudioOnLoop","playAudio","play","setPlay","handlePlayAudioOnLoop","handleUnconfirmedAudio","handlePlayNewNotifyAudio","handlePlayUnconfirmedNotifyAudio","handleCancelUnconfirmedAudio","PusherProvider","element","pusherId","Pusher","dsn","normalizeDepth","integrations","Integrations","BrowserTracing","environment","tracesSampleRate","ReactDOM","LocaleWrapper","BrowserCompatibility","BrowserRouter","App"],"sourceRoot":""}