MessageInput
MessageInput
component provides all the UI and necessary functionality (e.g, attachment picker, commands, mentions autocomplete etc.) for composing a message.
This component must be used as child of Channel
component.
General Usage
import { StreamChat } from 'stream-chat';
import { Chat, Channel, MessageList, MessageInput, OverlayProvider } from 'stream-chat-react-native';
const client = StreamChat.getInstance('api_key');
export const App = () => (
<OverlayProvider>
<Chat client={client}>
<Channel channel={channel}>
<MessageList />
<MessageInput />
</Channel>
</Chat>
</OverlayProvider>
);
Props
All the configuration for MessageInput
can be done on Channel
component.
Additionally please take a look at our Guide Section on how to customize MessageInput UI
overrides the value from MessageInputContext asyncMessagesLockDistance
Controls how many pixels to the top side the user has to scroll in order to lock the recording view and allow the user to lift their finger from the screen without stopping the recording.
Type | Default |
---|---|
Number | 50 |
overrides the value from MessageInputContext asyncMessagesMinimumPressDuration
Controls the minimum duration(in milliseconds) that the user has to press on the record button in the composer, in order to start recording a new voice message.
Type | Default |
---|---|
Number | 500 |
overrides the value from MessageInputContext AsyncMessagesMultiSendEnabled
When it’s enabled, recorded messages won’t be sent immediately. Instead they will “stack up” in the composer allowing the user to send multiple voice recording as part of the same message.
Type | Default |
---|---|
Boolean | true |
overrides the value from MessageInputContext asyncMessagesSlideToCancelDistance
Controls how many pixels to the leading side the user has to scroll in order to cancel the recording of a voice message.
Type | Default |
---|---|
Number | 100 |
overrides the value from MessageInputContext audioRecordingEnabled
Controls whether the feature is enabled.
Type | Default |
---|---|
Boolean | false |
overrides the value from MessageInputContext clearEditingState
Function to clear "Editing Message" state from MessageInput component.
Type |
---|
Function |
overrides the value from MessageInputContext clearQuotedMessageState
Function to clear "Add Quoted Reply" state from MessageInput component.
Type |
---|
Function |
overrides the value from MessageInputContext closeAttachmentPicker
Dismiss the attachment picker, if its already open.
Type |
---|
Function |
overrides the value from ChannelContext disabled
True if channel is frozen and disableIfFrozenChannel is true.
Type |
---|
Boolean |
overrides the value from MessageInputContext editing
Defined with message type if the user is editing some message within MessageInput
component else its undefined.
Type |
---|
Boolean |
overrides the value from MessageInputContext fileUploads
List of file
type attachments currently attached to message, which is being composed in MessageInput
component.
[
{
file: {
name: 'test.pdf';
size: 2000;
type: 'application/pdf';
uri: 'file-uri';
};
id: 'asdas232bk3jb42k3';
state: 'uploaded'; // or 'finished'
url: 'https://cdn.getstream.io/kajsnkj2n3j4';
}
]
Type |
---|
Array |
overrides the value from MessageInputContext giphyActive
True if a user selects the giphy
command from commands list (which is shown when you type a /
in the input box).
This value is set back to false
when the user sends the message for searching Giphy.
Type |
---|
Boolean |
overrides the value from MessageInputContext imageUploads
List of image
type attachments currently attached to message, which is being composed in MessageInput
component.
[
{
file: { name: 'fallback-name.jpeg' },
id: '2j3n4k23nj4k23n4k3',
state: 'finished', // or 'uploading'
url: 'https://cdn.getstream.io/kajsnkj2n3j4', // If the state is `uploading`, then this will be a local uri of image.
},
];
Type |
---|
Array |
overrides the value from MessageInputContext inputBoxRef
Ref for TextInput
component within MessageInput
Type |
---|
React ref |
overrides the value from MessageInputContext isValidMessage
False if text within input box is empty and no images or files have been attached to a message yet. You can use this value to add enabled/disabled UI state on SendMessage button.
Type |
---|
Boolean |
overrides the value from ChannelContext members
Members of current channel. This value is received from backend when you query a channel, either using client.queryChannels()
or channel.watch()
API call.
client.queryChannels()
or channel.watch()
returns only up to 100 members of channel. So if you expect total number of members to be > 100, its better to use client.queryMembers()
API endpoint separately to get the list of members.
Record<
string, // userId
{
banned?: boolean;
created_at?: string;
invite_accepted_at?: string;
invite_rejected_at?: string;
invited?: boolean;
is_moderator?: boolean;
role?: string;
shadow_banned?: boolean;
updated_at?: string;
user?: UserResponse<UserType>;
user_id?: string;
}
>;
Type |
---|
object |
overrides the value from SuggestionsContext suggestions
Current active list of suggestions, within suggestions list for autocomplete feature.
Type |
---|
{ data: array<object>, onSelect: function, queryText: string } |
overrides the value from SuggestionsContext suggestionsTitle
Title component of current active suggestions autocomplete list.
Type |
---|
string | Element |
overrides the value from MessageInputContext additionalTextInputProps
Additional props provided to the underlying TextInput within MessageInput
.
Type |
---|
object |
overrides the value from MessageInputContext asyncIds
Queue that stores the asset id, if user hit send before image uploaded.
Type |
---|
String[] |
overrides the value from MessageInputContext asyncUploads
It is of type Object with key as the asynchronous upload id, and value as an object containing file upload state and URL(url
).
Type |
---|
Object |
overrides the value from MessageInputContext maxNumberOfFiles
Maximum number of files (documents & images), that can be attached per message.
Type | Default |
---|---|
number | 10 |
overrides the value from MessageInputContext mentionedUsers
Ids of users which are mentioned (for example Hey @Vishal Narkhede, how are you
) in a message, which is being composed in MessageInput component.
['vishal-user-id', 'jaap-user-id'];
Type |
---|
String[] |
overrides the value from MessageInputContext numberOfUploads
Number of image + files attached to message which is being composed in MessageInput
component.
Type |
---|
Number |
overrides the value from MessageInputContext quotedMessage
Message that is quoted to the original message
Type |
---|
Boolean | Message type |
overrides the value from MessageInputContext removeImage
Removes an attached image in a message being composed in the MessageInput
component. By default, this function is attached to onPress
handler for close button in ImageUploadPreview.
It takes a string ID of the image to be removed in the imageUploads
array as parameter.
Type |
---|
(id: string) => void |
overrides the value from MessageInputContext resetInput
Resets the entire MessageInput
component to empty state by clearing the text, attachments etc.
Type |
---|
Function |
overrides the value from MessageInputContext sending
overrides the value from MessageInputContext sendMessageAsync
overrides the value from MessageInputContext setGiphyActive
Setter function for giphyActive
Type |
---|
(isActive) => void |
overrides the value from MessageInputContext showMoreOptions
Represents the expanded or collapsed state for attach and commands button, next to input box.
Type |
---|
Boolean |
overrides the value from ThreadContext thread
A message object that when set indicates a thread is open.
When used with the Thread
component this will display the thread.
When used with the standard MessageList
component this will prevent any singleton components in the OverlayProvider
form getting out of sync.
thread
should be set on all Channel
components when a thread is open.
Type |
---|
object |
overrides the value from MessageInputContext uploadNewImage
Function to upload an attached image in MessageInput
. This function takes a image from imageUploads
array as a parameter.
Type |
---|
(image) => Promise |
overrides the value from ChannelContext watchers
Watchers of current channel. This value is received from backend when you query a channel, either using client.queryChannels()
or channel.watch()
API call.
client.queryChannels()
or channel.watch()
returns only up to 100 watchers for channel. So if you expect total number of watchers to be > 100, you should request them explicitly using Channel Pagination
Record<
string, // string
UserResponse<UserType>
>;
Type |
---|
object |
overrides the value from SuggestionsContext triggerType
The trigger type triggers a particular type of autocomplete list depending on user input.
Type |
---|
'command' | 'emoji' | 'mention' |
UI Component Props
overrides the value from MessageInputContext AudioRecorder
Custom UI component to render audio recorder controls in MessageInput.
Type | Default |
---|---|
ComponentType | AudioRecorder |
overrides the value from MessageInputContext AudioRecordingInProgress
Custom UI component to render audio recording in progress in MessageInput. It renders the waveform, duration etc, for the recording.
Type | Default |
---|---|
ComponentType | AudioRecordingInProgress |
overrides the value from MessageInputContext AudioRecordingLockIndicator
Custom UI component to render audio recording lock indicator in MessageInput that can be dragged up to lock the recording start.
Type | Default |
---|---|
ComponentType | AudioRecordingLockIndicator |
overrides the value from MessageInputContext AudioRecordingPreview
Custom UI component to render audio recording preview in MessageInput that allows playing the recording.
Type | Default |
---|---|
ComponentType | AudioRecordingPreview |
overrides the value from MessageInputContext AudioRecordingWaveform
Custom UI component to render audio recording waveform in MessageInput.
Type | Default |
---|---|
ComponentType | AudioRecordingWaveform |
overrides the value from ChannelContext Reply
Component to render preview of parent of message for quoted reply.
Type | Default |
---|---|
ComponentType | Reply |
overrides the value from MessageInputContext FileUploadPreview
Component to render preview of attached file, within enclosed MessageInput
component.
Type | Default |
---|---|
ComponentType | FileUploadPreview |
overrides the value from MessageInputContext ImageUploadPreview
Component to render preview of attached images, within enclosed MessageInput component
Type | Default |
---|---|
ComponentType | ImageUploadPreview |
overrides the value from MessageInputContext Input
Component to render UI part of enclosed MessageInput component. Please read section in guides about Customizing Message Input.
Type |
---|
ComponentType |
overrides the value from MessageInputContext InputButtons
Component to render action buttons (CommandsButton and AttachButton) on left side of input box, within enclosed MessageInput
component.
Type | Default |
---|---|
ComponentType | InputButtons |
overrides the value from MessageInputContext SendButton
Component to render a send message button, within enclosed MessageInput component.
Type | Default |
---|---|
ComponentType | SendButton |
overrides the value from MessageInputContext ShowThreadMessageInChannelButton
Component to render a checkbox within enclosed Thread component, which when checked sets a show_in_channel
property to true on a message.
Type | Default |
---|---|
ComponentType | ShowThreadMessageInChannelButton |
overrides the value from MessageInputContext StartAudioRecordingButton
Custom UI component for audio recording mic button in MessageInput.
Type | Default |
---|---|
ComponentType | StartAudioRecordingButton |