Implemented sending RECEIVED GroupMessageStatusChanges
If a member logs in and receives pending groupMessages, there are now groupMessageStatusChanges sent to all other members, that are online and have already received the groupMessage.
This commit is contained in:
parent
4b9cdcb8be
commit
75dc563a07
@ -19,6 +19,7 @@ import javax.persistence.NoResultException;
|
||||
import enovy.server.util.VersionUtils;
|
||||
import envoy.data.LoginCredentials;
|
||||
import envoy.data.Message.MessageStatus;
|
||||
import envoy.event.GroupMessageStatusChange;
|
||||
import envoy.event.HandshakeRejection;
|
||||
import envoy.event.MessageStatusChange;
|
||||
import envoy.server.data.GroupMessage;
|
||||
@ -149,7 +150,22 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
|
||||
gmsg.getMemberMessageStatus().replace(user.getID(), MessageStatus.RECEIVED);
|
||||
envoy.data.GroupMessage groupMessage = gmsg.toCommon();
|
||||
writeProxy.write(socketID, groupMessage);
|
||||
// Sending memberStatusEvent to all members (event does not exist yet I think)
|
||||
// Sending GroupMessageStatusChanges to all members, that already received the
|
||||
// groupMessage.
|
||||
gmsg.getMemberMessageStatus().keySet().stream()
|
||||
.filter(k -> (gmsg.getMemberMessageStatus().get(k) == MessageStatus.RECEIVED
|
||||
|| gmsg.getMemberMessageStatus().get(k) == MessageStatus.READ) && connectionManager.getUserIdBySocketID(socketID) != k)
|
||||
.forEach(k -> {
|
||||
if (connectionManager.isOnline(k)) try {
|
||||
writeProxy.write(connectionManager.getSocketID(k),
|
||||
(new GroupMessageStatusChange(gmsg.getID(), MessageStatus.RECEIVED, LocalDateTime.now(),
|
||||
connectionManager.getUserIdBySocketID(socketID))));
|
||||
} catch (IOException e) {
|
||||
// TODO Maybe Try Catch block is not necessarily needed but if so write proper
|
||||
// logger statement here.
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
if (!gmsg.getMemberMessageStatus().containsValue(MessageStatus.SENT)) {
|
||||
gmsg.received();
|
||||
// Sending MessageStatusChangeEvent to all other members
|
||||
|
Reference in New Issue
Block a user