mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 02:37:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			1017 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			1017 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { IAvatar, IUserEntityProps } from '@datahub/utils/types/avatars';
 | |
| import { pick } from 'lodash-es';
 | |
| 
 | |
| // Aliases the function interface returned from the invocation of makeAvatar
 | |
| type AvatarCreatorFunc = (obj: Partial<IAvatar>) => IAvatar;
 | |
| 
 | |
| /**
 | |
|  * Takes a Partial<IAvatar> object and builds an IAvatar
 | |
|  * @param {Partial<IAvatar>} object
 | |
|  * @param {IAppConfig.userEntityProps.aviUrlPrimary} aviUrlPrimary primary url for avatar image
 | |
|  * @param {IAppConfig.userEntityProps.aviUrlFallback} aviUrlFallback if the primary url fails, uses the provided fallback url to fetch the avatar
 | |
|  */
 | |
| export const makeAvatar = ({ aviUrlPrimary, aviUrlFallback = '' }: IUserEntityProps): AvatarCreatorFunc => (
 | |
|   object: Partial<IAvatar>
 | |
| ): IAvatar => {
 | |
|   const props = pick(object, ['email', 'userName', 'name']);
 | |
|   const { userName } = props;
 | |
| 
 | |
|   return {
 | |
|     imageUrl: userName && aviUrlPrimary ? aviUrlPrimary.replace('[username]', () => userName) : aviUrlFallback,
 | |
|     imageUrlFallback: aviUrlFallback,
 | |
|     ...props
 | |
|   };
 | |
| };
 | 
