Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature] Implement deliveryRecipientPreSort to prioritize delivery to mentioned accounts #3668

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

tsmethurst
Copy link
Contributor

Description

If this is a code change, please include a summary of what you've coded, and link to the issue(s) it closes/implements.

If this is a documentation change, please briefly describe what you've changed and why.

Because of the way Activity expands addressees into inboxes, when writing a post mentioning an account that doesn't follow you, it's possible to attempt delivery to all of your followers first, and only then to attempt a delivery to the mentioned account. This can lead to laggy-feeling conversations.

This pull request implements the DeliveryRecipientPreSort function added here -- superseriousbusiness/activity#26 -- to make it so that GtS prioritizes delivery of activities to direct conversation participants first, and only then to followers.

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).

  • I/we have read the GoToSocial contribution guidelines.
  • I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat.
  • I/we have not leveraged AI to create the proposed changes.
  • I/we have performed a self-review of added code.
  • I/we have written code that is legible and maintainable by others.
  • I/we have commented the added code, particularly in hard-to-understand areas.
  • I/we have made any necessary changes to documentation.
  • I/we have added tests that cover new code.
  • I/we have run tests and they pass locally with the changes.
  • I/we have run go fmt ./... and golangci-lint run.

@NyaaaWhatsUpDoc
Copy link
Member

NyaaaWhatsUpDoc commented Jan 20, 2025

this is a very good idea!! though i think implementation-wise this can be greatly simplified. since the "raw" JSON is passed in to our BatchDeliver() function, you can grab the mentions property array from the object (if it exists, ofc), and grab a list of the mentionee URLs there. then essentially perform your sort function in BatchDeliver(). it saves needing to modify the go-fed/activity library

@tsmethurst tsmethurst force-pushed the delivery_recipient_pre_sort branch from 8d61a03 to 9784189 Compare January 21, 2025 09:33
@tsmethurst tsmethurst force-pushed the delivery_recipient_pre_sort branch from 9784189 to 301e822 Compare January 21, 2025 09:35
@tsmethurst
Copy link
Contributor Author

Discussed on Matrix!

If you don't mind I would quite like to do it in the activity library, for two reasons: 1. Other people can use it then. 2. It gets sorted before expansion into inboxes, so it's a much smaller slice to sort. We're usually only sorting like three entries at most that way, compared to hundreds or thousands if we sort after expansion into inbox URIs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants