Skip to content
14 changes: 13 additions & 1 deletion app/lib/rocketchat.js
Original file line number Diff line number Diff line change
Expand Up @@ -1032,7 +1032,19 @@ const RocketChat = {
// RC 0.42.0
return this.methodCallWrapper('getUsersOfRoom', rid, allUsers, { skip, limit });
},

getMembers({
roomId, roomType, type, filter, offset, count
}) {
const params = {
roomId,
offset,
count,
...(type !== 'all' && { 'status[]': type }),
...(filter && { filter })
};
// RC 3.16.0
return this.sdk.get(`${ this.roomTypeToApiType(roomType) }.members`, params);
},
methodCallWrapper(method, ...params) {
const { API_Use_REST_For_DDP_Calls } = reduxStore.getState().settings;
if (API_Use_REST_For_DDP_Calls) {
Expand Down
24 changes: 21 additions & 3 deletions app/views/RoomMembersView/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import { showConfirmationAlert, showErrorAlert } from '../../utils/info';
import SafeAreaView from '../../containers/SafeAreaView';
import { goRoom } from '../../utils/goRoom';
import { CustomIcon } from '../../lib/Icons';
import { compareServerVersion, methods } from '../../lib/utils';

const PAGE_SIZE = 25;

Expand Down Expand Up @@ -56,6 +57,7 @@ class RoomMembersView extends React.Component {
theme: PropTypes.string,
isMasterDetail: PropTypes.bool,
useRealName: PropTypes.bool,
serverVersion: PropTypes.string,
muteUserPermission: PropTypes.array,
setLeaderPermission: PropTypes.array,
setOwnerPermission: PropTypes.array,
Expand Down Expand Up @@ -389,16 +391,31 @@ class RoomMembersView extends React.Component {

fetchMembers = async() => {
const {
rid, members, isLoading, allUsers, end
rid, members, isLoading, allUsers, end, room, filtering
} = this.state;
const { serverVersion } = this.props;
const { t } = room;
let newMembers;
if (isLoading || end) {
return;
}

this.setState({ isLoading: true });
try {
const membersResult = await RocketChat.getRoomMembers(rid, allUsers, members.length, PAGE_SIZE);
const newMembers = membersResult.records;
if (compareServerVersion(serverVersion, '3.16.0', methods.greaterThanOrEqualTo)) {
const membersResult = await RocketChat.getMembers({
Comment thread
gerzonc marked this conversation as resolved.
Outdated
roomId: rid,
roomType: t,
type: allUsers ? 'all' : 'online',
filter: filtering,
offset: members.length,
count: PAGE_SIZE
});
newMembers = membersResult.members;
} else {
const membersResult = await RocketChat.getRoomMembers(rid, allUsers, members.length, PAGE_SIZE);
newMembers = membersResult.records;
}
this.setState({
members: members.concat(newMembers || []),
isLoading: false,
Expand Down Expand Up @@ -579,6 +596,7 @@ const mapStateToProps = state => ({
user: getUserSelector(state),
isMasterDetail: state.app.isMasterDetail,
useRealName: state.settings.UI_Use_Real_Name,
serverVersion: state.server.version,
muteUserPermission: state.permissions[PERMISSION_MUTE_USER],
setLeaderPermission: state.permissions[PERMISSION_SET_LEADER],
setOwnerPermission: state.permissions[PERMISSION_SET_OWNER],
Expand Down