@atlaskit/editor-plugin-synced-block
Version:
SyncedBlock plugin for @atlaskit/editor-core
56 lines (55 loc) • 2.03 kB
JavaScript
import isYesterday from 'date-fns/isYesterday';
var SECONDS_IN_MINUTE = 60;
var SECONDS_IN_HOUR = SECONDS_IN_MINUTE * 60;
var SECONDS_IN_DAY = SECONDS_IN_HOUR * 24;
var SECONDS_IN_WEEK = SECONDS_IN_DAY * 7;
var SECONDS_IN_MONTH = SECONDS_IN_DAY * 30;
var SECONDS_IN_YEAR = SECONDS_IN_DAY * 365;
export var formatElapsedTime = function formatElapsedTime(isoDate, intl) {
var now = Date.now();
var date = new Date(isoDate).getTime();
var diffInSeconds = Math.floor((now - date) / 1000);
var dateObj = new Date(isoDate);
// Show "yesterday" when timestamp is from the previous calendar day
if (isYesterday(dateObj) && diffInSeconds >= SECONDS_IN_DAY) {
return intl.formatRelativeTime(-1, 'day', {
numeric: 'auto',
style: 'long'
});
}
if (diffInSeconds < SECONDS_IN_MINUTE) {
return intl.formatRelativeTime(-Math.max(diffInSeconds, 1), 'second', {
style: 'long'
});
} else if (diffInSeconds < SECONDS_IN_HOUR) {
var minutes = Math.floor(diffInSeconds / SECONDS_IN_MINUTE);
return intl.formatRelativeTime(-minutes, 'minute', {
style: 'long'
});
} else if (diffInSeconds < SECONDS_IN_DAY) {
var hours = Math.floor(diffInSeconds / SECONDS_IN_HOUR);
return intl.formatRelativeTime(-hours, 'hour', {
style: 'long'
});
} else if (diffInSeconds < SECONDS_IN_WEEK) {
var days = Math.floor(diffInSeconds / SECONDS_IN_DAY);
return intl.formatRelativeTime(-days, 'day', {
style: 'long'
});
} else if (diffInSeconds < SECONDS_IN_MONTH) {
var weeks = Math.floor(diffInSeconds / SECONDS_IN_WEEK);
return intl.formatRelativeTime(-weeks, 'week', {
style: 'long'
});
} else if (diffInSeconds < SECONDS_IN_YEAR) {
var months = Math.floor(diffInSeconds / SECONDS_IN_MONTH);
return intl.formatRelativeTime(-months, 'month', {
style: 'long'
});
} else {
var years = Math.floor(diffInSeconds / SECONDS_IN_YEAR);
return intl.formatRelativeTime(-years, 'year', {
style: 'long'
});
}
};