MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / requestTopicMessages

Method requestTopicMessages

Telegram/SourceFiles/export/export_api_wrap.cpp:2324–2412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2322}
2323
2324void ApiWrap::requestTopicMessages(
2325 PeerId peerId,
2326 MTPInputPeer inputPeer,
2327 int32 topicRootId,
2328 FnMut<bool(int count)> start,
2329 Fn<bool(DownloadProgress)> progress,
2330 Fn<bool(Data::MessagesSlice&&)> slice,
2331 FnMut<void()> done) {
2332 Expects(_topicProcess == nullptr);
2333 Expects(_selfId.has_value());
2334
2335 _topicProcess = std::make_unique<TopicProcess>();
2336 _topicProcess->context.selfPeerId = peerFromUser(*_selfId);
2337 _topicProcess->peerId = peerId;
2338 _topicProcess->inputPeer = inputPeer;
2339 _topicProcess->topicRootId = topicRootId;
2340 _topicProcess->relativePath = "chats/chat_"
2341 + QString::number(peerId.value)
2342 + "/topic_"
2343 + QString::number(topicRootId)
2344 + "/";
2345 _topicProcess->start = std::move(start);
2346 _topicProcess->fileProgress = std::move(progress);
2347 _topicProcess->handleSlice = std::move(slice);
2348 _topicProcess->done = std::move(done);
2349
2350 mainRequest(MTPchannels_GetMessages(
2351 MTP_inputChannel(
2352 inputPeer.c_inputPeerChannel().vchannel_id(),
2353 inputPeer.c_inputPeerChannel().vaccess_hash()),
2354 MTP_vector<MTPInputMessage>(
2355 1,
2356 MTP_inputMessageID(MTP_int(topicRootId)))
2357 )).done([=](const MTPmessages_Messages &rootResult) {
2358 Expects(_topicProcess != nullptr);
2359
2360 auto rootSlice = rootResult.match([&](
2361 const MTPDmessages_messagesNotModified &) {
2362 return Data::MessagesSlice();
2363 }, [&](const auto &data) {
2364 return Data::ParseMessagesSlice(
2365 _topicProcess->context,
2366 data.vmessages(),
2367 data.vusers(),
2368 data.vchats(),
2369 _topicProcess->relativePath);
2370 });
2371
2372 auto rootSlicePtr = std::make_shared<Data::MessagesSlice>(
2373 std::move(rootSlice));
2374
2375 requestTopicReplies(
2376 0,
2377 0,
2378 kMessagesSliceLimit,
2379 [=](const MTPmessages_Messages &result) {
2380 Expects(_topicProcess != nullptr);
2381

Callers 1

exportTopicMethod · 0.80

Calls 11

peerFromUserFunction · 0.85
ParseMessagesSliceFunction · 0.85
errorFunction · 0.85
has_valueMethod · 0.80
MessagesSliceClass · 0.70
MTP_intFunction · 0.50
sendMethod · 0.45
doneMethod · 0.45
sizeMethod · 0.45
startMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected