parent
546c4718e7
commit
01e43c3e57
@ -1,52 +1,24 @@
|
|||||||
import moment from 'moment';
|
import {
|
||||||
import PureRenderMixin from 'react-addons-pure-render-mixin';
|
FormattedMessage,
|
||||||
|
FormattedDate,
|
||||||
moment.updateLocale('en', {
|
FormattedRelative
|
||||||
relativeTime : {
|
} from 'react-intl';
|
||||||
future: "in %s",
|
|
||||||
past: "%s",
|
const RelativeTimestamp = ({ timestamp, now }) => {
|
||||||
s: "%ds",
|
const diff = (new Date(now)) - (new Date(timestamp));
|
||||||
m: "1m",
|
|
||||||
mm: "%dm",
|
if (diff < 0) {
|
||||||
h: "1h",
|
return <FormattedMessage id='relative_time.just_now' defaultMessage='Just now' />
|
||||||
hh: "%dh",
|
} else if (diff > (3600 * 24 * 7 * 1000)) {
|
||||||
d: "1d",
|
return <FormattedDate value={timestamp} />
|
||||||
dd: "%dd",
|
} else {
|
||||||
M: "1mo",
|
return <FormattedRelative value={timestamp} initialNow={now} updateInterval={0} />
|
||||||
MM: "%dmo",
|
|
||||||
y: "1y",
|
|
||||||
yy: "%dy"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const RelativeTimestamp = React.createClass({
|
|
||||||
|
|
||||||
propTypes: {
|
|
||||||
timestamp: React.PropTypes.string.isRequired,
|
|
||||||
now: React.PropTypes.any
|
|
||||||
},
|
|
||||||
|
|
||||||
mixins: [PureRenderMixin],
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const timestamp = moment(this.props.timestamp);
|
|
||||||
const now = this.props.now;
|
|
||||||
|
|
||||||
let string = '';
|
|
||||||
|
|
||||||
if (timestamp.isAfter(now)) {
|
|
||||||
string = 'Just now';
|
|
||||||
} else {
|
|
||||||
string = timestamp.from(now);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<span>
|
|
||||||
{string}
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
});
|
RelativeTimestamp.propTypes = {
|
||||||
|
timestamp: React.PropTypes.string.isRequired,
|
||||||
|
now: React.PropTypes.any
|
||||||
|
};
|
||||||
|
|
||||||
export default RelativeTimestamp;
|
export default RelativeTimestamp;
|
||||||
|
Loading…
Reference in new issue