52 lines
1.5 KiB
Java
52 lines
1.5 KiB
Java
package envoy.client.data;
|
|
|
|
import java.io.IOException;
|
|
import java.time.LocalDateTime;
|
|
|
|
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;
|
|
|
|
/**
|
|
* Project: <strong>envoy-client</strong><br>
|
|
* File: <strong>GroupChat.java</strong><br>
|
|
* Created: <strong>05.07.2020</strong><br>
|
|
*
|
|
* @author Maximilian Käfer
|
|
* @since Envoy Client v0.1-beta
|
|
*/
|
|
public class GroupChat extends Chat {
|
|
|
|
private final User sender;
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**
|
|
* @param sender the user sending the messages
|
|
* @param recipient the user who receives 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 g = (GroupMessage) messages.get(i);
|
|
if (g.getSenderID() != sender.getID()) {
|
|
if (g.getMemberStatuses().get(sender.getID()) == MessageStatus.READ) break;
|
|
else {
|
|
g.getMemberStatuses().replace(sender.getID(), MessageStatus.READ);
|
|
writeProxy
|
|
.writeMessageStatusChange(new GroupMessageStatusChange(g.getID(), MessageStatus.READ, LocalDateTime.now(), sender.getID()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|