diff --git a/Telegram/SourceFiles/data/data_media_types.cpp b/Telegram/SourceFiles/data/data_media_types.cpp index 98e757387..91eaba4b1 100644 --- a/Telegram/SourceFiles/data/data_media_types.cpp +++ b/Telegram/SourceFiles/data/data_media_types.cpp @@ -65,47 +65,6 @@ constexpr auto kMaxPreviewImages = 3; using ItemPreview = HistoryView::ItemPreview; using ItemPreviewImage = HistoryView::ItemPreviewImage; -[[nodiscard]] Call ComputeCallData(const MTPDmessageActionPhoneCall &call) { - auto result = Call(); - result.finishReason = [&] { - if (const auto reason = call.vreason()) { - switch (reason->type()) { - case mtpc_phoneCallDiscardReasonBusy: - return CallFinishReason::Busy; - case mtpc_phoneCallDiscardReasonDisconnect: - return CallFinishReason::Disconnected; - case mtpc_phoneCallDiscardReasonHangup: - return CallFinishReason::Hangup; - case mtpc_phoneCallDiscardReasonMissed: - return CallFinishReason::Missed; - } - Unexpected("Call reason type."); - } - return CallFinishReason::Hangup; - }(); - result.duration = call.vduration().value_or_empty(); - result.video = call.is_video(); - return result; -} - -[[nodiscard]] Invoice ComputeInvoiceData( - not_null item, - const MTPDmessageMediaInvoice &data) { - return { - .receiptMsgId = data.vreceipt_msg_id().value_or_empty(), - .amount = data.vtotal_amount().v, - .currency = qs(data.vcurrency()), - .title = TextUtilities::SingleLine(qs(data.vtitle())), - .description = qs(data.vdescription()), - .photo = (data.vphoto() - ? item->history()->owner().photoFromWeb( - *data.vphoto(), - ImageLocation()) - : nullptr), - .isTest = data.is_test(), - }; -} - [[nodiscard]] QString WithCaptionDialogsText( const QString &attachType, const QString &caption, @@ -304,6 +263,47 @@ TextForMimeData WithCaptionClipboardText( return result; } +Invoice ComputeInvoiceData( + not_null item, + const MTPDmessageMediaInvoice &data) { + return { + .receiptMsgId = data.vreceipt_msg_id().value_or_empty(), + .amount = data.vtotal_amount().v, + .currency = qs(data.vcurrency()), + .title = TextUtilities::SingleLine(qs(data.vtitle())), + .description = qs(data.vdescription()), + .photo = (data.vphoto() + ? item->history()->owner().photoFromWeb( + *data.vphoto(), + ImageLocation()) + : nullptr), + .isTest = data.is_test(), + }; +} + +Call ComputeCallData(const MTPDmessageActionPhoneCall &call) { + auto result = Call(); + result.finishReason = [&] { + if (const auto reason = call.vreason()) { + switch (reason->type()) { + case mtpc_phoneCallDiscardReasonBusy: + return CallFinishReason::Busy; + case mtpc_phoneCallDiscardReasonDisconnect: + return CallFinishReason::Disconnected; + case mtpc_phoneCallDiscardReasonHangup: + return CallFinishReason::Hangup; + case mtpc_phoneCallDiscardReasonMissed: + return CallFinishReason::Missed; + } + Unexpected("Call reason type."); + } + return CallFinishReason::Hangup; + }(); + result.duration = call.vduration().value_or_empty(); + result.video = call.is_video(); + return result; +} + Media::Media(not_null parent) : _parent(parent) { } @@ -1170,11 +1170,9 @@ std::unique_ptr MediaLocation::createView( _description); } -MediaCall::MediaCall( - not_null parent, - const MTPDmessageActionPhoneCall &call) +MediaCall::MediaCall(not_null parent, const Call &call) : Media(parent) -, _call(ComputeCallData(call)) { +, _call(call) { parent->history()->owner().registerCallItem(parent); } @@ -1456,13 +1454,6 @@ std::unique_ptr MediaGame::createView( _consumedText); } -MediaInvoice::MediaInvoice( - not_null parent, - const MTPDmessageMediaInvoice &data) -: Media(parent) -, _invoice(ComputeInvoiceData(parent, data)) { -} - MediaInvoice::MediaInvoice( not_null parent, const Invoice &data) diff --git a/Telegram/SourceFiles/data/data_media_types.h b/Telegram/SourceFiles/data/data_media_types.h index e55bcd88f..fdf42e07e 100644 --- a/Telegram/SourceFiles/data/data_media_types.h +++ b/Telegram/SourceFiles/data/data_media_types.h @@ -286,9 +286,7 @@ private: class MediaCall final : public Media { public: - MediaCall( - not_null parent, - const MTPDmessageActionPhoneCall &call); + MediaCall(not_null parent, const Call &call); ~MediaCall(); std::unique_ptr clone(not_null parent) override; @@ -387,9 +385,6 @@ private: class MediaInvoice final : public Media { public: - MediaInvoice( - not_null parent, - const MTPDmessageMediaInvoice &data); MediaInvoice( not_null parent, const Invoice &data); @@ -478,8 +473,14 @@ private: }; -TextForMimeData WithCaptionClipboardText( +[[nodiscard]] TextForMimeData WithCaptionClipboardText( const QString &attachType, TextForMimeData &&caption); +[[nodiscard]] Invoice ComputeInvoiceData( + not_null item, + const MTPDmessageMediaInvoice &data); + +[[nodiscard]] Call ComputeCallData(const MTPDmessageActionPhoneCall &call); + } // namespace Data diff --git a/Telegram/SourceFiles/history/history_item_reply_markup.cpp b/Telegram/SourceFiles/history/history_item_reply_markup.cpp index 8d3d05d16..04787f9f2 100644 --- a/Telegram/SourceFiles/history/history_item_reply_markup.cpp +++ b/Telegram/SourceFiles/history/history_item_reply_markup.cpp @@ -16,7 +16,7 @@ HistoryMessageMarkupButton::HistoryMessageMarkupButton( const QString &text, const QByteArray &data, const QString &forwardText, - int32 buttonId) + int64 buttonId) : type(type) , text(text) , forwardText(forwardText) diff --git a/Telegram/SourceFiles/history/history_item_reply_markup.h b/Telegram/SourceFiles/history/history_item_reply_markup.h index 11e9338a4..692dcc5c4 100644 --- a/Telegram/SourceFiles/history/history_item_reply_markup.h +++ b/Telegram/SourceFiles/history/history_item_reply_markup.h @@ -47,7 +47,7 @@ struct HistoryMessageMarkupButton { const QString &text, const QByteArray &data = QByteArray(), const QString &forwardText = QString(), - int32 buttonId = 0); + int64 buttonId = 0); static HistoryMessageMarkupButton *Get( not_null owner, @@ -58,7 +58,7 @@ struct HistoryMessageMarkupButton { Type type; QString text, forwardText; QByteArray data; - int32 buttonId = 0; + int64 buttonId = 0; mutable mtpRequestId requestId = 0; }; diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index a02dd8bdb..880466595 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -535,7 +535,9 @@ HistoryMessage::HistoryMessage( createComponents(std::move(config)); data.vaction().match([&](const MTPDmessageActionPhoneCall &data) { - _media = std::make_unique(this, data); + _media = std::make_unique( + this, + Data::ComputeCallData(data)); setEmptyText(); }, [](const auto &) { Unexpected("Service message action type in HistoryMessage."); @@ -1346,7 +1348,9 @@ std::unique_ptr HistoryMessage::CreateMedia( item->history()->owner().processGame(game)); }); }, [&](const MTPDmessageMediaInvoice &media) -> Result { - return std::make_unique(item, media); + return std::make_unique( + item, + Data::ComputeInvoiceData(item, media)); }, [&](const MTPDmessageMediaPoll &media) -> Result { return std::make_unique( item,