Add an Intl polyfill
This commit is contained in:
		
							parent
							
								
									7ac574d9a9
								
							
						
					
					
						commit
						a6e4f754fc
					
				| @ -5,6 +5,11 @@ window.React    = require('react'); | |||||||
| window.ReactDOM = require('react-dom'); | window.ReactDOM = require('react-dom'); | ||||||
| window.Perf     = require('react-addons-perf'); | window.Perf     = require('react-addons-perf'); | ||||||
| 
 | 
 | ||||||
|  | if (!window.Intl) { | ||||||
|  |   require('intl'); | ||||||
|  |   require('intl/locale-data/jsonp/en.js'); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| //= require_tree ./components
 | //= require_tree ./components
 | ||||||
| 
 | 
 | ||||||
| window.Mastodon = require('./components/containers/mastodon'); | window.Mastodon = require('./components/containers/mastodon'); | ||||||
|  | |||||||
| @ -4,21 +4,12 @@ import { | |||||||
|   FormattedRelative |   FormattedRelative | ||||||
| } from 'react-intl'; | } from 'react-intl'; | ||||||
| 
 | 
 | ||||||
| const RelativeTimestamp = ({ timestamp, now }) => { | const RelativeTimestamp = ({ timestamp }) => { | ||||||
|   const diff = (new Date(now)) - (new Date(timestamp)); |   return <FormattedRelative value={new Date(timestamp)} />; | ||||||
| 
 |  | ||||||
|   if (diff < 0) { |  | ||||||
|     return <FormattedMessage id='relative_time.just_now' defaultMessage='Just now' /> |  | ||||||
|   } else if (diff > (3600 * 24 * 7 * 1000)) { |  | ||||||
|     return <FormattedDate value={timestamp} /> |  | ||||||
|   } else { |  | ||||||
|     return <FormattedRelative value={timestamp} initialNow={now} updateInterval={0} /> |  | ||||||
|   } |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| RelativeTimestamp.propTypes = { | RelativeTimestamp.propTypes = { | ||||||
|   timestamp: React.PropTypes.string.isRequired, |   timestamp: React.PropTypes.string.isRequired | ||||||
|   now: React.PropTypes.any |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default RelativeTimestamp; | export default RelativeTimestamp; | ||||||
|  | |||||||
| @ -18,22 +18,8 @@ const StatusList = React.createClass({ | |||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   getInitialState () { |  | ||||||
|     return { |  | ||||||
|       now: (new Date()).toString() |  | ||||||
|     }; |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   mixins: [PureRenderMixin], |   mixins: [PureRenderMixin], | ||||||
| 
 | 
 | ||||||
|   componentDidMount () { |  | ||||||
|     this._interval = setInterval(() => this.setState({ now: (new Date()).toString() }), 60000); |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   componentWillUnmount () { |  | ||||||
|     clearInterval(this._interval); |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   handleScroll (e) { |   handleScroll (e) { | ||||||
|     const { scrollTop, scrollHeight, clientHeight } = e.target; |     const { scrollTop, scrollHeight, clientHeight } = e.target; | ||||||
| 
 | 
 | ||||||
| @ -61,7 +47,7 @@ const StatusList = React.createClass({ | |||||||
|       <div className='scrollable' onScroll={this.handleScroll}> |       <div className='scrollable' onScroll={this.handleScroll}> | ||||||
|         <div> |         <div> | ||||||
|           {statusIds.map((statusId) => { |           {statusIds.map((statusId) => { | ||||||
|             return <StatusContainer key={statusId} id={statusId} now={this.state.now} />; |             return <StatusContainer key={statusId} id={statusId} />; | ||||||
|           })} |           })} | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|  | |||||||
| @ -32,7 +32,8 @@ import Following from '../features/following'; | |||||||
| import Reblogs from '../features/reblogs'; | import Reblogs from '../features/reblogs'; | ||||||
| import Favourites from '../features/favourites'; | import Favourites from '../features/favourites'; | ||||||
| import HashtagTimeline from '../features/hashtag_timeline'; | import HashtagTimeline from '../features/hashtag_timeline'; | ||||||
| import { IntlProvider } from 'react-intl'; | import { IntlProvider, addLocaleData } from 'react-intl'; | ||||||
|  | import en from 'react-intl/locale-data/en'; | ||||||
| 
 | 
 | ||||||
| const store = configureStore(); | const store = configureStore(); | ||||||
| 
 | 
 | ||||||
| @ -40,6 +41,8 @@ const browserHistory = useRouterHistory(createBrowserHistory)({ | |||||||
|   basename: '/web' |   basename: '/web' | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | addLocaleData([...en]); | ||||||
|  | 
 | ||||||
| const Mastodon = React.createClass({ | const Mastodon = React.createClass({ | ||||||
| 
 | 
 | ||||||
|   propTypes: { |   propTypes: { | ||||||
|  | |||||||
| @ -54,7 +54,7 @@ const DetailedStatus = React.createClass({ | |||||||
|         {media} |         {media} | ||||||
| 
 | 
 | ||||||
|         <div style={{ marginTop: '15px', color: '#616b86', fontSize: '14px', lineHeight: '18px' }}> |         <div style={{ marginTop: '15px', color: '#616b86', fontSize: '14px', lineHeight: '18px' }}> | ||||||
|           <a className='detailed-status__datetime' style={{ color: 'inherit' }} href={status.get('url')} target='_blank' rel='noopener'><FormattedDate value={status.get('created_at')} hour12={false} year='numeric' month='short' day='2-digit' hour='2-digit' minute='2-digit' /></a> · <Link to={`/statuses/${status.get('id')}/reblogs`} style={{ color: 'inherit', textDecoration: 'none' }}><i className='fa fa-retweet' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}><FormattedNumber value={status.get('reblogs_count')} /></span></Link> · <Link to={`/statuses/${status.get('id')}/favourites`} style={{ color: 'inherit', textDecoration: 'none' }}><i className='fa fa-star' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}><FormattedNumber value={status.get('favourites_count')} /></span></Link> |           <a className='detailed-status__datetime' style={{ color: 'inherit' }} href={status.get('url')} target='_blank' rel='noopener'><FormattedDate value={new Date(status.get('created_at'))} hour12={false} year='numeric' month='short' day='2-digit' hour='2-digit' minute='2-digit' /></a> · <Link to={`/statuses/${status.get('id')}/reblogs`} style={{ color: 'inherit', textDecoration: 'none' }}><i className='fa fa-retweet' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}><FormattedNumber value={status.get('reblogs_count')} /></span></Link> · <Link to={`/statuses/${status.get('id')}/favourites`} style={{ color: 'inherit', textDecoration: 'none' }}><i className='fa fa-star' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}><FormattedNumber value={status.get('favourites_count')} /></span></Link> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|  | |||||||
| @ -43,6 +43,7 @@ | |||||||
|     "babel-plugin-transform-decorators-legacy": "^1.3.4", |     "babel-plugin-transform-decorators-legacy": "^1.3.4", | ||||||
|     "emojione": "^2.2.6", |     "emojione": "^2.2.6", | ||||||
|     "http-link-header": "^0.5.0", |     "http-link-header": "^0.5.0", | ||||||
|  |     "intl": "^1.2.5", | ||||||
|     "react-autosuggest": "^7.0.1", |     "react-autosuggest": "^7.0.1", | ||||||
|     "react-decoration": "^1.4.0", |     "react-decoration": "^1.4.0", | ||||||
|     "react-intl": "^2.1.5", |     "react-intl": "^2.1.5", | ||||||
|  | |||||||
| @ -2497,6 +2497,10 @@ interpret@^1.0.0: | |||||||
|   version "1.0.1" |   version "1.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" |   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" | ||||||
| 
 | 
 | ||||||
|  | intl: | ||||||
|  |   version "1.2.5" | ||||||
|  |   resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde" | ||||||
|  | 
 | ||||||
| intl-format-cache@^2.0.5: | intl-format-cache@^2.0.5: | ||||||
|   version "2.0.5" |   version "2.0.5" | ||||||
|   resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.0.5.tgz#b484cefcb9353f374f25de389a3ceea1af18d7c9" |   resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.0.5.tgz#b484cefcb9353f374f25de389a3ceea1af18d7c9" | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user