Implemented functionality regarding pending groupMessages (unfinished)
(This was implemented some weeks ago but never pushed (made some revision))
This commit is contained in:
@ -1,12 +1,16 @@
|
||||
package envoy.server.processors;
|
||||
|
||||
import static envoy.data.User.UserStatus.ONLINE;
|
||||
import static envoy.event.HandshakeRejection.*;
|
||||
import static envoy.event.HandshakeRejection.INTERNAL_ERROR;
|
||||
import static envoy.event.HandshakeRejection.USERNAME_TAKEN;
|
||||
import static envoy.event.HandshakeRejection.WRONG_PASSWORD_OR_USER;
|
||||
import static envoy.event.HandshakeRejection.WRONG_VERSION;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.persistence.NoResultException;
|
||||
@ -16,6 +20,7 @@ import envoy.data.LoginCredentials;
|
||||
import envoy.data.Message.MessageStatus;
|
||||
import envoy.event.HandshakeRejection;
|
||||
import envoy.event.MessageStatusChange;
|
||||
import envoy.server.data.GroupMessage;
|
||||
import envoy.server.data.PersistenceManager;
|
||||
import envoy.server.data.User;
|
||||
import envoy.server.net.ConnectionManager;
|
||||
@ -117,6 +122,9 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
|
||||
final var pendingMessages = PersistenceManager.getInstance().getPendingMessages(user);
|
||||
logger.fine("Sending " + pendingMessages.size() + " pending messages to " + user + "...");
|
||||
|
||||
List<GroupMessage> pendingGroupMessages = PersistenceManager.getInstance().getPendingGroupMessages(user);
|
||||
logger.fine("Sending " + pendingGroupMessages.size() + " pending group messages to " + user + "...");
|
||||
|
||||
for (var msg : pendingMessages) {
|
||||
final var msgCommon = msg.toCommon();
|
||||
if (msg.getStatus() == MessageStatus.SENT) {
|
||||
@ -133,6 +141,23 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
|
||||
}
|
||||
} else writeProxy.write(socketID, new MessageStatusChange(msgCommon));
|
||||
}
|
||||
|
||||
for (GroupMessage gmsg : pendingGroupMessages) {
|
||||
if (gmsg.getMemberMessageStatus().get(user.getID()) == MessageStatus.SENT) {
|
||||
gmsg.getMemberMessageStatus().replace(user.getID(), MessageStatus.RECEIVED);
|
||||
logger.info("Sending groupMessage" + gmsg.toCommon());
|
||||
System.out.println(gmsg.toCommon().toString());
|
||||
writeProxy.write(socketID, gmsg.toCommon());
|
||||
// Sending memberStatusEvent to all members (event does not exist yet I think)
|
||||
if (!gmsg.getMemberMessageStatus().containsValue(MessageStatus.SENT)) {
|
||||
gmsg.setStatus(MessageStatus.RECEIVED);
|
||||
// TODO: Sending MessageStatusChangeEvent to all other members
|
||||
}
|
||||
PersistenceManager.getInstance().updateMessage(gmsg);
|
||||
} else {
|
||||
// Sending memberStatusEvents and MessageStatusChange Events
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user