You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											8 years ago
										 | // @ts-ignore
 | ||
|  | export interface Contact { | ||
| 
											8 years ago
										 |   name?: Name; | ||
| 
											8 years ago
										 |   number?: Array<Phone>; | ||
|  |   avatar?: Avatar; | ||
|  |   organization?: string; | ||
|  | } | ||
|  | 
 | ||
|  | interface Name { | ||
|  |   givenName?: string; | ||
|  |   familyName?: string; | ||
|  |   prefix?: string; | ||
|  |   suffix?: string; | ||
|  |   middleName?: string; | ||
| 
											8 years ago
										 |   displayName?: string; | ||
| 
											8 years ago
										 | } | ||
|  | 
 | ||
|  | export enum ContactType { | ||
|  |   HOME = 1, | ||
|  |   MOBILE = 2, | ||
|  |   WORK = 3, | ||
|  |   CUSTOM = 4, | ||
|  | } | ||
|  | 
 | ||
|  | export enum AddressType { | ||
|  |   HOME = 1, | ||
|  |   WORK = 2, | ||
|  |   CUSTOM = 3, | ||
|  | } | ||
|  | 
 | ||
|  | export interface Phone { | ||
|  |   value: string; | ||
|  |   type: ContactType; | ||
|  |   label?: string; | ||
|  | } | ||
|  | 
 | ||
|  | interface Avatar { | ||
|  |   avatar: Attachment; | ||
|  |   isProfile: boolean; | ||
|  | } | ||
|  | 
 | ||
|  | interface Attachment { | ||
| 
											7 years ago
										 |   path?: string; | ||
|  |   error?: boolean; | ||
|  |   pending?: boolean; | ||
| 
											8 years ago
										 | } | ||
|  | 
 | ||
| 
											7 years ago
										 | export function getName(contact: Contact): string | undefined { | ||
| 
											8 years ago
										 |   const { name, organization } = contact; | ||
| 
											7 years ago
										 |   const displayName = (name && name.displayName) || undefined; | ||
|  |   const givenName = (name && name.givenName) || undefined; | ||
|  |   const familyName = (name && name.familyName) || undefined; | ||
| 
											8 years ago
										 |   const backupName = | ||
| 
											7 years ago
										 |     (givenName && familyName && `${givenName} ${familyName}`) || undefined; | ||
| 
											8 years ago
										 | 
 | ||
|  |   return displayName || organization || backupName || givenName || familyName; | ||
| 
											8 years ago
										 | } |