diff options
| author | fiaxh <git@lightrise.org> | 2025-06-14 17:50:07 +0200 |
|---|---|---|
| committer | fiaxh <git@lightrise.org> | 2025-06-14 17:50:07 +0200 |
| commit | bd8f277b9129a48a95ee19a2a3ec41d13aa66d4a (patch) | |
| tree | d3538411c045c8245e81a32237039e924dd4efa4 /libdino/src | |
| parent | 1dae4e1abd2b49fdfb64eecf068d1085dcd7e125 (diff) | |
Add basic support for BOB thumbnails in SFS
Diffstat (limited to 'libdino/src')
| -rw-r--r-- | libdino/src/entity/file_transfer.vala | 6 | ||||
| -rw-r--r-- | libdino/src/service/database.vala | 1 | ||||
| -rw-r--r-- | libdino/src/service/sfs_metadata.vala | 6 |
3 files changed, 7 insertions, 6 deletions
diff --git a/libdino/src/entity/file_transfer.vala b/libdino/src/entity/file_transfer.vala index 52347028..7b146c9a 100644 --- a/libdino/src/entity/file_transfer.vala +++ b/libdino/src/entity/file_transfer.vala @@ -160,7 +160,7 @@ public class FileTransfer : Object { foreach(var thumbnail_row in db.file_thumbnails.select().with(db.file_thumbnails.id, "=", id)) { Xep.JingleContentThumbnails.Thumbnail thumbnail = new Xep.JingleContentThumbnails.Thumbnail(); - thumbnail.uri = thumbnail_row[db.file_thumbnails.uri]; + thumbnail.data = Xmpp.get_data_for_uri(thumbnail_row[db.file_thumbnails.uri]); thumbnail.media_type = thumbnail_row[db.file_thumbnails.mime_type]; thumbnail.width = thumbnail_row[db.file_thumbnails.width]; thumbnail.height = thumbnail_row[db.file_thumbnails.height]; @@ -214,9 +214,11 @@ public class FileTransfer : Object { .perform(); } foreach (Xep.JingleContentThumbnails.Thumbnail thumbnail in thumbnails) { + string data_uri = "data:image/png;base64," + Base64.encode(thumbnail.data.get_data()); + db.file_thumbnails.insert() .value(db.file_thumbnails.id, id) - .value(db.file_thumbnails.uri, thumbnail.uri) + .value(db.file_thumbnails.uri, data_uri) .value(db.file_thumbnails.mime_type, thumbnail.media_type) .value(db.file_thumbnails.width, thumbnail.width) .value(db.file_thumbnails.height, thumbnail.height) diff --git a/libdino/src/service/database.vala b/libdino/src/service/database.vala index 06676951..e47e24e9 100644 --- a/libdino/src/service/database.vala +++ b/libdino/src/service/database.vala @@ -223,6 +223,7 @@ public class Database : Qlite.Database { public class FileThumbnailsTable : Table { public Column<int> id = new Column.Integer("id"); + // TODO store data as bytes, not as data uri public Column<string> uri = new Column.Text("uri") { not_null = true }; public Column<string> mime_type = new Column.Text("mime_type"); public Column<int> width = new Column.Integer("width"); diff --git a/libdino/src/service/sfs_metadata.vala b/libdino/src/service/sfs_metadata.vala index dff6f7bf..f0058c4e 100644 --- a/libdino/src/service/sfs_metadata.vala +++ b/libdino/src/service/sfs_metadata.vala @@ -68,10 +68,8 @@ namespace Dino { Pixbuf thumbnail_pixbuf = pixbuf.scale_simple(thumbnail_width, thumbnail_height, InterpType.BILINEAR); uint8[] buffer; thumbnail_pixbuf.save_to_buffer(out buffer, IMAGE_TYPE); - string base_64 = GLib.Base64.encode(buffer); - string uri = @"data:$MIME_TYPE;base64,$base_64"; - Xep.JingleContentThumbnails.Thumbnail thumbnail = new Xep.JingleContentThumbnails.Thumbnail(); - thumbnail.uri = uri; + var thumbnail = new Xep.JingleContentThumbnails.Thumbnail(); + thumbnail.data = new Bytes.take(buffer); thumbnail.media_type = MIME_TYPE; thumbnail.width = thumbnail_width; thumbnail.height = thumbnail_height; |
