Merge pull request #4105 from ritzalam/fix-users-chat-list

- display users list for private chat
This commit is contained in:
Richard Alam 2017-07-16 19:49:07 -04:00 committed by GitHub
commit da9ca0c0ca
3 changed files with 98 additions and 2 deletions

View File

@ -30,6 +30,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<fx:Declarations>
<mate:Listener type="{LockControlEvent.CHANGED_LOCK_SETTINGS}" method="lockSettingsChanged" />
<mate:Listener type="{ChangeMyRole.CHANGE_MY_ROLE_EVENT}" method="refreshRole" />
<mate:Listener type="{UserJoinedEvent.JOINED}" method="handleUserJoinedEvent" />
<mate:Listener type="{UserLeftEvent.LEFT}" method="handleUserLeftEvent" />
</fx:Declarations>
<fx:Script>
@ -46,6 +48,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import org.bigbluebutton.core.events.CoreEvent;
import org.bigbluebutton.core.events.LockControlEvent;
import org.bigbluebutton.core.model.LiveMeeting;
import org.bigbluebutton.main.events.UserJoinedEvent;
import org.bigbluebutton.main.events.UserLeftEvent;
import org.bigbluebutton.main.model.users.events.ChangeMyRole;
import org.bigbluebutton.modules.chat.events.ChatNoiseEnabledEvent;
import org.bigbluebutton.modules.chat.events.ChatOptionsEvent;
@ -60,8 +64,20 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] public var chatOptions:ChatOptions;
private var handler: ChatWindowEventHandler = new ChatWindowEventHandler();
private function handleUserLeftEvent(event: UserLeftEvent): void {
handler.handleUserLeftEvent(event.userID);
}
private function handleUserJoinedEvent(event: UserJoinedEvent):void {
handler.handleUserJoinedEvent(event);
}
private function onCreationComplete():void{
users = UsersUtil.getUsers();
handler.populateAllUsers()
users = handler.users;
chatOptions = Options.getOptions(ChatOptions) as ChatOptions;
if (!chatOptions.privateEnabled) {
@ -103,7 +119,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
if (!usersList.visible || !usersList.enabled) return;
var chatWithIntId:String = usersList.selectedItem.intId;
var chatWithIntId:String = usersList.selectedItem.userId;
// Don't want to be chatting with ourself.
if (UsersUtil.isMe(chatWithIntId)) return;

View File

@ -0,0 +1,72 @@
package org.bigbluebutton.modules.chat.views
{
import mx.collections.ArrayCollection;
import org.bigbluebutton.core.UsersUtil;
import org.bigbluebutton.core.model.LiveMeeting;
import org.bigbluebutton.core.model.users.User2x;
import org.bigbluebutton.main.events.UserJoinedEvent;
import org.bigbluebutton.modules.chat.views.model.ChatUser;
public class ChatWindowEventHandler
{
[Bindable] public var users:ArrayCollection = new ArrayCollection();
public function ChatWindowEventHandler()
{
users.refresh();
}
public function populateAllUsers():void {
getAllWebUsers();
}
private function getAllWebUsers():void {
var userIds: Array = LiveMeeting.inst().users.getUserIds();
for (var i:int = 0; i < userIds.length; i++) {
var userId: String = userIds[i] as String;
var user: User2x = UsersUtil.getUser2x(userId);
addUser(users, user);
}
users.refresh();
}
public function handleUserJoinedEvent(event: UserJoinedEvent):void {
var user: User2x = UsersUtil.getUser(event.userID);
if (user != null) {
addUser(users, user);
users.refresh();
}
}
private function addUser(users: ArrayCollection, user: User2x):void {
var buser: ChatUser = new ChatUser();
buser.userId = user.intId;
buser.name = user.name;
// We want to remove the user if it's already in the collection and re-add it.
removeUser(user.intId, users);
users.addItem(buser);
}
private function removeUser(userId:String, users: ArrayCollection):void {
for (var i:int = 0; i < users.length; i++) {
var user:ChatUser = users.getItemAt(i) as ChatUser;
if (user.userId == userId) {
users.removeItemAt(i);
users.refresh();
return;
}
}
}
public function handleUserLeftEvent(userId: String):void {
removeUser(userId, users);
}
}
}

View File

@ -0,0 +1,8 @@
package org.bigbluebutton.modules.chat.views.model
{
public class ChatUser
{
public var userId: String;
public var name: String;
}
}