aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2025-06-14 17:06:45 +0200
committerfiaxh <git@lightrise.org>2025-06-14 17:06:45 +0200
commit1dae4e1abd2b49fdfb64eecf068d1085dcd7e125 (patch)
tree01c8c0d8ae4ea01598fff336368a3fd88c374e0f /xmpp-vala
parent1254a753eb3c85f35e5bc322dbe4a3f177e79c88 (diff)
Support media elements in data forms
Diffstat (limited to 'xmpp-vala')
-rw-r--r--xmpp-vala/src/module/xep/0264_jingle_content_thumbnails.vala19
1 files changed, 15 insertions, 4 deletions
diff --git a/xmpp-vala/src/module/xep/0264_jingle_content_thumbnails.vala b/xmpp-vala/src/module/xep/0264_jingle_content_thumbnails.vala
index 053fb7d5..5dba0c6d 100644
--- a/xmpp-vala/src/module/xep/0264_jingle_content_thumbnails.vala
+++ b/xmpp-vala/src/module/xep/0264_jingle_content_thumbnails.vala
@@ -14,6 +14,7 @@ namespace Xmpp.Xep.JingleContentThumbnails {
public class Thumbnail {
public string uri;
+ public Bytes data;
public string? media_type;
public int width;
public int height;
@@ -34,11 +35,21 @@ namespace Xmpp.Xep.JingleContentThumbnails {
}
public static Thumbnail? from_stanza_node(StanzaNode node) {
- Thumbnail thumbnail = new Thumbnail();
- thumbnail.uri = node.get_attribute("uri");
- if (thumbnail.uri == null) {
- return null;
+ string uri = node.get_attribute("uri");
+ if (uri == null) return null;
+
+ string? data_uri = null;
+ Bytes data = BitsOfBinary.get_data_for_uri(uri);
+
+ if (uri.has_suffix("@bob.xmpp.org")) {
+ data_uri = "data:image/png;base64," + Base64.encode(data.get_data());
+ } else if (uri.has_prefix("data:image/png;base64,")) {
+ data_uri = uri;
}
+
+ Thumbnail thumbnail = new Thumbnail();
+ thumbnail.uri = data_uri;
+ thumbnail.data = data;
thumbnail.media_type = node.get_attribute("media-type");
thumbnail.width = node.get_attribute_int("width");
thumbnail.height = node.get_attribute_int("height");