1) sendPrivateMessage on a room doesn't get handled properly in the handleEvent method of the Room class.
sendPrivateMessage sends a message to a room of type CHAT, but in the isThisRoom portion, which it goes into, it ignores type CHAT. CHAT only gets handled in the isThisUser portion.
2) If we know about an occupant in a room, the updateRoomRoster method in the Room class doesn't dispatch an event if the presence has been updated, just if they leave.
The method does handle the change and set the affiliation, role, and show status to match the presence, but does not dispatch an event. It would be nice for a room to be able to know when an occupant in the room changes their presence. Possibly add a USER_PRESENCE_CHANGE event type in RoomEvent.
3) The IQ in the requestConfiguration method of the Room class has a callback for when it is complete. It would be nice to add a callback to the IQ in the configure method to know when it is complete. Possibly add a CONFIGURE_ROOM_COMPLETE event type in RoomEvent.
Patch for #1: isThisRoom portion of the handleEvent method now handles type CHAT.
Patch for #2: Addition of room event that is dispatched when a user's presence is updated.
Patches created and attached to issue comments.
Can apply patches and commit.
Hi Mark, we've recently done a very similar thing to your third patch, but specifically for users having voice granted or revoked. I added two new event types to RoomEvent (USER_VOICE_REVOKED and USER_VOICE_GRANTED) and had Room dispatch these. Would you like this as a patch? Have you had any feedback on your patches?
Complete and committed.