|
|
@@ -6,7 +6,7 @@ import { FlatList } from 'react-native';
|
|
6
|
6
|
import AbstractMessageContainer, { type Props }
|
|
7
|
7
|
from '../AbstractMessageContainer';
|
|
8
|
8
|
|
|
9
|
|
-import ChatMessage from './ChatMessage';
|
|
|
9
|
+import ChatMessageGroup from './ChatMessageGroup';
|
|
10
|
10
|
import styles from './styles';
|
|
11
|
11
|
|
|
12
|
12
|
/**
|
|
|
@@ -22,7 +22,7 @@ export default class MessageContainer extends AbstractMessageContainer<Props> {
|
|
22
|
22
|
super(props);
|
|
23
|
23
|
|
|
24
|
24
|
this._keyExtractor = this._keyExtractor.bind(this);
|
|
25
|
|
- this._renderMessage = this._renderMessage.bind(this);
|
|
|
25
|
+ this._renderMessageGroup = this._renderMessageGroup.bind(this);
|
|
26
|
26
|
}
|
|
27
|
27
|
|
|
28
|
28
|
/**
|
|
|
@@ -33,14 +33,16 @@ export default class MessageContainer extends AbstractMessageContainer<Props> {
|
|
33
|
33
|
render() {
|
|
34
|
34
|
return (
|
|
35
|
35
|
<FlatList
|
|
36
|
|
- data = { this.props.messages }
|
|
|
36
|
+ data = { this._getMessagesGroupedBySender() }
|
|
37
|
37
|
inverted = { true }
|
|
38
|
38
|
keyExtractor = { this._keyExtractor }
|
|
39
|
|
- renderItem = { this._renderMessage }
|
|
|
39
|
+ renderItem = { this._renderMessageGroup }
|
|
40
|
40
|
style = { styles.messageContainer } />
|
|
41
|
41
|
);
|
|
42
|
42
|
}
|
|
43
|
43
|
|
|
|
44
|
+ _getMessagesGroupedBySender: () => Array<Array<Object>>;
|
|
|
45
|
+
|
|
44
|
46
|
_keyExtractor: Object => string
|
|
45
|
47
|
|
|
46
|
48
|
/**
|
|
|
@@ -55,17 +57,15 @@ export default class MessageContainer extends AbstractMessageContainer<Props> {
|
|
55
|
57
|
return `key_${index}`;
|
|
56
|
58
|
}
|
|
57
|
59
|
|
|
58
|
|
- _renderMessage: Object => React$Element<*>;
|
|
|
60
|
+ _renderMessageGroup: Object => React$Element<*>;
|
|
59
|
61
|
|
|
60
|
62
|
/**
|
|
61
|
63
|
* Renders a single chat message.
|
|
62
|
64
|
*
|
|
63
|
|
- * @param {Object} message - The chat message to render.
|
|
|
65
|
+ * @param {Array<Object>} messages - The chat message to render.
|
|
64
|
66
|
* @returns {React$Element<*>}
|
|
65
|
67
|
*/
|
|
66
|
|
- _renderMessage({ item: message }) {
|
|
67
|
|
- return (
|
|
68
|
|
- <ChatMessage message = { message } />
|
|
69
|
|
- );
|
|
|
68
|
+ _renderMessageGroup({ item: messages }) {
|
|
|
69
|
+ return <ChatMessageGroup messages = { messages } />;
|
|
70
|
70
|
}
|
|
71
|
71
|
}
|