diff --git a/Telegram/Resources/scheme.tl b/Telegram/Resources/scheme.tl index ae2addbe05..11323f5423 100644 --- a/Telegram/Resources/scheme.tl +++ b/Telegram/Resources/scheme.tl @@ -155,16 +155,16 @@ inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile; inputMediaEmpty#9664f57f = InputMedia; -inputMediaUploadedPhoto#2f37e231 flags:# file:InputFile caption:string stickers:flags.0?Vector ttl_seconds:flags.1?int = InputMedia; -inputMediaPhoto#81fa373a flags:# id:InputPhoto caption:string ttl_seconds:flags.0?int = InputMedia; +inputMediaUploadedPhoto#1e287d04 flags:# file:InputFile stickers:flags.0?Vector ttl_seconds:flags.1?int = InputMedia; +inputMediaPhoto#b3ba0635 flags:# id:InputPhoto ttl_seconds:flags.0?int = InputMedia; inputMediaGeoPoint#f9c44144 geo_point:InputGeoPoint = InputMedia; inputMediaContact#a6e45987 phone_number:string first_name:string last_name:string = InputMedia; -inputMediaUploadedDocument#e39621fd flags:# nosound_video:flags.3?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector caption:string stickers:flags.0?Vector ttl_seconds:flags.1?int = InputMedia; -inputMediaDocument#5acb668e flags:# id:InputDocument caption:string ttl_seconds:flags.0?int = InputMedia; +inputMediaUploadedDocument#5b38c6c1 flags:# nosound_video:flags.3?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector stickers:flags.0?Vector ttl_seconds:flags.1?int = InputMedia; +inputMediaDocument#23ab23d2 flags:# id:InputDocument ttl_seconds:flags.0?int = InputMedia; inputMediaVenue#c13d1c11 geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string = InputMedia; inputMediaGifExternal#4843b0fd url:string q:string = InputMedia; -inputMediaPhotoExternal#922aec1 flags:# url:string caption:string ttl_seconds:flags.0?int = InputMedia; -inputMediaDocumentExternal#b6f74335 flags:# url:string caption:string ttl_seconds:flags.0?int = InputMedia; +inputMediaPhotoExternal#e5bbfe1a flags:# url:string ttl_seconds:flags.0?int = InputMedia; +inputMediaDocumentExternal#fb52dc99 flags:# url:string ttl_seconds:flags.0?int = InputMedia; inputMediaGame#d33f43f3 id:InputGame = InputMedia; inputMediaInvoice#f4e096c3 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON start_param:string = InputMedia; inputMediaGeoLive#7b1a118f geo_point:InputGeoPoint period:int = InputMedia; @@ -240,11 +240,11 @@ message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:fl messageService#9e19a1f6 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer reply_to_msg_id:flags.3?int date:int action:MessageAction = Message; messageMediaEmpty#3ded6320 = MessageMedia; -messageMediaPhoto#b5223b0f flags:# photo:flags.0?Photo caption:flags.1?string ttl_seconds:flags.2?int = MessageMedia; +messageMediaPhoto#695150d7 flags:# photo:flags.0?Photo ttl_seconds:flags.2?int = MessageMedia; messageMediaGeo#56e0d474 geo:GeoPoint = MessageMedia; messageMediaContact#5e7d2f39 phone_number:string first_name:string last_name:string user_id:int = MessageMedia; messageMediaUnsupported#9f84f49e = MessageMedia; -messageMediaDocument#7c4414d3 flags:# document:flags.0?Document caption:flags.1?string ttl_seconds:flags.2?int = MessageMedia; +messageMediaDocument#9cb070d7 flags:# document:flags.0?Document ttl_seconds:flags.2?int = MessageMedia; messageMediaWebPage#a32dd600 webpage:WebPage = MessageMedia; messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MessageMedia; messageMediaGame#fdb19008 game:Game = MessageMedia; @@ -436,7 +436,7 @@ updateFavedStickers#e511996d = Update; updateChannelReadMessagesContents#89893b45 channel_id:int messages:Vector = Update; updateContactsReset#7084a7be = Update; updateChannelAvailableMessages#70db6837 channel_id:int available_min_id:int = Update; -updateReadFeed#994852a9 feed_id:int max_position:FeedPosition = Update; +updateReadFeed#6fa68e41 flags:# feed_id:int max_position:FeedPosition unread_count:flags.0?int unread_muted_count:flags.0?int = Update; updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; @@ -687,7 +687,7 @@ messages.foundGifs#450a1c0a next_offset:int results:Vector = messages. messages.savedGifsNotModified#e8025ca2 = messages.SavedGifs; messages.savedGifs#2e0709a5 hash:int gifs:Vector = messages.SavedGifs; -inputBotInlineMessageMediaAuto#292fed13 flags:# caption:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageMediaAuto#3380c786 flags:# message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageText#3dcd7a87 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaGeo#c1b15d65 flags:# geo_point:InputGeoPoint period:int reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaVenue#aaafadc8 flags:# geo_point:InputGeoPoint title:string address:string provider:string venue_id:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; @@ -699,7 +699,7 @@ inputBotInlineResultPhoto#a8d864a7 id:string type:string photo:InputPhoto send_m inputBotInlineResultDocument#fff8fdc4 flags:# id:string type:string title:flags.1?string description:flags.2?string document:InputDocument send_message:InputBotInlineMessage = InputBotInlineResult; inputBotInlineResultGame#4fa417f2 id:string short_name:string send_message:InputBotInlineMessage = InputBotInlineResult; -botInlineMessageMediaAuto#a74b15b flags:# caption:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageMediaAuto#764cf810 flags:# message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaGeo#b722de65 flags:# geo:GeoPoint period:int reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaVenue#4366232e flags:# geo:GeoPoint title:string address:string provider:string venue_id:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; @@ -937,7 +937,7 @@ recentMeUrlStickerSet#bc0a57dc url:string set:StickerSetCovered = RecentMeUrl; help.recentMeUrls#e0310d7 urls:Vector chats:Vector users:Vector = help.RecentMeUrls; -inputSingleMedia#5eaa7809 media:InputMedia random_id:long = InputSingleMedia; +inputSingleMedia#31bc3d25 media:InputMedia flags:# random_id:long message:string entities:flags.0?Vector = InputSingleMedia; feedPosition#5059dc73 date:int peer:Peer id:int = FeedPosition; @@ -1032,14 +1032,14 @@ contacts.resetSaved#879537f1 = Bool; messages.getMessages#4222fa74 id:Vector = messages.Messages; messages.getDialogs#5c0fae2 flags:# exclude_pinned:flags.0?true feed_id:flags.1?int offset_date:int offset_id:int offset_peer:InputPeer limit:int = messages.Dialogs; messages.getHistory#dcbb8260 peer:InputPeer offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages; -messages.search#39e9ea0 flags:# peer:InputPeer q:string from_id:flags.0?InputUser filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; +messages.search#8614ef68 flags:# peer:InputPeer q:string from_id:flags.0?InputUser filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages; messages.readHistory#e306d3a peer:InputPeer max_id:int = messages.AffectedMessages; messages.deleteHistory#1c015b09 flags:# just_clear:flags.0?true peer:InputPeer max_id:int = messages.AffectedHistory; messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector = messages.AffectedMessages; messages.receivedMessages#5a954c0 max_id:int = Vector; messages.setTyping#a3825e50 peer:InputPeer action:SendMessageAction = Bool; messages.sendMessage#fa88427a flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector = Updates; -messages.sendMedia#c8f16791 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia random_id:long reply_markup:flags.2?ReplyMarkup = Updates; +messages.sendMedia#b8d1262b flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector = Updates; messages.forwardMessages#708e0195 flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true grouped:flags.9?true from_peer:InputPeer id:Vector random_id:Vector to_peer:InputPeer = Updates; messages.reportSpam#cf1592db peer:InputPeer = Bool; messages.hideReportSpam#a8f1709b peer:InputPeer = Bool; @@ -1051,7 +1051,6 @@ messages.editChatPhoto#ca4c79d8 chat_id:int photo:InputChatPhoto = Updates; messages.addChatUser#f9a0aa09 chat_id:int user_id:InputUser fwd_limit:int = Updates; messages.deleteChatUser#e0611f16 chat_id:int user_id:InputUser = Updates; messages.createChat#9cb126e users:Vector title:string = Updates; -messages.forwardMessage#33963bf9 peer:InputPeer id:int random_id:long = Updates; messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig; messages.requestEncryption#f64daf43 user_id:InputUser random_id:int g_a:bytes = EncryptedChat; messages.acceptEncryption#3dbc0415 peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat; @@ -1065,7 +1064,7 @@ messages.receivedQueue#55a5bb66 max_qts:int = Vector; messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool; messages.readMessageContents#36a73f77 id:Vector = messages.AffectedMessages; messages.getAllStickers#1c9618b1 hash:int = messages.AllStickers; -messages.getWebPagePreview#25223e24 message:string = MessageMedia; +messages.getWebPagePreview#8b68b0cc flags:# message:string entities:flags.3?Vector = MessageMedia; messages.exportChatInvite#7d885289 chat_id:int = ExportedChatInvite; messages.checkChatInvite#3eadb1bb hash:string = ChatInvite; messages.importChatInvite#6c50051c hash:string = Updates; @@ -1120,7 +1119,7 @@ messages.getFavedStickers#21ce0b0e hash:int = messages.FavedStickers; messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool; messages.getUnreadMentions#46578472 peer:InputPeer offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; messages.readMentions#f0189d3 peer:InputPeer = messages.AffectedHistory; -messages.getRecentLocations#249431e2 peer:InputPeer limit:int = messages.Messages; +messages.getRecentLocations#bbc45b09 peer:InputPeer limit:int hash:int = messages.Messages; messages.sendMultiMedia#2095512f flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int multi_media:Vector = Updates; messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat file:InputEncryptedFile = EncryptedFile; @@ -1221,4 +1220,4 @@ langpack.getStrings#2e1ee318 lang_code:string keys:Vector = Vector; -// LAYER 75 +// LAYER 76 diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index f3c3c7e8c4..579981c8a1 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -2990,13 +2990,9 @@ void ApiWrap::sendUploadedPhoto( const MTPInputFile &file, bool silent) { if (const auto item = App::histItemById(localId)) { - const auto caption = item->media() - ? item->media()->caption() - : QString(); const auto media = MTP_inputMediaUploadedPhoto( MTP_flags(0), file, - MTP_string(caption), MTPVector(), MTP_int(0)); if (const auto groupId = item->groupId()) { @@ -3015,7 +3011,6 @@ void ApiWrap::sendUploadedDocument( if (const auto item = App::histItemById(localId)) { auto media = item->media(); if (auto document = media ? media->document() : nullptr) { - const auto caption = media->caption(); const auto groupId = item->groupId(); const auto flags = MTPDinputMediaUploadedDocument::Flags(0) | (thumb @@ -3030,7 +3025,6 @@ void ApiWrap::sendUploadedDocument( thumb ? *thumb : MTPInputFile(), MTP_string(document->mimeString()), ComposeSendingDocumentAttributes(document), - MTP_string(caption), MTPVector(), MTP_int(0)); if (groupId) { @@ -3089,7 +3083,6 @@ void ApiWrap::uploadAlbumMedia( const auto media = MTP_inputMediaPhoto( MTP_flags(flags), MTP_inputPhoto(photo.vid, photo.vaccess_hash), - data.has_caption() ? data.vcaption : MTP_string(QString()), data.has_ttl_seconds() ? data.vttl_seconds : MTPint()); sendAlbumWithUploaded(item, groupId, media); } break; @@ -3108,7 +3101,6 @@ void ApiWrap::uploadAlbumMedia( const auto media = MTP_inputMediaDocument( MTP_flags(flags), MTP_inputDocument(document.vid, document.vaccess_hash), - data.has_caption() ? data.vcaption : MTP_string(QString()), data.has_ttl_seconds() ? data.vttl_seconds : MTPint()); sendAlbumWithUploaded(item, groupId, media); } break; @@ -3142,13 +3134,16 @@ void ApiWrap::sendMediaWithRandomId( | (IsSilentPost(item, silent) ? MTPmessages_SendMedia::Flag::f_silent : MTPmessages_SendMedia::Flag(0)); + const auto message = QString(); // #TODO l76 history->sendRequestId = request(MTPmessages_SendMedia( MTP_flags(flags), history->peer->input, MTP_int(replyTo), media, + MTP_string(message), MTP_long(randomId), - MTPnullMarkup + MTPnullMarkup, + MTPnullEntities )).done([=](const MTPUpdates &result) { applyUpdates(result); }).fail([=](const RPCError &error) { sendMessageFail(error); }).afterRequest(history->sendRequestId @@ -3173,7 +3168,14 @@ void ApiWrap::sendAlbumWithUploaded( const auto itemIt = ranges::find(album->items, localId, proj); Assert(itemIt != album->items.end()); Assert(!itemIt->media); - itemIt->media = MTP_inputSingleMedia(media, MTP_long(randomId)); + + const auto original = item->originalText(); // #TODO l76 entities + itemIt->media = MTP_inputSingleMedia( + media, + MTP_flags(0), + MTP_long(randomId), + MTP_string(original.text), + MTPnullEntities); sendAlbumIfReady(album.get()); } diff --git a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp index 4cdb9126bf..31bf0afa5f 100644 --- a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp @@ -757,8 +757,10 @@ void AddBotToGroupBoxController::shareBotGame(not_null chat) { MTP_inputGameShortName( bot->inputUser, MTP_string(bot->botInfo->shareGameShortName))), + MTP_string(""), MTP_long(randomId), - MTPnullMarkup), + MTPnullMarkup, + MTPnullEntities), App::main()->rpcDone(&MainWidget::sentUpdatesReceived), App::main()->rpcFail(&MainWidget::sendMessageFail), 0, diff --git a/Telegram/SourceFiles/calls/calls_box_controller.cpp b/Telegram/SourceFiles/calls/calls_box_controller.cpp index f1e57e53bd..0e1968954f 100644 --- a/Telegram/SourceFiles/calls/calls_box_controller.cpp +++ b/Telegram/SourceFiles/calls/calls_box_controller.cpp @@ -248,6 +248,7 @@ void BoxController::loadMoreRows() { MTP_int(0), MTP_int(_offsetId ? kFirstPageCount : kPerPageCount), MTP_int(0), + MTP_int(0), MTP_int(0) )).done([this](const MTPmessages_Messages &result) { _loadRequestId = 0; diff --git a/Telegram/SourceFiles/data/data_search_controller.cpp b/Telegram/SourceFiles/data/data_search_controller.cpp index 8cfbda2d06..1c753ed722 100644 --- a/Telegram/SourceFiles/data/data_search_controller.cpp +++ b/Telegram/SourceFiles/data/data_search_controller.cpp @@ -75,6 +75,7 @@ MTPmessages_Search PrepareSearchRequest( } Unexpected("Direction in PrepareSearchRequest"); }(); + const auto hash = int32(0); return MTPmessages_Search( MTP_flags(0), @@ -88,7 +89,8 @@ MTPmessages_Search PrepareSearchRequest( MTP_int(addOffset), MTP_int(limit), MTP_int(maxId), - MTP_int(minId)); + MTP_int(minId), + MTP_int(hash)); } SearchResult ParseSearchResult( diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index 7f99543e71..ba6f2555ea 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -488,9 +488,35 @@ bool DialogsWidget::onSearchMessages(bool searchCache) { MTP::cancel(base::take(_searchRequest)); if (_searchInPeer) { auto flags = _searchQueryFrom ? MTP_flags(MTPmessages_Search::Flag::f_from_id) : MTP_flags(0); - _searchRequest = MTP::send(MTPmessages_Search(flags, _searchInPeer->input, MTP_string(_searchQuery), _searchQueryFrom ? _searchQueryFrom->inputUser : MTP_inputUserEmpty(), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(SearchPerPage), MTP_int(0), MTP_int(0)), rpcDone(&DialogsWidget::searchReceived, DialogsSearchPeerFromStart), rpcFail(&DialogsWidget::searchFailed, DialogsSearchPeerFromStart)); + _searchRequest = MTP::send( + MTPmessages_Search( + flags, + _searchInPeer->input, + MTP_string(_searchQuery), + _searchQueryFrom + ? _searchQueryFrom->inputUser + : MTP_inputUserEmpty(), + MTP_inputMessagesFilterEmpty(), + MTP_int(0), + MTP_int(0), + MTP_int(0), + MTP_int(0), + MTP_int(SearchPerPage), + MTP_int(0), + MTP_int(0), + MTP_int(0)), + rpcDone(&DialogsWidget::searchReceived, DialogsSearchPeerFromStart), + rpcFail(&DialogsWidget::searchFailed, DialogsSearchPeerFromStart)); } else { - _searchRequest = MTP::send(MTPmessages_SearchGlobal(MTP_string(_searchQuery), MTP_int(0), MTP_inputPeerEmpty(), MTP_int(0), MTP_int(SearchPerPage)), rpcDone(&DialogsWidget::searchReceived, DialogsSearchFromStart), rpcFail(&DialogsWidget::searchFailed, DialogsSearchFromStart)); + _searchRequest = MTP::send( + MTPmessages_SearchGlobal( + MTP_string(_searchQuery), + MTP_int(0), + MTP_inputPeerEmpty(), + MTP_int(0), + MTP_int(SearchPerPage)), + rpcDone(&DialogsWidget::searchReceived, DialogsSearchFromStart), + rpcFail(&DialogsWidget::searchFailed, DialogsSearchFromStart)); } _searchQueries.insert(_searchRequest, _searchQuery); } @@ -551,9 +577,37 @@ void DialogsWidget::onSearchMore() { auto offsetId = _inner->lastSearchId(); if (_searchInPeer) { auto flags = _searchQueryFrom ? MTP_flags(MTPmessages_Search::Flag::f_from_id) : MTP_flags(0); - _searchRequest = MTP::send(MTPmessages_Search(flags, _searchInPeer->input, MTP_string(_searchQuery), _searchQueryFrom ? _searchQueryFrom->inputUser : MTP_inputUserEmpty(), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(offsetId), MTP_int(0), MTP_int(SearchPerPage), MTP_int(0), MTP_int(0)), rpcDone(&DialogsWidget::searchReceived, offsetId ? DialogsSearchPeerFromOffset : DialogsSearchPeerFromStart), rpcFail(&DialogsWidget::searchFailed, offsetId ? DialogsSearchPeerFromOffset : DialogsSearchPeerFromStart)); + _searchRequest = MTP::send( + MTPmessages_Search( + flags, + _searchInPeer->input, + MTP_string(_searchQuery), + _searchQueryFrom + ? _searchQueryFrom->inputUser + : MTP_inputUserEmpty(), + MTP_inputMessagesFilterEmpty(), + MTP_int(0), + MTP_int(0), + MTP_int(offsetId), + MTP_int(0), + MTP_int(SearchPerPage), + MTP_int(0), + MTP_int(0), + MTP_int(0)), + rpcDone(&DialogsWidget::searchReceived, offsetId ? DialogsSearchPeerFromOffset : DialogsSearchPeerFromStart), + rpcFail(&DialogsWidget::searchFailed, offsetId ? DialogsSearchPeerFromOffset : DialogsSearchPeerFromStart)); } else { - _searchRequest = MTP::send(MTPmessages_SearchGlobal(MTP_string(_searchQuery), MTP_int(offsetDate), offsetPeer ? offsetPeer->input : MTP_inputPeerEmpty(), MTP_int(offsetId), MTP_int(SearchPerPage)), rpcDone(&DialogsWidget::searchReceived, offsetId ? DialogsSearchFromOffset : DialogsSearchFromStart), rpcFail(&DialogsWidget::searchFailed, offsetId ? DialogsSearchFromOffset : DialogsSearchFromStart)); + _searchRequest = MTP::send( + MTPmessages_SearchGlobal( + MTP_string(_searchQuery), + MTP_int(offsetDate), + offsetPeer + ? offsetPeer->input + : MTP_inputPeerEmpty(), + MTP_int(offsetId), + MTP_int(SearchPerPage)), + rpcDone(&DialogsWidget::searchReceived, offsetId ? DialogsSearchFromOffset : DialogsSearchFromStart), + rpcFail(&DialogsWidget::searchFailed, offsetId ? DialogsSearchFromOffset : DialogsSearchFromStart)); } if (!offsetId) { _searchQueries.insert(_searchRequest, _searchQuery); @@ -561,7 +615,25 @@ void DialogsWidget::onSearchMore() { } else if (_searchInMigrated && !_searchFullMigrated) { auto offsetMigratedId = _inner->lastSearchMigratedId(); auto flags = _searchQueryFrom ? MTP_flags(MTPmessages_Search::Flag::f_from_id) : MTP_flags(0); - _searchRequest = MTP::send(MTPmessages_Search(flags, _searchInMigrated->input, MTP_string(_searchQuery), _searchQueryFrom ? _searchQueryFrom->inputUser : MTP_inputUserEmpty(), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(offsetMigratedId), MTP_int(0), MTP_int(SearchPerPage), MTP_int(0), MTP_int(0)), rpcDone(&DialogsWidget::searchReceived, offsetMigratedId ? DialogsSearchMigratedFromOffset : DialogsSearchMigratedFromStart), rpcFail(&DialogsWidget::searchFailed, offsetMigratedId ? DialogsSearchMigratedFromOffset : DialogsSearchMigratedFromStart)); + _searchRequest = MTP::send( + MTPmessages_Search( + flags, + _searchInMigrated->input, + MTP_string(_searchQuery), + _searchQueryFrom + ? _searchQueryFrom->inputUser + : MTP_inputUserEmpty(), + MTP_inputMessagesFilterEmpty(), + MTP_int(0), + MTP_int(0), + MTP_int(offsetMigratedId), + MTP_int(0), + MTP_int(SearchPerPage), + MTP_int(0), + MTP_int(0), + MTP_int(0)), + rpcDone(&DialogsWidget::searchReceived, offsetMigratedId ? DialogsSearchMigratedFromOffset : DialogsSearchMigratedFromStart), + rpcFail(&DialogsWidget::searchFailed, offsetMigratedId ? DialogsSearchMigratedFromOffset : DialogsSearchMigratedFromStart)); } } } diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp index 587cde149a..332d510bbe 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp @@ -98,16 +98,10 @@ TextWithEntities ExtractEditedText(const MTPMessage &message) { return TextWithEntities(); } auto &data = message.c_message(); - auto mediaType = data.has_media() ? data.vmedia.type() : mtpc_messageMediaEmpty; - if (mediaType == mtpc_messageMediaDocument) { - auto &document = data.vmedia.c_messageMediaDocument(); - return PrepareText(document.has_caption() ? qs(document.vcaption) : QString(), QString()); - } else if (mediaType == mtpc_messageMediaPhoto) { - auto &photo = data.vmedia.c_messageMediaPhoto(); - return PrepareText(photo.has_caption() ? qs(photo.vcaption) : QString(), QString()); - } auto text = TextUtilities::Clean(qs(data.vmessage)); - auto entities = data.has_entities() ? TextUtilities::EntitiesFromMTP(data.ventities.v) : EntitiesInText(); + auto entities = data.has_entities() + ? TextUtilities::EntitiesFromMTP(data.ventities.v) + : EntitiesInText(); return { text, entities }; } diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 2a94b719c7..feacc3b8ee 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -717,7 +717,7 @@ void HistoryMessage::refreshMedia(const MTPMessageMedia *media) { void HistoryMessage::setMedia(const MTPMessageMedia &media) { _media = CreateMedia(this, media); - if (const auto invoice = _media->invoice()) { + if (const auto invoice = _media ? _media->invoice() : nullptr) { if (invoice->receiptMsgId) { replaceBuyWithReceiptInMarkup(); } @@ -773,7 +773,7 @@ std::unique_ptr HistoryMessage::CreateMedia( return std::make_unique( item, Auth().data().photo(data.vphoto.c_photo()), - data.has_caption() ? qs(data.vcaption) : QString()); + /*data.has_caption() ? qs(data.vcaption) : */QString()); // #TODO l76 caption } else { LOG(("API Error: " "Got MTPMessageMediaPhoto " @@ -791,7 +791,7 @@ std::unique_ptr HistoryMessage::CreateMedia( return std::make_unique( item, Auth().data().document(data.vdocument.c_document()), - data.has_caption() ? qs(data.vcaption) : QString()); + /*data.has_caption() ? qs(data.vcaption) :*/ QString()); // #TODO l76 caption } else { LOG(("API Error: " "Got MTPMessageMediaDocument " diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 16065c2419..8a19758a4b 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -4263,13 +4263,9 @@ void HistoryWidget::sendFileConfirmed( auto messagePostAuthor = channelPost ? (Auth().user()->firstName + ' ' + Auth().user()->lastName) : QString(); if (file->type == SendMediaType::Photo) { auto photoFlags = MTPDmessageMediaPhoto::Flag::f_photo | 0; - if (!file->caption.isEmpty()) { - photoFlags |= MTPDmessageMediaPhoto::Flag::f_caption; - } auto photo = MTP_messageMediaPhoto( MTP_flags(photoFlags), file->photo, - MTP_string(file->caption), MTPint()); history->addNewMessage( MTP_message( @@ -4281,10 +4277,10 @@ void HistoryWidget::sendFileConfirmed( MTPint(), MTP_int(file->to.replyTo), MTP_int(unixtime()), - MTP_string(""), + MTP_string(file->caption), photo, MTPnullMarkup, - MTPnullEntities, + MTPnullEntities,// #TODO l76 entities MTP_int(1), MTPint(), MTP_string(messagePostAuthor), @@ -4292,13 +4288,9 @@ void HistoryWidget::sendFileConfirmed( NewMessageUnread); } else if (file->type == SendMediaType::File) { auto documentFlags = MTPDmessageMediaDocument::Flag::f_document | 0; - if (!file->caption.isEmpty()) { - documentFlags |= MTPDmessageMediaDocument::Flag::f_caption; - } auto document = MTP_messageMediaDocument( MTP_flags(documentFlags), file->document, - MTP_string(file->caption), MTPint()); history->addNewMessage( MTP_message( @@ -4310,10 +4302,10 @@ void HistoryWidget::sendFileConfirmed( MTPint(), MTP_int(file->to.replyTo), MTP_int(unixtime()), - MTP_string(""), + MTP_string(file->caption), document, MTPnullMarkup, - MTPnullEntities, + MTPnullEntities, // #TODO l76 entities MTP_int(1), MTPint(), MTP_string(messagePostAuthor), @@ -4324,13 +4316,9 @@ void HistoryWidget::sendFileConfirmed( flags |= MTPDmessage::Flag::f_media_unread; } auto documentFlags = MTPDmessageMediaDocument::Flag::f_document | 0; - if (!file->caption.isEmpty()) { - documentFlags |= MTPDmessageMediaDocument::Flag::f_caption; - } auto document = MTP_messageMediaDocument( MTP_flags(documentFlags), file->document, - MTP_string(file->caption), MTPint()); history->addNewMessage( MTP_message( @@ -4342,10 +4330,10 @@ void HistoryWidget::sendFileConfirmed( MTPint(), MTP_int(file->to.replyTo), MTP_int(unixtime()), - MTP_string(""), + MTP_string(file->caption), document, MTPnullMarkup, - MTPnullEntities, + MTPnullEntities,// #TODO l76 entities MTP_int(1), MTPint(), MTP_string(messagePostAuthor), @@ -5446,10 +5434,11 @@ bool HistoryWidget::sendExistingDocument( MTP_inputMediaDocument( MTP_flags(0), mtpInput, - MTP_string(caption), MTPint()), + MTP_string(caption), MTP_long(randomId), - MTPnullMarkup), + MTPnullMarkup, + MTPnullEntities), // #TODO l76 entities App::main()->rpcDone(&MainWidget::sentUpdatesReceived), App::main()->rpcFail(&MainWidget::sendMessageFail), 0, @@ -5533,10 +5522,11 @@ void HistoryWidget::sendExistingPhoto( MTP_inputMediaPhoto( MTP_flags(0), MTP_inputPhoto(MTP_long(photo->id), MTP_long(photo->access)), - MTP_string(caption), MTPint()), + MTP_string(caption), MTP_long(randomId), - MTPnullMarkup), + MTPnullMarkup, + MTPnullEntities), // #TODO l76 entities App::main()->rpcDone(&MainWidget::sentUpdatesReceived), App::main()->rpcFail(&MainWidget::sendMessageFail), 0, @@ -5940,7 +5930,12 @@ void HistoryWidget::onPreviewCheck() { } else { PreviewCache::const_iterator i = _previewCache.constFind(_previewLinks); if (i == _previewCache.cend()) { - _previewRequest = MTP::send(MTPmessages_GetWebPagePreview(MTP_string(_previewLinks)), rpcDone(&HistoryWidget::gotPreview, _previewLinks)); + _previewRequest = MTP::send( + MTPmessages_GetWebPagePreview( + MTP_flags(0), + MTP_string(_previewLinks), + MTPnullEntities), + rpcDone(&HistoryWidget::gotPreview, _previewLinks)); } else if (i.value()) { _previewData = Auth().data().webpage(i.value()); updatePreview(); @@ -5952,8 +5947,15 @@ void HistoryWidget::onPreviewCheck() { } void HistoryWidget::onPreviewTimeout() { - if (_previewData && _previewData->pendingTill > 0 && !_previewLinks.isEmpty()) { - _previewRequest = MTP::send(MTPmessages_GetWebPagePreview(MTP_string(_previewLinks)), rpcDone(&HistoryWidget::gotPreview, _previewLinks)); + if (_previewData + && (_previewData->pendingTill > 0) + && !_previewLinks.isEmpty()) { + _previewRequest = MTP::send( + MTPmessages_GetWebPagePreview( + MTP_flags(0), + MTP_string(_previewLinks), + MTPnullEntities), + rpcDone(&HistoryWidget::gotPreview, _previewLinks)); } } diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp index 3f2656a3e0..aec1921ad2 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp @@ -110,15 +110,18 @@ std::unique_ptr Result::create(uint64 queryId, const MTPBotInlineResult switch (message->type()) { case mtpc_botInlineMessageMediaAuto: { auto &r = message->c_botInlineMessageMediaAuto(); + auto entities = r.has_entities() + ? TextUtilities::EntitiesFromMTP(r.ventities.v) + : EntitiesInText(); if (result->_type == Type::Photo) { result->createPhoto(); - result->sendData = std::make_unique(result->_photo, qs(r.vcaption)); + result->sendData = std::make_unique(result->_photo, qs(r.vmessage), entities); } else if (result->_type == Type::Game) { result->createGame(); result->sendData = std::make_unique(result->_game); } else { result->createDocument(); - result->sendData = std::make_unique(result->_document, qs(r.vcaption)); + result->sendData = std::make_unique(result->_document, qs(r.vmessage), entities); } if (r.has_reply_markup()) { result->_mtpKeyboard = std::make_unique(r.vreply_markup); @@ -127,7 +130,9 @@ std::unique_ptr Result::create(uint64 queryId, const MTPBotInlineResult case mtpc_botInlineMessageText: { auto &r = message->c_botInlineMessageText(); - auto entities = r.has_entities() ? TextUtilities::EntitiesFromMTP(r.ventities.v) : EntitiesInText(); + auto entities = r.has_entities() + ? TextUtilities::EntitiesFromMTP(r.ventities.v) + : EntitiesInText(); result->sendData = std::make_unique(qs(r.vmessage), entities, r.is_no_webpage()); if (result->_type == Type::Photo) { result->createPhoto(); diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_send_data.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_send_data.cpp index 074286e306..af3b8de2fe 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_send_data.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_bot_send_data.cpp @@ -135,7 +135,8 @@ void SendPhoto::addToHistory( fromId, postAuthor, _photo, - _caption, + _message, + //_entities, markup); } @@ -170,7 +171,8 @@ void SendFile::addToHistory( fromId, postAuthor, _document, - _caption, + _message, + //_entities, markup); } diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_send_data.h b/Telegram/SourceFiles/inline_bots/inline_bot_send_data.h index 831c366d2e..a6ece93a52 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_send_data.h +++ b/Telegram/SourceFiles/inline_bots/inline_bot_send_data.h @@ -87,9 +87,12 @@ public: // Plain text message. class SendText : public SendDataCommon { public: - SendText(const QString &message, const EntitiesInText &entities, bool/* noWebPage*/) - : _message(message) - , _entities(entities) { + SendText( + const QString &message, + const EntitiesInText &entities, + bool/* noWebPage*/) + : _message(message) + , _entities(entities) { } bool isValid() const override { @@ -188,9 +191,13 @@ private: // Message with photo. class SendPhoto : public SendData { public: - SendPhoto(PhotoData *photo, const QString &caption) - : _photo(photo) - , _caption(caption) { + SendPhoto( + PhotoData *photo, + const QString &message, + const EntitiesInText &entities) + : _photo(photo) + , _message(message) + , _entities(entities) { } bool isValid() const override { @@ -215,16 +222,21 @@ public: private: PhotoData *_photo; - QString _caption; + QString _message; + EntitiesInText _entities; }; // Message with file. class SendFile : public SendData { public: - SendFile(DocumentData *document, const QString &caption) - : _document(document) - , _caption(caption) { + SendFile( + DocumentData *document, + const QString &message, + const EntitiesInText &entities) + : _document(document) + , _message(message) + , _entities(entities) { } bool isValid() const override { @@ -249,7 +261,8 @@ public: private: DocumentData *_document; - QString _caption; + QString _message; + EntitiesInText _entities; }; @@ -257,7 +270,7 @@ private: class SendGame : public SendData { public: SendGame(GameData *game) - : _game(game) { + : _game(game) { } bool isValid() const override {