Larbi Gharib | e9af973 | 2021-03-31 15:08:01 +0100 | [diff] [blame] | 1 | import Message from './Message' |
Adrien Béraud | 4e287b9 | 2021-04-24 16:15:56 -0400 | [diff] [blame^] | 2 | import React, { useEffect } from 'react' |
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 3 | import { Box, Divider, Typography } from '@material-ui/core' |
| 4 | import ConversationAvatar from './ConversationAvatar' |
Adrien Béraud | 4e287b9 | 2021-04-24 16:15:56 -0400 | [diff] [blame^] | 5 | const reverseMap = (arr, f) => arr.map((_, idx, arr) => f(arr[arr.length - 1 - idx ])); |
Larbi Gharib | e9af973 | 2021-03-31 15:08:01 +0100 | [diff] [blame] | 6 | |
Adrien Béraud | af09a46 | 2021-04-15 18:02:29 -0400 | [diff] [blame] | 7 | export default function MessageList(props) { |
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 8 | const displayName = props.conversation.getDisplayName() |
Adrien Béraud | 4e287b9 | 2021-04-24 16:15:56 -0400 | [diff] [blame^] | 9 | const messages = props.conversation.getMessages() |
| 10 | console.log("MessageList render " + messages.length) |
| 11 | |
| 12 | useEffect(() => { |
| 13 | props.loadMore() |
| 14 | }, [props.conversation.getId()]) |
| 15 | |
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 16 | return ( |
Adrien Béraud | 4e287b9 | 2021-04-24 16:15:56 -0400 | [diff] [blame^] | 17 | <React.Fragment> |
| 18 | <Box className="conversation-header"> |
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 19 | <Box style={{ display: 'inline-block', margin: 16, verticalAlign: 'middle' }}> |
| 20 | <ConversationAvatar displayName={props.conversation.getDisplayNameNoFallback()} /> |
| 21 | </Box> |
| 22 | <Box style={{ display: 'inline-block', verticalAlign: 'middle' }}> |
| 23 | <Typography variant="h6">{displayName}</Typography> |
| 24 | <Typography variant="subtitle1">{props.conversation.getId()}</Typography> |
| 25 | </Box> |
Adrien Béraud | 4e287b9 | 2021-04-24 16:15:56 -0400 | [diff] [blame^] | 26 | <Divider orientation="horizontal" /> |
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 27 | </Box> |
Adrien Béraud | 4e287b9 | 2021-04-24 16:15:56 -0400 | [diff] [blame^] | 28 | <div className="message-list"> |
| 29 | <div className="message-list-inner"> |
| 30 | {reverseMap(messages, (message) => <Message key={message.id} message={message} />)} |
| 31 | </div> |
| 32 | </div> |
| 33 | </React.Fragment> |
Adrien Béraud | 150b478 | 2021-04-21 19:40:59 -0400 | [diff] [blame] | 34 | ) |
Adrien Béraud | af09a46 | 2021-04-15 18:02:29 -0400 | [diff] [blame] | 35 | } |