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

Method requestContacts

Telegram/SourceFiles/export/export_api_wrap.cpp:1338–1376  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1336}
1337
1338void ApiWrap::requestContacts(FnMut<void(Data::ContactsList&&)> done) {
1339 Expects(_contactsProcess == nullptr);
1340
1341 _contactsProcess = std::make_unique<ContactsProcess>();
1342 _contactsProcess->done = std::move(done);
1343 mainRequest(MTPcontacts_GetSaved(
1344 )).done([=](const MTPVector<MTPSavedContact> &result) {
1345 _contactsProcess->result = Data::ParseContactsList(result);
1346
1347 const auto resolve = [=](int index, const auto &resolveNext) -> void {
1348 if (index == _contactsProcess->result.list.size()) {
1349 return requestTopPeersSlice();
1350 }
1351 const auto &contact = _contactsProcess->result.list[index];
1352 mainRequest(MTPcontacts_ResolvePhone(
1353 MTP_string(qs(contact.phoneNumber))
1354 )).done([=](const MTPcontacts_ResolvedPeer &result) {
1355 auto &contact = _contactsProcess->result.list[index];
1356 contact.userId = result.data().vpeer().match([&](
1357 const MTPDpeerUser &user) {
1358 return UserId(user.vuser_id());
1359 }, [](const auto &) {
1360 return UserId();
1361 });
1362 resolveNext(index + 1, resolveNext);
1363 }).fail([=](const MTP::Error &) {
1364 resolveNext(index + 1, resolveNext);
1365 return true;
1366 }).send();
1367 };
1368
1369 if (base::options::lookup<bool>("show-peer-id-below-about").value()) {
1370 resolve(0, resolve);
1371 } else {
1372 requestTopPeersSlice();
1373 }
1374
1375 }).send();
1376}
1377
1378void ApiWrap::requestTopPeersSlice() {
1379 Expects(_contactsProcess != nullptr);

Callers 1

exportContactsMethod · 0.45

Calls 10

ParseContactsListFunction · 0.85
MTP_stringFunction · 0.85
qsFunction · 0.85
UserIdClass · 0.50
sendMethod · 0.45
doneMethod · 0.45
sizeMethod · 0.45
failMethod · 0.45
dataMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected