您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

MessageContainer.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // @flow
  2. import React from 'react';
  3. import { FlatList } from 'react-native';
  4. import AbstractMessageContainer, { type Props }
  5. from '../AbstractMessageContainer';
  6. import ChatMessageGroup from './ChatMessageGroup';
  7. import styles from './styles';
  8. /**
  9. * Implements a container to render all the chat messages in a conference.
  10. */
  11. export default class MessageContainer extends AbstractMessageContainer {
  12. /**
  13. * Instantiates a new instance of the component.
  14. *
  15. * @inheritdoc
  16. */
  17. constructor(props: Props) {
  18. super(props);
  19. this._keyExtractor = this._keyExtractor.bind(this);
  20. this._renderMessageGroup = this._renderMessageGroup.bind(this);
  21. }
  22. /**
  23. * Implements {@code Component#render}.
  24. *
  25. * @inheritdoc
  26. */
  27. render() {
  28. return (
  29. <FlatList
  30. data = { this._getMessagesGroupedBySender() }
  31. inverted = { true }
  32. keyExtractor = { this._keyExtractor }
  33. renderItem = { this._renderMessageGroup }
  34. style = { styles.messageContainer } />
  35. );
  36. }
  37. _getMessagesGroupedBySender: () => Array<Array<Object>>;
  38. _keyExtractor: Object => string
  39. /**
  40. * Key extractor for the flatlist.
  41. *
  42. * @param {Object} item - The flatlist item that we need the key to be
  43. * generated for.
  44. * @param {number} index - The index of the element.
  45. * @returns {string}
  46. */
  47. _keyExtractor(item, index) {
  48. return `key_${index}`;
  49. }
  50. _renderMessageGroup: Object => React$Element<*>;
  51. /**
  52. * Renders a single chat message.
  53. *
  54. * @param {Array<Object>} messages - The chat message to render.
  55. * @returns {React$Element<*>}
  56. */
  57. _renderMessageGroup({ item: messages }) {
  58. return <ChatMessageGroup messages = { messages } />;
  59. }
  60. }