feat: display gravatars as user-images - #72
Draft
maxy-shpfy wants to merge 1 commit into
Draft
Conversation
Collaborator
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Gravatar support for user and message avatars
Contributes to https://github.com/Shopify/oasis-frontend/issues/682
UserAvatarnow resolves a Gravatar image for a given email address rather than rendering an initials badge directly. It fetches the Gravatar URL (usingd=404so missing avatars return a 404 rather than a placeholder), caches the result indefinitely via React Query, and renders afallbacknode when no avatar exists or the lookup is still in flight.The initials badge previously baked into
UserAvatarhas been extracted into a standaloneUserInitialsBadgecomponent and passed as thefallbackprop at theAppTopNavcall site.MessageAvatarin the chat view now accepts an optionalemailprop for human authors (sourced frommessage.author.id). When present, it delegates toUserAvatarwith the role icon badge as the fallback, so human messages show a Gravatar when one exists and silently fall back to the existing icon badge when one does not.Gravatar URL construction uses the Web Crypto API (
crypto.subtle) for SHA-256 hashing, avoiding an md5 dependency or Nodecryptousage in the browser.