import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { Input, Button } from 'reactstrap'; import { Utils } from '../utils/utils'; import { gettext } from '../utils/constants'; import { seafileAPI } from '../utils/seafile-api'; import Loading from './loading'; import GroupMembers from './group-members'; const propTypes = { groupID: PropTypes.string.isRequired, isOwner: PropTypes.bool.isRequired }; class SearchGroupMembers extends React.Component { // pagination is not needed constructor(props) { super(props); this.state = { isLoading: false, q: '', // query groupMembers: [], errMessage: [], isItemFreezed: false }; this.isInit = true; } toggleItemFreezed = (isFreezed) => { this.setState({ isItemFreezed: isFreezed }); } changeMember = (targetMember) => { this.setState({ groupMembers: this.state.groupMembers.map((item) => { if (item.email == targetMember.email) { item = targetMember; } return item; }) }); } deleteMember = (targetMember) => { const groupMembers = this.state.groupMembers; groupMembers.splice(groupMembers.indexOf(targetMember), 1); this.setState({ groupMembers: groupMembers }); } submit = () => { let { q } = this.state; q = q.trim(); if (!q) { return; } this.setState({ isLoading: true }); seafileAPI.searchGroupMember(this.props.groupID, q).then((res) => { this.isInit = false; this.setState({ isLoading: false, groupMembers: res.data, errorMsg: '' }); }).catch(error => { let errMessage = Utils.getErrorMsg(error); this.setState({ isLoading: false, errorMsg: errMessage }); }); } onInputChange = (e) => { this.setState({ q: e.target.value }); } onInputKeyDown = (e) => { if (e.key == 'Enter') { this.submit(); } } render() { const { isLoading, q, errorMsg, groupMembers } = this.state; return (
{errorMsg &&

{errorMsg}

}
{isLoading ? : ( {groupMembers.length === 0 && !this.isInit &&
{gettext('No members')}
} {groupMembers.length > 0 && ( )}
)}
); } } SearchGroupMembers.propTypes = propTypes; export default SearchGroupMembers;