summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2018-03-19 20:19:35 +0100
committerEugen Rochko <eugen@zeonfederated.com>2018-03-19 20:19:35 +0100
commitff6b8a6443c2c97d185927053bdc8816e0e03434 (patch)
tree160aa07b01886acdb0d1bd113c5d2e62c7e17115 /app
parent6b76a6212d8aa596379115b248ec145905946c42 (diff)
Serialize mentions in the order they are added (#6836)
Up until now, the order seemed to be in the *opposite* order, which caused the WebUI to populate mentions in reversed order when replying to toots local to one's instance.
Diffstat (limited to 'app')
-rw-r--r--app/lib/ostatus/atom_serializer.rb2
-rw-r--r--app/serializers/activitypub/note_serializer.rb2
-rw-r--r--app/serializers/rest/status_serializer.rb6
3 files changed, 7 insertions, 3 deletions
diff --git a/app/lib/ostatus/atom_serializer.rb b/app/lib/ostatus/atom_serializer.rb
index 656e4582228..46d0a8b37cd 100644
--- a/app/lib/ostatus/atom_serializer.rb
+++ b/app/lib/ostatus/atom_serializer.rb
@@ -351,7 +351,7 @@ class OStatus::AtomSerializer
append_element(entry, 'summary', status.spoiler_text, 'xml:lang': status.language) if status.spoiler_text?
append_element(entry, 'content', Formatter.instance.format(status).to_str, type: 'html', 'xml:lang': status.language)
- status.mentions.each do |mentioned|
+ status.mentions.order(:id).each do |mentioned|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:person], href: OStatus::TagManager.instance.uri_for(mentioned.account))
end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index d0e6290c182..abaf29047ad 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -57,7 +57,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
end
def virtual_tags
- object.mentions + object.tags + object.emojis
+ object.mentions.order(:id) + object.tags + object.emojis
end
def atom_uri
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index e6270f9024b..67da92cd5ce 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -15,7 +15,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
belongs_to :account, serializer: REST::AccountSerializer
has_many :media_attachments, serializer: REST::MediaAttachmentSerializer
- has_many :mentions
+ has_many :ordered_mentions, key: :mentions
has_many :tags
has_many :emojis, serializer: REST::CustomEmojiSerializer
@@ -86,6 +86,10 @@ class REST::StatusSerializer < ActiveModel::Serializer
%w(public unlisted).include?(object.visibility)
end
+ def ordered_mentions
+ object.mentions.order(:id)
+ end
+
class ApplicationSerializer < ActiveModel::Serializer
attributes :name, :website
end