package envoy.client.data; import java.io.IOException; import java.time.Instant; import envoy.client.net.WriteProxy; import envoy.data.Contact; import envoy.data.GroupMessage; import envoy.data.Message.MessageStatus; import envoy.data.User; import envoy.event.GroupMessageStatusChange; /** * Represents a chat between a user and a group * as a list of messages. *
* Project: envoy-client
* File: GroupChat.java
* Created: 05.07.2020
*
* @author Maximilian Käfer
* @since Envoy Client v0.1-beta
*/
public final class GroupChat extends Chat {
private final User sender;
private static final long serialVersionUID = 1L;
/**
* @param sender the user sending the messages
* @param recipient the group whose members receive the messages
* @since Envoy Client v0.1-beta
*/
public GroupChat(User sender, Contact recipient) {
super(recipient);
this.sender = sender;
}
@Override
public void read(WriteProxy writeProxy) throws IOException {
for (int i = messages.size() - 1; i >= 0; --i) {
final GroupMessage gmsg = (GroupMessage) messages.get(i);
if (gmsg.getSenderID() != sender.getID()) if (gmsg.getMemberStatuses().get(sender.getID()) == MessageStatus.READ) break;
else {
gmsg.getMemberStatuses().replace(sender.getID(), MessageStatus.READ);
writeProxy.writeMessageStatusChange(new GroupMessageStatusChange(gmsg.getID(), MessageStatus.READ, Instant.now(), sender.getID()));
}
}
unreadAmount = 0;
}
}