From 4bab81bd7cffa7eb4f646171b9513d3fe40fe1c2 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 4 Oct 2022 19:00:00 -0400 Subject: [PATCH] Separate ChatComposer into its own component --- .../chats/components/chat-composer.tsx | 76 +++++++++++++++++++ .../features/chats/components/chat.tsx | 58 +++----------- 2 files changed, 85 insertions(+), 49 deletions(-) create mode 100644 app/soapbox/features/chats/components/chat-composer.tsx diff --git a/app/soapbox/features/chats/components/chat-composer.tsx b/app/soapbox/features/chats/components/chat-composer.tsx new file mode 100644 index 000000000..ec3440a9b --- /dev/null +++ b/app/soapbox/features/chats/components/chat-composer.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import { defineMessages, useIntl } from 'react-intl'; + +import { HStack, IconButton, Stack, Text, Textarea } from 'soapbox/components/ui'; + +const messages = defineMessages({ + placeholder: { id: 'chat.input.placeholder', defaultMessage: 'Type a message' }, + send: { id: 'chat.actions.send', defaultMessage: 'Send' }, + failedToSend: { id: 'chat.failed_to_send', defaultMessage: 'Message failed to send.' }, + retry: { id: 'chat.retry', defaultMessage: 'Retry?' }, +}); + +interface IChatComposer extends Pick, 'onKeyDown' | 'onChange'> { + value: string, + onSubmit: () => void, + hasErrorSubmittingMessage?: boolean, +} + +/** Textarea input for chats. */ +const ChatComposer = React.forwardRef(({ + onKeyDown, + onChange, + value, + onSubmit, + hasErrorSubmittingMessage = false, +}, ref) => { + const intl = useIntl(); + + const isSubmitDisabled = value.length === 0; + + return ( +
+ + +