UNPKG

@stokr/components-library

Version:

STOKR - Components Library

117 lines (114 loc) 4.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.checkSaleTimeLeft = void 0; var _globalVariables = require("../constants/globalVariables"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } const getTimeLeft = endTime => { const now = new Date(); const oneDay = 1000 * 60 * 60 * 24; const timeLeft = (endTime - now) / oneDay; if (timeLeft >= 1) { // Equal or more than 24h return { time: Math.round(timeLeft), text: 'DAYS' }; } else if (timeLeft * 24 >= 1) { // Less than 24h return { time: Math.round(timeLeft * 24), text: 'HOURS' }; } else if (timeLeft * 24 * 60 >= 1) { return { time: Math.round(timeLeft * 24 * 60), text: 'MINS' }; } else { return { text: 'DAYS' }; } }; const checkSaleTimeLeft = project => { const { openingTime, closingTime, isOpen, hasClosed, type, sales } = project; let timeLeftData = { openingTime, closingTime, isOpen, hasClosed }; //for the tranche project we check the current tranche status if (type === _globalVariables.ProjectTypes.TRANCHES) { const currentTranche = sales === null || sales === void 0 ? void 0 : sales.find(x => x.isVariable); const today = Date.now(); if (currentTranche) { //if we have variable tranche we set opening and closing date of tranche timeLeftData.openingTime = currentTranche.startDate; timeLeftData.closingTime = currentTranche.endDate; if (today >= new Date(currentTranche.startDate) && today < new Date(currentTranche.endDate)) { timeLeftData.isOpen = true; timeLeftData.hasClosed = false; } else if (today > new Date(currentTranche.endDate)) { timeLeftData.hasClosed = true; timeLeftData.isOpen = false; } else { timeLeftData.isOpen = false; timeLeftData.hasClosed = false; } } else { //upcoming state where we don't have variable sale //we use opening and closing time of project timeLeftData = _objectSpread(_objectSpread({}, timeLeftData), {}, { isOpen: false, hasClosed: false }); } } return calculateTimeLeft(timeLeftData); }; exports.checkSaleTimeLeft = checkSaleTimeLeft; const calculateTimeLeft = timeLeftData => { const { openingTime = '', closingTime = '', isOpen, hasClosed } = timeLeftData; if (!timeLeftData || !isOpen && !hasClosed) { // Before sale const startingDate = new Date(openingTime); const timeLeft = getTimeLeft(startingDate); return { daysLeft: timeLeft.time, daysLeftText: "".concat(timeLeft.text, " UNTIL START") }; } else if (isOpen) { // During sale const endingDate = new Date(closingTime); const timeLeft = getTimeLeft(endingDate); return { daysLeft: timeLeft.time, daysLeftText: "".concat(timeLeft.text, " LEFT") }; } else { // After sale return { daysLeftText: 'FUNDING CLOSED' }; } }; var _default = exports.default = checkSaleTimeLeft;