blob: a0295d5de3bb6d355b0e2804b98514c5399805ff [file] [log] [blame]
Adrien Béraud150b4782021-04-21 19:40:59 -04001import { ListItem, ListItemAvatar, ListItemText } from '@material-ui/core'
Adrien Béraud995e8022021-04-08 13:46:51 -04002import 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"
Adrien Béraud150b4782021-04-21 19:40:59 -04005import ConversationAvatar from './ConversationAvatar'
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
Adrien Béraudaf09a462021-04-15 18:02:29 -040012 const history = useHistory()
Adrien Béraud995e8022021-04-08 13:46:51 -040013
Adrien Béraudaf09a462021-04-15 18:02:29 -040014 const uri = conversation.getId() ? `conversation/${conversation.getId()}` : `addContact/${conversation.getFirstMember().contact.getUri()}`
15 if (conversation instanceof Conversation) {
16 return (
17 <ListItem
18 button
19 alignItems="flex-start"
20 selected={isSelected}
21 style={{overflow:'hidden'}}
Adrien Béraud150b4782021-04-21 19:40:59 -040022 onClick={() => history.replace(`/account/${conversation.getAccountId()}/${uri}`)}>
23 <ListItemAvatar><ConversationAvatar displayName={conversation.getDisplayNameNoFallback()} /></ListItemAvatar>
Adrien Béraudaf09a462021-04-15 18:02:29 -040024 <ListItemText
25 style={{overflow:'hidden', textOverflow:'ellipsis'}}
26 primary={conversation.getDisplayName()} secondary={conversation.getDisplayUri()} />
27 </ListItem>
28 )
29 } else
30 return null
Adrien Béraud995e8022021-04-08 13:46:51 -040031}