aboutsummaryrefslogtreecommitdiff
path: root/app/serializers
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2020-06-29 13:56:55 +0200
committerGitHub <noreply@github.com>2020-06-29 13:56:55 +0200
commit64aac3073340dbc92c33f5f1c6f76dcafa77a450 (patch)
tree5d9594b7f7fa56903e71a4b0d06e6946763ec846 /app/serializers
parentfa4876a1b93d4bb62038cca75bd5017fe49b59ae (diff)
downloadmastodon-64aac3073340dbc92c33f5f1c6f76dcafa77a450.tar
mastodon-64aac3073340dbc92c33f5f1c6f76dcafa77a450.tar.gz
mastodon-64aac3073340dbc92c33f5f1c6f76dcafa77a450.tar.bz2
mastodon-64aac3073340dbc92c33f5f1c6f76dcafa77a450.zip
Add customizable thumbnails for audio and video attachments (#14145)
- Change audio files to not be stripped of metadata - Automatically extract cover art from audio if it exists - Add `thumbnail` parameter to `POST /api/v1/media`, `POST /api/v2/media` and `PUT /api/v1/media/:id` - Add `icon` to represent it in attachments in ActivityPub - Fix `preview_url` containing URL of missing missing image when there is no thumbnail instead of null - Fix duration of audio not being displayed on public pages until the file is loaded
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/activitypub/note_serializer.rb10
-rw-r--r--app/serializers/rest/media_attachment_serializer.rb4
2 files changed, 13 insertions, 1 deletions
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index 110621a28..f26fd93a4 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -167,6 +167,8 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
attributes :type, :media_type, :url, :name, :blurhash
attribute :focal_point, if: :focal_point?
+ has_one :icon, serializer: ActivityPub::ImageSerializer, if: :thumbnail?
+
def type
'Document'
end
@@ -190,6 +192,14 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
def focal_point
[object.file.meta['focus']['x'], object.file.meta['focus']['y']]
end
+
+ def icon
+ object.thumbnail
+ end
+
+ def thumbnail?
+ object.thumbnail.present?
+ end
end
class MentionSerializer < ActivityPub::Serializer
diff --git a/app/serializers/rest/media_attachment_serializer.rb b/app/serializers/rest/media_attachment_serializer.rb
index cc10e3001..e65f7acf1 100644
--- a/app/serializers/rest/media_attachment_serializer.rb
+++ b/app/serializers/rest/media_attachment_serializer.rb
@@ -28,7 +28,9 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer
def preview_url
if object.needs_redownload?
media_proxy_url(object.id, :small)
- else
+ elsif object.thumbnail.present?
+ full_asset_url(object.thumbnail.url(:original))
+ elsif object.file.styles.key?(:small)
full_asset_url(object.file.url(:small))
end
end