Skip to content

Commit dac96a4

Browse files
committed
Add and use get_contacts.
1 parent 2af6168 commit dac96a4

3 files changed

Lines changed: 20 additions & 18 deletions

File tree

td/telegram/Contact.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,16 @@ Result<Contact> get_contact(Td *td, td_api::object_ptr<td_api::importedContact>
157157
edit_note, std::move(note_text));
158158
}
159159

160+
Result<vector<Contact>> get_contacts(Td *td, vector<td_api::object_ptr<td_api::importedContact>> &&imported_contacts) {
161+
vector<Contact> contacts;
162+
contacts.reserve(imported_contacts.size());
163+
for (auto &imported_contact : imported_contacts) {
164+
TRY_RESULT(contact, get_contact(td, std::move(imported_contact)));
165+
contacts.push_back(std::move(contact));
166+
}
167+
return contacts;
168+
}
169+
160170
Result<Contact> process_input_message_contact(Td *td,
161171
td_api::object_ptr<td_api::InputMessageContent> &&input_message_content) {
162172
CHECK(input_message_content != nullptr);

td/telegram/Contact.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ Result<Contact> get_contact(Td *td, td_api::object_ptr<td_api::contact> &&contac
162162

163163
Result<Contact> get_contact(Td *td, td_api::object_ptr<td_api::importedContact> &&contact) TD_WARN_UNUSED_RESULT;
164164

165+
Result<vector<Contact>> get_contacts(Td *td, vector<td_api::object_ptr<td_api::importedContact>> &&contacts);
166+
165167
Result<Contact> process_input_message_contact(
166168
Td *td, td_api::object_ptr<td_api::InputMessageContent> &&input_message_content) TD_WARN_UNUSED_RESULT;
167169

td/telegram/Requests.cpp

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6224,16 +6224,11 @@ void Requests::on_request(uint64 id, td_api::addContact &request) {
62246224

62256225
void Requests::on_request(uint64 id, td_api::importContacts &request) {
62266226
CHECK_IS_USER();
6227-
vector<Contact> contacts;
6228-
contacts.reserve(request.contacts_.size());
6229-
for (auto &contact : request.contacts_) {
6230-
auto r_contact = get_contact(td_, std::move(contact));
6231-
if (r_contact.is_error()) {
6232-
return send_closure(td_actor_, &Td::send_error, id, r_contact.move_as_error());
6233-
}
6234-
contacts.push_back(r_contact.move_as_ok());
6227+
auto r_contacts = get_contacts(td_, std::move(request.contacts_));
6228+
if (r_contacts.is_error()) {
6229+
return send_closure(td_actor_, &Td::send_error, id, r_contacts.move_as_error());
62356230
}
6236-
CREATE_REQUEST(ImportContactsRequest, std::move(contacts));
6231+
CREATE_REQUEST(ImportContactsRequest, r_contacts.move_as_ok());
62376232
}
62386233

62396234
void Requests::on_request(uint64 id, const td_api::getContacts &request) {
@@ -6260,16 +6255,11 @@ void Requests::on_request(uint64 id, const td_api::getImportedContactCount &requ
62606255

62616256
void Requests::on_request(uint64 id, td_api::changeImportedContacts &request) {
62626257
CHECK_IS_USER();
6263-
vector<Contact> contacts;
6264-
contacts.reserve(request.contacts_.size());
6265-
for (auto &contact : request.contacts_) {
6266-
auto r_contact = get_contact(td_, std::move(contact));
6267-
if (r_contact.is_error()) {
6268-
return send_closure(td_actor_, &Td::send_error, id, r_contact.move_as_error());
6269-
}
6270-
contacts.push_back(r_contact.move_as_ok());
6258+
auto r_contacts = get_contacts(td_, std::move(request.contacts_));
6259+
if (r_contacts.is_error()) {
6260+
return send_closure(td_actor_, &Td::send_error, id, r_contacts.move_as_error());
62716261
}
6272-
CREATE_REQUEST(ChangeImportedContactsRequest, std::move(contacts));
6262+
CREATE_REQUEST(ChangeImportedContactsRequest, r_contacts.move_as_ok());
62736263
}
62746264

62756265
void Requests::on_request(uint64 id, const td_api::clearImportedContacts &request) {

0 commit comments

Comments
 (0)