import { useMemo } from 'react'; import { createAvatar } from '@dicebear/core'; import { initials } from '@dicebear/collection'; import type { TUser } from 'librechat-data-provider'; const avatarCache: Record = {}; const useAvatar = (user: TUser | undefined) => { return useMemo(() => { const { username, name } = user ?? {}; const seed = name || username; if (!seed) { return ''; } if (user?.avatar && user?.avatar !== '') { return user.avatar; } if (avatarCache[seed]) { return avatarCache[seed]; } const avatar = createAvatar(initials, { seed, fontFamily: ['Verdana'], fontSize: 36, }); let avatarDataUri = ''; try { avatarDataUri = avatar.toDataUri(); if (avatarDataUri) { avatarCache[seed] = avatarDataUri; } } catch (error) { console.error('Failed to generate avatar:', error); } return avatarDataUri; }, [user]); }; export default useAvatar;