[feature] Distribute Accepts to followers; process Accepts of remote interactions #3404
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This pull request updates distribution of Accept activities for interactions on statuses, to send the Accept also to the accepter's followers, and CC it to public as well.
The PR also adds code to process incoming Accepts of interactions that target remote statuses.
The goal here is to ease interoperability with servers that don't yet know about interaction policies and therefore can't append the "approvedBy" field to statuses when sending them out. We can use the receipt of an Accept from an interaction-policy-aware instance to go and dereference the approved status from a non-interaction-policy-aware instance, and add the
approved_by_uri
to the db model ourselves. This should lead to fewer perceived gaps in followers-only conversations taking place between Mastodon (and other) servers and GtS servers, from the perspective of a GtS server.Also updates the interaction policy documentation to mention this type of addressing.
Checklist
Please put an x inside each checkbox to indicate that you've read and followed it:
[ ]
->[x]
If this is a documentation change, only the first checkbox must be filled (you can delete the others if you want).
go fmt ./...
andgolangci-lint run
.