diff --git a/app/helpers/context_helper.rb b/app/helpers/context_helper.rb index 69a8767f0f..ab0d44ca69 100644 --- a/app/helpers/context_helper.rb +++ b/app/helpers/context_helper.rb @@ -30,6 +30,8 @@ module ContextHelper other_setting: { 'fedibird' => 'http://fedibird.com/ns#', 'otherSetting' => 'fedibird:otherSetting' }, references: { 'fedibird' => 'http://fedibird.com/ns#', 'references' => { '@id' => 'fedibird:references', '@type' => '@id' } }, quote_uri: { 'fedibird' => 'http://fedibird.com/ns#', 'quoteUri' => 'fedibird:quoteUri' }, + keywords: { 'schema' => 'http://schema.org#', 'keywords' => 'schema:keywords' }, + license: { 'schema' => 'http://schema.org#', 'license' => 'schema:license' }, olm: { 'toot' => 'http://joinmastodon.org/ns#', 'Device' => 'toot:Device', 'Ed25519Signature' => 'toot:Ed25519Signature', 'Ed25519Key' => 'toot:Ed25519Key', 'Curve25519Key' => 'toot:Curve25519Key', 'EncryptedMessage' => 'toot:EncryptedMessage', 'publicKeyBase64' => 'toot:publicKeyBase64', 'deviceId' => 'toot:deviceId', 'claim' => { '@type' => '@id', '@id' => 'toot:claim' }, diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index fe37c3234b..204899fa39 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -274,6 +274,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity emoji.image_remote_url = custom_emoji_parser.image_remote_url emoji.license = custom_emoji_parser.license emoji.is_sensitive = custom_emoji_parser.is_sensitive + emoji.aliases = custom_emoji_parser.aliases emoji.save rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing emoji: #{e}" diff --git a/app/lib/activitypub/activity/like.rb b/app/lib/activitypub/activity/like.rb index ba103b1fa7..8be8345613 100644 --- a/app/lib/activitypub/activity/like.rb +++ b/app/lib/activitypub/activity/like.rb @@ -127,6 +127,7 @@ class ActivityPub::Activity::Like < ActivityPub::Activity emoji.image_remote_url = custom_emoji_parser.image_remote_url emoji.license = custom_emoji_parser.license emoji.is_sensitive = custom_emoji_parser.is_sensitive + emoji.aliases = custom_emoji_parser.aliases emoji.save rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing emoji: #{e}" diff --git a/app/lib/activitypub/parser/custom_emoji_parser.rb b/app/lib/activitypub/parser/custom_emoji_parser.rb index e217b5ec96..e2c48b0a90 100644 --- a/app/lib/activitypub/parser/custom_emoji_parser.rb +++ b/app/lib/activitypub/parser/custom_emoji_parser.rb @@ -15,6 +15,10 @@ class ActivityPub::Parser::CustomEmojiParser @json['name']&.delete(':') end + def aliases + as_array(@json['keywords']) + end + def image_remote_url @json.dig('icon', 'url') end diff --git a/app/serializers/activitypub/emoji_serializer.rb b/app/serializers/activitypub/emoji_serializer.rb index 98525d3131..a8dfff58f6 100644 --- a/app/serializers/activitypub/emoji_serializer.rb +++ b/app/serializers/activitypub/emoji_serializer.rb @@ -3,9 +3,9 @@ class ActivityPub::EmojiSerializer < ActivityPub::Serializer include RoutingHelper - context_extensions :emoji + context_extensions :emoji, :license, :keywords - attributes :id, :type, :domain, :name, :is_sensitive, :updated + attributes :id, :type, :domain, :name, :keywords, :is_sensitive, :updated attribute :license, if: -> { object.license.present? } @@ -23,6 +23,10 @@ class ActivityPub::EmojiSerializer < ActivityPub::Serializer object.domain.presence || Rails.configuration.x.local_domain end + def keywords + object.aliases + end + def icon object.image end diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index c7bc93f781..cbef13fbed 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -249,6 +249,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService emoji.image_remote_url = custom_emoji_parser.image_remote_url emoji.license = custom_emoji_parser.license emoji.is_sensitive = custom_emoji_parser.is_sensitive + emoji.aliases = custom_emoji_parser.aliases emoji.save rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing emoji: #{e}"