|  |  |  | import { Message } from './Message'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | interface ConversationLastMessageUpdate { | 
					
						
							|  |  |  |   lastMessage: string | null; | 
					
						
							|  |  |  |   lastMessageStatus: string | null; | 
					
						
							|  |  |  |   timestamp: number | null; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const createLastMessageUpdate = ({ | 
					
						
							|  |  |  |   currentLastMessageText, | 
					
						
							|  |  |  |   currentTimestamp, | 
					
						
							|  |  |  |   lastMessage, | 
					
						
							|  |  |  |   lastMessageStatus, | 
					
						
							|  |  |  |   lastMessageNotificationText, | 
					
						
							|  |  |  | }: { | 
					
						
							|  |  |  |   currentLastMessageText: string | null; | 
					
						
							|  |  |  |   currentTimestamp: number | null; | 
					
						
							|  |  |  |   lastMessage: Message | null; | 
					
						
							|  |  |  |   lastMessageStatus: string | null; | 
					
						
							|  |  |  |   lastMessageNotificationText: string | null; | 
					
						
							|  |  |  | }): ConversationLastMessageUpdate => { | 
					
						
							|  |  |  |   if (lastMessage === null) { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       lastMessage: '', | 
					
						
							|  |  |  |       lastMessageStatus: null, | 
					
						
							|  |  |  |       timestamp: null, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const { type, expirationTimerUpdate } = lastMessage; | 
					
						
							|  |  |  |   const isVerifiedChangeMessage = type === 'verified-change'; | 
					
						
							|  |  |  |   const isExpireTimerUpdateFromSync = | 
					
						
							|  |  |  |     expirationTimerUpdate && expirationTimerUpdate.fromSync; | 
					
						
							|  |  |  |   const shouldUpdateTimestamp = | 
					
						
							|  |  |  |     !isVerifiedChangeMessage && !isExpireTimerUpdateFromSync; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const newTimestamp = shouldUpdateTimestamp | 
					
						
							|  |  |  |     ? lastMessage.sent_at | 
					
						
							|  |  |  |     : currentTimestamp; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const shouldUpdateLastMessageText = !isVerifiedChangeMessage; | 
					
						
							|  |  |  |   const newLastMessageText = shouldUpdateLastMessageText | 
					
						
							|  |  |  |     ? lastMessageNotificationText | 
					
						
							|  |  |  |     : currentLastMessageText; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     lastMessage: newLastMessageText, | 
					
						
							|  |  |  |     lastMessageStatus, | 
					
						
							|  |  |  |     timestamp: newTimestamp, | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; |