Fixed an error with exmap, added isLoggedIn to User, etc.
This commit is contained in:
parent
437be79d69
commit
15470f9369
4 changed files with 19 additions and 5 deletions
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
exmap.remove(user);
|
||||
if (unsentmessages.get(user).size() == 0)
|
||||
unsentmessages.remove(user);
|
||||
|
|
Loading…
Reference in a new issue