MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / EditRichMessage

Function EditRichMessage

Telegram/SourceFiles/api/api_editing.cpp:596–658  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

594}
595
596mtpRequestId EditRichMessage(
597 not_null<HistoryItem*> item,
598 Fn<std::optional<MTPInputRichMessage>()> richMessage,
599 SendOptions options,
600 Fn<void(mtpRequestId requestId)> done,
601 Fn<void(const QString &error, mtpRequestId requestId)> fail) {
602 const auto session = &item->history()->session();
603 const auto api = &session->api();
604 const auto sentEntities = MTPVector<MTPMessageEntity>();
605 const auto flags = ComputeEditMessageFlags(
606 item,
607 sentEntities,
608 Data::WebPageDraft(),
609 options,
610 false,
611 false,
612 true);
613 const auto id = EditMessageRequestId(item);
614 const auto origin = item->fullId();
615 const auto performRequest = [=](
616 const auto &repeatRequest,
617 mtpRequestId originalRequestId,
618 bool refreshed) -> mtpRequestId {
619 const auto current = richMessage ? richMessage() : std::nullopt;
620 const auto requestId = originalRequestId ? originalRequestId : 0;
621 if (!current) {
622 if (fail) {
623 fail(QString(), requestId);
624 }
625 return requestId;
626 }
627 return api->request(MTPmessages_EditMessage(
628 MTP_flags(flags),
629 item->history()->peer->input(),
630 MTP_int(id),
631 MTPstring(),
632 MTPInputMedia(),
633 MTPReplyMarkup(),
634 sentEntities,
635 MTP_int(options.scheduled),
636 MTP_int(options.scheduleRepeatPeriod),
637 MTP_int(item->shortcutId()),
638 *current
639 )).done([=](const MTPUpdates &result, mtpRequestId requestId) {
640 api->applyUpdates(result);
641 if (done) {
642 done(originalRequestId ? originalRequestId : requestId);
643 }
644 }).fail([=](const MTP::Error &error, mtpRequestId requestId) {
645 if (!refreshed && error.type().startsWith(u"FILE_REFERENCE_"_q)) {
646 api->refreshFileReference(origin, [=](const auto &) {
647 repeatRequest(
648 repeatRequest,
649 originalRequestId ? originalRequestId : requestId,
650 true);
651 });
652 } else if (fail) {
653 fail(error.type(), originalRequestId ? originalRequestId : requestId);

Callers 1

Calls 15

ComputeEditMessageFlagsFunction · 0.85
EditMessageRequestIdFunction · 0.85
MTP_flagsFunction · 0.85
apiMethod · 0.80
shortcutIdMethod · 0.80
WebPageDraftClass · 0.70
QStringClass · 0.50
MTP_intFunction · 0.50
sessionMethod · 0.45
historyMethod · 0.45
fullIdMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected