Files
hnh-map/frontend-nuxt/composables/useGravatarUrl.ts
Nikolay Tatarinov dda35baeca Implement HTTP timeout configurations and enhance API documentation
- Added optional HTTP server timeout configurations (`HNHMAP_READ_TIMEOUT`, `HNHMAP_WRITE_TIMEOUT`, `HNHMAP_IDLE_TIMEOUT`) to `.env.example` and updated the server initialization in `main.go` to utilize these settings.
- Enhanced API documentation for the `rebuildZooms` endpoint to clarify its background processing and polling mechanism for status updates.
- Updated `configuration.md` to include new timeout environment variables for better configuration guidance.
- Improved error handling in the client for large request bodies, ensuring appropriate responses for oversized payloads.
2026-03-04 11:59:28 +03:00

25 lines
979 B
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import md5 from 'md5'
const gravatarCache = new Map<string, string>()
/**
* 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.
* Results are memoized by (email, size) to avoid recomputing MD5 on every render.
*
* @param email - User email (optional)
* @param size - Avatar size in pixels (default 64; navbar 32, drawer 40, profile 6480)
*/
export function useGravatarUrl(email: string | undefined, size?: number): string {
const normalized = email?.trim().toLowerCase()
if (!normalized) return ''
const s = size ?? 64
const key = `${normalized}\n${s}`
const cached = gravatarCache.get(key)
if (cached !== undefined) return cached
const hash = md5(normalized)
const url = `https://www.gravatar.com/avatar/${hash}?s=${s}&d=identicon`
gravatarCache.set(key, url)
return url
}