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:
		| @@ -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
	 DieGurke
					DieGurke