54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import React from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import { connect } from 'react-redux'
|
|
import ImmutablePropTypes from 'react-immutable-proptypes'
|
|
import ImmutablePureComponent from 'react-immutable-pure-component'
|
|
import isObject from 'lodash.isobject'
|
|
import { BREAKPOINT_EXTRA_SMALL } from '../constants'
|
|
import ColumnIndicator from '../components/column_indicator'
|
|
import Responsive from './ui/util/responsive_component'
|
|
import Bundle from '../features/ui/util/bundle'
|
|
import {
|
|
GroupInfoPanel
|
|
} from '../features/ui/util/async_components'
|
|
|
|
class GroupAbout extends ImmutablePureComponent {
|
|
|
|
render() {
|
|
const { group } = this.props
|
|
|
|
return (
|
|
<div className={[_s.d, _s.w100PC].join(' ')}>
|
|
<Responsive min={BREAKPOINT_EXTRA_SMALL}>
|
|
<ColumnIndicator type='missing' />
|
|
</Responsive>
|
|
<Responsive max={BREAKPOINT_EXTRA_SMALL}>
|
|
<Bundle
|
|
fetchComponent={GroupInfoPanel}
|
|
loading={this.renderLoading}
|
|
error={this.renderError}
|
|
renderDelay={150}
|
|
>
|
|
{
|
|
(Component) => <Component group={group} />
|
|
}
|
|
</Bundle>
|
|
</Responsive>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
}
|
|
|
|
const mapStateToProps = (state, { params }) => {
|
|
const groupId = isObject(params) ? params['id'] : null
|
|
const group = state.getIn(['groups', groupId])
|
|
|
|
return { group }
|
|
}
|
|
|
|
GroupAbout.propTypes = {
|
|
group: ImmutablePropTypes.map,
|
|
}
|
|
|
|
export default connect(mapStateToProps)(GroupAbout) |