diff --git a/WebContent/js/cah.ajax.handlers.js b/WebContent/js/cah.ajax.handlers.js index 137c460..96b1e3b 100644 --- a/WebContent/js/cah.ajax.handlers.js +++ b/WebContent/js/cah.ajax.handlers.js @@ -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(", ")); +}; diff --git a/src/net/socialgamer/cah/handlers/Handlers.java b/src/net/socialgamer/cah/handlers/Handlers.java index e019952..85e33a8 100644 --- a/src/net/socialgamer/cah/handlers/Handlers.java +++ b/src/net/socialgamer/cah/handlers/Handlers.java @@ -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); } diff --git a/src/net/socialgamer/cah/handlers/NamesHandler.java b/src/net/socialgamer/cah/handlers/NamesHandler.java new file mode 100644 index 0000000..4256b4c --- /dev/null +++ b/src/net/socialgamer/cah/handlers/NamesHandler.java @@ -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 handle(final Map parameters, + final HttpSession session) { + final HashMap ret = new HashMap(); + // TODO once there are multiple rooms, we needCollectionhich one was asked for + final Collection userList = users.getUsers(); + final List names = new ArrayList(userList.size()); + for (final User u : userList) { + names.add(u.getNickname()); + } + ret.put("names", names); + return ret; + } +}