import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePureComponent from 'react-immutable-pure-component' import { withRouter } from 'react-router-dom' import { fetchSuggestions, dismissSuggestion } from '../actions/suggestions' import { me } from '../initial_state' import HashtagItem from '../components/hashtag_item' import GroupListItem from '../components/group_list_item' import Text from '../components/text' import Account from '../components/account' import PanelLayout from '../components/panel/panel_layout' const mapStateToProps = (state) => ({ results: state.getIn(['search', 'results']), suggestions: state.getIn(['suggestions', 'items']), }); const mapDispatchToProps = (dispatch) => ({ fetchSuggestions: () => dispatch(fetchSuggestions()), dismissSuggestion: account => dispatch(dismissSuggestion(account.get('id'))), }); export default @withRouter @connect(mapStateToProps, mapDispatchToProps) class Search extends ImmutablePureComponent { static propTypes = { results: ImmutablePropTypes.map.isRequired, location: PropTypes.object, } state = { isSmallScreen: (window.innerWidth <= 895), } render() { const { results, location } = this.props const { isSmallScreen } = this.state console.log("results:", results) if (results.isEmpty() && isSmallScreen) { return null } const pathname = location.pathname || '' const showPeople = pathname === '/search/people' const showHashtags = pathname === '/search/hashtags' const showGroups = pathname === '/search/groups' const isTop = !showPeople && !showHashtags && !showGroups const theLimit = 4 let accounts, statuses, hashtags, groups // : todo : statuses if (results.get('accounts') && results.get('accounts').size > 0 && (isTop || showPeople)) { const size = isTop ? Math.min(results.get('accounts').size, theLimit) : results.get('accounts').size; const isMax = size === results.get('accounts').size accounts = (
Showing {size} of {results.get('accounts').size} results
{ results.get('accounts').slice(0, size).map(accountId => ( )) }
) } if (results.get('groups') && results.get('groups').size > 0 && me && (isTop || showGroups)) { const size = isTop ? Math.min(results.get('groups').size, theLimit) : results.get('groups').size; const isMax = size === results.get('groups').size groups = (
Showing {size} of {results.get('groups').size} results
{ results.get('groups').slice(0, size).map(group => ( )) }
) } if (results.get('hashtags') && results.get('hashtags').size > 0 && me && (isTop || showHashtags)) { const size = isTop ? Math.min(results.get('hashtags').size, theLimit) : results.get('hashtags').size; const isMax = size === results.get('hashtags').size hashtags = (
Showing {size} of {results.get('hashtags').size} results
{results.get('hashtags').slice(0, size).map(hashtag => )}
) } return (
{accounts} {groups} {statuses} {hashtags}
) } }