add names list when connecting

This commit is contained in:
Andy Janata 2012-01-12 13:05:49 -08:00
parent 264d0e0187
commit 3c391f23cd
3 changed files with 51 additions and 0 deletions

View File

@ -40,6 +40,8 @@ cah.ajax.ErrorHandlers.firstload = function(data) {
*/
cah.ajax.after_registered = function() {
cah.log.debug("done registering");
// TODO once there are channels, this needs to specify the global channel
cah.Ajax.request("names", {});
cah.longpoll.longPoll();
};
@ -50,3 +52,9 @@ cah.ajax.SuccessHandlers.chat = function(data) {
cah.ajax.SuccessHandlers.logout = function(data) {
window.location.reload();
};
cah.ajax.ErrorHandlers.logout = cah.ajax.SuccessHandlers.logout;
cah.ajax.SuccessHandlers.names = function(data) {
cah.log.status("Currently connected: " + data.names.join(", "));
};

View File

@ -13,6 +13,7 @@ public class Handlers {
LIST.put(ChatHandler.OP, ChatHandler.class);
LIST.put(FirstLoadHandler.OP, FirstLoadHandler.class);
LIST.put(LogoutHandler.OP, LogoutHandler.class);
LIST.put(NamesHandler.OP, NamesHandler.class);
LIST.put(RegisterHandler.OP, RegisterHandler.class);
LIST.put(TestHandler.OP, TestHandler.class);
}

View File

@ -0,0 +1,42 @@
package net.socialgamer.cah.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import net.socialgamer.cah.Server;
import net.socialgamer.cah.data.ConnectedUsers;
import net.socialgamer.cah.data.User;
import com.google.inject.Inject;
public class NamesHandler extends Handler {
public static final String OP = "names";
private final ConnectedUsers users;
@Inject
public NamesHandler(final Server server) {
this.users = server.getConnectedUsers();
}
@Override
public Map<String, Object> handle(final Map<String, String[]> parameters,
final HttpSession session) {
final HashMap<String, Object> ret = new HashMap<String, Object>();
// TODO once there are multiple rooms, we needCollection<E>hich one was asked for
final Collection<User> userList = users.getUsers();
final List<String> names = new ArrayList<String>(userList.size());
for (final User u : userList) {
names.add(u.getNickname());
}
ret.put("names", names);
return ret;
}
}