From 627eba1c5a5daef06081f64e127d1caab02d0557 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 26 Dec 2022 14:23:53 +0400 Subject: [PATCH] Update API scheme on layer 151. --- Telegram/Resources/tl/api.tl | 10 ++++----- Telegram/SourceFiles/api/api_updates.cpp | 26 ++++++------------------ Telegram/SourceFiles/apiwrap.cpp | 18 ++++++++-------- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/Telegram/Resources/tl/api.tl b/Telegram/Resources/tl/api.tl index d3fea5ab9..01382dfbf 100644 --- a/Telegram/Resources/tl/api.tl +++ b/Telegram/Resources/tl/api.tl @@ -59,14 +59,14 @@ inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile; inputMediaEmpty#9664f57f = InputMedia; inputMediaUploadedPhoto#1e287d04 flags:# spoiler:flags.2?true file:InputFile stickers:flags.0?Vector ttl_seconds:flags.1?int = InputMedia; -inputMediaPhoto#b3ba0635 flags:# id:InputPhoto ttl_seconds:flags.0?int = InputMedia; +inputMediaPhoto#b3ba0635 flags:# spoiler:flags.1?true id:InputPhoto ttl_seconds:flags.0?int = InputMedia; inputMediaGeoPoint#f9c44144 geo_point:InputGeoPoint = InputMedia; inputMediaContact#f8ab7dfb phone_number:string first_name:string last_name:string vcard:string = InputMedia; inputMediaUploadedDocument#5b38c6c1 flags:# nosound_video:flags.3?true force_file:flags.4?true spoiler:flags.5?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector stickers:flags.0?Vector ttl_seconds:flags.1?int = InputMedia; -inputMediaDocument#33473058 flags:# id:InputDocument ttl_seconds:flags.0?int query:flags.1?string = InputMedia; +inputMediaDocument#33473058 flags:# spoiler:flags.2?true id:InputDocument ttl_seconds:flags.0?int query:flags.1?string = InputMedia; inputMediaVenue#c13d1c11 geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string = InputMedia; -inputMediaPhotoExternal#e5bbfe1a flags:# url:string ttl_seconds:flags.0?int = InputMedia; -inputMediaDocumentExternal#fb52dc99 flags:# url:string ttl_seconds:flags.0?int = InputMedia; +inputMediaPhotoExternal#e5bbfe1a flags:# spoiler:flags.1?true url:string ttl_seconds:flags.0?int = InputMedia; +inputMediaDocumentExternal#fb52dc99 flags:# spoiler:flags.1?true url:string ttl_seconds:flags.0?int = InputMedia; inputMediaGame#d33f43f3 id:InputGame = InputMedia; inputMediaInvoice#8eb5a6d5 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON start_param:flags.1?string extended_media:flags.2?InputMedia = InputMedia; inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int proximity_notification_radius:flags.3?int = InputMedia; @@ -304,7 +304,6 @@ updateChatUserTyping#83487af0 chat_id:long from_id:Peer action:SendMessageAction updateChatParticipants#7761198 participants:ChatParticipants = Update; updateUserStatus#e5bdf8de user_id:long status:UserStatus = Update; updateUserName#a7848924 user_id:long first_name:string last_name:string usernames:Vector = Update; -updateUserPhoto#f227868c user_id:long date:int photo:UserProfilePhoto previous:Bool = Update; updateNewEncryptedMessage#12bcbd9a message:EncryptedMessage qts:int = Update; updateEncryptedChatTyping#1710f156 chat_id:int = Update; updateEncryption#b4a2e88d chat:EncryptedChat date:int = Update; @@ -405,6 +404,7 @@ updateMoveStickerSetToTop#86fccf85 flags:# masks:flags.0?true emojis:flags.1?tru updateMessageExtendedMedia#5a73a98c peer:Peer msg_id:int extended_media:MessageExtendedMedia = Update; updateChannelPinnedTopic#192efbe3 flags:# pinned:flags.0?true channel_id:long topic_id:int = Update; updateChannelPinnedTopics#fe198602 flags:# channel_id:long order:flags.0?Vector = Update; +updateUser#20529438 user_id:long = Update; updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; diff --git a/Telegram/SourceFiles/api/api_updates.cpp b/Telegram/SourceFiles/api/api_updates.cpp index 042d06958..59f8b098b 100644 --- a/Telegram/SourceFiles/api/api_updates.cpp +++ b/Telegram/SourceFiles/api/api_updates.cpp @@ -1896,26 +1896,12 @@ void Updates::feedUpdate(const MTPUpdate &update) { } } break; - case mtpc_updateUserPhoto: { - auto &d = update.c_updateUserPhoto(); - if (auto user = session().data().userLoaded(d.vuser_id())) { - user->setPhoto(d.vphoto()); - user->loadUserpic(); - // After that update we don't have enough information to - // create a 'photo' with all necessary fields. So if - // we receive second such update we end up with a 'photo_id' - // in user_photos list without a loaded 'photo'. - // It fails to show in media overview if you try to open it. - // - //if (mtpIsTrue(d.vprevious()) || !user->userpicPhotoId()) { - session().storage().remove(Storage::UserPhotosRemoveAfter( - peerToUser(user->id), - user->userpicPhotoId())); - //} else { - // session().storage().add(Storage::UserPhotosAddNew( - // peerToUser(user->id), - // user->userpicPhotoId())); - //} + case mtpc_updateUser: { + auto &d = update.c_updateUser(); + if (const auto user = session().data().userLoaded(d.vuser_id())) { + if (user->wasFullUpdated()) { + user->updateFullForced(); + } } } break; diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index a80c200fe..30ca85237 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -3805,7 +3805,9 @@ void ApiWrap::uploadAlbumMedia( failed(); return; } + auto spoiler = false; if (const auto media = item->media()) { + spoiler = media->hasSpoiler(); if (const auto photo = media->photo()) { photo->setWaitingForAlbum(); } else if (const auto document = media->document()) { @@ -3822,10 +3824,10 @@ void ApiWrap::uploadAlbumMedia( return; } const auto &fields = photo->c_photo(); - const auto flags = MTPDinputMediaPhoto::Flags(0) - | (data.vttl_seconds() - ? MTPDinputMediaPhoto::Flag::f_ttl_seconds - : MTPDinputMediaPhoto::Flag(0)); + using Flag = MTPDinputMediaPhoto::Flag; + const auto flags = Flag() + | (data.vttl_seconds() ? Flag::f_ttl_seconds : Flag()) + | (spoiler ? Flag::f_spoiler : Flag()); const auto media = MTP_inputMediaPhoto( MTP_flags(flags), MTP_inputPhoto( @@ -3844,10 +3846,10 @@ void ApiWrap::uploadAlbumMedia( return; } const auto &fields = document->c_document(); - const auto flags = MTPDinputMediaDocument::Flags(0) - | (data.vttl_seconds() - ? MTPDinputMediaDocument::Flag::f_ttl_seconds - : MTPDinputMediaDocument::Flag(0)); + using Flag = MTPDinputMediaDocument::Flag; + const auto flags = Flag() + | (data.vttl_seconds() ? Flag::f_ttl_seconds : Flag()) + | (spoiler ? Flag::f_spoiler : Flag()); const auto media = MTP_inputMediaDocument( MTP_flags(flags), MTP_inputDocument(