From 0b9151859de3c778008bb9fadb2938d881a41bf5 Mon Sep 17 00:00:00 2001 From: KMY Date: Sat, 8 Apr 2023 09:35:23 +0900 Subject: [PATCH] Separate media_attachments property --- .../mastodon/actions/importer/normalizer.js | 12 ++++++++---- app/models/status.rb | 8 ++++++++ app/serializers/rest/status_serializer.rb | 3 ++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index 6e81d4b49a..4a69a29c9f 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -66,8 +66,12 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.filtered = status.filtered.map(normalizeFilterResult); } - if (status.emoji_reactions && normalOldStatus && normalOldStatus.get('emoji_reactions')) { - normalStatus.emoji_reactions = normalizeEmojiReactions(normalOldStatus.get('emoji_reactions').toArray()); + if (status.emoji_reactions) { + normalStatus.emoji_reactions = normalizeEmojiReactions(status.emoji_reactions); + } + + if (status.media_attachments_ex) { + normalStatus.media_attachments = status.media_attachments.concat(status.media_attachments_ex); } // Only calculate these values when status first encountered and @@ -104,8 +108,8 @@ export function normalizeEmojiReactions(emoji_reactions) { const myAccountId = me; let converted = []; for (let emoji_reaction of emoji_reactions) { - let obj = emoji_reaction.toObject(); - obj.me = obj.account_ids.toArray().some((id) => id === myAccountId); + let obj = emoji_reaction; + obj.me = obj.account_ids.some((id) => id === myAccountId); converted.push(obj); } return converted; diff --git a/app/models/status.rb b/app/models/status.rb index 06c7cd5e46..b67c0b529e 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -293,6 +293,14 @@ class Status < ApplicationRecord end end + def ordered_media_attachments_original_mastodon + ordered_media_attachments.take(4) + end + + def ordered_media_attachments_extra + ordered_media_attachments.drop(4).take(4) + end + def replies_count status_stat&.replies_count || 0 end diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index e86e07387b..bd7b279d68 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -22,7 +22,8 @@ class REST::StatusSerializer < ActiveModel::Serializer belongs_to :application, if: :show_application? belongs_to :account, serializer: REST::AccountSerializer - has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer + has_many :ordered_media_attachments_original_mastodon, key: :media_attachments, serializer: REST::MediaAttachmentSerializer + has_many :ordered_media_attachments_extra, key: :media_attachments_ex, serializer: REST::MediaAttachmentSerializer has_many :ordered_mentions, key: :mentions has_many :tags has_many :emojis, serializer: REST::CustomEmojiSerializer