diff --git a/lib/structs/events/common.cpp b/lib/structs/events/common.cpp index a1d1b60d18e0f766abdd996f0133b71b444e3aa2..6245a2fdacf2a4cec6912fc49743e5b7f2fb62ef 100644 --- a/lib/structs/events/common.cpp +++ b/lib/structs/events/common.cpp @@ -60,12 +60,14 @@ from_json(const json &obj, ImageInfo &info) void to_json(json &obj, const ImageInfo &info) { - obj["h"] = info.h; - obj["w"] = info.w; - obj["size"] = info.size; - obj["mimetype"] = info.mimetype; - obj["thumbnail_url"] = info.thumbnail_url; - obj["thumbnail_info"] = info.thumbnail_info; + obj["h"] = info.h; + obj["w"] = info.w; + obj["size"] = info.size; + obj["mimetype"] = info.mimetype; + if (!info.thumbnail_url.empty()) { + obj["thumbnail_url"] = info.thumbnail_url; + obj["thumbnail_info"] = info.thumbnail_info; + } if (info.thumbnail_file) obj["thumbnail_file"] = info.thumbnail_file.value(); } @@ -92,10 +94,12 @@ from_json(const json &obj, FileInfo &info) void to_json(json &obj, const FileInfo &info) { - obj["size"] = info.size; - obj["mimetype"] = info.mimetype; - obj["thumbnail_url"] = info.thumbnail_url; - obj["thumbnail_info"] = info.thumbnail_info; + obj["size"] = info.size; + obj["mimetype"] = info.mimetype; + if (!info.thumbnail_url.empty()) { + obj["thumbnail_url"] = info.thumbnail_url; + obj["thumbnail_info"] = info.thumbnail_info; + } if (info.thumbnail_file) obj["thumbnail_file"] = info.thumbnail_file.value(); } diff --git a/tests/messages.cpp b/tests/messages.cpp index cfa1b9b5d08bc5e29e9c536fd78c0d8a1d60ac89..e0e613b4278ff3e7872a264f489320392070aa84 100644 --- a/tests/messages.cpp +++ b/tests/messages.cpp @@ -130,7 +130,14 @@ TEST(RoomEvents, FileMessage) "body": "optimize.pdf", "info": { "mimetype": "application/pdf", - "size": 40565 + "size": 40565, + "thumbnail_info": { + "h": 200, + "mimetype": "image/png", + "size": 73602, + "w": 140 + }, + "thumbnail_url": "mxc://matrix.org/XpxykZBESCSQnYkLKbbIKnVn" }, "msgtype": "m.file", "url": "mxc://matrix.org/XpxykZBESCSQnYkLKbbIKnVn", @@ -161,6 +168,15 @@ TEST(RoomEvents, FileMessage) EXPECT_EQ(event.content.info.size, 40565); EXPECT_EQ(event.content.relates_to.in_reply_to.event_id, "$6GKhAfJOcwNd69lgSizdcTob8z2pWQgBOZPrnsWMA1E"); + + json withThumb = event; + EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_url"), 1); + EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_info"), 1); + + event.content.info.thumbnail_url = ""; + json withoutThumb = event; + EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_url"), 0); + EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_info"), 0); } TEST(RoomEvents, EncryptedImageMessage) @@ -300,6 +316,15 @@ TEST(RoomEvents, ImageMessage) EXPECT_EQ(event.content.info.thumbnail_info.size, 33504); EXPECT_EQ(event.content.relates_to.in_reply_to.event_id, "$6GKhAfJOcwNd69lgSizdcTob8z2pWQgBOZPrnsWMA1E"); + + json withThumb = event; + EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_url"), 1); + EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_info"), 1); + + event.content.info.thumbnail_url = ""; + json withoutThumb = event; + EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_url"), 0); + EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_info"), 0); } TEST(RoomEvents, LocationMessage) {}