diff --git a/src/factory.js b/src/factory.js index 689359b..103f057 100644 --- a/src/factory.js +++ b/src/factory.js @@ -1,20 +1,41 @@ const calculateDelta = (now, date) => Math.round(Math.abs(now - date) / 1000) +const minute = 60 +const hour = minute * 60 +const day = hour * 24 +const week = day * 7 +const month = day * 30 +const year = day * 365 export default function relativeDateFactory (translations) { + let isBeforeNow + const translate = (translatePhrase, timeValue) => { + let key + + if (translatePhrase === 'justNow') { + key = translatePhrase + } else if (isBeforeNow) { + key = `${translatePhrase}Ago` + } else { + key = `${translatePhrase}FromNow` + } + + const translation = translations[key] + + if (typeof translation === 'function') { + return translation(timeValue) + } + + return translation.replace('{{time}}', timeValue) + } + return function relativeDate (date, now = new Date()) { if (!(date instanceof Date)) { date = new Date(date) } - + + isBeforeNow = now >= date let delta = null - const minute = 60 - const hour = minute * 60 - const day = hour * 24 - const week = day * 7 - const month = day * 30 - const year = day * 365 - delta = calculateDelta(now, date) if (delta > day && delta < week) { @@ -22,26 +43,6 @@ export default function relativeDateFactory (translations) { delta = calculateDelta(now, date) } - const translate = (translatePhrase, timeValue) => { - let key - - if (translatePhrase === 'justNow') { - key = translatePhrase - } else if (now >= date) { - key = `${translatePhrase}Ago` - } else { - key = `${translatePhrase}FromNow` - } - - const translation = translations[key] - - if (typeof translation === 'function') { - return translation(timeValue) - } - - return translation.replace('{{time}}', timeValue) - } - switch (false) { case !(delta < 30): return translate('justNow')