- Added email field to user profile API and frontend components for better user identification. - Implemented PATCH /map/api/me endpoint to update user email, enhancing user experience. - Introduced useGravatarUrl composable for generating Gravatar URLs based on user email. - Updated profile and layout components to display user avatars using Gravatar, improving visual consistency. - Enhanced development documentation to guide testing of navbar and profile features.
17 lines
673 B
TypeScript
17 lines
673 B
TypeScript
import md5 from 'md5'
|
||
|
||
/**
|
||
* Returns Gravatar avatar URL for the given email, or empty string if no email.
|
||
* Gravatar expects: trim, lowercase, then MD5 hex. Use empty string to show a placeholder (e.g. initial letter) in the UI.
|
||
*
|
||
* @param email - User email (optional)
|
||
* @param size - Avatar size in pixels (default 64; navbar 32, drawer 40, profile 64–80)
|
||
*/
|
||
export function useGravatarUrl(email: string | undefined, size?: number): string {
|
||
const normalized = email?.trim().toLowerCase()
|
||
if (!normalized) return ''
|
||
const hash = md5(normalized)
|
||
const s = size ?? 64
|
||
return `https://www.gravatar.com/avatar/${hash}?s=${s}&d=identicon`
|
||
}
|