Added support of media with spoiler to export to JSON.

This commit is contained in:
23rd 2024-12-04 11:47:32 +03:00
parent bbf9d523a6
commit 42142d819a
3 changed files with 15 additions and 0 deletions

View file

@ -920,6 +920,7 @@ StoriesSlice ParseStoriesSlice(
auto content = photo auto content = photo
? ParsePhoto(*photo, suggestedPath) ? ParsePhoto(*photo, suggestedPath)
: Photo(); : Photo();
content.spoilered = data.is_spoiler();
media.content = content; media.content = content;
}, [&](const MTPDmessageMediaDocument &data) { }, [&](const MTPDmessageMediaDocument &data) {
const auto document = data.vdocument(); const auto document = data.vdocument();
@ -948,6 +949,7 @@ StoriesSlice ParseStoriesSlice(
date, date,
extension); extension);
content.thumb.file.suggestedPath = path + "_thumb.jpg"; content.thumb.file.suggestedPath = path + "_thumb.jpg";
content.spoilered = data.is_spoiler();
media.content = content; media.content = content;
}, [&](const auto &data) { }, [&](const auto &data) {
media.content = UnsupportedMedia(); media.content = UnsupportedMedia();
@ -1329,6 +1331,7 @@ Media ParseMedia(
+ "photos/" + "photos/"
+ PreparePhotoFileName(++context.photos, date)) + PreparePhotoFileName(++context.photos, date))
: Photo(); : Photo();
content.spoilered = data.is_spoiler();
if (const auto ttl = data.vttl_seconds()) { if (const auto ttl = data.vttl_seconds()) {
result.ttl = ttl->v; result.ttl = ttl->v;
content.image.file = File(); content.image.file = File();
@ -1349,6 +1352,7 @@ Media ParseMedia(
result.ttl = ttl->v; result.ttl = ttl->v;
content.file = File(); content.file = File();
} }
content.spoilered = data.is_spoiler();
result.content = content; result.content = content;
}, [&](const MTPDmessageMediaWebPage &data) { }, [&](const MTPDmessageMediaWebPage &data) {
// Ignore web pages. // Ignore web pages.

View file

@ -119,6 +119,7 @@ uint8 ContactColorIndex(const ContactInfo &data);
struct Photo { struct Photo {
uint64 id = 0; uint64 id = 0;
TimeId date = 0; TimeId date = 0;
bool spoilered = false;
Image image; Image image;
}; };
@ -146,6 +147,7 @@ struct Document {
bool isVoiceMessage = false; bool isVoiceMessage = false;
bool isVideoFile = false; bool isVideoFile = false;
bool isAudioFile = false; bool isAudioFile = false;
bool spoilered = false;
}; };
struct SharedContact { struct SharedContact {

View file

@ -390,6 +390,11 @@ QByteArray SerializeMessage(
push("height", image.height); push("height", image.height);
} }
}; };
const auto pushSpoiler = [&](const auto &media) {
if (media.spoilered) {
push("media_spoiler", true);
}
};
v::match(message.action.content, [&](const ActionChatCreate &data) { v::match(message.action.content, [&](const ActionChatCreate &data) {
pushActor(); pushActor();
@ -404,6 +409,7 @@ QByteArray SerializeMessage(
pushActor(); pushActor();
pushAction("edit_group_photo"); pushAction("edit_group_photo");
pushPhoto(data.photo.image); pushPhoto(data.photo.image);
pushSpoiler(data.photo);
}, [&](const ActionChatDeletePhoto &data) { }, [&](const ActionChatDeletePhoto &data) {
pushActor(); pushActor();
pushAction("delete_group_photo"); pushAction("delete_group_photo");
@ -587,6 +593,7 @@ QByteArray SerializeMessage(
pushActor(); pushActor();
pushAction("suggest_profile_photo"); pushAction("suggest_profile_photo");
pushPhoto(data.photo.image); pushPhoto(data.photo.image);
pushSpoiler(data.photo);
}, [&](const ActionRequestedPeer &data) { }, [&](const ActionRequestedPeer &data) {
pushActor(); pushActor();
pushAction("requested_peer"); pushAction("requested_peer");
@ -684,6 +691,7 @@ QByteArray SerializeMessage(
v::match(message.media.content, [&](const Photo &photo) { v::match(message.media.content, [&](const Photo &photo) {
pushPhoto(photo.image); pushPhoto(photo.image);
pushSpoiler(photo);
pushTTL(); pushTTL();
}, [&](const Document &data) { }, [&](const Document &data) {
pushPath(data.file, "file"); pushPath(data.file, "file");
@ -718,6 +726,7 @@ QByteArray SerializeMessage(
push("width", data.width); push("width", data.width);
push("height", data.height); push("height", data.height);
} }
pushSpoiler(data);
pushTTL(); pushTTL();
}, [&](const SharedContact &data) { }, [&](const SharedContact &data) {
pushBare("contact_information", SerializeObject(context, { pushBare("contact_information", SerializeObject(context, {