From f1cc64ec16e76c2febf2eb2ec37999e3087581cf Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 22 Nov 2019 13:41:17 +0300 Subject: [PATCH] Add userPrivacySettingAllowFindingByPhoneNumber. GitOrigin-RevId: f1d03087d185a9df52ab24ecb5ba93e54df9895e --- td/generate/scheme/td_api.tl | 3 +++ td/generate/scheme/td_api.tlo | Bin 164260 -> 164344 bytes td/telegram/PrivacyManager.cpp | 22 ++++++++++++++++++++-- td/telegram/PrivacyManager.h | 1 + td/telegram/cli.cpp | 4 ++++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index f1aae2847..f7b260d27 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -2372,6 +2372,9 @@ userPrivacySettingAllowCalls = UserPrivacySetting; //@description A privacy setting for managing whether peer-to-peer connections can be used for calls userPrivacySettingAllowPeerToPeerCalls = UserPrivacySetting; +//@description A privacy setting for managing whether the user can be found by its phone number. Checked only if the phone number is not known to the other user. Can be set only to "Allow contacts" or "Allow all" +userPrivacySettingAllowFindingByPhoneNumber = UserPrivacySetting; + //@description Contains information about the period of inactivity after which the current user's account will automatically be deleted @days Number of days of inactivity before the account will be flagged for deletion; should range from 30-366 days accountTtl days:int32 = AccountTtl; diff --git a/td/generate/scheme/td_api.tlo b/td/generate/scheme/td_api.tlo index 10c6a9682aa31eb2280a97af591db5bff0adecc2..95a49e4694afab008fec441de9fceb85b7ca2d0b 100644 GIT binary patch delta 381 zcmZ3|%=M$0YeR^JHmg#sk6}52-ZL-NeMhi_`ZU*@Q1g^?)#RTTQo2Wf~<6cH_9k^_yMLLn?L{n delta 308 zcmey-%(bMMYeR^J PrivacyManager::UserPrivacySetting::as return make_tl_object(); case Type::UserPhoneNumber: return make_tl_object(); + case Type::FindByPhoneNumber: + return make_tl_object(); default: UNREACHABLE(); return nullptr; @@ -98,6 +103,8 @@ tl_object_ptr PrivacyManager::UserPrivacySetting: return make_tl_object(); case Type::UserPhoneNumber: return make_tl_object(); + case Type::FindByPhoneNumber: + return make_tl_object(); default: UNREACHABLE(); return nullptr; @@ -127,6 +134,9 @@ PrivacyManager::UserPrivacySetting::UserPrivacySetting(const td_api::UserPrivacy case td_api::userPrivacySettingShowPhoneNumber::ID: type_ = Type::UserPhoneNumber; break; + case td_api::userPrivacySettingAllowFindingByPhoneNumber::ID: + type_ = Type::FindByPhoneNumber; + break; default: UNREACHABLE(); type_ = Type::UserStatus; @@ -348,6 +358,10 @@ Result PrivacyManager::UserPrivacySetti TRY_RESULT(new_rule, UserPrivacySettingRule::from_telegram_api(std::move(rule))); result.rules_.push_back(new_rule); } + if (!result.rules_.empty() && + result.rules_.back().as_td_api()->get_id() == td_api::userPrivacySettingRuleRestrictAll::ID) { + result.rules_.pop_back(); + } return result; } @@ -372,7 +386,11 @@ tl_object_ptr PrivacyManager::UserPrivacySettin } vector> PrivacyManager::UserPrivacySettingRules::as_telegram_api() const { - return transform(rules_, [](const auto &rule) { return rule.as_telegram_api(); }); + auto result = transform(rules_, [](const auto &rule) { return rule.as_telegram_api(); }); + if (!result.empty() && result.back()->get_id() == telegram_api::inputPrivacyValueDisallowAll::ID) { + result.pop_back(); + } + return result; } void PrivacyManager::get_privacy(tl_object_ptr key, @@ -432,11 +450,11 @@ void PrivacyManager::set_privacy(tl_object_ptr key, PromiseCreator::lambda([this, user_privacy_setting, promise = std::move(promise)](Result x_net_query) mutable { promise.set_result([&]() -> Result { + get_info(user_privacy_setting).has_set_query = false; TRY_RESULT(net_query, std::move(x_net_query)); TRY_RESULT(rules, fetch_result(std::move(net_query))); LOG(INFO) << "Receive " << to_string(rules); TRY_RESULT(privacy_rules, UserPrivacySettingRules::from_telegram_api(std::move(rules))); - get_info(user_privacy_setting).has_set_query = false; do_update_privacy(user_privacy_setting, std::move(privacy_rules), true); return Unit(); }()); diff --git a/td/telegram/PrivacyManager.h b/td/telegram/PrivacyManager.h index d8e2056f7..f6eab5ee9 100644 --- a/td/telegram/PrivacyManager.h +++ b/td/telegram/PrivacyManager.h @@ -45,6 +45,7 @@ class PrivacyManager : public NetQueryCallback { LinkInForwardedMessages, UserProfilePhoto, UserPhoneNumber, + FindByPhoneNumber, Size }; diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 1488fb8e5..7057a4024 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -951,6 +951,9 @@ class CliClient final : public Actor { if (setting == "phone_number") { return td_api::make_object(); } + if (setting == "find") { + return td_api::make_object(); + } return nullptr; } @@ -1579,6 +1582,7 @@ class CliClient final : public Actor { rules.push_back(td_api::make_object(as_chat_ids(ids))); } else if (as_bool(allow)) { rules.push_back(td_api::make_object()); + rules.push_back(td_api::make_object()); } else { rules.push_back(td_api::make_object()); }