message-group.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { MessageAndDropdown } from './message-and-dropdown'
  2. import { useTranslation } from 'react-i18next'
  3. import type { Message as MessageType } from '@/features/chat/context/chat-context'
  4. import { User } from '../../../../../types/user'
  5. export interface MessageGroupProps {
  6. messages: MessageType[]
  7. user?: User
  8. fromSelf: boolean
  9. }
  10. function MessageGroup({ messages, user, fromSelf }: MessageGroupProps) {
  11. const { t } = useTranslation()
  12. return (
  13. <div className="chat-message">
  14. <div>
  15. <div className="message-row">
  16. <div className="message-avatar-placeholder" />
  17. {!fromSelf && (
  18. <div className="message-author">
  19. <span>
  20. {user?.id && user.email
  21. ? user.first_name || user.email
  22. : t('deleted_user')}
  23. </span>
  24. </div>
  25. )}
  26. </div>
  27. </div>
  28. {messages.map(message => {
  29. const nonDeletedMessages = messages.filter(m => !m.deleted)
  30. const nonDeletedIndex = nonDeletedMessages.findIndex(
  31. m => m.id === message.id
  32. )
  33. return (
  34. <MessageAndDropdown
  35. key={message.id}
  36. message={message}
  37. fromSelf={fromSelf}
  38. isLast={nonDeletedIndex === nonDeletedMessages.length - 1}
  39. isFirst={nonDeletedIndex === 0}
  40. />
  41. )
  42. })}
  43. </div>
  44. )
  45. }
  46. export default MessageGroup