The code powering m.abunchtell.com https://m.abunchtell.com
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.
 
 
 
 

69 lines
2.4 KiB

  1. import React from 'react';
  2. import ImmutablePropTypes from 'react-immutable-proptypes';
  3. import { FormattedMessage } from 'react-intl';
  4. import AccountContainer from '../../../containers/account_container';
  5. import StatusContainer from '../../../containers/status_container';
  6. import ImmutablePureComponent from 'react-immutable-pure-component';
  7. import Hashtag from '../../../components/hashtag';
  8. export default class SearchResults extends ImmutablePureComponent {
  9. static propTypes = {
  10. results: ImmutablePropTypes.map.isRequired,
  11. };
  12. render () {
  13. const { results } = this.props;
  14. let accounts, statuses, hashtags;
  15. let count = 0;
  16. if (results.get('accounts') && results.get('accounts').size > 0) {
  17. count += results.get('accounts').size;
  18. accounts = (
  19. <div className='search-results__section'>
  20. <h5><i className='fa fa-fw fa-users' /><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>
  21. {results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)}
  22. </div>
  23. );
  24. }
  25. if (results.get('statuses') && results.get('statuses').size > 0) {
  26. count += results.get('statuses').size;
  27. statuses = (
  28. <div className='search-results__section'>
  29. <h5><i className='fa fa-fw fa-quote-right' /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
  30. {results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}
  31. </div>
  32. );
  33. }
  34. if (results.get('hashtags') && results.get('hashtags').size > 0) {
  35. count += results.get('hashtags').size;
  36. hashtags = (
  37. <div className='search-results__section'>
  38. <h5><i className='fa fa-fw fa-hashtag' /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>
  39. {results.get('hashtags').map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
  40. </div>
  41. );
  42. }
  43. return (
  44. <div className='search-results'>
  45. <div className='search-results__header'>
  46. <i className='fa fa-search fa-fw' />
  47. <FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} />
  48. </div>
  49. {accounts}
  50. {statuses}
  51. {hashtags}
  52. </div>
  53. );
  54. }
  55. }