You've already forked matrix-react-sdk
							
							
				mirror of
				https://github.com/matrix-org/matrix-react-sdk.git
				synced 2025-11-03 00:33:22 +03:00 
			
		
		
		
	Merge pull request #6061 from jaiwanth-v/update-memberlist-invite
Update MemberList to reflect changes for invite permission change
This commit is contained in:
		@@ -133,6 +133,12 @@ export default class MemberList extends React.Component {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get canInvite() {
 | 
			
		||||
        const cli = MatrixClientPeg.get();
 | 
			
		||||
        const room = cli.getRoom(this.props.roomId);
 | 
			
		||||
        return room && room.canInvite(cli.getUserId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _getMembersState(members) {
 | 
			
		||||
        // set the state after determining _showPresence to make sure it's
 | 
			
		||||
        // taken into account while rerendering
 | 
			
		||||
@@ -141,6 +147,7 @@ export default class MemberList extends React.Component {
 | 
			
		||||
            members: members,
 | 
			
		||||
            filteredJoinedMembers: this._filterMembers(members, 'join'),
 | 
			
		||||
            filteredInvitedMembers: this._filterMembers(members, 'invite'),
 | 
			
		||||
            canInvite: this.canInvite,
 | 
			
		||||
 | 
			
		||||
            // ideally we'd size this to the page height, but
 | 
			
		||||
            // in practice I find that a little constraining
 | 
			
		||||
@@ -196,6 +203,8 @@ export default class MemberList extends React.Component {
 | 
			
		||||
            event.getType() === "m.room.third_party_invite") {
 | 
			
		||||
            this._updateList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.canInvite !== this.state.canInvite) this.setState({ canInvite: this.canInvite });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    _updateList = rate_limited_func(() => {
 | 
			
		||||
@@ -455,8 +464,6 @@ export default class MemberList extends React.Component {
 | 
			
		||||
        let inviteButton;
 | 
			
		||||
 | 
			
		||||
        if (room && room.getMyMembership() === 'join') {
 | 
			
		||||
            const canInvite = room.canInvite(cli.getUserId());
 | 
			
		||||
 | 
			
		||||
            let inviteButtonText = _t("Invite to this room");
 | 
			
		||||
            const chat = CommunityPrototypeStore.instance.getSelectedCommunityGeneralChat();
 | 
			
		||||
            if (chat && chat.roomId === this.props.roomId) {
 | 
			
		||||
@@ -467,7 +474,7 @@ export default class MemberList extends React.Component {
 | 
			
		||||
 | 
			
		||||
            const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
 | 
			
		||||
            inviteButton =
 | 
			
		||||
                <AccessibleButton className="mx_MemberList_invite" onClick={this.onInviteButtonClick} disabled={!canInvite}>
 | 
			
		||||
                <AccessibleButton className="mx_MemberList_invite" onClick={this.onInviteButtonClick} disabled={!this.state.canInvite}>
 | 
			
		||||
                    <span>{ inviteButtonText }</span>
 | 
			
		||||
                </AccessibleButton>;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -88,6 +88,7 @@ describe('MemberList', () => {
 | 
			
		||||
        };
 | 
			
		||||
        memberListRoom.currentState = {
 | 
			
		||||
            members: {},
 | 
			
		||||
            getMember: jest.fn(),
 | 
			
		||||
            getStateEvents: (eventType, stateKey) => stateKey === undefined ? [] : null, // ignore 3pid invites
 | 
			
		||||
        };
 | 
			
		||||
        for (const member of [...adminUsers, ...moderatorUsers, ...defaultUsers]) {
 | 
			
		||||
 
 | 
			
		||||
@@ -246,6 +246,7 @@ export function mkStubRoom(roomId = null) {
 | 
			
		||||
        maySendMessage: jest.fn().mockReturnValue(true),
 | 
			
		||||
        currentState: {
 | 
			
		||||
            getStateEvents: jest.fn(),
 | 
			
		||||
            getMember: jest.fn(),
 | 
			
		||||
            mayClientSendStateEvent: jest.fn().mockReturnValue(true),
 | 
			
		||||
            maySendStateEvent: jest.fn().mockReturnValue(true),
 | 
			
		||||
            maySendEvent: jest.fn().mockReturnValue(true),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user