UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

36 lines (35 loc) 1.25 kB
import { ONE_MINUTE_IN_MILLIS } from '../time/periodsInMillis'; import { getCurrentTimestamp } from '../date/currentDate'; export default function extendPromise(promise) { let promiseStatus = 'pending'; let resolveTimestamp = null; const extendedPromise = promise .then((resolveData) => { promiseStatus = 'resolved'; resolveTimestamp = getCurrentTimestamp(); return resolveData; }) .catch((error) => { promiseStatus = 'rejected'; throw error; }); extendedPromise.isPending = () => promiseStatus === 'pending'; extendedPromise.isRejected = () => promiseStatus === 'rejected'; extendedPromise.isResolved = () => promiseStatus === 'resolved'; extendedPromise.wasResolvedPriorTo = ({ minutesAgo }) => { if (resolveTimestamp === null) { return false; } if (resolveTimestamp < (getCurrentTimestamp() - (minutesAgo * ONE_MINUTE_IN_MILLIS))) { return true; } return false; }; extendedPromise.getMillisSinceResolved = () => { if (resolveTimestamp === null) { return null; } return (getCurrentTimestamp() - resolveTimestamp); }; return extendedPromise; }