1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-07-31 15:24:23 +03:00

Add Room.getJoinedMembers helper. UX tweaks to example.

This commit is contained in:
Kegan Dougal
2015-06-12 10:49:13 +01:00
parent 8c5c7cc961
commit da7b31cb7e
2 changed files with 28 additions and 8 deletions

View File

@ -22,7 +22,7 @@ var rl = readline.createInterface({
terminal: false terminal: false
}); });
rl.on('line', function(line) { rl.on('line', function(line) {
if (line.indexOf("enter ") === 0 && !viewingRoom) { if (line.indexOf("/enter ") === 0 && !viewingRoom) {
var roomIndex = line.split(" ")[1]; var roomIndex = line.split(" ")[1];
viewingRoom = roomList[roomIndex]; viewingRoom = roomList[roomIndex];
if (viewingRoom.getMember(myUserId).membership === "invite") { if (viewingRoom.getMember(myUserId).membership === "invite") {
@ -44,6 +44,9 @@ rl.on('line', function(line) {
else if (line === "/members" && viewingRoom) { else if (line === "/members" && viewingRoom) {
printMemberList(); printMemberList();
} }
else if (line === "/help") {
printHelp();
}
else if (viewingRoom) { else if (viewingRoom) {
matrixClient.sendTextMessage(viewingRoom.roomId, line).done(function() { matrixClient.sendTextMessage(viewingRoom.roomId, line).done(function() {
console.log('\x1B[2J'); // clear console console.log('\x1B[2J'); // clear console
@ -59,6 +62,7 @@ rl.on('line', function(line) {
matrixClient.on("syncComplete", function() { matrixClient.on("syncComplete", function() {
roomList = matrixClient.getRooms(); roomList = matrixClient.getRooms();
printRoomList(); printRoomList();
printHelp();
}); });
// print incoming messages. // print incoming messages.
@ -80,12 +84,19 @@ function printRoomList() {
for (var i = 0; i < roomList.length; i++) { for (var i = 0; i < roomList.length; i++) {
console.log( console.log(
"[%s] %s (%s members)", "[%s] %s (%s members)",
i, roomList[i].name, roomList[i].currentState.getMembers().length i, roomList[i].name, roomList[i].getJoinedMembers().length
); );
} }
console.log("Enter a room by typing 'enter <index>', e.g. 'enter 5'"); }
console.log("Leave a room by typing '/exit'.");
console.log("Show a room member list by typing '/members'"); function printHelp() {
console.log("Global commands:");
console.log(" '/help' : Show this help.");
console.log("Room list index commands:");
console.log(" '/enter <index>' Enter a room, e.g. '/enter 5'");
console.log("Room commands:");
console.log(" '/exit' Return to the room list index.");
console.log(" '/members' Show the room member list.");
} }
function printMessages() { function printMessages() {
@ -119,8 +130,8 @@ function printMemberList() {
} }
return 0; return 0;
}); });
console.log(viewingRoom.name); console.log("Membership list for room \"%s\"", viewingRoom.name);
console.log(new Array(viewingRoom.name.length + 1).join("-")); console.log(new Array(viewingRoom.name.length + 28).join("-"));
viewingRoom.currentState.getMembers().forEach(function(member) { viewingRoom.currentState.getMembers().forEach(function(member) {
if (!member.membership) { if (!member.membership) {
return; return;
@ -128,7 +139,10 @@ function printMemberList() {
var membershipWithPadding = ( var membershipWithPadding = (
member.membership + new Array(10 - member.membership.length).join(" ") member.membership + new Array(10 - member.membership.length).join(" ")
); );
console.log("%s :: %s", membershipWithPadding, member.name); console.log(
"%s :: %s (%s)", membershipWithPadding, member.name,
(member.userId === myUserId ? "Me" : member.userId)
);
}); });
} }

View File

@ -45,6 +45,12 @@ utils.inherits(Room, EventEmitter);
return member; return member;
}; };
Room.prototype.getJoinedMembers = function() {
return utils.filter(this.currentState.getMembers(), function(m) {
return m.membership === "join";
});
};
/** /**
* Add some events to this room's timeline. Will fire "Room.timeline" for * Add some events to this room's timeline. Will fire "Room.timeline" for
* each event added. * each event added.