wewechat++ init

仓库提交至星火社区作品集

Signed-off-by: Riceneeder <86492950+Riceneeder@users.noreply.github.com>
This commit is contained in:
Riceneeder
2022-09-01 20:38:13 +08:00
commit 58ce6cb67b
165 changed files with 58249 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
import React, { Component } from 'react';
import { Modal, ModalBody } from 'components/Modal';
import { inject, observer } from 'mobx-react';
import classes from './style.css';
import UserList from 'components/UserList';
@inject(stores => ({
show: stores.forward.show,
searching: stores.forward.query,
getList: () => {
var { forward, contacts } = stores;
if (forward.query) {
return forward.list;
}
return contacts.memberList.filter(e => e.UserName !== stores.session.user.User.UserName);
},
getUser: (userid) => {
return stores.contacts.memberList.find(e => e.UserName === userid);
},
search: stores.forward.search,
send: (userids) => stores.forward.send(userids),
close: () => stores.forward.toggle(false),
}))
@observer
export default class Forward extends Component {
state = {
selected: [],
};
close() {
this.props.close();
this.setState({
selected: [],
});
}
send(userids) {
userids.map(e => {
this.props.send(e);
});
this.close();
}
renderList() {
var self = this;
var { show, searching, search, getList } = this.props;
if (!show) {
return false;
}
return (
<UserList {...{
ref: 'users',
search,
getList,
searching,
max: -1,
onChange(selected) {
self.setState({
selected,
});
}
}} />
);
}
render() {
return (
<Modal
fullscreen={true}
onCancel={e => this.close()}
show={this.props.show}>
<ModalBody className={classes.container}>
Forward Message
<div className={classes.avatars}>
{
this.state.selected.map((e, index) => {
var user = this.props.getUser(e);
return (
<img
key={index}
onClick={ev => this.refs.users.removeSelected(e)}
src={user.HeadImgUrl} />
);
})
}
</div>
{this.renderList()}
<div>
<button
disabled={!this.state.selected.length}
onClick={e => this.send(this.state.selected)}>
Send Message
</button>
<button onClick={e => this.close()}>Cancel</button>
</div>
</ModalBody>
</Modal>
);
}
}