diff --git a/td/generate/scheme/telegram_api.tl b/td/generate/scheme/telegram_api.tl index 9fe4ec56..08f16a8e 100644 --- a/td/generate/scheme/telegram_api.tl +++ b/td/generate/scheme/telegram_api.tl @@ -111,11 +111,11 @@ userStatusLastMonth#77ebc742 = UserStatus; chatEmpty#9ba2d800 id:int = Chat; chat#3bda1bde flags:# creator:flags.0?true kicked:flags.1?true left:flags.2?true deactivated:flags.5?true id:int title:string photo:ChatPhoto participants_count:int date:int version:int migrated_to:flags.6?InputChannel admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = Chat; chatForbidden#7328bdb id:int title:string = Chat; -channel#4df30834 flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true id:int access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int version:int restriction_reason:flags.9?string admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int = Chat; +channel#4df30834 flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true id:int access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int version:int restriction_reason:flags.9?string admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int = Chat; channelForbidden#289da732 flags:# broadcast:flags.5?true megagroup:flags.8?true id:int access_hash:long title:string until_date:flags.16?int = Chat; chatFull#1b7c9db3 flags:# can_set_username:flags.7?true id:int about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:flags.3?Vector pinned_msg_id:flags.6?int folder_id:flags.11?int = ChatFull; -channelFull#10916653 flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_view_stats:flags.12?true can_set_location:flags.16?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation pts:int = ChatFull; +channelFull#2d895c74 flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_view_stats:flags.12?true can_set_location:flags.16?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int pts:int = ChatFull; chatParticipant#c8d7493e user_id:int inviter_id:int date:int = ChatParticipant; chatParticipantCreator#da13538a user_id:int = ChatParticipant; @@ -182,9 +182,10 @@ photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize; geoPointEmpty#1117dd5f = GeoPoint; geoPoint#296f104 long:double lat:double access_hash:long = GeoPoint; -auth.sentCode#38faab5f flags:# phone_registered:flags.0?true type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int terms_of_service:flags.3?help.TermsOfService = auth.SentCode; +auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode; auth.authorization#cd050916 flags:# tmp_sessions:flags.0?int user:User = auth.Authorization; +auth.authorizationSignUpRequired#44747e9a flags:# terms_of_service:flags.0?help.TermsOfService = auth.Authorization; auth.exportedAuthorization#df969c2d id:int bytes:bytes = auth.ExportedAuthorization; @@ -504,6 +505,7 @@ chatInvite#dfc2f58e flags:# channel:flags.0?true broadcast:flags.1?true public:f inputStickerSetEmpty#ffb62b95 = InputStickerSet; inputStickerSetID#9de7a269 id:long access_hash:long = InputStickerSet; inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet; +inputStickerSetAnimatedEmoji#28703c8 = InputStickerSet; stickerSet#eeb46f27 flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumb:flags.4?PhotoSize thumb_dc_id:flags.4?int count:int hash:int = StickerSet; @@ -567,8 +569,8 @@ channelMessagesFilter#cd77d957 flags:# exclude_new_messages:flags.1?true ranges: channelParticipant#15ebac1d user_id:int date:int = ChannelParticipant; channelParticipantSelf#a3289a6d user_id:int inviter_id:int date:int = ChannelParticipant; -channelParticipantCreator#e3e2e1f9 user_id:int = ChannelParticipant; -channelParticipantAdmin#5daa6e23 flags:# can_edit:flags.0?true self:flags.1?true user_id:int inviter_id:flags.1?int promoted_by:int date:int admin_rights:ChatAdminRights = ChannelParticipant; +channelParticipantCreator#808d15a4 flags:# user_id:int rank:flags.0?string = ChannelParticipant; +channelParticipantAdmin#ccbebbaf flags:# can_edit:flags.0?true self:flags.1?true user_id:int inviter_id:flags.1?int promoted_by:int date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant; channelParticipantBanned#1c0facaf flags:# left:flags.0?true user_id:int kicked_by:int date:int banned_rights:ChatBannedRights = ChannelParticipant; channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter; @@ -769,7 +771,7 @@ payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password payments.validatedRequestedInfo#d1451883 flags:# id:flags.0?string shipping_options:flags.1?Vector = payments.ValidatedRequestedInfo; payments.paymentResult#4e5f810d updates:Updates = payments.PaymentResult; -payments.paymentVerficationNeeded#6b56b921 url:string = payments.PaymentResult; +payments.paymentVerificationNeeded#d8411139 url:string = payments.PaymentResult; payments.paymentReceipt#500911e1 flags:# date:int bot_id:int invoice:Invoice provider_id:int info:flags.0?PaymentRequestedInfo shipping:flags.1?ShippingOption currency:string total_amount:long credentials_title:string users:Vector = payments.PaymentReceipt; @@ -836,6 +838,7 @@ channelAdminLogEventActionDefaultBannedRights#2df5fc0a prev_banned_rights:ChatBa channelAdminLogEventActionStopPoll#8f079643 message:Message = ChannelAdminLogEventAction; channelAdminLogEventActionChangeLinkedChat#a26f881b prev_value:int new_value:int = ChannelAdminLogEventAction; channelAdminLogEventActionChangeLocation#e6b76ae prev_value:ChannelLocation new_value:ChannelLocation = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleSlowMode#53909779 prev_value:int new_value:int = ChannelAdminLogEventAction; channelAdminLogEvent#3b5a3e40 id:long date:int user_id:int action:ChannelAdminLogEventAction = ChannelAdminLogEvent; @@ -1011,7 +1014,7 @@ inputWallPaperSlug#72091c80 slug:string = InputWallPaper; account.wallPapersNotModified#1c199183 = account.WallPapers; account.wallPapers#702b65a9 hash:int wallpapers:Vector = account.WallPapers; -codeSettings#302f59f3 flags:# allow_flashcall:flags.0?true current_number:flags.1?true app_hash_persistent:flags.2?true app_hash:flags.3?string = CodeSettings; +codeSettings#debebe83 flags:# allow_flashcall:flags.0?true current_number:flags.1?true allow_app_hash:flags.4?true = CodeSettings; wallPaperSettings#a12f40b8 flags:# blur:flags.1?true motion:flags.2?true background_color:flags.0?int intensity:flags.3?int = WallPaperSettings; @@ -1062,7 +1065,7 @@ invokeWithMessagesRange#365275f2 {X:Type} range:MessageRange query:!X = X; invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X; auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode; -auth.signUp#1b067634 phone_number:string phone_code_hash:string phone_code:string first_name:string last_name:string = auth.Authorization; +auth.signUp#80eee427 phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; auth.signIn#bcd51581 phone_number:string phone_code_hash:string phone_code:string = auth.Authorization; auth.logOut#5717da40 = Bool; auth.resetAuthorizations#9fab0d1a = Bool; @@ -1281,7 +1284,7 @@ photos.deletePhotos#87cf7f2f id:Vector = Vector; photos.getUserPhotos#91cd32a8 user_id:InputUser offset:int max_id:long limit:int = photos.Photos; upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool; -upload.getFile#e3a6cfb5 location:InputFileLocation offset:int limit:int = upload.File; +upload.getFile#b15a9afc flags:# precise:flags.0?true location:InputFileLocation offset:int limit:int = upload.File; upload.saveBigFilePart#de7b673d file_id:long file_part:int file_total_parts:int bytes:bytes = Bool; upload.getWebFile#24e6818d location:InputWebFileLocation offset:int limit:int = upload.WebFile; upload.getCdnFile#2000bcc3 file_token:bytes offset:int limit:int = upload.CdnFile; @@ -1319,7 +1322,7 @@ channels.getParticipant#546dd7a6 channel:InputChannel user_id:InputUser = channe channels.getChannels#a7f6bbb id:Vector = messages.Chats; channels.getFullChannel#8736a09 channel:InputChannel = messages.ChatFull; channels.createChannel#3d5fb10f flags:# broadcast:flags.0?true megagroup:flags.1?true title:string about:string geo_point:flags.2?InputGeoPoint address:flags.2?string = Updates; -channels.editAdmin#70f893ba channel:InputChannel user_id:InputUser admin_rights:ChatAdminRights = Updates; +channels.editAdmin#d33c8902 channel:InputChannel user_id:InputUser admin_rights:ChatAdminRights rank:string = Updates; channels.editTitle#566decd0 channel:InputChannel title:string = Updates; channels.editPhoto#f12e57c9 channel:InputChannel photo:InputChatPhoto = Updates; channels.checkUsername#10e6bd2c channel:InputChannel username:string = Bool; @@ -1342,6 +1345,7 @@ channels.getGroupsForDiscussion#f5dad378 = messages.Chats; channels.setDiscussionGroup#40582bb2 broadcast:InputChannel group:InputChannel = Bool; channels.editCreator#8f38cd1f channel:InputChannel user_id:InputUser password:InputCheckPasswordSRP = Updates; channels.editLocation#58e63f6d channel:InputChannel geo_point:InputGeoPoint address:string = Bool; +channels.toggleSlowMode#edd49ef0 channel:InputChannel seconds:int = Updates; bots.sendCustomRequest#aa2769ed custom_method:string params:DataJSON = DataJSON; bots.answerWebhookJSONQuery#e6213f4d query_id:long data:DataJSON = Bool; diff --git a/td/generate/scheme/telegram_api.tlo b/td/generate/scheme/telegram_api.tlo index 280e1811..370ee079 100644 Binary files a/td/generate/scheme/telegram_api.tlo and b/td/generate/scheme/telegram_api.tlo differ diff --git a/td/telegram/AuthManager.cpp b/td/telegram/AuthManager.cpp index 4f73cef5..4ed39867 100644 --- a/td/telegram/AuthManager.cpp +++ b/td/telegram/AuthManager.cpp @@ -254,10 +254,10 @@ void AuthManager::register_user(uint64 query_id, string first_name, string last_ last_name = clean_name(last_name, MAX_NAME_LENGTH); start_net_query( NetQueryType::SignUp, - G()->net_query_creator().create(create_storer(telegram_api::auth_signUp(send_code_helper_.phone_number().str(), - send_code_helper_.phone_code_hash().str(), - code_, first_name, last_name)), - DcId::main(), NetQuery::Type::Common, NetQuery::AuthFlag::Off)); + G()->net_query_creator().create( + create_storer(telegram_api::auth_signUp(send_code_helper_.phone_number().str(), + send_code_helper_.phone_code_hash().str(), first_name, last_name)), + DcId::main(), NetQuery::Type::Common, NetQuery::AuthFlag::Off)); } void AuthManager::check_password(uint64 query_id, string password) { @@ -391,10 +391,6 @@ void AuthManager::on_send_code_result(NetQueryPtr &result) { LOG(INFO) << "Receive " << to_string(sent_code); - if (terms_of_service_.get_id().empty()) { - terms_of_service_ = TermsOfService(std::move(sent_code->terms_of_service_)); - } - send_code_helper_.on_sent_code(std::move(sent_code)); update_state(State::WaitCode, true); @@ -476,9 +472,7 @@ void AuthManager::on_authentication_result(NetQueryPtr &result, bool expected_fl } return; } - auto sign_in = r_sign_in.move_as_ok(); - CHECK(sign_in->get_id() == telegram_api::auth_authorization::ID); - on_authorization(std::move(sign_in)); + on_authorization(r_sign_in.move_as_ok()); } void AuthManager::on_log_out_result(NetQueryPtr &result) { @@ -549,14 +543,26 @@ void AuthManager::on_delete_account_result(NetQueryPtr &result) { } } -void AuthManager::on_authorization(tl_object_ptr auth) { +void AuthManager::on_authorization(tl_object_ptr auth_ptr) { if (state_ == State::Ok) { - LOG(WARNING) << "Ignore duplicated auth.authorization"; + LOG(WARNING) << "Ignore duplicated auth.Authorization"; if (query_id_ != 0) { on_query_ok(); } return; } + CHECK(auth_ptr != nullptr); + if (auth_ptr->get_id() == telegram_api::auth_authorizationSignUpRequired::ID) { + auto sign_up_required = telegram_api::move_object_as(auth_ptr); + terms_of_service_ = TermsOfService(std::move(sign_up_required->terms_of_service_)); + update_state(State::WaitRegistration); + if (query_id_ != 0) { + on_query_ok(); + } + return; + } + auto auth = telegram_api::move_object_as(auth_ptr); + G()->shared_config().set_option_integer("authorization_date", G()->unix_time()); if (was_check_bot_token_) { is_bot_ = true; @@ -610,12 +616,6 @@ void AuthManager::on_result(NetQueryPtr result) { DcId::main(), NetQuery::Type::Common, NetQuery::AuthFlag::Off)); return; } - if (type == NetQueryType::SignIn && result->error().message() == CSlice("PHONE_NUMBER_UNOCCUPIED")) { - code_ = "11111"; - update_state(State::WaitRegistration); - on_query_ok(); - return; - } if (type != NetQueryType::LogOut) { if (query_id_ != 0) { if (state_ == State::WaitPhoneNumber) { @@ -697,7 +697,7 @@ bool AuthManager::load_state() { return false; } if (!db_state.state_timestamp_.is_in_past()) { - LOG(INFO) << "Ignore auth_state: timestamp in future"; + LOG(INFO) << "Ignore auth_state: timestamp in the future"; return false; } if (Timestamp::at(db_state.state_timestamp_.at() + 5 * 60).is_in_past()) { @@ -708,11 +708,10 @@ bool AuthManager::load_state() { LOG(INFO) << "Load auth_state from database: " << tag("state", static_cast(db_state.state_)); if (db_state.state_ == State::WaitCode) { send_code_helper_ = std::move(db_state.send_code_helper_); - terms_of_service_ = std::move(db_state.terms_of_service_); } else if (db_state.state_ == State::WaitPassword) { wait_password_state_ = std::move(db_state.wait_password_state_); } else if (db_state.state_ == State::WaitRegistration) { - code_ = "11111"; // the code has already been checked + send_code_helper_ = std::move(db_state.send_code_helper_); terms_of_service_ = std::move(db_state.terms_of_service_); } else { UNREACHABLE(); @@ -731,12 +730,12 @@ void AuthManager::save_state() { DbState db_state = [&] { if (state_ == State::WaitCode) { - return DbState::wait_code(api_id_, api_hash_, send_code_helper_, terms_of_service_); + return DbState::wait_code(api_id_, api_hash_, send_code_helper_); } else if (state_ == State::WaitPassword) { return DbState::wait_password(api_id_, api_hash_, wait_password_state_); } else { CHECK(state_ == State::WaitRegistration); - return DbState::wait_registration(api_id_, api_hash_, terms_of_service_); + return DbState::wait_registration(api_id_, api_hash_, send_code_helper_, terms_of_service_); } }(); G()->td_db()->get_binlog_pmc()->set("auth_state", log_event_store(db_state).as_slice().str()); diff --git a/td/telegram/AuthManager.h b/td/telegram/AuthManager.h index 8521f4e4..32ecf28b 100644 --- a/td/telegram/AuthManager.h +++ b/td/telegram/AuthManager.h @@ -112,12 +112,9 @@ class AuthManager : public NetActor { TermsOfService terms_of_service_; DbState() = default; - // TODO layer 104+: remove terms_of_service - static DbState wait_code(int32 api_id, string api_hash, SendCodeHelper send_code_helper, - TermsOfService terms_of_service) { + static DbState wait_code(int32 api_id, string api_hash, SendCodeHelper send_code_helper) { DbState state(State::WaitCode, api_id, api_hash); state.send_code_helper_ = std::move(send_code_helper); - state.terms_of_service_ = std::move(terms_of_service); return state; } @@ -127,8 +124,10 @@ class AuthManager : public NetActor { return state; } - static DbState wait_registration(int32 api_id, string api_hash, TermsOfService terms_of_service) { + static DbState wait_registration(int32 api_id, string api_hash, SendCodeHelper send_code_helper, + TermsOfService terms_of_service) { DbState state(State::WaitRegistration, api_id, api_hash); + state.send_code_helper_ = std::move(send_code_helper); state.terms_of_service_ = std::move(terms_of_service); return state; } @@ -191,7 +190,7 @@ class AuthManager : public NetActor { void on_authentication_result(NetQueryPtr &result, bool expected_flag); void on_log_out_result(NetQueryPtr &result); void on_delete_account_result(NetQueryPtr &result); - void on_authorization(tl_object_ptr auth); + void on_authorization(tl_object_ptr auth_ptr); void on_result(NetQueryPtr result) override; diff --git a/td/telegram/AuthManager.hpp b/td/telegram/AuthManager.hpp index 26b78eeb..df5415aa 100644 --- a/td/telegram/AuthManager.hpp +++ b/td/telegram/AuthManager.hpp @@ -52,11 +52,13 @@ void AuthManager::DbState::store(StorerT &storer) const { bool is_pbkdf2_supported = true; bool is_srp_supported = true; bool is_wait_registration_supported = true; + bool is_wait_registration_stores_phone_number = true; BEGIN_STORE_FLAGS(); STORE_FLAG(has_terms_of_service); STORE_FLAG(is_pbkdf2_supported); STORE_FLAG(is_srp_supported); STORE_FLAG(is_wait_registration_supported); + STORE_FLAG(is_wait_registration_stores_phone_number); END_STORE_FLAGS(); store(state_, storer); store(api_id_, storer); @@ -72,6 +74,7 @@ void AuthManager::DbState::store(StorerT &storer) const { } else if (state_ == State::WaitPassword) { store(wait_password_state_, storer); } else if (state_ == State::WaitRegistration) { + store(send_code_helper_, storer); } else { UNREACHABLE(); } @@ -84,15 +87,17 @@ void AuthManager::DbState::parse(ParserT &parser) { bool is_pbkdf2_supported = false; bool is_srp_supported = false; bool is_wait_registration_supported = false; + bool is_wait_registration_stores_phone_number = false; if (parser.version() >= static_cast(Version::AddTermsOfService)) { BEGIN_PARSE_FLAGS(); PARSE_FLAG(has_terms_of_service); PARSE_FLAG(is_pbkdf2_supported); PARSE_FLAG(is_srp_supported); PARSE_FLAG(is_wait_registration_supported); + PARSE_FLAG(is_wait_registration_stores_phone_number); END_PARSE_FLAGS(); } - if (!is_wait_registration_supported) { + if (!is_wait_registration_stores_phone_number) { return parser.set_error("Have no wait registration support"); } CHECK(is_pbkdf2_supported); @@ -112,6 +117,7 @@ void AuthManager::DbState::parse(ParserT &parser) { } else if (state_ == State::WaitPassword) { parse(wait_password_state_, parser); } else if (state_ == State::WaitRegistration) { + parse(send_code_helper_, parser); } else { parser.set_error(PSTRING() << "Unexpected " << tag("state", static_cast(state_))); } diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index f1b76153..a071a80e 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -1767,7 +1767,7 @@ class EditChannelAdminQuery : public Td::ResultHandler { auto input_channel = td->contacts_manager_->get_input_channel(channel_id); CHECK(input_channel != nullptr); send_query(G()->net_query_creator().create(create_storer(telegram_api::channels_editAdmin( - std::move(input_channel), std::move(input_user), status.get_chat_admin_rights())))); + std::move(input_channel), std::move(input_user), status.get_chat_admin_rights(), string())))); } void on_result(uint64 id, BufferSlice packet) override { diff --git a/td/telegram/Payments.cpp b/td/telegram/Payments.cpp index 74fd75ec..f47872e1 100644 --- a/td/telegram/Payments.cpp +++ b/td/telegram/Payments.cpp @@ -367,8 +367,8 @@ class SendPaymentFormQuery : public Td::ResultHandler { promise_.set_value(make_tl_object(true, string())); return; } - case telegram_api::payments_paymentVerficationNeeded::ID: { - auto result = move_tl_object_as(payment_result); + case telegram_api::payments_paymentVerificationNeeded::ID: { + auto result = move_tl_object_as(payment_result); promise_.set_value(make_tl_object(false, std::move(result->url_))); return; } diff --git a/td/telegram/SendCodeHelper.cpp b/td/telegram/SendCodeHelper.cpp index 1f198f15..c5fe9b1f 100644 --- a/td/telegram/SendCodeHelper.cpp +++ b/td/telegram/SendCodeHelper.cpp @@ -38,7 +38,6 @@ Result SendCodeHelper::resend_code() { telegram_api::object_ptr SendCodeHelper::get_input_code_settings(const Settings &settings) { int32 flags = 0; - string app_hash; if (settings != nullptr) { if (settings->allow_flash_call_) { flags |= telegram_api::codeSettings::ALLOW_FLASHCALL_MASK; @@ -47,13 +46,11 @@ telegram_api::object_ptr SendCodeHelper::get_input_c flags |= telegram_api::codeSettings::CURRENT_NUMBER_MASK; } if (settings->allow_sms_retriever_api_) { - flags |= telegram_api::codeSettings::APP_HASH_PERSISTENT_MASK; - flags |= telegram_api::codeSettings::APP_HASH_MASK; - app_hash = "ignored1234"; + flags |= telegram_api::codeSettings::ALLOW_APP_HASH_MASK; } } return telegram_api::make_object(flags, false /*ignored*/, false /*ignored*/, - false /*ignored*/, app_hash); + false /*ignored*/); } Result SendCodeHelper::send_code(Slice phone_number, const Settings &settings, diff --git a/td/telegram/Version.h b/td/telegram/Version.h index da53d25b..b75c50f8 100644 --- a/td/telegram/Version.h +++ b/td/telegram/Version.h @@ -8,7 +8,7 @@ namespace td { -constexpr int32 MTPROTO_LAYER = 103; +constexpr int32 MTPROTO_LAYER = 104; enum class Version : int32 { Initial, diff --git a/td/telegram/files/FileDownloader.cpp b/td/telegram/files/FileDownloader.cpp index 574d1d25..f77f7af7 100644 --- a/td/telegram/files/FileDownloader.cpp +++ b/td/telegram/files/FileDownloader.cpp @@ -241,7 +241,7 @@ Result> FileDownloader::start_part(Part part, int32 remote_.is_web() ? create_storer(telegram_api::upload_getWebFile(remote_.as_input_web_file_location(), static_cast(part.offset), static_cast(size))) - : create_storer(telegram_api::upload_getFile(remote_.as_input_file_location(), + : create_storer(telegram_api::upload_getFile(0, false /*ignored*/, remote_.as_input_file_location(), static_cast(part.offset), static_cast(size))), dc_id, is_small_ ? NetQuery::Type::DownloadSmall : NetQuery::Type::Download); } else {