mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2025-02-12 09:05:17 +00:00
Merge branch 'fix-mastodon-edits' into 'develop'
Fix Mastodon incoming edits with inlined "likes" See merge request pleroma/pleroma!4318
This commit is contained in:
commit
011d70df79
8 changed files with 113 additions and 0 deletions
1
changelog.d/fix-mastodon-edits.fix
Normal file
1
changelog.d/fix-mastodon-edits.fix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix Mastodon incoming edits with inlined "likes"
|
|
@ -85,6 +85,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
|
||||||
|> fix_replies()
|
|> fix_replies()
|
||||||
|> fix_attachments()
|
|> fix_attachments()
|
||||||
|> CommonFixes.fix_quote_url()
|
|> CommonFixes.fix_quote_url()
|
||||||
|
|> CommonFixes.fix_likes()
|
||||||
|> Transmogrifier.fix_emoji()
|
|> Transmogrifier.fix_emoji()
|
||||||
|> Transmogrifier.fix_content_map()
|
|> Transmogrifier.fix_content_map()
|
||||||
end
|
end
|
||||||
|
|
|
@ -100,6 +100,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioImageVideoValidator do
|
||||||
|> CommonFixes.fix_actor()
|
|> CommonFixes.fix_actor()
|
||||||
|> CommonFixes.fix_object_defaults()
|
|> CommonFixes.fix_object_defaults()
|
||||||
|> CommonFixes.fix_quote_url()
|
|> CommonFixes.fix_quote_url()
|
||||||
|
|> CommonFixes.fix_likes()
|
||||||
|> Transmogrifier.fix_emoji()
|
|> Transmogrifier.fix_emoji()
|
||||||
|> fix_url()
|
|> fix_url()
|
||||||
|> fix_content()
|
|> fix_content()
|
||||||
|
|
|
@ -114,6 +114,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
|
||||||
|
|
||||||
def fix_quote_url(data), do: data
|
def fix_quote_url(data), do: data
|
||||||
|
|
||||||
|
# On Mastodon, `"likes"` attribute includes an inlined `Collection` with `totalItems`,
|
||||||
|
# not a list of users.
|
||||||
|
# https://github.com/mastodon/mastodon/pull/32007
|
||||||
|
def fix_likes(%{"likes" => %{}} = data), do: Map.drop(data, ["likes"])
|
||||||
|
|
||||||
|
def fix_likes(data), do: data
|
||||||
|
|
||||||
# https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md
|
# https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md
|
||||||
def object_link_tag?(%{
|
def object_link_tag?(%{
|
||||||
"type" => "Link",
|
"type" => "Link",
|
||||||
|
|
|
@ -47,6 +47,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EventValidator do
|
||||||
data
|
data
|
||||||
|> CommonFixes.fix_actor()
|
|> CommonFixes.fix_actor()
|
||||||
|> CommonFixes.fix_object_defaults()
|
|> CommonFixes.fix_object_defaults()
|
||||||
|
|> CommonFixes.fix_likes()
|
||||||
|> Transmogrifier.fix_emoji()
|
|> Transmogrifier.fix_emoji()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do
|
||||||
|> CommonFixes.fix_actor()
|
|> CommonFixes.fix_actor()
|
||||||
|> CommonFixes.fix_object_defaults()
|
|> CommonFixes.fix_object_defaults()
|
||||||
|> CommonFixes.fix_quote_url()
|
|> CommonFixes.fix_quote_url()
|
||||||
|
|> CommonFixes.fix_likes()
|
||||||
|> Transmogrifier.fix_emoji()
|
|> Transmogrifier.fix_emoji()
|
||||||
|> fix_closed()
|
|> fix_closed()
|
||||||
end
|
end
|
||||||
|
|
90
test/fixtures/mastodon-update-with-likes.json
vendored
Normal file
90
test/fixtures/mastodon-update-with-likes.json
vendored
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
"@context": [
|
||||||
|
"https://www.w3.org/ns/activitystreams",
|
||||||
|
{
|
||||||
|
"atomUri": "ostatus:atomUri",
|
||||||
|
"conversation": "ostatus:conversation",
|
||||||
|
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
||||||
|
"ostatus": "http://ostatus.org#",
|
||||||
|
"sensitive": "as:sensitive",
|
||||||
|
"toot": "http://joinmastodon.org/ns#",
|
||||||
|
"votersCount": "toot:votersCount"
|
||||||
|
},
|
||||||
|
"https://w3id.org/security/v1"
|
||||||
|
],
|
||||||
|
"actor": "https://pol.social/users/mkljczk",
|
||||||
|
"cc": ["https://www.w3.org/ns/activitystreams#Public",
|
||||||
|
"https://pol.social/users/aemstuz", "https://gts.mkljczk.pl/users/mkljczk",
|
||||||
|
"https://pl.fediverse.pl/users/mkljczk",
|
||||||
|
"https://fedi.kutno.pl/users/mkljczk"],
|
||||||
|
"id": "https://pol.social/users/mkljczk/statuses/113907871635572263#updates/1738096776",
|
||||||
|
"object": {
|
||||||
|
"atomUri": "https://pol.social/users/mkljczk/statuses/113907871635572263",
|
||||||
|
"attachment": [],
|
||||||
|
"attributedTo": "https://pol.social/users/mkljczk",
|
||||||
|
"cc": ["https://www.w3.org/ns/activitystreams#Public",
|
||||||
|
"https://pol.social/users/aemstuz", "https://gts.mkljczk.pl/users/mkljczk",
|
||||||
|
"https://pl.fediverse.pl/users/mkljczk",
|
||||||
|
"https://fedi.kutno.pl/users/mkljczk"],
|
||||||
|
"content": "<p>test</p>",
|
||||||
|
"contentMap": {
|
||||||
|
"pl": "<p>test</p>"
|
||||||
|
},
|
||||||
|
"conversation": "https://fedi.kutno.pl/contexts/43c14c70-d3fb-42b4-a36d-4eacfab9695a",
|
||||||
|
"id": "https://pol.social/users/mkljczk/statuses/113907871635572263",
|
||||||
|
"inReplyTo": "https://pol.social/users/aemstuz/statuses/113907854282654767",
|
||||||
|
"inReplyToAtomUri": "https://pol.social/users/aemstuz/statuses/113907854282654767",
|
||||||
|
"likes": {
|
||||||
|
"id": "https://pol.social/users/mkljczk/statuses/113907871635572263/likes",
|
||||||
|
"totalItems": 1,
|
||||||
|
"type": "Collection"
|
||||||
|
},
|
||||||
|
"published": "2025-01-28T20:29:45Z",
|
||||||
|
"replies": {
|
||||||
|
"first": {
|
||||||
|
"items": [],
|
||||||
|
"next": "https://pol.social/users/mkljczk/statuses/113907871635572263/replies?only_other_accounts=true&page=true",
|
||||||
|
"partOf": "https://pol.social/users/mkljczk/statuses/113907871635572263/replies",
|
||||||
|
"type": "CollectionPage"
|
||||||
|
},
|
||||||
|
"id": "https://pol.social/users/mkljczk/statuses/113907871635572263/replies",
|
||||||
|
"type": "Collection"
|
||||||
|
},
|
||||||
|
"sensitive": false,
|
||||||
|
"shares": {
|
||||||
|
"id": "https://pol.social/users/mkljczk/statuses/113907871635572263/shares",
|
||||||
|
"totalItems": 0,
|
||||||
|
"type": "Collection"
|
||||||
|
},
|
||||||
|
"summary": null,
|
||||||
|
"tag": [
|
||||||
|
{
|
||||||
|
"href": "https://pol.social/users/aemstuz",
|
||||||
|
"name": "@aemstuz",
|
||||||
|
"type": "Mention"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "https://gts.mkljczk.pl/users/mkljczk",
|
||||||
|
"name": "@mkljczk@gts.mkljczk.pl",
|
||||||
|
"type": "Mention"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "https://pl.fediverse.pl/users/mkljczk",
|
||||||
|
"name": "@mkljczk@fediverse.pl",
|
||||||
|
"type": "Mention"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "https://fedi.kutno.pl/users/mkljczk",
|
||||||
|
"name": "@mkljczk@fedi.kutno.pl",
|
||||||
|
"type": "Mention"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"to": ["https://pol.social/users/mkljczk/followers"],
|
||||||
|
"type": "Note",
|
||||||
|
"updated": "2025-01-28T20:39:36Z",
|
||||||
|
"url": "https://pol.social/@mkljczk/113907871635572263"
|
||||||
|
},
|
||||||
|
"published": "2025-01-28T20:39:36Z",
|
||||||
|
"to": ["https://pol.social/users/mkljczk/followers"],
|
||||||
|
"type": "Update"
|
||||||
|
}
|
|
@ -128,6 +128,17 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
|
||||||
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
|
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "a Note with validated likes collection validates" do
|
||||||
|
insert(:user, ap_id: "https://pol.social/users/mkljczk")
|
||||||
|
|
||||||
|
%{"object" => note} =
|
||||||
|
"test/fixtures/mastodon-update-with-likes.json"
|
||||||
|
|> File.read!()
|
||||||
|
|> Jason.decode!()
|
||||||
|
|
||||||
|
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
|
||||||
|
end
|
||||||
|
|
||||||
test "Fedibird quote post" do
|
test "Fedibird quote post" do
|
||||||
insert(:user, ap_id: "https://fedibird.com/users/noellabo")
|
insert(:user, ap_id: "https://fedibird.com/users/noellabo")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue