Componente GroupChatBubble

O componente GroupChatBubble é responsável por renderizar a mensagem de um usuário em uma bolha de chat. Este componente pode opcionalmente exibir as informações de perfil do remetente da mensagem.

Propriedades

  • mensagem: o texto da mensagem a ser exibida.
  • createdAt: a data e hora de criação da mensagem.
  • usuarioId: o ID do usuário que enviou a mensagem.
  • showProfileContact: um booleano que indica se as informações de perfil do remetente devem ser exibidas.
  • children: conteúdo filho que será englobado pelo componente GroupChatBubble.

Estado

O componente GroupChatBubble usa as seguintes variáveis de estado:

  • userId: ID do usuário atual, obtido dos cookies.

Funções

O componente GroupChatBubble usa as seguintes funções:

Não há funções específicas definidas dentro deste componente, mas ele utiliza componentes auxiliares como ProfileContact e SentAt para funcionalidades adicionais.

Componentes

O componente GroupChatBubble renderiza os seguintes componentes:

  • ProfileContact: um componente que renderiza as informações de perfil do remetente da mensagem.
  • SentAt: um componente que exibe a data e hora de envio da mensagem.
  • Flex: um contêiner flexível para layout.

**Estados e Contextos Utilizados

O componente GroupChatBubble utiliza o seguinte estado:

  • userId: obtido dos cookies usando Cookies.get('userId')

Estrutura do Código

export interface GroupChatBubbleProps extends GroupMessage {
  showProfileContact: boolean
  children: ReactNode
}

const userId = Cookies.get('userId')

const GroupChatBubble: React.FC<GroupChatBubbleProps> = ({
  mensagem: message,
  createdAt,
  usuarioId,
  showProfileContact,
}) => {
  return (
    <Flex
      vertical
      style={{
        gap: '0.5rem',
      }}
    >
      {showProfileContact && usuarioId !== userId && (
        <ProfileContact fromUserId={usuarioId} />
      )}
      <div
        style={{
          flex: '0 1 auto',
          maxWidth: '100%',
          height: 'fit-content',
          padding: '1rem',
          backgroundColor: `${usuarioId === userId ? 'var(--shadow-primary-500)' : 'var(--neutral-600)'}`,
          borderRadius: '14px',
          color: '#FFFFFF',
          marginLeft: '4rem',
          wordWrap: 'break-word',
        }}
      >
        <p
          style={{
            width: 'max-content',
            maxWidth: '22.5rem',
          }}
        >
          {message}
        </p>
        {createdAt && <SentAt time={createdAt} />}
      </div>
    </Flex>
  )
}
export default GroupChatBubble