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.
		
		
		
		
		
			
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
| import React from 'react';
 | |
| 
 | |
| import { DocumentListItem } from './DocumentListItem';
 | |
| import { MediaGridItem } from './MediaGridItem';
 | |
| import { MediaItemType } from '../../LightboxGallery';
 | |
| import { missingCaseError } from '../../../util/missingCaseError';
 | |
| import { useSelector } from 'react-redux';
 | |
| import { getSelectedConversationKey } from '../../../state/selectors/conversations';
 | |
| 
 | |
| type Props = {
 | |
|   type: 'media' | 'documents';
 | |
|   mediaItems: Array<MediaItemType>;
 | |
| };
 | |
| 
 | |
| const Items = (props: Props): JSX.Element => {
 | |
|   const { mediaItems, type } = props;
 | |
| 
 | |
|   return (
 | |
|     <>
 | |
|       {mediaItems.map((mediaItem, position, array) => {
 | |
|         const shouldShowSeparator = position < array.length - 1;
 | |
|         const { index, attachment, messageTimestamp, messageId } = mediaItem;
 | |
| 
 | |
|         switch (type) {
 | |
|           case 'media':
 | |
|             return (
 | |
|               <MediaGridItem
 | |
|                 key={`${messageId}-${index}`}
 | |
|                 mediaItem={mediaItem}
 | |
|                 mediaItems={mediaItems}
 | |
|               />
 | |
|             );
 | |
|           case 'documents':
 | |
|             return (
 | |
|               <DocumentListItem
 | |
|                 key={`${messageId}-${index}`}
 | |
|                 fileName={attachment.fileName}
 | |
|                 fileSize={attachment.size}
 | |
|                 shouldShowSeparator={shouldShowSeparator}
 | |
|                 timestamp={messageTimestamp}
 | |
|                 mediaItem={mediaItem}
 | |
|               />
 | |
|             );
 | |
|           default:
 | |
|             return missingCaseError(type);
 | |
|         }
 | |
|       })}
 | |
|     </>
 | |
|   );
 | |
| };
 | |
| 
 | |
| export const AttachmentSection = (props: Props) => {
 | |
|   const { type } = props;
 | |
| 
 | |
|   return (
 | |
|     <div className="module-attachment-section">
 | |
|       <div className="module-attachment-section__items">
 | |
|         <div className={`module-attachment-section__items-${type}`}>
 | |
|           <Items {...props} />
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
|   );
 | |
| };
 |