From 7c67cb599713cfeec4bdcb5447f36718886da2be Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Thu, 25 May 2017 18:25:41 -0700 Subject: [PATCH] implement shouldComponentUpdate for relative_timestamp (#3320) --- .../mastodon/components/relative_timestamp.js | 45 ++++++++++++++----- 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 index 13c36c0e4c..3eed88df80 100644 --- 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 ( - - ); +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 ( + + ); + } + +} export default injectIntl(RelativeTimestamp);