This repository has been archived by the owner on Nov 13, 2024. It is now read-only.
Fixes to profile avatar downloads & caching #24
Merged
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.
This should fix some issues with avatar syncing. It also includes a just-in-case nil check (replacing #23) to at least prevent the crash we've been encountering.
The overall design is: if a bridge user wants to update another Signal puppet's profile but is forbidden access of that Signal user's profile info, check if some other bridge user (with a valid Signal client connection) has access to it. If so, use that user's Signal connection + their key for the target Signal's profile to do the download, as if that bridge user was the one who requested the puppet profile update in the first place.
This also improves the accuracy of how profile avatar info gets saved to the bridge's storage, and seems to fix the problem we've been seeing of puppet avatars being slow to update or not updating at all. It should also prevent re-downloading avatars unnecessarily.
Upstream PR: mautrix#449 (commits)