49 lines
1.3 KiB
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;
|
|
}
|
|
}
|