logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: ff6b8a6443c2c97d185927053bdc8816e0e03434
parent: 6b76a6212d8aa596379115b248ec145905946c42
Author: ThibG <thib@sitedethib.com>
Date:   Mon, 19 Mar 2018 20:19:35 +0100

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:

Mapp/lib/ostatus/atom_serializer.rb2+-
Mapp/serializers/activitypub/note_serializer.rb2+-
Mapp/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 @@ -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 @@ -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 @@ -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