// Package imports. import PropTypes from 'prop-types'; import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import classNames from 'classnames'; // Actions. import { openModal } from 'flavours/glitch/actions/modal'; import { changeSearch, clearSearch, showSearch, submitSearch, } from 'flavours/glitch/actions/search'; // Components. import Composer from 'flavours/glitch/features/composer'; import DrawerAccount from './account'; import DrawerHeader from './header'; import DrawerResults from './results'; import DrawerSearch from './search'; // Utils. import { me } from 'flavours/glitch/util/initial_state'; import { wrap } from 'flavours/glitch/util/redux_helpers'; // State mapping. const mapStateToProps = state => ({ account: state.getIn(['accounts', me]), columns: state.getIn(['settings', 'columns']), results: state.getIn(['search', 'results']), searchHidden: state.getIn(['search', 'hidden']), searchValue: state.getIn(['search', 'value']), submitted: state.getIn(['search', 'submitted']), }); // Dispatch mapping. const mapDispatchToProps = { onChange: changeSearch, onClear: clearSearch, onShow: showSearch, onSubmit: submitSearch, onOpenSettings: openModal.bind(null, 'SETTINGS', {}), }; // The component. class Drawer extends React.Component { // Constructor. constructor (props) { super(props); } // Rendering. render () { const { account, columns, intl, multiColumn, onChange, onClear, onOpenSettings, onShow, onSubmit, results, searchHidden, searchValue, submitted, } = this.props; let choices = ['mbstobon-bg-1', 'mbstobon-bg-2', 'mbstobon-bg-3']; let glitchyFriendDecision = choices[Math.floor(Math.random() * choices.length)]; let drawerAttrs = { className: classNames('contents', glitchyFriendDecision) }; // The result. return (
{multiColumn ? ( ) : null}
{multiColumn &&
}
); } } // Props. Drawer.propTypes = { intl: PropTypes.object.isRequired, multiColumn: PropTypes.bool, // State props. account: ImmutablePropTypes.map, columns: ImmutablePropTypes.list, results: ImmutablePropTypes.map, searchHidden: PropTypes.bool, searchValue: PropTypes.string, submitted: PropTypes.bool, // Dispatch props. onChange: PropTypes.func, onClear: PropTypes.func, onShow: PropTypes.func, onSubmit: PropTypes.func, onOpenSettings: PropTypes.func, }; // Connecting and export. export { Drawer as WrappedComponent }; export default wrap(Drawer, mapStateToProps, mapDispatchToProps, true);