blob: ed69a770caa8f1e5f355e5d01e868b31417d6032 [file] [log] [blame]
Adrien Béraudab519ff2022-05-03 15:34:48 -04001import { ListItem, ListItemAvatar, ListItemText } from '@mui/material'
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éraudab519ff2022-05-03 15:34:48 -04004import { useNavigate, 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éraudab519ff2022-05-03 15:34:48 -040012 const navigate = useNavigate()
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}
Adrien Béraudab519ff2022-05-03 15:34:48 -040021 onClick={() => navigate(`/account/${conversation.getAccountId()}/${uri}`)}>
Adrien Béraud150b4782021-04-21 19:40:59 -040022 <ListItemAvatar><ConversationAvatar displayName={conversation.getDisplayNameNoFallback()} /></ListItemAvatar>
Adrien Béraudaf09a462021-04-15 18:02:29 -040023 <ListItemText
Adrien Béraudaf09a462021-04-15 18:02:29 -040024 primary={conversation.getDisplayName()} secondary={conversation.getDisplayUri()} />
25 </ListItem>
26 )
27 } else
28 return null
Adrien Béraud995e8022021-04-08 13:46:51 -040029}