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.
		
		
		
		
		
			
		
			
	
	
		
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											8 years ago
										 | import is from '@sindresorhus/is'; | ||
|  | import { Message } from './Message'; | ||
|  | 
 | ||
|  | 
 | ||
|  | interface ConversationLastMessageUpdate { | ||
|  |   lastMessage: string | null; | ||
|  |   timestamp: number | null; | ||
|  | } | ||
|  | 
 | ||
|  | export const createLastMessageUpdate = ({ | ||
|  |   currentLastMessageText, | ||
|  |   currentTimestamp, | ||
|  |   lastMessage, | ||
|  |   lastMessageNotificationText, | ||
|  | }: { | ||
|  |   currentLastMessageText: string | null, | ||
|  |   currentTimestamp: number | null, | ||
|  |   lastMessage: Message | null, | ||
|  |   lastMessageNotificationText: string | null, | ||
|  | }): ConversationLastMessageUpdate => { | ||
|  |   if (lastMessage === null) { | ||
|  |     return { | ||
|  |       lastMessage: '', | ||
|  |       timestamp: null, | ||
|  |     }; | ||
|  |   } | ||
|  | 
 | ||
|  |   const { type } = lastMessage; | ||
|  |   const isVerifiedChangeMessage = type === 'verified-change'; | ||
|  |   const isExpiringMessage = is.object(lastMessage.expirationTimerUpdate); | ||
|  |   const shouldUpdateTimestamp = !isVerifiedChangeMessage && !isExpiringMessage; | ||
|  | 
 | ||
|  |   const newTimestamp = shouldUpdateTimestamp ? | ||
|  |     lastMessage.sent_at : | ||
|  |     currentTimestamp; | ||
|  | 
 | ||
|  |   const shouldUpdateLastMessageText = !isVerifiedChangeMessage; | ||
|  |   const newLastMessageText = shouldUpdateLastMessageText ? | ||
|  |     lastMessageNotificationText : currentLastMessageText; | ||
|  | 
 | ||
|  |   return { | ||
|  |     lastMessage: newLastMessageText, | ||
|  |     timestamp: newTimestamp, | ||
|  |   }; | ||
|  | }; |