Return some of getDifference on unknown peers.
This commit is contained in:
@@ -1419,6 +1419,12 @@ void Updates::applyUpdates(
|
||||
|
||||
case mtpc_updateShortMessage: {
|
||||
auto &d = updates.c_updateShortMessage();
|
||||
if (!session().data().userLoaded(d.vuser_id())) {
|
||||
MTP_LOG(0, ("getDifference "
|
||||
"{ good - getting user for updateShortMessage }%1"
|
||||
).arg(_session->mtp().isTestMode() ? " TESTMODE" : ""));
|
||||
return getDifference();
|
||||
}
|
||||
_session->data().fillMessagePeers(d);
|
||||
if (updateAndApply(d.vpts().v, d.vpts_count().v, updates)) {
|
||||
// Update date as well.
|
||||
@@ -1428,6 +1434,13 @@ void Updates::applyUpdates(
|
||||
|
||||
case mtpc_updateShortChatMessage: {
|
||||
auto &d = updates.c_updateShortChatMessage();
|
||||
const auto chat = session().data().chatLoaded(d.vchat_id());
|
||||
if (!chat) {
|
||||
MTP_LOG(0, ("getDifference "
|
||||
"{ good - getting chat for updateShortChatMessage }%1"
|
||||
).arg(_session->mtp().isTestMode() ? " TESTMODE" : ""));
|
||||
return getDifference();
|
||||
}
|
||||
_session->data().fillMessagePeers(d);
|
||||
if (updateAndApply(d.vpts().v, d.vpts_count().v, updates)) {
|
||||
// Update date as well.
|
||||
@@ -1485,6 +1498,16 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||
// New messages.
|
||||
case mtpc_updateNewMessage: {
|
||||
auto &d = update.c_updateNewMessage();
|
||||
if (!requestingDifference()) {
|
||||
const auto peerId = PeerFromMessage(d.vmessage());
|
||||
const auto peer = session().data().peerLoaded(peerId);
|
||||
if (peerId && !peer) {
|
||||
MTP_LOG(0, ("getDifference "
|
||||
"{ good - getting peer for updateNewMessage }%1"
|
||||
).arg(_session->mtp().isTestMode() ? " TESTMODE" : ""));
|
||||
return getDifference();
|
||||
}
|
||||
}
|
||||
updateAndApply(d.vpts().v, d.vpts_count().v, update);
|
||||
} break;
|
||||
|
||||
|
||||
@@ -5339,7 +5339,7 @@ void Session::clearLocalStorage() {
|
||||
}
|
||||
|
||||
void Session::fillMessagePeer(FullMsgId fullId, PeerId peerId) {
|
||||
if (!peerLoaded(peerId)) {
|
||||
if (!peerLoaded(peerId) && fullId.peer != peerId) {
|
||||
_messagesWithPeer[peerId].push_back(fullId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,6 +321,9 @@ void UserData::setPersonalChannel(ChannelId channelId, MsgId messageId) {
|
||||
MTPInputUser UserData::inputUser() const {
|
||||
const auto item = isLoaded() ? nullptr : owner().messageWithPeer(id);
|
||||
if (item) {
|
||||
const auto peer = item->history()->peer;
|
||||
Assert(peer.get() != this);
|
||||
|
||||
return MTP_inputUserFromMessage(
|
||||
item->history()->peer->input(),
|
||||
MTP_int(item->id.bare),
|
||||
|
||||
Reference in New Issue
Block a user