import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePureComponent from 'react-immutable-pure-component' import { FormattedMessage } from 'react-intl' import { fetchGroups } from '../actions/groups' import { BREAKPOINT_EXTRA_SMALL } from '../constants' import Responsive from './ui/util/responsive_component' import ColumnIndicator from '../components/column_indicator' import ScrollableList from '../components/scrollable_list' import GroupCollectionItem from '../components/group_collection_item' const mapStateToProps = (state, { activeTab }) => ({ groupIds: state.getIn(['group_lists', activeTab, 'items']), isFetched: state.getIn(['group_lists', activeTab, 'isFetched']), isLoading: state.getIn(['group_lists', activeTab, 'isLoading']), }) export default @connect(mapStateToProps) class GroupsCollection extends ImmutablePureComponent { static propTypes = { activeTab: PropTypes.string.isRequired, dispatch: PropTypes.func.isRequired, groupIds: ImmutablePropTypes.list, isFetched: PropTypes.bool.isRequired, isLoading: PropTypes.bool.isRequired, } componentWillMount() { this.props.dispatch(fetchGroups(this.props.activeTab)) } componentDidUpdate(oldProps) { if (this.props.activeTab && this.props.activeTab !== oldProps.activeTab) { this.props.dispatch(fetchGroups(this.props.activeTab)) } } render() { const { groupIds, isLoading, isFetched, } = this.props if (isLoading && groupIds.size === 0) { return } else if (isFetched && groupIds.size === 0) { return } /> } const halfCount = parseInt(groupIds.size / 2) return (
{ groupIds.map((groupId, i) => ( )) }
{ groupIds.slice(0, halfCount).map((groupId, i) => ( )) }
{ groupIds.slice(halfCount, groupIds.size).map((groupId, i) => ( )) }
) } }