| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -19,6 +19,7 @@ type Props = {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  name?: string; // display name, profileName or phoneNumber, whatever is set first
 | 
					 | 
					 | 
					 | 
					  name?: string; // display name, profileName or phoneNumber, whatever is set first
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pubkey?: string;
 | 
					 | 
					 | 
					 | 
					  pubkey?: string;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  size: AvatarSize;
 | 
					 | 
					 | 
					 | 
					  size: AvatarSize;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  base64Data?: string; // if this is not empty, it will be used to render the avatar with base64 encoded data
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  memberAvatars?: Array<ConversationAvatar>; // this is added by usingClosedConversationDetails
 | 
					 | 
					 | 
					 | 
					  memberAvatars?: Array<ConversationAvatar>; // this is added by usingClosedConversationDetails
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  onAvatarClick?: () => void;
 | 
					 | 
					 | 
					 | 
					  onAvatarClick?: () => void;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					};
 | 
					 | 
					 | 
					 | 
					};
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -55,27 +56,29 @@ const NoImage = (props: {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					const AvatarImage = (props: {
 | 
					 | 
					 | 
					 | 
					const AvatarImage = (props: {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  avatarPath?: string;
 | 
					 | 
					 | 
					 | 
					  avatarPath?: string;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  base64Data?: string;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  name?: string; // display name, profileName or phoneNumber, whatever is set first
 | 
					 | 
					 | 
					 | 
					  name?: string; // display name, profileName or phoneNumber, whatever is set first
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  imageBroken: boolean;
 | 
					 | 
					 | 
					 | 
					  imageBroken: boolean;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  handleImageError: () => any;
 | 
					 | 
					 | 
					 | 
					  handleImageError: () => any;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}) => {
 | 
					 | 
					 | 
					 | 
					}) => {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const { avatarPath, name, imageBroken, handleImageError } = props;
 | 
					 | 
					 | 
					 | 
					  const { avatarPath, base64Data, name, imageBroken, handleImageError } = props;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (!avatarPath || imageBroken) {
 | 
					 | 
					 | 
					 | 
					  if ((!avatarPath && !base64Data) || imageBroken) {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return null;
 | 
					 | 
					 | 
					 | 
					    return null;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  const dataToDisplay = base64Data ? `data:image/jpeg;base64,${base64Data}` : avatarPath;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return (
 | 
					 | 
					 | 
					 | 
					  return (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    <img
 | 
					 | 
					 | 
					 | 
					    <img
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      onError={handleImageError}
 | 
					 | 
					 | 
					 | 
					      onError={handleImageError}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      alt={window.i18n('contactAvatarAlt', [name])}
 | 
					 | 
					 | 
					 | 
					      alt={window.i18n('contactAvatarAlt', [name])}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      src={avatarPath}
 | 
					 | 
					 | 
					 | 
					      src={dataToDisplay}
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    />
 | 
					 | 
					 | 
					 | 
					    />
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  );
 | 
					 | 
					 | 
					 | 
					  );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					};
 | 
					 | 
					 | 
					 | 
					};
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					export const Avatar = (props: Props) => {
 | 
					 | 
					 | 
					 | 
					export const Avatar = (props: Props) => {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const { avatarPath, size, memberAvatars, name } = props;
 | 
					 | 
					 | 
					 | 
					  const { avatarPath, base64Data, size, memberAvatars, name } = props;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const [imageBroken, setImageBroken] = useState(false);
 | 
					 | 
					 | 
					 | 
					  const [imageBroken, setImageBroken] = useState(false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // contentType is not important
 | 
					 | 
					 | 
					 | 
					  // contentType is not important
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -86,7 +89,7 @@ export const Avatar = (props: Props) => {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  };
 | 
					 | 
					 | 
					 | 
					  };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const isClosedGroupAvatar = memberAvatars && memberAvatars.length;
 | 
					 | 
					 | 
					 | 
					  const isClosedGroupAvatar = memberAvatars && memberAvatars.length;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const hasImage = urlToLoad && !imageBroken && !isClosedGroupAvatar;
 | 
					 | 
					 | 
					 | 
					  const hasImage = (base64Data || urlToLoad) && !imageBroken && !isClosedGroupAvatar;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const isClickable = !!props.onAvatarClick;
 | 
					 | 
					 | 
					 | 
					  const isClickable = !!props.onAvatarClick;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -107,6 +110,7 @@ export const Avatar = (props: Props) => {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      {hasImage ? (
 | 
					 | 
					 | 
					 | 
					      {hasImage ? (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        <AvatarImage
 | 
					 | 
					 | 
					 | 
					        <AvatarImage
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          avatarPath={urlToLoad}
 | 
					 | 
					 | 
					 | 
					          avatarPath={urlToLoad}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          base64Data={base64Data}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          imageBroken={imageBroken}
 | 
					 | 
					 | 
					 | 
					          imageBroken={imageBroken}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          name={name}
 | 
					 | 
					 | 
					 | 
					          name={name}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          handleImageError={handleImageError}
 | 
					 | 
					 | 
					 | 
					          handleImageError={handleImageError}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |