diff options
| author | fiaxh <git@lightrise.org> | 2025-06-14 17:06:45 +0200 |
|---|---|---|
| committer | fiaxh <git@lightrise.org> | 2025-06-14 17:06:45 +0200 |
| commit | 1dae4e1abd2b49fdfb64eecf068d1085dcd7e125 (patch) | |
| tree | 01c8c0d8ae4ea01598fff336368a3fd88c374e0f /main/src/ui/conversation_content_view/file_image_widget.vala | |
| parent | 1254a753eb3c85f35e5bc322dbe4a3f177e79c88 (diff) | |
Support media elements in data forms
Diffstat (limited to 'main/src/ui/conversation_content_view/file_image_widget.vala')
| -rw-r--r-- | main/src/ui/conversation_content_view/file_image_widget.vala | 35 |
1 files changed, 5 insertions, 30 deletions
diff --git a/main/src/ui/conversation_content_view/file_image_widget.vala b/main/src/ui/conversation_content_view/file_image_widget.vala index f95620b9..fa848c6d 100644 --- a/main/src/ui/conversation_content_view/file_image_widget.vala +++ b/main/src/ui/conversation_content_view/file_image_widget.vala @@ -217,37 +217,12 @@ public class FileImageWidget : Widget { } public static Pixbuf? parse_thumbnail(Xep.JingleContentThumbnails.Thumbnail thumbnail) { - string[] splits = thumbnail.uri.split(":", 2); - if (splits.length != 2) { - warning("Thumbnail parsing error: ':' not found"); - return null; + Bytes? data = Xep.BitsOfBinary.get_data_for_uri(thumbnail.uri); + if (data == null) { + warning("Couldn't parse data from uri: %s", thumbnail.uri); } - if (splits[0] != "data") { - warning("Unsupported thumbnail: unimplemented uri type\n"); - return null; - } - splits = splits[1].split(";", 2); - if (splits.length != 2) { - warning("Thumbnail parsing error: ';' not found"); - return null; - } - if (splits[0] != "image/png") { - warning("Unsupported thumbnail: unsupported mime-type\n"); - return null; - } - splits = splits[1].split(",", 2); - if (splits.length != 2) { - warning("Thumbnail parsing error: ',' not found"); - return null; - } - if (splits[0] != "base64") { - warning("Unsupported thumbnail: data is not base64 encoded\n"); - return null; - } - uint8[] data = Base64.decode(splits[1]); - MemoryInputStream input_stream = new MemoryInputStream.from_data(data); - Pixbuf pixbuf = new Pixbuf.from_stream(input_stream); - return pixbuf; + MemoryInputStream input_stream = new MemoryInputStream.from_data(data.get_data()); + return new Pixbuf.from_stream(input_stream); } public static bool can_display(FileTransfer file_transfer) { |
