mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Apply short topic info from channelMessages.
This commit is contained in:
parent
983b6af0b4
commit
c7741cb62a
17 changed files with 121 additions and 74 deletions
|
@ -152,18 +152,22 @@ void MessagesSearch::searchReceived(
|
||||||
const auto total = int(data.vcount().v);
|
const auto total = int(data.vcount().v);
|
||||||
return FoundMessages{ total, std::move(items), nextToken };
|
return FoundMessages{ total, std::move(items), nextToken };
|
||||||
}, [&](const MTPDmessages_channelMessages &data) {
|
}, [&](const MTPDmessages_channelMessages &data) {
|
||||||
if (const auto channel = _history->peer->asChannel()) {
|
|
||||||
channel->ptsReceived(data.vpts().v);
|
|
||||||
} else {
|
|
||||||
LOG(("API Error: "
|
|
||||||
"received messages.channelMessages when no channel "
|
|
||||||
"was passed!"));
|
|
||||||
}
|
|
||||||
if (_requestId != 0) {
|
if (_requestId != 0) {
|
||||||
// Don't apply cached data!
|
// Don't apply cached data!
|
||||||
owner.processUsers(data.vusers());
|
owner.processUsers(data.vusers());
|
||||||
owner.processChats(data.vchats());
|
owner.processChats(data.vchats());
|
||||||
}
|
}
|
||||||
|
if (const auto channel = _history->peer->asChannel()) {
|
||||||
|
channel->ptsReceived(data.vpts().v);
|
||||||
|
if (_requestId != 0) {
|
||||||
|
// Don't apply cached data!
|
||||||
|
channel->processTopics(data.vtopics());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LOG(("API Error: "
|
||||||
|
"received messages.channelMessages when no channel "
|
||||||
|
"was passed!"));
|
||||||
|
}
|
||||||
auto items = HistoryItemsFromTL(&owner, data.vmessages().v);
|
auto items = HistoryItemsFromTL(&owner, data.vmessages().v);
|
||||||
const auto total = int(data.vcount().v);
|
const auto total = int(data.vcount().v);
|
||||||
return FoundMessages{ total, std::move(items), nextToken };
|
return FoundMessages{ total, std::move(items), nextToken };
|
||||||
|
|
|
@ -2870,18 +2870,18 @@ void ApiWrap::requestMessageAfterDate(
|
||||||
};
|
};
|
||||||
const auto list = result.match([&](
|
const auto list = result.match([&](
|
||||||
const MTPDmessages_messages &data) {
|
const MTPDmessages_messages &data) {
|
||||||
return handleMessages(result.c_messages_messages());
|
return handleMessages(data);
|
||||||
}, [&](const MTPDmessages_messagesSlice &data) {
|
}, [&](const MTPDmessages_messagesSlice &data) {
|
||||||
return handleMessages(result.c_messages_messagesSlice());
|
return handleMessages(data);
|
||||||
}, [&](const MTPDmessages_channelMessages &data) {
|
}, [&](const MTPDmessages_channelMessages &data) {
|
||||||
const auto &messages = result.c_messages_channelMessages();
|
if (const auto channel = peer->asChannel()) {
|
||||||
if (peer && peer->isChannel()) {
|
channel->ptsReceived(data.vpts().v);
|
||||||
peer->asChannel()->ptsReceived(messages.vpts().v);
|
channel->processTopics(data.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("API Error: received messages.channelMessages when "
|
LOG(("API Error: received messages.channelMessages when "
|
||||||
"no channel was passed! (ApiWrap::jumpToDate)"));
|
"no channel was passed! (ApiWrap::jumpToDate)"));
|
||||||
}
|
}
|
||||||
return handleMessages(messages);
|
return handleMessages(data);
|
||||||
}, [&](const MTPDmessages_messagesNotModified &) {
|
}, [&](const MTPDmessages_messagesNotModified &) {
|
||||||
LOG(("API Error: received messages.messagesNotModified! "
|
LOG(("API Error: received messages.messagesNotModified! "
|
||||||
"(ApiWrap::jumpToDate)"));
|
"(ApiWrap::jumpToDate)"));
|
||||||
|
|
|
@ -83,7 +83,6 @@ std::unique_ptr<Data::Forum> MegagroupInfo::takeForumData() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChannelData::ChannelData(not_null<Data::Session*> owner, PeerId id)
|
ChannelData::ChannelData(not_null<Data::Session*> owner, PeerId id)
|
||||||
|
@ -876,6 +875,12 @@ const Data::AllowedReactions &ChannelData::allowedReactions() const {
|
||||||
return _allowedReactions;
|
return _allowedReactions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChannelData::processTopics(const MTPVector<MTPForumTopic> &topics) {
|
||||||
|
if (const auto forum = this->forum()) {
|
||||||
|
forum->applyReceivedTopics(topics);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
|
|
||||||
void ApplyMigration(
|
void ApplyMigration(
|
||||||
|
|
|
@ -437,6 +437,8 @@ public:
|
||||||
return mgInfo ? mgInfo->forum() : nullptr;
|
return mgInfo ? mgInfo->forum() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void processTopics(const MTPVector<MTPForumTopic> &topics);
|
||||||
|
|
||||||
// Still public data members.
|
// Still public data members.
|
||||||
uint64 access = 0;
|
uint64 access = 0;
|
||||||
|
|
||||||
|
|
|
@ -204,7 +204,16 @@ void Forum::applyReceivedTopics(
|
||||||
owner().processChats(data.vchats());
|
owner().processChats(data.vchats());
|
||||||
owner().processMessages(data.vmessages(), NewMessageType::Existing);
|
owner().processMessages(data.vmessages(), NewMessageType::Existing);
|
||||||
channel()->ptsReceived(data.vpts().v);
|
channel()->ptsReceived(data.vpts().v);
|
||||||
const auto &list = data.vtopics().v;
|
applyReceivedTopics(data.vtopics(), std::move(callback));
|
||||||
|
if (!_staleRootIds.empty()) {
|
||||||
|
requestSomeStale();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Forum::applyReceivedTopics(
|
||||||
|
const MTPVector<MTPForumTopic> &topics,
|
||||||
|
Fn<void(not_null<ForumTopic*>)> callback) {
|
||||||
|
const auto &list = topics.v;
|
||||||
for (const auto &topic : list) {
|
for (const auto &topic : list) {
|
||||||
const auto rootId = topic.match([&](const auto &data) {
|
const auto rootId = topic.match([&](const auto &data) {
|
||||||
return data.vid().v;
|
return data.vid().v;
|
||||||
|
@ -235,9 +244,6 @@ void Forum::applyReceivedTopics(
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!_staleRootIds.empty()) {
|
|
||||||
requestSomeStale();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Forum::requestSomeStale() {
|
void Forum::requestSomeStale() {
|
||||||
|
|
|
@ -74,6 +74,9 @@ public:
|
||||||
void applyReceivedTopics(
|
void applyReceivedTopics(
|
||||||
const MTPmessages_ForumTopics &topics,
|
const MTPmessages_ForumTopics &topics,
|
||||||
Fn<void(not_null<ForumTopic*>)> callback = nullptr);
|
Fn<void(not_null<ForumTopic*>)> callback = nullptr);
|
||||||
|
void applyReceivedTopics(
|
||||||
|
const MTPVector<MTPForumTopic> &topics,
|
||||||
|
Fn<void(not_null<ForumTopic*>)> callback = nullptr);
|
||||||
|
|
||||||
[[nodiscard]] MsgId reserveCreatingId(
|
[[nodiscard]] MsgId reserveCreatingId(
|
||||||
const QString &title,
|
const QString &title,
|
||||||
|
|
|
@ -296,6 +296,8 @@ void ForumTopic::readTillEnd() {
|
||||||
void ForumTopic::applyTopic(const MTPDforumTopic &data) {
|
void ForumTopic::applyTopic(const MTPDforumTopic &data) {
|
||||||
Expects(_rootId == data.vid().v);
|
Expects(_rootId == data.vid().v);
|
||||||
|
|
||||||
|
const auto min = data.is_short();
|
||||||
|
|
||||||
applyCreator(peerFromMTP(data.vfrom_id()));
|
applyCreator(peerFromMTP(data.vfrom_id()));
|
||||||
applyCreationDate(data.vdate().v);
|
applyCreationDate(data.vdate().v);
|
||||||
|
|
||||||
|
@ -307,32 +309,38 @@ void ForumTopic::applyTopic(const MTPDforumTopic &data) {
|
||||||
}
|
}
|
||||||
applyColorId(data.vicon_color().v);
|
applyColorId(data.vicon_color().v);
|
||||||
|
|
||||||
if (data.is_pinned()) {
|
|
||||||
owner().setChatPinned(this, 0, true);
|
|
||||||
} else {
|
|
||||||
_list->pinned()->setPinned(this, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
owner().notifySettings().apply(this, data.vnotify_settings());
|
|
||||||
|
|
||||||
const auto draft = data.vdraft();
|
|
||||||
if (draft && draft->type() == mtpc_draftMessage) {
|
|
||||||
Data::ApplyPeerCloudDraft(
|
|
||||||
&session(),
|
|
||||||
channel()->id,
|
|
||||||
_rootId,
|
|
||||||
draft->c_draftMessage());
|
|
||||||
}
|
|
||||||
applyIsMy(data.is_my());
|
applyIsMy(data.is_my());
|
||||||
setClosed(data.is_closed());
|
setClosed(data.is_closed());
|
||||||
|
|
||||||
_replies->setInboxReadTill(
|
if (min) {
|
||||||
data.vread_inbox_max_id().v,
|
int a = 0;
|
||||||
data.vunread_count().v);
|
} else {
|
||||||
_replies->setOutboxReadTill(data.vread_outbox_max_id().v);
|
if (data.is_pinned()) {
|
||||||
applyTopicTopMessage(data.vtop_message().v);
|
owner().setChatPinned(this, 0, true);
|
||||||
unreadMentions().setCount(data.vunread_mentions_count().v);
|
} else {
|
||||||
unreadReactions().setCount(data.vunread_reactions_count().v);
|
_list->pinned()->setPinned(this, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
owner().notifySettings().apply(this, data.vnotify_settings());
|
||||||
|
|
||||||
|
if (const auto draft = data.vdraft()) {
|
||||||
|
draft->match([&](const MTPDdraftMessage &data) {
|
||||||
|
Data::ApplyPeerCloudDraft(
|
||||||
|
&session(),
|
||||||
|
channel()->id,
|
||||||
|
_rootId,
|
||||||
|
data);
|
||||||
|
}, [](const MTPDdraftMessageEmpty&) {});
|
||||||
|
}
|
||||||
|
|
||||||
|
_replies->setInboxReadTill(
|
||||||
|
data.vread_inbox_max_id().v,
|
||||||
|
data.vunread_count().v);
|
||||||
|
_replies->setOutboxReadTill(data.vread_outbox_max_id().v);
|
||||||
|
applyTopicTopMessage(data.vtop_message().v);
|
||||||
|
unreadMentions().setCount(data.vunread_mentions_count().v);
|
||||||
|
unreadReactions().setCount(data.vunread_reactions_count().v);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForumTopic::applyCreator(PeerId creatorId) {
|
void ForumTopic::applyCreator(PeerId creatorId) {
|
||||||
|
|
|
@ -661,25 +661,6 @@ void RepliesList::loadAfter() {
|
||||||
bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
|
bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
|
||||||
const auto guard = gsl::finally([&] { _listChanges.fire({}); });
|
const auto guard = gsl::finally([&] { _listChanges.fire({}); });
|
||||||
|
|
||||||
const auto fullCount = result.match([&](
|
|
||||||
const MTPDmessages_messagesNotModified &) {
|
|
||||||
LOG(("API Error: received messages.messagesNotModified! "
|
|
||||||
"(HistoryWidget::messagesReceived)"));
|
|
||||||
return 0;
|
|
||||||
}, [&](const MTPDmessages_messages &data) {
|
|
||||||
return int(data.vmessages().v.size());
|
|
||||||
}, [&](const MTPDmessages_messagesSlice &data) {
|
|
||||||
return data.vcount().v;
|
|
||||||
}, [&](const MTPDmessages_channelMessages &data) {
|
|
||||||
if (_history->peer->isChannel()) {
|
|
||||||
_history->peer->asChannel()->ptsReceived(data.vpts().v);
|
|
||||||
} else {
|
|
||||||
LOG(("API Error: received messages.channelMessages when "
|
|
||||||
"no channel was passed! (HistoryWidget::messagesReceived)"));
|
|
||||||
}
|
|
||||||
return data.vcount().v;
|
|
||||||
});
|
|
||||||
|
|
||||||
auto &owner = _history->owner();
|
auto &owner = _history->owner();
|
||||||
const auto list = result.match([&](
|
const auto list = result.match([&](
|
||||||
const MTPDmessages_messagesNotModified &) {
|
const MTPDmessages_messagesNotModified &) {
|
||||||
|
@ -691,6 +672,27 @@ bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
|
||||||
owner.processChats(data.vchats());
|
owner.processChats(data.vchats());
|
||||||
return data.vmessages().v;
|
return data.vmessages().v;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const auto fullCount = result.match([&](
|
||||||
|
const MTPDmessages_messagesNotModified &) {
|
||||||
|
LOG(("API Error: received messages.messagesNotModified! "
|
||||||
|
"(HistoryWidget::messagesReceived)"));
|
||||||
|
return 0;
|
||||||
|
}, [&](const MTPDmessages_messages &data) {
|
||||||
|
return int(data.vmessages().v.size());
|
||||||
|
}, [&](const MTPDmessages_messagesSlice &data) {
|
||||||
|
return data.vcount().v;
|
||||||
|
}, [&](const MTPDmessages_channelMessages &data) {
|
||||||
|
if (const auto channel = _history->peer->asChannel()) {
|
||||||
|
channel->ptsReceived(data.vpts().v);
|
||||||
|
channel->processTopics(data.vtopics());
|
||||||
|
} else {
|
||||||
|
LOG(("API Error: received messages.channelMessages when "
|
||||||
|
"no channel was passed! (HistoryWidget::messagesReceived)"));
|
||||||
|
}
|
||||||
|
return data.vcount().v;
|
||||||
|
});
|
||||||
|
|
||||||
if (list.isEmpty()) {
|
if (list.isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,9 +137,10 @@ SearchResult ParseSearchResult(
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case mtpc_messages_channelMessages: {
|
case mtpc_messages_channelMessages: {
|
||||||
auto &d = data.c_messages_channelMessages();
|
const auto &d = data.c_messages_channelMessages();
|
||||||
if (auto channel = peer->asChannel()) {
|
if (const auto channel = peer->asChannel()) {
|
||||||
channel->ptsReceived(d.vpts().v);
|
channel->ptsReceived(d.vpts().v);
|
||||||
|
channel->processTopics(d.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("API Error: received messages.channelMessages when "
|
LOG(("API Error: received messages.channelMessages when "
|
||||||
"no channel was passed! (ParseSearchResult)"));
|
"no channel was passed! (ParseSearchResult)"));
|
||||||
|
|
|
@ -2155,6 +2155,7 @@ void Session::processExistingMessages(
|
||||||
data.match([&](const MTPDmessages_channelMessages &data) {
|
data.match([&](const MTPDmessages_channelMessages &data) {
|
||||||
if (channel) {
|
if (channel) {
|
||||||
channel->ptsReceived(data.vpts().v);
|
channel->ptsReceived(data.vpts().v);
|
||||||
|
channel->processTopics(data.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("App Error: received messages.channelMessages!"));
|
LOG(("App Error: received messages.channelMessages!"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,6 +295,7 @@ void WebPageData::ApplyChanges(
|
||||||
const MTPDmessages_channelMessages &data) {
|
const MTPDmessages_channelMessages &data) {
|
||||||
if (channel) {
|
if (channel) {
|
||||||
channel->ptsReceived(data.vpts().v);
|
channel->ptsReceived(data.vpts().v);
|
||||||
|
channel->processTopics(data.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("API Error: received messages.channelMessages "
|
LOG(("API Error: received messages.channelMessages "
|
||||||
"when no channel was passed! (WebPageData::ApplyChanges)"));
|
"when no channel was passed! (WebPageData::ApplyChanges)"));
|
||||||
|
|
|
@ -1643,6 +1643,7 @@ void Widget::searchReceived(
|
||||||
if (const auto peer = searchInPeer()) {
|
if (const auto peer = searchInPeer()) {
|
||||||
if (const auto channel = peer->asChannel()) {
|
if (const auto channel = peer->asChannel()) {
|
||||||
channel->ptsReceived(data.vpts().v);
|
channel->ptsReceived(data.vpts().v);
|
||||||
|
channel->processTopics(data.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("API Error: "
|
LOG(("API Error: "
|
||||||
"received messages.channelMessages when no channel "
|
"received messages.channelMessages when no channel "
|
||||||
|
|
|
@ -560,7 +560,7 @@ bool HistoryInner::hasSelectRestriction() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistoryInner::messagesReceived(
|
void HistoryInner::messagesReceived(
|
||||||
PeerData *peer,
|
not_null<PeerData*> peer,
|
||||||
const QVector<MTPMessage> &messages) {
|
const QVector<MTPMessage> &messages) {
|
||||||
if (_history->peer == peer) {
|
if (_history->peer == peer) {
|
||||||
_history->addOlderSlice(messages);
|
_history->addOlderSlice(messages);
|
||||||
|
@ -575,7 +575,9 @@ void HistoryInner::messagesReceived(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistoryInner::messagesReceivedDown(PeerData *peer, const QVector<MTPMessage> &messages) {
|
void HistoryInner::messagesReceivedDown(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
|
const QVector<MTPMessage> &messages) {
|
||||||
if (_history->peer == peer) {
|
if (_history->peer == peer) {
|
||||||
const auto oldLoaded = _migrated
|
const auto oldLoaded = _migrated
|
||||||
&& _history->isEmpty()
|
&& _history->isEmpty()
|
||||||
|
|
|
@ -99,8 +99,12 @@ public:
|
||||||
|
|
||||||
Ui::ChatPaintContext preparePaintContext(const QRect &clip) const;
|
Ui::ChatPaintContext preparePaintContext(const QRect &clip) const;
|
||||||
|
|
||||||
void messagesReceived(PeerData *peer, const QVector<MTPMessage> &messages);
|
void messagesReceived(
|
||||||
void messagesReceivedDown(PeerData *peer, const QVector<MTPMessage> &messages);
|
not_null<PeerData*> peer,
|
||||||
|
const QVector<MTPMessage> &messages);
|
||||||
|
void messagesReceivedDown(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
|
const QVector<MTPMessage> &messages);
|
||||||
|
|
||||||
[[nodiscard]] TextForMimeData getSelectedText() const;
|
[[nodiscard]] TextForMimeData getSelectedText() const;
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,7 @@ void Proxy::addSlice(const MTPmessages_Messages &slice, int alreadyLoaded) {
|
||||||
}, [&](const MTPDmessages_channelMessages &data) {
|
}, [&](const MTPDmessages_channelMessages &data) {
|
||||||
if (const auto channel = history->peer->asChannel()) {
|
if (const auto channel = history->peer->asChannel()) {
|
||||||
channel->ptsReceived(data.vpts().v);
|
channel->ptsReceived(data.vpts().v);
|
||||||
|
channel->processTopics(data.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("API Error: received messages.channelMessages when "
|
LOG(("API Error: received messages.channelMessages when "
|
||||||
"no channel was passed! (Proxy::addSlice)"));
|
"no channel was passed! (Proxy::addSlice)"));
|
||||||
|
|
|
@ -3021,7 +3021,10 @@ void HistoryWidget::messagesFailed(const MTP::Error &error, int requestId) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistoryWidget::messagesReceived(PeerData *peer, const MTPmessages_Messages &messages, int requestId) {
|
void HistoryWidget::messagesReceived(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
|
const MTPmessages_Messages &messages,
|
||||||
|
int requestId) {
|
||||||
Expects(_history != nullptr);
|
Expects(_history != nullptr);
|
||||||
|
|
||||||
bool toMigrated = (peer == _peer->migrateFrom());
|
bool toMigrated = (peer == _peer->migrateFrom());
|
||||||
|
@ -3057,8 +3060,9 @@ void HistoryWidget::messagesReceived(PeerData *peer, const MTPmessages_Messages
|
||||||
} break;
|
} break;
|
||||||
case mtpc_messages_channelMessages: {
|
case mtpc_messages_channelMessages: {
|
||||||
auto &d(messages.c_messages_channelMessages());
|
auto &d(messages.c_messages_channelMessages());
|
||||||
if (peer && peer->isChannel()) {
|
if (const auto channel = peer->asChannel()) {
|
||||||
peer->asChannel()->ptsReceived(d.vpts().v);
|
channel->ptsReceived(d.vpts().v);
|
||||||
|
channel->processTopics(d.vtopics());
|
||||||
} else {
|
} else {
|
||||||
LOG(("API Error: received messages.channelMessages when no channel was passed! (HistoryWidget::messagesReceived)"));
|
LOG(("API Error: received messages.channelMessages when no channel was passed! (HistoryWidget::messagesReceived)"));
|
||||||
}
|
}
|
||||||
|
@ -5668,7 +5672,9 @@ std::optional<int> HistoryWidget::unreadBarTop() const {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistoryWidget::addMessagesToFront(PeerData *peer, const QVector<MTPMessage> &messages) {
|
void HistoryWidget::addMessagesToFront(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
|
const QVector<MTPMessage> &messages) {
|
||||||
_list->messagesReceived(peer, messages);
|
_list->messagesReceived(peer, messages);
|
||||||
if (!_firstLoadRequest) {
|
if (!_firstLoadRequest) {
|
||||||
updateHistoryGeometry();
|
updateHistoryGeometry();
|
||||||
|
@ -5677,7 +5683,7 @@ void HistoryWidget::addMessagesToFront(PeerData *peer, const QVector<MTPMessage>
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistoryWidget::addMessagesToBack(
|
void HistoryWidget::addMessagesToBack(
|
||||||
PeerData *peer,
|
not_null<PeerData*> peer,
|
||||||
const QVector<MTPMessage> &messages) {
|
const QVector<MTPMessage> &messages) {
|
||||||
const auto checkForUnreadStart = [&] {
|
const auto checkForUnreadStart = [&] {
|
||||||
if (_history->unreadBar() || !_history->trackUnreadMessages()) {
|
if (_history->unreadBar() || !_history->trackUnreadMessages()) {
|
||||||
|
|
|
@ -522,10 +522,10 @@ private:
|
||||||
void checkPreview();
|
void checkPreview();
|
||||||
void requestPreview();
|
void requestPreview();
|
||||||
void gotPreview(QString links, const MTPMessageMedia &media, mtpRequestId req);
|
void gotPreview(QString links, const MTPMessageMedia &media, mtpRequestId req);
|
||||||
void messagesReceived(PeerData *peer, const MTPmessages_Messages &messages, int requestId);
|
void messagesReceived(not_null<PeerData*> peer, const MTPmessages_Messages &messages, int requestId);
|
||||||
void messagesFailed(const MTP::Error &error, int requestId);
|
void messagesFailed(const MTP::Error &error, int requestId);
|
||||||
void addMessagesToFront(PeerData *peer, const QVector<MTPMessage> &messages);
|
void addMessagesToFront(not_null<PeerData*> peer, const QVector<MTPMessage> &messages);
|
||||||
void addMessagesToBack(PeerData *peer, const QVector<MTPMessage> &messages);
|
void addMessagesToBack(not_null<PeerData*> peer, const QVector<MTPMessage> &messages);
|
||||||
|
|
||||||
void updateHistoryGeometry(bool initial = false, bool loadedDown = false, const ScrollChange &change = { ScrollChangeNone, 0 });
|
void updateHistoryGeometry(bool initial = false, bool loadedDown = false, const ScrollChange &change = { ScrollChangeNone, 0 });
|
||||||
void updateListSize();
|
void updateListSize();
|
||||||
|
|
Loading…
Add table
Reference in a new issue