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;
|
return;
|
||||||
if (!canswitchconversations)
|
if (!canswitchconversations)
|
||||||
return;
|
return;
|
||||||
|
console.log("Can't switch conversations now");
|
||||||
canswitchconversations = false;
|
canswitchconversations = false;
|
||||||
stopPoll();
|
stopPoll();
|
||||||
var chmsgse = document.getElementById("channelmessages");
|
var chmsgse = document.getElementById("channelmessages");
|
||||||
var chmsgs = chmsgse.getElementsByClassName("chmessage");
|
var chmsgs = chmsgse.getElementsByClassName("chmessage");
|
||||||
for (var i = 0; i < chmsgs.length; i++)
|
while (chmsgs.length > 0)
|
||||||
chmsgse.removeChild(chmsgs[i]);
|
chmsgse.removeChild(chmsgs[0]);
|
||||||
convidp.innerText = convid;
|
convidp.innerText = convid;
|
||||||
conversationChanged();
|
conversationChanged();
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,7 @@ function poll() {
|
||||||
msgs.innerHTML += data;
|
msgs.innerHTML += data;
|
||||||
var msgelement = msgs.children[msgs.children.length - 1];
|
var msgelement = msgs.children[msgs.children.length - 1];
|
||||||
handlereceivedmessage(msgelement);
|
handlereceivedmessage(msgelement);
|
||||||
|
console.log("Can switch conversations now");
|
||||||
canswitchconversations = true;
|
canswitchconversations = true;
|
||||||
if (justsentmsgread)
|
if (justsentmsgread)
|
||||||
justsentmsgread = false;
|
justsentmsgread = false;
|
||||||
|
|
|
@ -2,6 +2,8 @@ package io.github.norbipeti.chat.server.db.domain;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|
||||||
import io.github.norbipeti.chat.server.data.LoaderCollection;
|
import io.github.norbipeti.chat.server.data.LoaderCollection;
|
||||||
|
@ -117,4 +119,8 @@ public class User extends SavedData {
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
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))
|
if (conv == null || !conv.getUsers().contains(user))
|
||||||
user.setCurrentConversation(null);
|
user.setCurrentConversation(null);
|
||||||
else {
|
else {
|
||||||
|
exmap.put(user, exchange);
|
||||||
if (user.getCurrentConversation() == null || !user.getCurrentConversation().equals(currentconversation))
|
if (user.getCurrentConversation() == null || !user.getCurrentConversation().equals(currentconversation))
|
||||||
sendMessagesToUser(user, conv);
|
sendMessagesToUser(user, conv);
|
||||||
user.setCurrentConversation(currentconversation);
|
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
|
for (User user : conv.getUsers()) { // TODO: Load older messages when scrolling up
|
||||||
if (user.getCurrentConversation() == null || !user.getCurrentConversation().get().equals(conv))
|
if (user.getCurrentConversation() == null || !user.getCurrentConversation().get().equals(conv))
|
||||||
continue;
|
continue;
|
||||||
|
if (!user.isLoggedIn())
|
||||||
|
continue;
|
||||||
if (unsentmessages.containsKey(user) && unsentmessages.get(user).size() > 10) {
|
if (unsentmessages.containsKey(user) && unsentmessages.get(user).size() > 10) {
|
||||||
unsentmessages.get(user).clear();
|
unsentmessages.get(user).clear();
|
||||||
}
|
}
|
||||||
|
@ -71,14 +73,18 @@ public class ReceiveMessageAjaxPage extends Page {
|
||||||
Document doc = new Document("");
|
Document doc = new Document("");
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
Message entry = it.next();
|
Message entry = it.next();
|
||||||
entry.getAsHTML(doc); // TODO: Only send messages if the user's current conversation matches
|
entry.getAsHTML(doc);
|
||||||
try {
|
try {
|
||||||
it.remove(); // Remove sent message
|
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")
|
} 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();
|
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);
|
exmap.remove(user);
|
||||||
if (unsentmessages.get(user).size() == 0)
|
if (unsentmessages.get(user).size() == 0)
|
||||||
unsentmessages.remove(user);
|
unsentmessages.remove(user);
|
||||||
|
|
Loading…
Reference in a new issue