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 (