diff --git a/Telegram/SourceFiles/export/data/export_data_types.cpp b/Telegram/SourceFiles/export/data/export_data_types.cpp index a2e26ed35..383d5825a 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.cpp +++ b/Telegram/SourceFiles/export/data/export_data_types.cpp @@ -617,6 +617,7 @@ User ParseUser(const MTPUser &data) { auto result = User(); result.info = ParseContactInfo(data); data.match([&](const MTPDuser &data) { + result.id = data.vid.v; if (data.has_username()) { result.username = ParseString(data.vusername); } diff --git a/Telegram/SourceFiles/export/data/export_data_types.h b/Telegram/SourceFiles/export/data/export_data_types.h index f6605dac4..40904b6ec 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.h +++ b/Telegram/SourceFiles/export/data/export_data_types.h @@ -189,6 +189,7 @@ UserpicsSlice ParseUserpicsSlice( struct User { ContactInfo info; Utf8String username; + int32 id; bool isBot = false; bool isSelf = false; diff --git a/Telegram/SourceFiles/export/output/export_output_json.cpp b/Telegram/SourceFiles/export/output/export_output_json.cpp index 03b487864..ab0749b3b 100644 --- a/Telegram/SourceFiles/export/output/export_output_json.cpp +++ b/Telegram/SourceFiles/export/output/export_output_json.cpp @@ -219,7 +219,7 @@ QByteArray SerializeMessage( if (message.media.content.is()) { return SerializeObject(context, { - { "id", NumberToString(message.id) }, + { "id", Data::NumberToString(message.id) }, { "type", SerializeString("unsupported") } }); } @@ -271,7 +271,7 @@ QByteArray SerializeMessage( }; const auto push = [&](const QByteArray &key, const auto &value) { if constexpr (std::is_arithmetic_v>) { - pushBare(key, NumberToString(value)); + pushBare(key, Data::NumberToString(value)); } else { const auto wrapped = QByteArray(value); if (!wrapped.isEmpty()) { @@ -288,6 +288,7 @@ QByteArray SerializeMessage( const auto pushFrom = [&](const QByteArray &label = "from") { if (message.fromId) { pushBare(label, wrapUserName(message.fromId)); + pushBare(label+"_id", Data::NumberToString(message.fromId)); } }; const auto pushReplyToMsgId = [&]( @@ -640,6 +641,7 @@ Result JsonWriter::writePersonal(const Data::PersonalInfo &data) { return _output->writeBlock( prepareObjectItemStart("personal_information") + SerializeObject(_context, { + { "user_id", Data::NumberToString(data.user.id) }, { "first_name", SerializeString(info.firstName) }, { "last_name", SerializeString(info.lastName) }, { @@ -745,6 +747,7 @@ Result JsonWriter::writeSavedContacts(const Data::ContactsList &data) { })); } else { block.append(SerializeObject(_context, { + { "user_id", Data::NumberToString(contact.userId) }, { "first_name", SerializeString(contact.firstName) }, { "last_name", SerializeString(contact.lastName) }, { @@ -789,6 +792,7 @@ Result JsonWriter::writeFrequentContacts(const Data::ContactsList &data) { }(); block.append(prepareArrayItemStart()); block.append(SerializeObject(_context, { + { "id", Data::NumberToString(top.peer.id()) }, { "category", SerializeString(category) }, { "type", SerializeString(type) }, { "name", StringAllowNull(top.peer.name()) }, @@ -981,6 +985,8 @@ Result JsonWriter::writeDialogStart(const Data::DialogInfo &data) { } block.append(prepareObjectItemStart("type") + StringAllowNull(TypeString(data.type))); + block.append(prepareObjectItemStart("id") + + Data::NumberToString(data.peerId)); block.append(prepareObjectItemStart("messages")); block.append(pushNesting(Context::kArray)); return _output->writeBlock(block);