Added ability to export peer ids from contact list.

This commit is contained in:
23rd
2024-02-17 17:34:35 +03:00
parent f20e393d77
commit e79be73025
3 changed files with 48 additions and 5 deletions
@@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "export/output/export_output_file.h"
#include "mtproto/mtproto_response.h"
#include "base/bytes.h"
#include "base/options.h"
#include "base/random.h"
#include <set>
#include <deque>
@@ -1069,7 +1070,35 @@ void ApiWrap::requestContacts(FnMut<void(Data::ContactsList&&)> done) {
mainRequest(MTPcontacts_GetSaved(
)).done([=](const MTPVector<MTPSavedContact> &result) {
_contactsProcess->result = Data::ParseContactsList(result);
requestTopPeersSlice();
const auto resolve = [=](int index, const auto &resolveNext) -> void {
if (index == _contactsProcess->result.list.size()) {
return requestTopPeersSlice();
}
const auto &contact = _contactsProcess->result.list[index];
mainRequest(MTPcontacts_ResolvePhone(
MTP_string(qs(contact.phoneNumber))
)).done([=](const MTPcontacts_ResolvedPeer &result) {
auto &contact = _contactsProcess->result.list[index];
contact.userId = result.data().vpeer().match([&](
const MTPDpeerUser &user) {
return UserId(user.vuser_id());
}, [](const auto &) {
return UserId();
});
resolveNext(index + 1, resolveNext);
}).fail([=](const MTP::Error &) {
resolveNext(index + 1, resolveNext);
return true;
}).send();
};
if (base::options::lookup<bool>("show-peer-id-below-about").value()) {
resolve(0, resolve);
} else {
requestTopPeersSlice();
}
}).send();
}