Fixed an error with exmap, added isLoggedIn to User, etc.

This commit is contained in:
Norbi Peti 2016-08-18 12:08:37 +02:00
parent 437be79d69
commit 15470f9369
4 changed files with 19 additions and 5 deletions

View file

@ -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();
}

View file

@ -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;

View file

@ -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));
}
}

View file

@ -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<IP, UUID>
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);