/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.core.modules.messaging.actions;
import im.actor.core.api.ApiOutPeer;
import im.actor.core.api.rpc.RequestMessageReceived;
import im.actor.core.api.rpc.ResponseVoid;
import im.actor.core.entity.Peer;
import im.actor.core.modules.ModuleContext;
import im.actor.core.network.RpcCallback;
import im.actor.core.network.RpcException;
public class CursorReceiverActor extends CursorActor {
public CursorReceiverActor(ModuleContext context) {
super(CURSOR_RECEIVED, context);
}
@Override
protected void perform(final Peer peer, final long date) {
ApiOutPeer outPeer = buidOutPeer(peer);
if (outPeer == null) {
return;
}
request(new RequestMessageReceived(outPeer, date), new RpcCallback<ResponseVoid>() {
@Override
public void onResult(ResponseVoid response) {
onCompleted(peer, date);
}
@Override
public void onError(RpcException e) {
CursorReceiverActor.this.onError(peer, date);
}
});
}
@Override
public void onReceive(Object message) {
if (message instanceof MarkReceived) {
MarkReceived received = (MarkReceived) message;
moveCursor(received.getPeer(), received.getDate());
} else {
super.onReceive(message);
}
}
public static class MarkReceived {
private Peer peer;
private long date;
public MarkReceived(Peer peer, long date) {
this.peer = peer;
this.date = date;
}
public Peer getPeer() {
return peer;
}
public long getDate() {
return date;
}
}
}