blob: 7e139744701d85e2beb67de6064e94c6e302c0cb [file] [log] [blame]
Adrien Béraud995e8022021-04-08 13:46:51 -04001import { Avatar, ListItem, ListItemAvatar, ListItemText } from '@material-ui/core'
2import React from 'react'
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04003import Conversation from '../../../model/Conversation'
Adrien Béraudaf09a462021-04-15 18:02:29 -04004import { useHistory, useParams } from "react-router-dom"
5import PersonIcon from '@material-ui/icons/PersonRounded'
Adrien Béraud995e8022021-04-08 13:46:51 -04006
Adrien Béraudaf09a462021-04-15 18:02:29 -04007export default function ConversationListItem(props) {
8 const { conversationId, contactId } = useParams()
9 const conversation = props.conversation
10 const pathId = conversationId || contactId
11 const isSelected = conversation.getDisplayUri() === pathId
12 const displayName = conversation.getDisplayName()
13 const history = useHistory()
Adrien Béraud995e8022021-04-08 13:46:51 -040014
Adrien Béraudaf09a462021-04-15 18:02:29 -040015 const uri = conversation.getId() ? `conversation/${conversation.getId()}` : `addContact/${conversation.getFirstMember().contact.getUri()}`
16 if (conversation instanceof Conversation) {
17 return (
18 <ListItem
19 button
20 alignItems="flex-start"
21 selected={isSelected}
22 style={{overflow:'hidden'}}
23 onClick={() => history.push(`/account/${conversation.getAccountId()}/${uri}`)}>
24 <ListItemAvatar>
25 <Avatar>{displayName ? displayName[0].toUpperCase() : <PersonIcon />}</Avatar>
26 </ListItemAvatar>
27 <ListItemText
28 style={{overflow:'hidden', textOverflow:'ellipsis'}}
29 primary={conversation.getDisplayName()} secondary={conversation.getDisplayUri()} />
30 </ListItem>
31 )
32 } else
33 return null
Adrien Béraud995e8022021-04-08 13:46:51 -040034}