From 15470f9369272974730c23e579f60889a0db4c4d Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Thu, 18 Aug 2016 12:08:37 +0200 Subject: [PATCH] Fixed an error with exmap, added isLoggedIn to User, etc. --- pages/js/index.js | 5 +++-- pages/js/receivemessage.js | 1 + .../github/norbipeti/chat/server/db/domain/User.java | 6 ++++++ .../chat/server/page/ReceiveMessageAjaxPage.java | 12 +++++++++--- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pages/js/index.js b/pages/js/index.js index 0226a45..7e80dff 100644 --- a/pages/js/index.js +++ b/pages/js/index.js @@ -31,12 +31,13 @@ function changeConversation(convid) { return; if (!canswitchconversations) return; + console.log("Can't switch conversations now"); canswitchconversations = false; stopPoll(); var chmsgse = document.getElementById("channelmessages"); var chmsgs = chmsgse.getElementsByClassName("chmessage"); - for (var i = 0; i < chmsgs.length; i++) - chmsgse.removeChild(chmsgs[i]); + while (chmsgs.length > 0) + chmsgse.removeChild(chmsgs[0]); convidp.innerText = convid; conversationChanged(); } diff --git a/pages/js/receivemessage.js b/pages/js/receivemessage.js index d481a9e..4afb031 100644 --- a/pages/js/receivemessage.js +++ b/pages/js/receivemessage.js @@ -52,6 +52,7 @@ function poll() { msgs.innerHTML += data; var msgelement = msgs.children[msgs.children.length - 1]; handlereceivedmessage(msgelement); + console.log("Can switch conversations now"); canswitchconversations = true; if (justsentmsgread) justsentmsgread = false; diff --git a/src/io/github/norbipeti/chat/server/db/domain/User.java b/src/io/github/norbipeti/chat/server/db/domain/User.java index 1a1f4d4..b969cbb 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/User.java +++ b/src/io/github/norbipeti/chat/server/db/domain/User.java @@ -2,6 +2,8 @@ package io.github.norbipeti.chat.server.db.domain; import java.io.IOException; import java.util.List; +import java.util.UUID; + import javax.persistence.*; import io.github.norbipeti.chat.server.data.LoaderCollection; @@ -117,4 +119,8 @@ public class User extends SavedData { @Override public void init() { } + + public boolean isLoggedIn() { + return !sessionid.equals(new UUID(0, 0)); + } } diff --git a/src/io/github/norbipeti/chat/server/page/ReceiveMessageAjaxPage.java b/src/io/github/norbipeti/chat/server/page/ReceiveMessageAjaxPage.java index 2d142fe..a562633 100644 --- a/src/io/github/norbipeti/chat/server/page/ReceiveMessageAjaxPage.java +++ b/src/io/github/norbipeti/chat/server/page/ReceiveMessageAjaxPage.java @@ -49,10 +49,10 @@ public class ReceiveMessageAjaxPage extends Page { if (conv == null || !conv.getUsers().contains(user)) user.setCurrentConversation(null); else { + exmap.put(user, exchange); if (user.getCurrentConversation() == null || !user.getCurrentConversation().equals(currentconversation)) sendMessagesToUser(user, conv); user.setCurrentConversation(currentconversation); - exmap.put(user, exchange); } } @@ -60,6 +60,8 @@ public class ReceiveMessageAjaxPage extends Page { for (User user : conv.getUsers()) { // TODO: Load older messages when scrolling up if (user.getCurrentConversation() == null || !user.getCurrentConversation().get().equals(conv)) continue; + if (!user.isLoggedIn()) + continue; if (unsentmessages.containsKey(user) && unsentmessages.get(user).size() > 10) { unsentmessages.get(user).clear(); } @@ -71,14 +73,18 @@ public class ReceiveMessageAjaxPage extends Page { Document doc = new Document(""); while (it.hasNext()) { Message entry = it.next(); - entry.getAsHTML(doc); // TODO: Only send messages if the user's current conversation matches + entry.getAsHTML(doc); try { it.remove(); // Remove sent message } catch (Exception e) { // Remove users even if an error occurs (otherwise they may not be able to send a new/ message due to "headers already sent") e.printStackTrace(); } + } // TODO: Allow logins from multiple locations - Map + try { + IOHelper.SendResponse(200, doc.toString(), exmap.get(user)); + } catch (Exception e) { + LogManager.getLogger().warn("Error: Can't send " + doc.toString() + " to " + user + "\n" + e); } - IOHelper.SendResponse(200, doc.toString(), exmap.get(user)); exmap.remove(user); if (unsentmessages.get(user).size() == 0) unsentmessages.remove(user);