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.
		
		
		
		
		
			
		
			
	
	
		
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											4 years ago
										 | import React from 'react'; | ||
|  | import { useSelector } from 'react-redux'; | ||
| 
											4 years ago
										 | import { PubKey } from '../../../../../session/types'; | ||
| 
											4 years ago
										 | 
 | ||
| 
											4 years ago
										 | import { | ||
|  |   CallNotificationType, | ||
|  |   PropsForCallNotification, | ||
|  | } from '../../../../../state/ducks/conversations'; | ||
|  | import { getSelectedConversation } from '../../../../../state/selectors/conversations'; | ||
|  | import { LocalizerKeys } from '../../../../../types/LocalizerKeys'; | ||
|  | import { SessionIconType } from '../../../../icon'; | ||
| 
											4 years ago
										 | import { ReadableMessage } from '../ReadableMessage'; | ||
|  | import { NotificationBubble } from './NotificationBubble'; | ||
|  | 
 | ||
|  | type StyleType = Record< | ||
|  |   CallNotificationType, | ||
| 
											4 years ago
										 |   { notificationTextKey: LocalizerKeys; iconType: SessionIconType; iconColor: string } | ||
| 
											4 years ago
										 | >; | ||
|  | 
 | ||
|  | const style: StyleType = { | ||
|  |   'missed-call': { | ||
|  |     notificationTextKey: 'callMissed', | ||
|  |     iconType: 'callMissed', | ||
|  |     iconColor: 'var(--color-destructive)', | ||
|  |   }, | ||
|  |   'started-call': { | ||
|  |     notificationTextKey: 'startedACall', | ||
|  |     iconType: 'callOutgoing', | ||
|  |     iconColor: 'inherit', | ||
|  |   }, | ||
|  |   'answered-a-call': { | ||
|  |     notificationTextKey: 'answeredACall', | ||
|  |     iconType: 'callIncoming', | ||
|  |     iconColor: 'inherit', | ||
|  |   }, | ||
|  | }; | ||
|  | 
 | ||
|  | export const CallNotification = (props: PropsForCallNotification) => { | ||
|  |   const { messageId, receivedAt, isUnread, notificationType } = props; | ||
|  | 
 | ||
|  |   const selectedConvoProps = useSelector(getSelectedConversation); | ||
|  | 
 | ||
|  |   const displayName = | ||
|  |     selectedConvoProps?.profileName || | ||
|  |     selectedConvoProps?.name || | ||
|  |     (selectedConvoProps?.id && PubKey.shorten(selectedConvoProps?.id)); | ||
|  | 
 | ||
|  |   const styleItem = style[notificationType]; | ||
| 
											4 years ago
										 |   const notificationText = window.i18n(styleItem.notificationTextKey, [displayName || 'Unknown']); | ||
| 
											4 years ago
										 |   if (!window.i18n(styleItem.notificationTextKey)) { | ||
|  |     throw new Error(`invalid i18n key ${styleItem.notificationTextKey}`); | ||
|  |   } | ||
|  |   const iconType = styleItem.iconType; | ||
|  |   const iconColor = styleItem.iconColor; | ||
|  | 
 | ||
|  |   return ( | ||
|  |     <ReadableMessage | ||
|  |       messageId={messageId} | ||
|  |       receivedAt={receivedAt} | ||
|  |       isUnread={isUnread} | ||
|  |       key={`readable-message-${messageId}`} | ||
|  |     > | ||
|  |       <NotificationBubble | ||
|  |         notificationText={notificationText} | ||
|  |         iconType={iconType} | ||
|  |         iconColor={iconColor} | ||
|  |       /> | ||
|  |     </ReadableMessage> | ||
|  |   ); | ||
|  | }; |