logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 7c67cb599713cfeec4bdcb5447f36718886da2be
parent: a098d08d12fe9e9d1bf6a5ff1ede251de01f0af6
Author: Nolan Lawson <nolan@nolanlawson.com>
Date:   Thu, 25 May 2017 18:25:41 -0700

implement shouldComponentUpdate for relative_timestamp (#3320)


Diffstat:

Mapp/javascript/mastodon/components/relative_timestamp.js45+++++++++++++++++++++++++++++++++------------
1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/app/javascript/mastodon/components/relative_timestamp.js b/app/javascript/mastodon/components/relative_timestamp.js @@ -2,19 +2,40 @@ import React from 'react'; import { injectIntl, FormattedRelative } from 'react-intl'; import PropTypes from 'prop-types'; -const RelativeTimestamp = ({ intl, timestamp }) => { - const date = new Date(timestamp); - - return ( - <time dateTime={timestamp} title={intl.formatDate(date, { hour12: false, year: 'numeric', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' })}> - <FormattedRelative value={date} /> - </time> - ); +const dateFormatOptions = { + hour12: false, + year: 'numeric', + month: 'short', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', }; -RelativeTimestamp.propTypes = { - intl: PropTypes.object.isRequired, - timestamp: PropTypes.string.isRequired, -}; +class RelativeTimestamp extends React.Component { + + static propTypes = { + intl: PropTypes.object.isRequired, + timestamp: PropTypes.string.isRequired, + }; + + shouldComponentUpdate (nextProps) { + // As of right now the locale doesn't change without a new page load, + // but we might as well check in case that ever changes. + return this.props.timestamp !== nextProps.timestamp || + this.props.intl.locale !== nextProps.intl.locale; + } + + render () { + const { timestamp, intl } = this.props; + const date = new Date(timestamp); + + return ( + <time dateTime={timestamp} title={intl.formatDate(date, dateFormatOptions)}> + <FormattedRelative value={date} /> + </time> + ); + } + +} export default injectIntl(RelativeTimestamp);