fetchPeerReadState method
回填对端已读水位(打开私聊时调用)。
Implementation
Future<MessageRead?> fetchPeerReadState({
required int talkMode,
required int toFromId,
}) async {
if (talkMode != TalkMode.private || toFromId <= 0) return null;
try {
final map = await _net.http.post(
'/api/v1/talk/message-read-state',
data: {'talk_mode': talkMode, 'to_from_id': toFromId},
);
final read = MessageRead.fromJson({
...map,
'talk_mode': talkMode,
'from_id': toFromId,
'to_from_id': toFromId,
});
if (read.seq > 0) {
final key = _convKey(talkMode, toFromId);
final cur = _peerReadSeq[key] ?? 0;
if (read.seq >= cur) {
_peerReadSeq[key] = read.seq;
_listener?.recvMessageRead(read);
}
}
return read;
} catch (e) {
GoChatLogger.e('fetchPeerReadState failed', e);
return null;
}
}