import { h, Component } from 'preact'; import PropTypes from 'prop-types'; import MembershipSection from './MembershipSection'; import InvitationLinkManager from './InvitationLinkManager'; export default class ManageActiveMembership extends Component { static propTypes = { activeMemberships: PropTypes.arrayOf( PropTypes.shape({ name: PropTypes.string.isRequired, membership_id: PropTypes.number.isRequired, user_id: PropTypes.number.isRequired, role: PropTypes.string.isRequired, image: PropTypes.string.isRequired, username: PropTypes.string.isRequired, status: PropTypes.string.isRequired, }), ).isRequired, currentMembership: PropTypes.isRequired, invitationLink: PropTypes.string.isRequired, removeMembership: PropTypes.func.isRequired, handleUpdateMembershipRole: PropTypes.func.isRequired, }; constructor(props) { super(props); this.state = { activeMemberships: props.activeMemberships, searchMembers: null, listAllMemberShips: props.activeMemberships, currentMembership: props.currentMembership, invitationLink: props.invitationLink, removeMembership: props.removeMembership, handleUpdateMembershipRole: props.handleUpdateMembershipRole, }; } componentWillReceiveProps() { const { activeMemberships, currentMembership, removeMembership, invitationLink, } = this.props; this.setState({ listAllMemberShips: activeMemberships, currentMembership, invitationLink, removeMembership, activeMemberships, }); } searchTheMembershipUser = (e) => { const query = e.target?.value?.toLowerCase(); this.setState((prevState) => { const filteredActiveMemberships = prevState.activeMemberships.filter( (activeMembership) => { const value = activeMembership.name.toLowerCase(); return value.includes(query); }, ); return { searchMembers: query, listAllMemberShips: filteredActiveMemberships, }; }); }; render() { const { searchMembers, listAllMemberShips, currentMembership, invitationLink, removeMembership, handleUpdateMembershipRole, } = this.state; return (