49 lines
		
	
	
	
		
			964 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
	
		
			964 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2021 Signal Messenger, LLC
							 | 
						||
| 
								 | 
							
								// SPDX-License-Identifier: AGPL-3.0-only
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import React from 'react';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import type { BadgeType } from '../badges/types';
							 | 
						||
| 
								 | 
							
								import { Spinner } from './Spinner';
							 | 
						||
| 
								 | 
							
								import { getBadgeImageFileLocalPath } from '../badges/getBadgeImageFileLocalPath';
							 | 
						||
| 
								 | 
							
								import { BadgeImageTheme } from '../badges/BadgeImageTheme';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function BadgeImage({
							 | 
						||
| 
								 | 
							
								  badge,
							 | 
						||
| 
								 | 
							
								  size,
							 | 
						||
| 
								 | 
							
								}: Readonly<{
							 | 
						||
| 
								 | 
							
								  badge: BadgeType;
							 | 
						||
| 
								 | 
							
								  size: number;
							 | 
						||
| 
								 | 
							
								}>): JSX.Element {
							 | 
						||
| 
								 | 
							
								  const { name } = badge;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const imagePath = getBadgeImageFileLocalPath(
							 | 
						||
| 
								 | 
							
								    badge,
							 | 
						||
| 
								 | 
							
								    size,
							 | 
						||
| 
								 | 
							
								    BadgeImageTheme.Transparent
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!imagePath) {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      <Spinner
							 | 
						||
| 
								 | 
							
								        ariaLabel={name}
							 | 
						||
| 
								 | 
							
								        moduleClassName="BadgeImage BadgeImage__loading"
							 | 
						||
| 
								 | 
							
								        size={`${size}px`}
							 | 
						||
| 
								 | 
							
								        svgSize="normal"
							 | 
						||
| 
								 | 
							
								      />
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    <img
							 | 
						||
| 
								 | 
							
								      alt={name}
							 | 
						||
| 
								 | 
							
								      className="BadgeImage"
							 | 
						||
| 
								 | 
							
								      src={imagePath}
							 | 
						||
| 
								 | 
							
								      style={{
							 | 
						||
| 
								 | 
							
								        width: size,
							 | 
						||
| 
								 | 
							
								        height: size,
							 | 
						||
| 
								 | 
							
								      }}
							 | 
						||
| 
								 | 
							
								    />
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 |