diff --git a/Telegram/SourceFiles/export/data/export_data_types.cpp b/Telegram/SourceFiles/export/data/export_data_types.cpp index 8a0b859cc..0cc79f7e2 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.cpp +++ b/Telegram/SourceFiles/export/data/export_data_types.cpp @@ -873,13 +873,18 @@ Message ParseMessage( [](const MTPDmessageFwdHeader &data) { if (data.has_channel_id()) { return ChatPeerId(data.vchannel_id.v); - } else if (data.has_saved_from_peer()) { - return ParsePeerId(data.vsaved_from_peer); } else if (data.has_from_id()) { return UserPeerId(data.vfrom_id.v); } return PeerId(0); }); + result.savedFromChatId = data.vfwd_from.match( + [](const MTPDmessageFwdHeader &data) { + if (data.has_saved_from_peer()) { + return ParsePeerId(data.vsaved_from_peer); + } + return PeerId(0); + }); } if (data.has_post_author()) { result.signature = ParseString(data.vpost_author); @@ -893,8 +898,8 @@ Message ParseMessage( if (data.has_media()) { context.botId = (result.viaBotId ? result.viaBotId - : result.forwardedFromId - ? result.forwardedFromId + : IsUserPeerId(result.forwardedFromId) + ? BarePeerId(result.forwardedFromId) : result.fromId); result.media = ParseMedia( context, diff --git a/Telegram/SourceFiles/export/data/export_data_types.h b/Telegram/SourceFiles/export/data/export_data_types.h index c71a1e413..e2e62afab 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.h +++ b/Telegram/SourceFiles/export/data/export_data_types.h @@ -451,6 +451,7 @@ struct Message { TimeId edited = 0; int32 fromId = 0; PeerId forwardedFromId = 0; + PeerId savedFromChatId = 0; Utf8String signature; int32 viaBotId = 0; int32 replyToMsgId = 0; diff --git a/Telegram/SourceFiles/export/output/export_output_html.cpp b/Telegram/SourceFiles/export/output/export_output_html.cpp index a3e7e5e8d..07b2e5552 100644 --- a/Telegram/SourceFiles/export/output/export_output_html.cpp +++ b/Telegram/SourceFiles/export/output/export_output_html.cpp @@ -440,6 +440,9 @@ QByteArray SerializeMessage( if (message.forwardedFromId) { push("Forwarded from", wrapPeerName(message.forwardedFromId)); } + if (message.savedFromChatId) { + push("Saved from", wrapPeerName(message.savedFromChatId)); + } pushReplyToMsgId(); if (message.viaBotId) { push("Via", user(message.viaBotId).username); diff --git a/Telegram/SourceFiles/export/output/export_output_json.cpp b/Telegram/SourceFiles/export/output/export_output_json.cpp index 59b2c4ef8..e2e562703 100644 --- a/Telegram/SourceFiles/export/output/export_output_json.cpp +++ b/Telegram/SourceFiles/export/output/export_output_json.cpp @@ -468,6 +468,9 @@ QByteArray SerializeMessage( "forwarded_from", wrapPeerName(message.forwardedFromId)); } + if (message.savedFromChatId) { + pushBare("saved_from", wrapPeerName(message.savedFromChatId)); + } pushReplyToMsgId(); if (message.viaBotId) { const auto username = FormatUsername( diff --git a/Telegram/SourceFiles/export/output/export_output_text.cpp b/Telegram/SourceFiles/export/output/export_output_text.cpp index f7fd6d634..ef15470a9 100644 --- a/Telegram/SourceFiles/export/output/export_output_text.cpp +++ b/Telegram/SourceFiles/export/output/export_output_text.cpp @@ -340,6 +340,9 @@ QByteArray SerializeMessage( if (message.forwardedFromId) { push("Forwarded from", wrapPeerName(message.forwardedFromId)); } + if (message.savedFromChatId) { + push("Saved from", wrapPeerName(message.savedFromChatId)); + } pushReplyToMsgId(); if (message.viaBotId) { push("Via", user(message.viaBotId).username);