From aaf4542e6208460c305db4be36b15dc832ddc95a Mon Sep 17 00:00:00 2001 From: Patiga Date: Tue, 28 Jun 2022 12:11:17 +0200 Subject: Implement XEP-0447: Stateless file sharing --- main/src/ui/util/file_metadata_providers.vala | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 main/src/ui/util/file_metadata_providers.vala (limited to 'main/src/ui/util/file_metadata_providers.vala') diff --git a/main/src/ui/util/file_metadata_providers.vala b/main/src/ui/util/file_metadata_providers.vala new file mode 100644 index 00000000..9e8d9640 --- /dev/null +++ b/main/src/ui/util/file_metadata_providers.vala @@ -0,0 +1,27 @@ +using Dino.Entities; +using Xmpp; +using Xmpp.Xep; +using Gtk; + +namespace Dino.Ui.Util { + +public class AudioVideoFileMetadataProvider: Dino.FileMetadataProvider, Object { + public bool supports_file(File file) { + string? mime_type = file.query_info("*", FileQueryInfoFlags.NONE).get_content_type(); + if (mime_type == null) { + return false; + } + return mime_type.has_prefix("audio") || mime_type.has_prefix("video"); + } + + public async void fill_metadata(File file, Xep.FileMetadataElement.FileMetadata metadata) { + MediaFile media = MediaFile.for_file(file); + media.notify["prepared"].connect((object, pspec) => { + Idle.add(fill_metadata.callback); + }); + yield; + metadata.length = media.duration / 1000; + } +} + +} \ No newline at end of file -- cgit v1.2.3-70-g09d2