import React, { Component } from 'react'; import { observer, inject } from 'mobx-react'; import clazz from 'classname'; import classes from './style.css'; import MessageInput from 'components/MessageInput'; @inject(stores => ({ show: stores.batchsend.show, close: () => stores.batchsend.toggle(false), search: stores.batchsend.search, searching: stores.batchsend.query, contacts: stores.contacts.memberList, filtered: stores.batchsend.filtered, sendMessage: stores.chat.sendMessage, showMessage: stores.snackbar.showMessage, me: stores.session.user, confirmSendImage: async(image) => { if (!stores.settings.confirmImagePaste) { return true; } var confirmed = await stores.confirmImagePaste.toggle(true, image); return confirmed; }, process: stores.chat.process, })) @observer export default class BatchSend extends Component { state = { selected: [], }; close() { this.setState({ selected: [], }); this.props.close(); } componentDidMount() { this.setState({ selected: [], }); this.props.search(); } handleSelected(user) { var selected = this.state.selected; var index = selected.findIndex(e => e.UserName === user.UserName); if (index === -1) { selected.push(user); } else { selected = [ ...selected.slice(0, index), ...selected.slice(index + 1, selected.length), ]; } this.setState({ selected, }); } selectAll() { var contacts = this.props.contacts; var selected = this.state.selected; var isall = contacts.length === selected.length; if (isall) { // Unselected all user selected = []; } else { selected = contacts.map(e => Object.assign({}, e)); } this.setState({ selected, }); } search(text = '') { text = text.trim(); clearTimeout(this.search.timer); this.search.timer = setTimeout(() => { this.props.search(text); }, 300); } render() { var { contacts, searching, filtered, showMessage, sendMessage, me = {}, confirmSendImage, process } = this.props; if (!this.props.show) { return false; } return (
this.search(e.target.value)} placeholder="Batch to send message, Choose one or more user." type="text" /> this.selectAll()} style={{ marginRight: 20, }} /> this.close()} />
    { (searching && filtered.length === 0) && (

    Can't find any people matching '{searching}'

    ) } { (searching ? filtered : contacts).map((e, index) => { return (
  • this.handleSelected(e)}>
    { this.state.selected.find(user => user.UserName === e.UserName) && ( ) }
  • ); }) }
); } }