| 
				
			 | 
			
			
				
				@@ -1,27 +1,18 @@ 
			 | 
		
		
	
		
			
			| 
				1
			 | 
			
				1
			 | 
			
			
				
				 // @flow 
			 | 
		
		
	
		
			
			| 
				2
			 | 
			
				2
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				3
			 | 
			
				
			 | 
			
			
				
				-import React, { PureComponent } from 'react'; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				
				+import React from 'react'; 
			 | 
		
		
	
		
			
			| 
				4
			 | 
			
				4
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				5
			 | 
			
				
			 | 
			
			
				
				-import ChatMessageGroup from './ChatMessageGroup'; 
			 | 
		
		
	
		
			
			| 
				6
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				7
			 | 
			
				
			 | 
			
			
				
				-type Props = { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				
				+import AbstractMessageContainer, { type Props } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				
				+    from '../AbstractMessageContainer'; 
			 | 
		
		
	
		
			
			| 
				8
			 | 
			
				7
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				9
			 | 
			
				
			 | 
			
			
				
				-    /** 
			 | 
		
		
	
		
			
			| 
				10
			 | 
			
				
			 | 
			
			
				
				-     * The messages array to render. 
			 | 
		
		
	
		
			
			| 
				11
			 | 
			
				
			 | 
			
			
				
				-     */ 
			 | 
		
		
	
		
			
			| 
				12
			 | 
			
				
			 | 
			
			
				
				-    messages: Array<Object> 
			 | 
		
		
	
		
			
			| 
				13
			 | 
			
				
			 | 
			
			
				
				-} 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				
				+import ChatMessageGroup from './ChatMessageGroup'; 
			 | 
		
		
	
		
			
			| 
				14
			 | 
			
				9
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				15
			 | 
			
				10
			 | 
			
			
				
				 /** 
			 | 
		
		
	
		
			
			| 
				16
			 | 
			
				11
			 | 
			
			
				
				  * Displays all received chat messages, grouped by sender. 
			 | 
		
		
	
		
			
			| 
				17
			 | 
			
				12
			 | 
			
			
				
				  * 
			 | 
		
		
	
		
			
			| 
				18
			 | 
			
				
			 | 
			
			
				
				- * @extends PureComponent 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				13
			 | 
			
			
				
				+ * @extends AbstractMessageContainer 
			 | 
		
		
	
		
			
			| 
				19
			 | 
			
				14
			 | 
			
			
				
				  */ 
			 | 
		
		
	
		
			
			| 
				20
			 | 
			
				
			 | 
			
			
				
				-export default class MessageContainer extends PureComponent<Props> { 
			 | 
		
		
	
		
			
			| 
				21
			 | 
			
				
			 | 
			
			
				
				-    static defaultProps = { 
			 | 
		
		
	
		
			
			| 
				22
			 | 
			
				
			 | 
			
			
				
				-        messages: [] 
			 | 
		
		
	
		
			
			| 
				23
			 | 
			
				
			 | 
			
			
				
				-    }; 
			 | 
		
		
	
		
			
			| 
				24
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				
				+export default class MessageContainer extends AbstractMessageContainer<Props> { 
			 | 
		
		
	
		
			
			| 
				25
			 | 
			
				16
			 | 
			
			
				
				     /** 
			 | 
		
		
	
		
			
			| 
				26
			 | 
			
				17
			 | 
			
			
				
				      * Reference to the HTML element at the end of the list of displayed chat 
			 | 
		
		
	
		
			
			| 
				27
			 | 
			
				18
			 | 
			
			
				
				      * messages. Used for scrolling to the end of the chat messages. 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -84,36 +75,7 @@ export default class MessageContainer extends PureComponent<Props> { 
			 | 
		
		
	
		
			
			| 
				84
			 | 
			
				75
			 | 
			
			
				
				         ); 
			 | 
		
		
	
		
			
			| 
				85
			 | 
			
				76
			 | 
			
			
				
				     } 
			 | 
		
		
	
		
			
			| 
				86
			 | 
			
				77
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				87
			 | 
			
				
			 | 
			
			
				
				-    /** 
			 | 
		
		
	
		
			
			| 
				88
			 | 
			
				
			 | 
			
			
				
				-     * Iterates over all the messages and creates nested arrays which hold 
			 | 
		
		
	
		
			
			| 
				89
			 | 
			
				
			 | 
			
			
				
				-     * consecutive messages sent by the same participant. 
			 | 
		
		
	
		
			
			| 
				90
			 | 
			
				
			 | 
			
			
				
				-     * 
			 | 
		
		
	
		
			
			| 
				91
			 | 
			
				
			 | 
			
			
				
				-     * @private 
			 | 
		
		
	
		
			
			| 
				92
			 | 
			
				
			 | 
			
			
				
				-     * @returns {Array<Array<Object>>} 
			 | 
		
		
	
		
			
			| 
				93
			 | 
			
				
			 | 
			
			
				
				-     */ 
			 | 
		
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				
				-    _getMessagesGroupedBySender() { 
			 | 
		
		
	
		
			
			| 
				95
			 | 
			
				
			 | 
			
			
				
				-        const messagesCount = this.props.messages.length; 
			 | 
		
		
	
		
			
			| 
				96
			 | 
			
				
			 | 
			
			
				
				-        const groups = []; 
			 | 
		
		
	
		
			
			| 
				97
			 | 
			
				
			 | 
			
			
				
				-        let currentGrouping = []; 
			 | 
		
		
	
		
			
			| 
				98
			 | 
			
				
			 | 
			
			
				
				-        let currentGroupParticipantId; 
			 | 
		
		
	
		
			
			| 
				99
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				100
			 | 
			
				
			 | 
			
			
				
				-        for (let i = 0; i < messagesCount; i++) { 
			 | 
		
		
	
		
			
			| 
				101
			 | 
			
				
			 | 
			
			
				
				-            const message = this.props.messages[i]; 
			 | 
		
		
	
		
			
			| 
				102
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				103
			 | 
			
				
			 | 
			
			
				
				-            if (message.id === currentGroupParticipantId) { 
			 | 
		
		
	
		
			
			| 
				104
			 | 
			
				
			 | 
			
			
				
				-                currentGrouping.push(message); 
			 | 
		
		
	
		
			
			| 
				105
			 | 
			
				
			 | 
			
			
				
				-            } else { 
			 | 
		
		
	
		
			
			| 
				106
			 | 
			
				
			 | 
			
			
				
				-                groups.push(currentGrouping); 
			 | 
		
		
	
		
			
			| 
				107
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				108
			 | 
			
				
			 | 
			
			
				
				-                currentGrouping = [ message ]; 
			 | 
		
		
	
		
			
			| 
				109
			 | 
			
				
			 | 
			
			
				
				-                currentGroupParticipantId = message.id; 
			 | 
		
		
	
		
			
			| 
				110
			 | 
			
				
			 | 
			
			
				
				-            } 
			 | 
		
		
	
		
			
			| 
				111
			 | 
			
				
			 | 
			
			
				
				-        } 
			 | 
		
		
	
		
			
			| 
				112
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				113
			 | 
			
				
			 | 
			
			
				
				-        groups.push(currentGrouping); 
			 | 
		
		
	
		
			
			| 
				114
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				115
			 | 
			
				
			 | 
			
			
				
				-        return groups; 
			 | 
		
		
	
		
			
			| 
				116
			 | 
			
				
			 | 
			
			
				
				-    } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				
				+    _getMessagesGroupedBySender: () => Array<Array<Object>>; 
			 | 
		
		
	
		
			
			| 
				117
			 | 
			
				79
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				118
			 | 
			
				80
			 | 
			
			
				
				     /** 
			 | 
		
		
	
		
			
			| 
				119
			 | 
			
				81
			 | 
			
			
				
				      * Automatically scrolls the displayed chat messages down to the latest. 
			 |