From 1d26869ade9165b65f6f5c45bbd2f8d6708a6ddc Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 12 Feb 2026 16:06:03 +0100 Subject: Support video uploads in Mastodon plugin --- README.md | 2 +- .../mastodonshareplugin/mastodonplugininfo.cpp | 1 + .../mastodontransferplugin/mastodonuploader.cpp | 10 ++++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cfb2db2..6ce2dfb 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Sailfish OS account integration for Mastodon. - `mastodontransferplugin/`: media upload + status creation. - Single share UI entry: `MastodonSharePost.qml` handles both media and text/link posting. - Supports: - - image sharing (`image/jpeg`, `image/png`) + - media sharing (`image/jpeg`, `image/png`, `video/mp4`) - link/text sharing (`text/x-url`, `text/plain`) with title/link extraction from share resources. ### `icons/` diff --git a/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp b/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp index a9cc1b7..d2fffc4 100644 --- a/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp +++ b/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp @@ -7,6 +7,7 @@ MastodonPluginInfo::MastodonPluginInfo() { m_capabilities << QLatin1String("image/jpeg") << QLatin1String("image/png") + << QLatin1String("video/mp4") << QLatin1String("text/x-url") << QLatin1String("text/plain"); diff --git a/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp b/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp index 050df18..c025bdc 100644 --- a/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp +++ b/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp @@ -89,7 +89,8 @@ void MastodonUploader::startUploading() } const QString mimeType = mediaItem()->value(MediaItem::MimeType).toString(); - if (mimeType.startsWith(QLatin1String("image/"))) { + if (mimeType.startsWith(QLatin1String("image/")) + || mimeType.startsWith(QLatin1String("video/"))) { postImage(); } else if (mimeType.contains(QLatin1String("text/plain")) || mimeType.contains(QLatin1String("text/x-url"))) { @@ -154,7 +155,8 @@ void MastodonUploader::postImage() QMimeDatabase db; const QMimeType mime = db.mimeTypeForFile(sourceFile); - const bool isJpeg = mime.name() == QLatin1String("image/jpeg"); + const bool isImage = mediaItem()->value(MediaItem::MimeType).toString().startsWith(QLatin1String("image/")); + const bool isJpeg = isImage && mime.name() == QLatin1String("image/jpeg"); if (isJpeg && mediaItem()->value(MediaItem::MetadataStripped).toBool()) { m_useTmpFile = true; @@ -167,7 +169,7 @@ void MastodonUploader::postImage() } const qreal scale = mediaItem()->value(MediaItem::ScalePercent).toReal(); - if (0 < scale && scale < 1) { + if (isImage && 0 < scale && scale < 1) { m_useTmpFile = true; m_filePath = ImageOperation::scaleImage(sourceFile, scale, m_filePath); if (m_filePath.isEmpty()) { @@ -192,7 +194,7 @@ void MastodonUploader::postImage() setStatus(MediaTransferInterface::TransferStarted); } else { setStatus(MediaTransferInterface::TransferInterrupted); - qWarning() << Q_FUNC_INFO << "Failed to upload image"; + qWarning() << Q_FUNC_INFO << "Failed to upload media"; } } -- cgit v1.2.3