@stokr/components-library
Version:
STOKR - Components Library
117 lines (114 loc) • 4.36 kB
JavaScript
;
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;