This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/client/src/main/java/envoy/client/data/GroupChat.java

49 lines
1.3 KiB
Java

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;
}
}