API scheme updated to layer 76.

This commit is contained in:
John Preston 2018-01-18 14:04:50 +03:00
parent 2dd2ad5cdb
commit d1a9d3992b
12 changed files with 183 additions and 89 deletions

View File

@ -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<InputDocument> 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<InputDocument> 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<DocumentAttribute> caption:string stickers:flags.0?Vector<InputDocument> 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<DocumentAttribute> stickers:flags.0?Vector<InputDocument> 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<int> = 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<FoundGif> = messages.
messages.savedGifsNotModified#e8025ca2 = messages.SavedGifs;
messages.savedGifs#2e0709a5 hash:int gifs:Vector<Document> = messages.SavedGifs;
inputBotInlineMessageMediaAuto#292fed13 flags:# caption:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
inputBotInlineMessageMediaAuto#3380c786 flags:# message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
inputBotInlineMessageText#3dcd7a87 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector<MessageEntity> 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<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector<MessageEntity> 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<RecentMeUrl> chats:Vector<Chat> users:Vector<User> = help.RecentMeUrls;
inputSingleMedia#5eaa7809 media:InputMedia random_id:long = InputSingleMedia;
inputSingleMedia#31bc3d25 media:InputMedia flags:# random_id:long message:string entities:flags.0?Vector<MessageEntity> = InputSingleMedia;
feedPosition#5059dc73 date:int peer:Peer id:int = FeedPosition;
@ -1032,14 +1032,14 @@ contacts.resetSaved#879537f1 = Bool;
messages.getMessages#4222fa74 id:Vector<int> = 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<int> = messages.AffectedMessages;
messages.receivedMessages#5a954c0 max_id:int = Vector<ReceivedNotifyMessage>;
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<MessageEntity> = 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<MessageEntity> = 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<int> random_id:Vector<long> 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<InputUser> 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<long>;
messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool;
messages.readMessageContents#36a73f77 id:Vector<int> = 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<MessageEntity> = 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<InputSingleMedia> = Updates;
messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat file:InputEncryptedFile = EncryptedFile;
@ -1221,4 +1220,4 @@ langpack.getStrings#2e1ee318 lang_code:string keys:Vector<string> = Vector<LangP
langpack.getDifference#b2e4d7d from_version:int = LangPackDifference;
langpack.getLanguages#800fd57d = Vector<LangPackLanguage>;
// LAYER 75
// LAYER 76

View File

@ -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<MTPInputDocument>(),
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<MTPInputDocument>(),
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());
}

View File

@ -757,8 +757,10 @@ void AddBotToGroupBoxController::shareBotGame(not_null<PeerData*> 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,

View File

@ -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;

View File

@ -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(

View File

@ -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));
}
}
}

View File

@ -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 };
}

View File

@ -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<Data::Media> HistoryMessage::CreateMedia(
return std::make_unique<Data::MediaPhoto>(
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<Data::Media> HistoryMessage::CreateMedia(
return std::make_unique<Data::MediaFile>(
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 "

View File

@ -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));
}
}

View File

@ -110,15 +110,18 @@ std::unique_ptr<Result> 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<internal::SendPhoto>(result->_photo, qs(r.vcaption));
result->sendData = std::make_unique<internal::SendPhoto>(result->_photo, qs(r.vmessage), entities);
} else if (result->_type == Type::Game) {
result->createGame();
result->sendData = std::make_unique<internal::SendGame>(result->_game);
} else {
result->createDocument();
result->sendData = std::make_unique<internal::SendFile>(result->_document, qs(r.vcaption));
result->sendData = std::make_unique<internal::SendFile>(result->_document, qs(r.vmessage), entities);
}
if (r.has_reply_markup()) {
result->_mtpKeyboard = std::make_unique<MTPReplyMarkup>(r.vreply_markup);
@ -127,7 +130,9 @@ std::unique_ptr<Result> 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<internal::SendText>(qs(r.vmessage), entities, r.is_no_webpage());
if (result->_type == Type::Photo) {
result->createPhoto();

View File

@ -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);
}

View File

@ -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 {