package envoy.client.data; import java.time.Instant; import envoy.data.*; import envoy.data.Message.MessageStatus; import envoy.event.GroupMessageStatusChange; import envoy.client.net.WriteProxy; /** * Represents a chat between a user and a group as a list of messages. * * @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, Group recipient) { super(recipient); this.sender = sender; } @Override public void read(WriteProxy writeProxy) { 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; } }