You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.3 KiB
71 lines
2.3 KiB
import React from 'react'; |
|
import ImmutablePropTypes from 'react-immutable-proptypes'; |
|
import { FormattedMessage } from 'react-intl'; |
|
import AccountContainer from '../../../containers/account_container'; |
|
import StatusContainer from '../../../containers/status_container'; |
|
import { Link } from 'react-router-dom'; |
|
import ImmutablePureComponent from 'react-immutable-pure-component'; |
|
|
|
export default class SearchResults extends ImmutablePureComponent { |
|
|
|
static propTypes = { |
|
results: ImmutablePropTypes.map.isRequired, |
|
}; |
|
|
|
render () { |
|
const { results } = this.props; |
|
|
|
let accounts, statuses, hashtags; |
|
let count = 0; |
|
|
|
if (results.get('accounts') && results.get('accounts').size > 0) { |
|
count += results.get('accounts').size; |
|
accounts = ( |
|
<div className='search-results__section'> |
|
<h5><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5> |
|
|
|
{results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)} |
|
</div> |
|
); |
|
} |
|
|
|
if (results.get('statuses') && results.get('statuses').size > 0) { |
|
count += results.get('statuses').size; |
|
statuses = ( |
|
<div className='search-results__section'> |
|
<h5><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5> |
|
|
|
{results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)} |
|
</div> |
|
); |
|
} |
|
|
|
if (results.get('hashtags') && results.get('hashtags').size > 0) { |
|
count += results.get('hashtags').size; |
|
hashtags = ( |
|
<div className='search-results__section'> |
|
<h5><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5> |
|
|
|
{results.get('hashtags').map(hashtag => ( |
|
<Link key={hashtag} className='search-results__hashtag' to={`/timelines/tag/${hashtag}`}> |
|
#{hashtag} |
|
</Link> |
|
))} |
|
</div> |
|
); |
|
} |
|
|
|
return ( |
|
<div className='search-results'> |
|
<div className='search-results__header'> |
|
<FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} /> |
|
</div> |
|
|
|
{accounts} |
|
{statuses} |
|
{hashtags} |
|
</div> |
|
); |
|
} |
|
|
|
}
|
|
|