From 8b621d30b4ae4a23c36fce7da43a0df39da3f221 Mon Sep 17 00:00:00 2001 From: KMY Date: Wed, 31 May 2023 19:49:17 +0900 Subject: [PATCH 1/5] Fix emoji reaction delivery error --- app/workers/delivery_emoji_reaction_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/delivery_emoji_reaction_worker.rb b/app/workers/delivery_emoji_reaction_worker.rb index 46d1c7b339..1f18ea5add 100644 --- a/app/workers/delivery_emoji_reaction_worker.rb +++ b/app/workers/delivery_emoji_reaction_worker.rb @@ -11,7 +11,7 @@ class DeliveryEmojiReactionWorker if status.present? scope_status(status).includes(:user).find_each do |account| - redis.publish("timeline:#{account.id}", payload_json) if !account.user&.setting_stop_emoji_reaction_streaming && redis.exists?("subscribed:timeline:#{account.id}") + redis.publish("timeline:#{account.id}", payload_json) if (!account.respond_to?(:user) || !account.user&.setting_stop_emoji_reaction_streaming) && redis.exists?("subscribed:timeline:#{account.id}") end end From b43135db831edb7d36a365e32dc014eb47e050d6 Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 1 Jun 2023 08:39:34 +0900 Subject: [PATCH 2/5] Fix emoji_reaction notification error in feather --- app/serializers/rest/notify_emoji_reaction_serializer.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/serializers/rest/notify_emoji_reaction_serializer.rb b/app/serializers/rest/notify_emoji_reaction_serializer.rb index 2d557894ed..67f923f06e 100644 --- a/app/serializers/rest/notify_emoji_reaction_serializer.rb +++ b/app/serializers/rest/notify_emoji_reaction_serializer.rb @@ -5,7 +5,7 @@ class REST::NotifyEmojiReactionSerializer < ActiveModel::Serializer attributes :name - attribute :count, if: :count? + attribute :count attribute :url, if: :custom_emoji? attribute :static_url, if: :custom_emoji? attribute :domain, if: :custom_emoji? @@ -16,6 +16,10 @@ class REST::NotifyEmojiReactionSerializer < ActiveModel::Serializer object.respond_to?(:count) end + def count + count? ? object.count : 1 + end + def custom_emoji? object.respond_to?(:custom_emoji) && object.custom_emoji.present? end From c382e94c8d34e6d083b8b526668a483a4867e4d2 Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 1 Jun 2023 08:51:27 +0900 Subject: [PATCH 3/5] Fix emoji_reaction in feather more --- app/serializers/rest/notify_emoji_reaction_serializer.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/serializers/rest/notify_emoji_reaction_serializer.rb b/app/serializers/rest/notify_emoji_reaction_serializer.rb index 67f923f06e..6f2b99a0c8 100644 --- a/app/serializers/rest/notify_emoji_reaction_serializer.rb +++ b/app/serializers/rest/notify_emoji_reaction_serializer.rb @@ -11,6 +11,7 @@ class REST::NotifyEmojiReactionSerializer < ActiveModel::Serializer attribute :domain, if: :custom_emoji? attribute :width, if: :width? attribute :height, if: :height? + attribute :me def count? object.respond_to?(:count) @@ -55,4 +56,8 @@ class REST::NotifyEmojiReactionSerializer < ActiveModel::Serializer def height object.custom_emoji.respond_to?(:image_height) ? object.custom_emoji.image_height : object.custom_emoji.height end + + def me + false + end end From 7e40c6ca4d62f7be8cbc093cae113f7ee7284c66 Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 1 Jun 2023 09:21:23 +0900 Subject: [PATCH 4/5] Fix not searchable in fedibird --- app/lib/activitypub/tag_manager.rb | 2 +- app/models/account.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb index 8453eff890..e28a9c30b2 100644 --- a/app/lib/activitypub/tag_manager.rb +++ b/app/lib/activitypub/tag_manager.rb @@ -233,7 +233,7 @@ class ActivityPub::TagManager end def account_searchable_by(account) - case account.searchability + case account.compute_searchability_activitypub when 'public' [COLLECTIONS[:public]] when 'private', 'direct' diff --git a/app/models/account.rb b/app/models/account.rb index 20d7d1b031..b3bc6badac 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -530,6 +530,10 @@ class Account < ApplicationRecord save! end + def compute_searchability_activitypub + local? ? 'public' : searchability + end + private def prepare_contents From 01fcf8460476483ab0f8e205086a52951b9507d8 Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 1 Jun 2023 17:22:24 +0900 Subject: [PATCH 5/5] Remove custom_emoji aliases property from part of rest api --- app/serializers/rest/account_serializer.rb | 2 +- .../rest/custom_emoji_serializer.rb | 48 +---------------- .../rest/custom_emoji_slim_serializer.rb | 52 +++++++++++++++++++ app/serializers/rest/poll_serializer.rb | 2 +- .../rest/status_edit_serializer.rb | 2 +- app/serializers/rest/status_serializer.rb | 2 +- 6 files changed, 57 insertions(+), 51 deletions(-) create mode 100644 app/serializers/rest/custom_emoji_slim_serializer.rb diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index dbd6ab2186..7083933463 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -11,7 +11,7 @@ class REST::AccountSerializer < ActiveModel::Serializer has_one :moved_to_account, key: :moved, serializer: REST::AccountSerializer, if: :moved_and_not_nested? - has_many :emojis, serializer: REST::CustomEmojiSerializer + has_many :emojis, serializer: REST::CustomEmojiSlimSerializer attribute :suspended, if: :suspended? attribute :silenced, key: :limited, if: :silenced? diff --git a/app/serializers/rest/custom_emoji_serializer.rb b/app/serializers/rest/custom_emoji_serializer.rb index 3c34f09199..efcdaa8e86 100644 --- a/app/serializers/rest/custom_emoji_serializer.rb +++ b/app/serializers/rest/custom_emoji_serializer.rb @@ -1,57 +1,11 @@ # frozen_string_literal: true -class REST::CustomEmojiSerializer < ActiveModel::Serializer +class REST::CustomEmojiSerializer < REST::CustomEmojiSlimSerializer include RoutingHelper - attributes :shortcode, :url, :static_url, :visible_in_picker - - attribute :category, if: :category_loaded? - attribute :width, if: :width? - attribute :height, if: :height? attribute :aliases, if: :aliases? - attribute :sensitive, if: :sensitive? - - def url - full_asset_url(object.image.url) - end - - def static_url - full_asset_url(object.image.url(:static)) - end - - def category - object.category.name - end - - def category_loaded? - object.association(:category).loaded? && object.category.present? - end - - def width? - object.respond_to?(:image_width) || object.respond_to?(:width) - end - - def height? - object.respond_to?(:image_height) || object.respond_to?(:height) - end - - def width - object.respond_to?(:image_width) ? object.image_width : object.width - end - - def height - object.respond_to?(:image_height) ? object.image_height : object.height - end def aliases? object.respond_to?(:aliases) && object.aliases.present? end - - def sensitive? - object.respond_to?(:is_sensitive) - end - - def sensitive - object.is_sensitive - end end diff --git a/app/serializers/rest/custom_emoji_slim_serializer.rb b/app/serializers/rest/custom_emoji_slim_serializer.rb new file mode 100644 index 0000000000..38add019f8 --- /dev/null +++ b/app/serializers/rest/custom_emoji_slim_serializer.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class REST::CustomEmojiSlimSerializer < ActiveModel::Serializer + include RoutingHelper + + attributes :shortcode, :url, :static_url, :visible_in_picker + + attribute :category, if: :category_loaded? + attribute :width, if: :width? + attribute :height, if: :height? + attribute :sensitive, if: :sensitive? + + def url + full_asset_url(object.image.url) + end + + def static_url + full_asset_url(object.image.url(:static)) + end + + def category + object.category.name + end + + def category_loaded? + object.association(:category).loaded? && object.category.present? + end + + def width? + object.respond_to?(:image_width) || object.respond_to?(:width) + end + + def height? + object.respond_to?(:image_height) || object.respond_to?(:height) + end + + def width + object.respond_to?(:image_width) ? object.image_width : object.width + end + + def height + object.respond_to?(:image_height) ? object.image_height : object.height + end + + def sensitive? + object.respond_to?(:is_sensitive) + end + + def sensitive + object.is_sensitive + end +end diff --git a/app/serializers/rest/poll_serializer.rb b/app/serializers/rest/poll_serializer.rb index df6ebd0d44..f66e046bb0 100644 --- a/app/serializers/rest/poll_serializer.rb +++ b/app/serializers/rest/poll_serializer.rb @@ -5,7 +5,7 @@ class REST::PollSerializer < ActiveModel::Serializer :multiple, :votes_count, :voters_count has_many :loaded_options, key: :options - has_many :emojis, serializer: REST::CustomEmojiSerializer + has_many :emojis, serializer: REST::CustomEmojiSlimSerializer attribute :voted, if: :current_user? attribute :own_votes, if: :current_user? diff --git a/app/serializers/rest/status_edit_serializer.rb b/app/serializers/rest/status_edit_serializer.rb index 58fb039a01..476e946a14 100644 --- a/app/serializers/rest/status_edit_serializer.rb +++ b/app/serializers/rest/status_edit_serializer.rb @@ -8,7 +8,7 @@ class REST::StatusEditSerializer < ActiveModel::Serializer attributes :content, :spoiler_text, :markdown, :sensitive, :created_at has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer - has_many :emojis, serializer: REST::CustomEmojiSerializer + has_many :emojis, serializer: REST::CustomEmojiSlimSerializer attribute :poll, if: -> { object.poll_options.present? } diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index fe9334205e..7b4ec35534 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -26,7 +26,7 @@ class REST::StatusSerializer < ActiveModel::Serializer has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer has_many :ordered_mentions, key: :mentions has_many :tags - has_many :emojis, serializer: REST::CustomEmojiSerializer + has_many :emojis, serializer: REST::CustomEmojiSlimSerializer has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer