stream-chat-react-native-core 9.0.0-beta.31 → 9.0.0-beta.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Attachment.js +15 -52
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachment.js +4 -6
- package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +4 -10
- package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
- package/lib/commonjs/components/Attachment/FilePreview.js +3 -6
- package/lib/commonjs/components/Attachment/FilePreview.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +9 -28
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/GalleryImage.js +3 -3
- package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/commonjs/components/Attachment/Giphy/GiphyImage.js +7 -13
- package/lib/commonjs/components/Attachment/Giphy/GiphyImage.js.map +1 -1
- package/lib/commonjs/components/Attachment/UnsupportedAttachment.js +4 -6
- package/lib/commonjs/components/Attachment/UnsupportedAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/UrlPreview/URLPreview.js +3 -3
- package/lib/commonjs/components/Attachment/UrlPreview/URLPreview.js.map +1 -1
- package/lib/commonjs/components/Attachment/UrlPreview/URLPreviewCompact.js +3 -3
- package/lib/commonjs/components/Attachment/UrlPreview/URLPreviewCompact.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +4 -2
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +7 -4
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +9 -13
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +9 -418
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +0 -8
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -77
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -132
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelList.js +1 -57
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +4 -2
- package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListView.js +11 -20
- package/lib/commonjs/components/ChannelList/ChannelListView.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +1 -39
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelDetailsBottomSheet.js +3 -2
- package/lib/commonjs/components/ChannelPreview/ChannelDetailsBottomSheet.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +4 -6
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +6 -18
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js +8 -28
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js +3 -3
- package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +4 -6
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +0 -2
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +7 -9
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +4 -2
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +9 -13
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageBubble.js +4 -2
- package/lib/commonjs/components/Message/MessageItemView/MessageBubble.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageContent.js +18 -39
- package/lib/commonjs/components/Message/MessageItemView/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageDeleted.js +5 -7
- package/lib/commonjs/components/Message/MessageItemView/MessageDeleted.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageFooter.js +4 -8
- package/lib/commonjs/components/Message/MessageItemView/MessageFooter.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageHeader.js +8 -16
- package/lib/commonjs/components/Message/MessageItemView/MessageHeader.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js +13 -35
- package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageReplies.js +3 -5
- package/lib/commonjs/components/Message/MessageItemView/MessageReplies.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js +3 -3
- package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageWrapper.js +6 -4
- package/lib/commonjs/components/Message/MessageItemView/MessageWrapper.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListBottom.js +6 -8
- package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListBottom.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListTop.js +7 -11
- package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListTop.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageComposer.js +15 -55
- package/lib/commonjs/components/MessageInput/MessageComposer.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInputHeaderView.js +5 -5
- package/lib/commonjs/components/MessageInput/MessageInputHeaderView.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +9 -17
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js +5 -5
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js +5 -5
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +5 -5
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputButtons/index.js +4 -4
- package/lib/commonjs/components/MessageInput/components/InputButtons/index.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/LinkPreviewList.js +3 -2
- package/lib/commonjs/components/MessageInput/components/LinkPreviewList.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/OutputButtons/index.js +7 -13
- package/lib/commonjs/components/MessageInput/components/OutputButtons/index.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageFlashList.js +14 -40
- package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +12 -38
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/StickyHeader.js +3 -1
- package/lib/commonjs/components/MessageList/StickyHeader.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageActionList.js +4 -2
- package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageMenu.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +4 -8
- package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +4 -2
- package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
- package/lib/commonjs/components/Poll/CreatePollContent.js +3 -1
- package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
- package/lib/commonjs/components/Poll/Poll.js +12 -9
- package/lib/commonjs/components/Poll/Poll.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollAnswersList.js +5 -3
- package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollOption.js +5 -3
- package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +5 -5
- package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResults.js +5 -3
- package/lib/commonjs/components/Poll/components/PollResults/PollResults.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +4 -2
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/components/Thread/Thread.js +4 -8
- package/lib/commonjs/components/Thread/Thread.js.map +1 -1
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +4 -6
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/commonjs/components/ThreadList/ThreadList.js +12 -15
- package/lib/commonjs/components/ThreadList/ThreadList.js.map +1 -1
- package/lib/commonjs/components/ThreadList/ThreadListItem.js +8 -11
- package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/Avatar.js +3 -3
- package/lib/commonjs/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/componentsContext/ComponentsContext.js +37 -0
- package/lib/commonjs/contexts/componentsContext/ComponentsContext.js.map +1 -0
- package/lib/commonjs/contexts/componentsContext/PLAN.md +148 -0
- package/lib/commonjs/contexts/componentsContext/defaultComponents.js +286 -0
- package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -0
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +1 -9
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContextBase.js.map +1 -1
- package/lib/commonjs/contexts/index.js +11 -0
- package/lib/commonjs/contexts/index.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -76
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/MessageOverlayHostLayer.js +7 -5
- package/lib/commonjs/contexts/overlayContext/MessageOverlayHostLayer.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -4
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/contexts/threadsContext/ThreadsContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +15 -52
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachment.js +4 -6
- package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachmentGroup.js +4 -10
- package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
- package/lib/module/components/Attachment/FilePreview.js +3 -6
- package/lib/module/components/Attachment/FilePreview.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +9 -28
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/GalleryImage.js +3 -3
- package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/module/components/Attachment/Giphy/GiphyImage.js +7 -13
- package/lib/module/components/Attachment/Giphy/GiphyImage.js.map +1 -1
- package/lib/module/components/Attachment/UnsupportedAttachment.js +4 -6
- package/lib/module/components/Attachment/UnsupportedAttachment.js.map +1 -1
- package/lib/module/components/Attachment/UrlPreview/URLPreview.js +3 -3
- package/lib/module/components/Attachment/UrlPreview/URLPreview.js.map +1 -1
- package/lib/module/components/Attachment/UrlPreview/URLPreviewCompact.js +3 -3
- package/lib/module/components/Attachment/UrlPreview/URLPreviewCompact.js.map +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +4 -2
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +7 -4
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +9 -13
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +9 -418
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js +0 -8
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -77
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -132
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelList.js +1 -57
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +4 -2
- package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListView.js +11 -20
- package/lib/module/components/ChannelList/ChannelListView.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +1 -39
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelDetailsBottomSheet.js +3 -2
- package/lib/module/components/ChannelPreview/ChannelDetailsBottomSheet.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +4 -6
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +6 -18
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewView.js +8 -28
- package/lib/module/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js +3 -3
- package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +4 -6
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/useCreateChatContext.js +0 -2
- package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +7 -9
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +4 -2
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/Message/Message.js +9 -13
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageBubble.js +4 -2
- package/lib/module/components/Message/MessageItemView/MessageBubble.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageContent.js +18 -39
- package/lib/module/components/Message/MessageItemView/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageDeleted.js +5 -7
- package/lib/module/components/Message/MessageItemView/MessageDeleted.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageFooter.js +4 -8
- package/lib/module/components/Message/MessageItemView/MessageFooter.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageHeader.js +8 -16
- package/lib/module/components/Message/MessageItemView/MessageHeader.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageItemView.js +13 -35
- package/lib/module/components/Message/MessageItemView/MessageItemView.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageReplies.js +3 -5
- package/lib/module/components/Message/MessageItemView/MessageReplies.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageTextContainer.js +3 -3
- package/lib/module/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageWrapper.js +6 -4
- package/lib/module/components/Message/MessageItemView/MessageWrapper.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListBottom.js +6 -8
- package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListBottom.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListTop.js +7 -11
- package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListTop.js.map +1 -1
- package/lib/module/components/MessageInput/MessageComposer.js +15 -55
- package/lib/module/components/MessageInput/MessageComposer.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInputHeaderView.js +5 -5
- package/lib/module/components/MessageInput/MessageInputHeaderView.js.map +1 -1
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +9 -17
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
- package/lib/module/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js +5 -5
- package/lib/module/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js +5 -5
- package/lib/module/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +5 -5
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputButtons/index.js +4 -4
- package/lib/module/components/MessageInput/components/InputButtons/index.js.map +1 -1
- package/lib/module/components/MessageInput/components/LinkPreviewList.js +3 -2
- package/lib/module/components/MessageInput/components/LinkPreviewList.js.map +1 -1
- package/lib/module/components/MessageInput/components/OutputButtons/index.js +7 -13
- package/lib/module/components/MessageInput/components/OutputButtons/index.js.map +1 -1
- package/lib/module/components/MessageList/MessageFlashList.js +14 -40
- package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +12 -38
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/StickyHeader.js +3 -1
- package/lib/module/components/MessageList/StickyHeader.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageActionList.js +4 -2
- package/lib/module/components/MessageMenu/MessageActionList.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageMenu.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageUserReactions.js +4 -8
- package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +4 -2
- package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
- package/lib/module/components/Poll/CreatePollContent.js +3 -1
- package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
- package/lib/module/components/Poll/Poll.js +12 -9
- package/lib/module/components/Poll/Poll.js.map +1 -1
- package/lib/module/components/Poll/components/PollAnswersList.js +5 -3
- package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
- package/lib/module/components/Poll/components/PollOption.js +5 -3
- package/lib/module/components/Poll/components/PollOption.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +5 -5
- package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollResults.js +5 -3
- package/lib/module/components/Poll/components/PollResults/PollResults.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +4 -2
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/components/Thread/Thread.js +4 -8
- package/lib/module/components/Thread/Thread.js.map +1 -1
- package/lib/module/components/Thread/components/ThreadFooterComponent.js +4 -6
- package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/module/components/ThreadList/ThreadList.js +12 -15
- package/lib/module/components/ThreadList/ThreadList.js.map +1 -1
- package/lib/module/components/ThreadList/ThreadListItem.js +8 -11
- package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
- package/lib/module/components/ui/Avatar/Avatar.js +3 -3
- package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/componentsContext/ComponentsContext.js +37 -0
- package/lib/module/contexts/componentsContext/ComponentsContext.js.map +1 -0
- package/lib/module/contexts/componentsContext/PLAN.md +148 -0
- package/lib/module/contexts/componentsContext/defaultComponents.js +286 -0
- package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -0
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +1 -9
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContextBase.js.map +1 -1
- package/lib/module/contexts/index.js +11 -0
- package/lib/module/contexts/index.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -76
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/MessageOverlayHostLayer.js +7 -5
- package/lib/module/contexts/overlayContext/MessageOverlayHostLayer.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -4
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/contexts/threadsContext/ThreadsContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Attachment.d.ts +1 -1
- package/lib/typescript/components/Attachment/Attachment.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
- package/lib/typescript/components/Attachment/FileAttachment.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +1 -2
- package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/FilePreview.d.ts +2 -3
- package/lib/typescript/components/Attachment/FilePreview.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
- package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/GalleryImage.d.ts +3 -2
- package/lib/typescript/components/Attachment/GalleryImage.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/Giphy/GiphyImage.d.ts +4 -2
- package/lib/typescript/components/Attachment/Giphy/GiphyImage.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/UnsupportedAttachment.d.ts +2 -3
- package/lib/typescript/components/Attachment/UnsupportedAttachment.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/UrlPreview/URLPreview.d.ts +4 -3
- package/lib/typescript/components/Attachment/UrlPreview/URLPreview.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/UrlPreview/URLPreviewCompact.d.ts +4 -3
- package/lib/typescript/components/Attachment/UrlPreview/URLPreviewCompact.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +2 -3
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts +3 -28
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
- package/lib/typescript/components/ChannelList/ChannelList.d.ts +2 -10
- package/lib/typescript/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelList/ChannelListLoadingIndicator.d.ts.map +1 -1
- package/lib/typescript/components/ChannelList/ChannelListView.d.ts +1 -1
- package/lib/typescript/components/ChannelList/ChannelListView.d.ts.map +1 -1
- package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts +1 -1
- package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelDetailsBottomSheet.d.ts +1 -2
- package/lib/typescript/components/ChannelPreview/ChannelDetailsBottomSheet.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts +1 -2
- package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts +1 -3
- package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts.map +1 -1
- package/lib/typescript/components/Chat/Chat.d.ts +1 -7
- package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
- package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
- package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +6 -1
- package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
- package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts.map +1 -1
- package/lib/typescript/components/ImageGallery/components/types.d.ts +0 -2
- package/lib/typescript/components/ImageGallery/components/types.d.ts.map +1 -1
- package/lib/typescript/components/Message/Message.d.ts +1 -1
- package/lib/typescript/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageBubble.d.ts +1 -2
- package/lib/typescript/components/Message/MessageItemView/MessageBubble.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageDeleted.d.ts +1 -2
- package/lib/typescript/components/Message/MessageItemView/MessageDeleted.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageFooter.d.ts +0 -2
- package/lib/typescript/components/Message/MessageItemView/MessageFooter.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageHeader.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageReplies.d.ts +1 -2
- package/lib/typescript/components/Message/MessageItemView/MessageReplies.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageWrapper.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListBottom.d.ts +1 -1
- package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListBottom.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListTop.d.ts +1 -1
- package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListTop.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/MessageComposer.d.ts +1 -2
- package/lib/typescript/components/MessageInput/MessageComposer.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts +3 -4
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts +1 -1
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/InputButtons/index.d.ts +1 -1
- package/lib/typescript/components/MessageInput/components/InputButtons/index.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/LinkPreviewList.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/OutputButtons/index.d.ts +1 -1
- package/lib/typescript/components/MessageInput/components/OutputButtons/index.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageFlashList.d.ts +1 -1
- package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/StickyHeader.d.ts +2 -3
- package/lib/typescript/components/MessageList/StickyHeader.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageActionList.d.ts +1 -2
- package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageMenu.d.ts +1 -2
- package/lib/typescript/components/MessageMenu/MessageMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts +1 -1
- package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts +2 -3
- package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +1 -1
- package/lib/typescript/components/Poll/CreatePollContent.d.ts +2 -2
- package/lib/typescript/components/Poll/CreatePollContent.d.ts.map +1 -1
- package/lib/typescript/components/Poll/Poll.d.ts +5 -8
- package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +1 -2
- package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollOption.d.ts +1 -2
- package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts +1 -4
- package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts +1 -2
- package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts.map +1 -1
- package/lib/typescript/components/Reply/Reply.d.ts +4 -3
- package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
- package/lib/typescript/components/Thread/Thread.d.ts +2 -8
- package/lib/typescript/components/Thread/Thread.d.ts.map +1 -1
- package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts +1 -2
- package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
- package/lib/typescript/components/ThreadList/ThreadList.d.ts +2 -3
- package/lib/typescript/components/ThreadList/ThreadList.d.ts.map +1 -1
- package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
- package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +0 -17
- package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +0 -23
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +0 -112
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts.map +1 -1
- package/lib/typescript/contexts/chatContext/ChatContext.d.ts +0 -5
- package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
- package/lib/typescript/contexts/componentsContext/ComponentsContext.d.ts +321 -0
- package/lib/typescript/contexts/componentsContext/ComponentsContext.d.ts.map +1 -0
- package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +296 -0
- package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -0
- package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
- package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContextBase.d.ts +0 -5
- package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContextBase.d.ts.map +1 -1
- package/lib/typescript/contexts/index.d.ts +1 -0
- package/lib/typescript/contexts/index.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -169
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -332
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/MessageOverlayHostLayer.d.ts +2 -5
- package/lib/typescript/contexts/overlayContext/MessageOverlayHostLayer.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +0 -4
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
- package/lib/typescript/contexts/threadsContext/ThreadsContext.d.ts +0 -9
- package/lib/typescript/contexts/threadsContext/ThreadsContext.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/offline-support/offline-feature.js +64 -67
- package/src/components/Attachment/Attachment.tsx +7 -69
- package/src/components/Attachment/FileAttachment.tsx +4 -7
- package/src/components/Attachment/FileAttachmentGroup.tsx +9 -19
- package/src/components/Attachment/FilePreview.tsx +4 -9
- package/src/components/Attachment/Gallery.tsx +6 -83
- package/src/components/Attachment/GalleryImage.tsx +5 -4
- package/src/components/Attachment/Giphy/GiphyImage.tsx +15 -37
- package/src/components/Attachment/UnsupportedAttachment.tsx +5 -10
- package/src/components/Attachment/UrlPreview/URLPreview.tsx +6 -4
- package/src/components/Attachment/UrlPreview/URLPreviewCompact.tsx +6 -4
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +2 -2
- package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +5 -4
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +4 -20
- package/src/components/Channel/Channel.tsx +31 -438
- package/src/components/Channel/__tests__/isAttachmentEqualHandler.test.js +12 -9
- package/src/components/Channel/hooks/useCreateChannelContext.ts +0 -8
- package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +1 -81
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +0 -130
- package/src/components/ChannelList/ChannelList.tsx +3 -76
- package/src/components/ChannelList/ChannelListLoadingIndicator.tsx +3 -1
- package/src/components/ChannelList/ChannelListView.tsx +12 -33
- package/src/components/ChannelList/__tests__/ChannelList.test.js +173 -116
- package/src/components/ChannelList/__tests__/ChannelListView.test.js +64 -41
- package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +0 -39
- package/src/components/ChannelPreview/ChannelDetailsBottomSheet.tsx +2 -2
- package/src/components/ChannelPreview/ChannelPreview.tsx +6 -14
- package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +7 -33
- package/src/components/ChannelPreview/ChannelPreviewView.tsx +11 -40
- package/src/components/ChannelPreview/ChannelSwipableWrapper.tsx +2 -4
- package/src/components/ChannelPreview/__tests__/ChannelDetailsBottomSheet.test.tsx +16 -12
- package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +25 -24
- package/src/components/ChannelPreview/__tests__/ChannelSwipableWrapper.test.tsx +11 -6
- package/src/components/Chat/Chat.tsx +5 -12
- package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
- package/src/components/ImageGallery/ImageGallery.tsx +14 -16
- package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +0 -8
- package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +25 -21
- package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +3 -1
- package/src/components/ImageGallery/components/types.ts +0 -3
- package/src/components/Message/Message.tsx +11 -32
- package/src/components/Message/MessageItemView/MessageBubble.tsx +11 -7
- package/src/components/Message/MessageItemView/MessageContent.tsx +14 -47
- package/src/components/Message/MessageItemView/MessageDeleted.tsx +3 -9
- package/src/components/Message/MessageItemView/MessageFooter.tsx +2 -14
- package/src/components/Message/MessageItemView/MessageHeader.tsx +11 -29
- package/src/components/Message/MessageItemView/MessageItemView.tsx +10 -42
- package/src/components/Message/MessageItemView/MessageReplies.tsx +2 -8
- package/src/components/Message/MessageItemView/MessageTextContainer.tsx +4 -8
- package/src/components/Message/MessageItemView/MessageWrapper.tsx +4 -9
- package/src/components/Message/MessageItemView/ReactionList/ReactionListBottom.tsx +4 -12
- package/src/components/Message/MessageItemView/ReactionList/ReactionListTop.tsx +4 -20
- package/src/components/Message/MessageItemView/__tests__/MessageContent.test.js +47 -30
- package/src/components/Message/MessageItemView/__tests__/MessageItemView.test.js +16 -7
- package/src/components/Message/MessageItemView/__tests__/MessageTextContainer.test.tsx +8 -4
- package/src/components/MessageInput/MessageComposer.tsx +16 -76
- package/src/components/MessageInput/MessageInputHeaderView.tsx +3 -3
- package/src/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.tsx +7 -35
- package/src/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.tsx +2 -2
- package/src/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.tsx +2 -2
- package/src/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.tsx +6 -4
- package/src/components/MessageInput/components/InputButtons/index.tsx +4 -5
- package/src/components/MessageInput/components/LinkPreviewList.tsx +3 -2
- package/src/components/MessageInput/components/OutputButtons/index.tsx +4 -23
- package/src/components/MessageList/MessageFlashList.tsx +13 -57
- package/src/components/MessageList/MessageList.tsx +15 -57
- package/src/components/MessageList/StickyHeader.tsx +4 -3
- package/src/components/MessageMenu/MessageActionList.tsx +4 -3
- package/src/components/MessageMenu/MessageMenu.tsx +35 -47
- package/src/components/MessageMenu/MessageUserReactions.tsx +7 -27
- package/src/components/MessageMenu/MessageUserReactionsItem.tsx +3 -6
- package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +12 -11
- package/src/components/Poll/CreatePollContent.tsx +3 -4
- package/src/components/Poll/Poll.tsx +22 -24
- package/src/components/Poll/components/PollAnswersList.tsx +9 -11
- package/src/components/Poll/components/PollOption.tsx +9 -11
- package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +10 -11
- package/src/components/Poll/components/PollResults/PollResults.tsx +9 -15
- package/src/components/Reply/Reply.tsx +18 -5
- package/src/components/Thread/Thread.tsx +3 -18
- package/src/components/Thread/components/ThreadFooterComponent.tsx +10 -11
- package/src/components/ThreadList/ThreadList.tsx +14 -22
- package/src/components/ThreadList/ThreadListItem.tsx +6 -11
- package/src/components/ui/Avatar/Avatar.tsx +2 -2
- package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +0 -15
- package/src/contexts/channelContext/ChannelContext.tsx +0 -24
- package/src/contexts/channelsContext/ChannelsContext.tsx +0 -113
- package/src/contexts/chatContext/ChatContext.tsx +0 -5
- package/src/contexts/componentsContext/ComponentsContext.tsx +62 -0
- package/src/contexts/componentsContext/PLAN.md +148 -0
- package/src/contexts/componentsContext/__tests__/defaultComponents.test.ts +44 -0
- package/src/contexts/componentsContext/defaultComponents.ts +332 -0
- package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +0 -8
- package/src/contexts/imageGalleryContext/ImageGalleryContextBase.tsx +0 -10
- package/src/contexts/index.ts +1 -0
- package/src/contexts/messageInputContext/MessageInputContext.tsx +0 -185
- package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +1 -75
- package/src/contexts/messagesContext/MessagesContext.tsx +3 -358
- package/src/contexts/overlayContext/MessageOverlayHostLayer.tsx +5 -7
- package/src/contexts/overlayContext/OverlayContext.tsx +0 -4
- package/src/contexts/overlayContext/OverlayProvider.tsx +1 -2
- package/src/contexts/overlayContext/__tests__/MessageOverlayHostLayer.test.tsx +21 -6
- package/src/contexts/threadsContext/ThreadsContext.tsx +0 -9
- package/src/version.json +1 -1
|
@@ -2,7 +2,6 @@ import React, { PropsWithChildren, useContext, useMemo, useState } from 'react';
|
|
|
2
2
|
|
|
3
3
|
import BottomSheet from '@gorhom/bottom-sheet';
|
|
4
4
|
|
|
5
|
-
import { AttachmentPickerContentProps } from '../../components';
|
|
6
5
|
import {
|
|
7
6
|
AttachmentPickerStore,
|
|
8
7
|
SelectedPickerType,
|
|
@@ -21,10 +20,6 @@ export type AttachmentPickerContextValue = Pick<
|
|
|
21
20
|
MessageInputContextValue,
|
|
22
21
|
'attachmentSelectionBarHeight' | 'attachmentPickerBottomSheetHeight'
|
|
23
22
|
> & {
|
|
24
|
-
/**
|
|
25
|
-
* Custom UI Component to render select more photos for selected gallery access in iOS.
|
|
26
|
-
*/
|
|
27
|
-
AttachmentPickerIOSSelectMorePhotos: React.ComponentType;
|
|
28
23
|
/**
|
|
29
24
|
* `bottomInset` determine the height of the `AttachmentPicker` and the underlying shift to the `MessageList` when it is opened.
|
|
30
25
|
* This can also be set via the `setBottomInset` function provided by the `useAttachmentPickerContext` hook.
|
|
@@ -39,16 +34,6 @@ export type AttachmentPickerContextValue = Pick<
|
|
|
39
34
|
topInset: number;
|
|
40
35
|
|
|
41
36
|
disableAttachmentPicker?: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Custom UI component to render overlay component, that shows up on top of [selected
|
|
44
|
-
* image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)
|
|
45
|
-
*
|
|
46
|
-
* **Default**
|
|
47
|
-
* [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)
|
|
48
|
-
*/
|
|
49
|
-
ImageOverlaySelectedComponent: React.ComponentType<{ index: number }>;
|
|
50
|
-
AttachmentPickerSelectionBar: React.ComponentType;
|
|
51
|
-
AttachmentPickerContent: React.ComponentType<AttachmentPickerContentProps>;
|
|
52
37
|
attachmentPickerStore: AttachmentPickerStore;
|
|
53
38
|
numberOfAttachmentPickerImageColumns?: number;
|
|
54
39
|
numberOfAttachmentImagesToLoadPerCall?: number;
|
|
@@ -3,9 +3,6 @@ import React, { PropsWithChildren, useContext } from 'react';
|
|
|
3
3
|
import type { Channel, ChannelState } from 'stream-chat';
|
|
4
4
|
|
|
5
5
|
import { MarkReadFunctionOptions } from '../../components/Channel/Channel';
|
|
6
|
-
import type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';
|
|
7
|
-
import type { LoadingProps } from '../../components/Indicators/LoadingIndicator';
|
|
8
|
-
import { StickyHeaderProps } from '../../components/MessageList/StickyHeader';
|
|
9
6
|
import {
|
|
10
7
|
ChannelUnreadStateStore,
|
|
11
8
|
ChannelUnreadStateStoreType,
|
|
@@ -38,12 +35,6 @@ export type ChannelContextValue = {
|
|
|
38
35
|
* @overrideType Channel
|
|
39
36
|
*/
|
|
40
37
|
channel: Channel;
|
|
41
|
-
/**
|
|
42
|
-
* Custom UI component to display empty state when channel has no messages.
|
|
43
|
-
*
|
|
44
|
-
* **Default** [EmptyStateIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Indicators/EmptyStateIndicator.tsx)
|
|
45
|
-
*/
|
|
46
|
-
EmptyStateIndicator: React.ComponentType<EmptyStateProps>;
|
|
47
38
|
/**
|
|
48
39
|
* When set to true, reactions will be limited to 1 per user. If user selects another reaction
|
|
49
40
|
* then his previous reaction will be removed and replaced with new one.
|
|
@@ -90,10 +81,6 @@ export type ChannelContextValue = {
|
|
|
90
81
|
setTargetedMessage?: (messageId: string) => void;
|
|
91
82
|
}) => Promise<void>;
|
|
92
83
|
|
|
93
|
-
/**
|
|
94
|
-
* Custom loading indicator to override the Stream default
|
|
95
|
-
*/
|
|
96
|
-
LoadingIndicator: React.ComponentType<LoadingProps>;
|
|
97
84
|
markRead: (options?: MarkReadFunctionOptions) => void;
|
|
98
85
|
/**
|
|
99
86
|
*
|
|
@@ -119,10 +106,6 @@ export type ChannelContextValue = {
|
|
|
119
106
|
* ```
|
|
120
107
|
*/
|
|
121
108
|
members: ChannelState['members'];
|
|
122
|
-
/**
|
|
123
|
-
* Custom network down indicator to override the Stream default
|
|
124
|
-
*/
|
|
125
|
-
NetworkDownIndicator: React.ComponentType;
|
|
126
109
|
read: ChannelState['read'];
|
|
127
110
|
reloadChannel: () => Promise<void>;
|
|
128
111
|
scrollToFirstUnreadThreshold: number;
|
|
@@ -156,13 +139,6 @@ export type ChannelContextValue = {
|
|
|
156
139
|
* currently near them within the viewport.
|
|
157
140
|
*/
|
|
158
141
|
maximumMessageLimit?: number;
|
|
159
|
-
/**
|
|
160
|
-
* Custom UI component for sticky header of channel.
|
|
161
|
-
*
|
|
162
|
-
* **Default** [DateHeader](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageList/DateHeader.tsx)
|
|
163
|
-
*/
|
|
164
|
-
StickyHeader?: React.ComponentType<StickyHeaderProps>;
|
|
165
|
-
|
|
166
142
|
/**
|
|
167
143
|
* Id of message, around which Channel/MessageList gets loaded when opened.
|
|
168
144
|
* You will see a highlighted background for targetted message, when opened.
|
|
@@ -5,23 +5,8 @@ import type { FlatList } from 'react-native-gesture-handler';
|
|
|
5
5
|
|
|
6
6
|
import type { Channel } from 'stream-chat';
|
|
7
7
|
|
|
8
|
-
import type { HeaderErrorProps } from '../../components/ChannelList/ChannelListHeaderErrorIndicator';
|
|
9
8
|
import type { GetChannelActionItems } from '../../components/ChannelList/hooks/useChannelActionItems';
|
|
10
9
|
import type { QueryChannels } from '../../components/ChannelList/hooks/usePaginatedChannels';
|
|
11
|
-
import type { ChannelDetailsBottomSheetProps } from '../../components/ChannelPreview/ChannelDetailsBottomSheet';
|
|
12
|
-
import { ChannelLastMessagePreviewProps } from '../../components/ChannelPreview/ChannelLastMessagePreview';
|
|
13
|
-
import { ChannelMessagePreviewDeliveryStatusProps } from '../../components/ChannelPreview/ChannelMessagePreviewDeliveryStatus';
|
|
14
|
-
import { ChannelPreviewMessageProps } from '../../components/ChannelPreview/ChannelPreviewMessage';
|
|
15
|
-
import type { ChannelPreviewStatusProps } from '../../components/ChannelPreview/ChannelPreviewStatus';
|
|
16
|
-
import type { ChannelPreviewTitleProps } from '../../components/ChannelPreview/ChannelPreviewTitle';
|
|
17
|
-
import { ChannelPreviewTypingIndicatorProps } from '../../components/ChannelPreview/ChannelPreviewTypingIndicator';
|
|
18
|
-
import type { ChannelPreviewUnreadCountProps } from '../../components/ChannelPreview/ChannelPreviewUnreadCount';
|
|
19
|
-
import type { ChannelPreviewViewProps } from '../../components/ChannelPreview/ChannelPreviewView';
|
|
20
|
-
import type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';
|
|
21
|
-
import type { LoadingErrorProps } from '../../components/Indicators/LoadingErrorIndicator';
|
|
22
|
-
import type { LoadingProps } from '../../components/Indicators/LoadingIndicator';
|
|
23
|
-
|
|
24
|
-
import { ChannelAvatarProps } from '../../components/ui/Avatar/ChannelAvatar';
|
|
25
10
|
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
|
|
26
11
|
|
|
27
12
|
import { isTestEnvironment } from '../utils/isTestEnvironment';
|
|
@@ -53,18 +38,6 @@ export type ChannelsContextValue = {
|
|
|
53
38
|
* Channels can be either an array of channels or a promise which resolves to an array of channels
|
|
54
39
|
*/
|
|
55
40
|
channels: Channel[] | null;
|
|
56
|
-
/**
|
|
57
|
-
* Custom indicator to use when channel list is empty
|
|
58
|
-
*
|
|
59
|
-
* Default: [EmptyStateIndicator](https://getstream.io/chat/docs/sdk/reactnative/core-components/channel/#emptystateindicator)
|
|
60
|
-
* */
|
|
61
|
-
EmptyStateIndicator: React.ComponentType<EmptyStateProps>;
|
|
62
|
-
/**
|
|
63
|
-
* Custom loading indicator to display at bottom of the list, while loading further pages
|
|
64
|
-
*
|
|
65
|
-
* Default: [ChannelListFooterLoadingIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#footerloadingindicator)
|
|
66
|
-
*/
|
|
67
|
-
FooterLoadingIndicator: React.ComponentType;
|
|
68
41
|
/**
|
|
69
42
|
* Incremental number change to force update the FlatList
|
|
70
43
|
*/
|
|
@@ -73,33 +46,10 @@ export type ChannelsContextValue = {
|
|
|
73
46
|
* Whether or not the FlatList has another page to render
|
|
74
47
|
*/
|
|
75
48
|
hasNextPage: boolean;
|
|
76
|
-
/**
|
|
77
|
-
* Custom indicator to display error at top of list, if loading/pagination error occurs
|
|
78
|
-
*
|
|
79
|
-
* Default: [ChannelListHeaderErrorIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#headererrorindicator)
|
|
80
|
-
*/
|
|
81
|
-
HeaderErrorIndicator: React.ComponentType<HeaderErrorProps>;
|
|
82
|
-
/**
|
|
83
|
-
* Custom indicator to display network-down error at top of list, if there is connectivity issue
|
|
84
|
-
*
|
|
85
|
-
* Default: [ChannelListHeaderNetworkDownIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#headernetworkdownindicator)
|
|
86
|
-
*/
|
|
87
|
-
HeaderNetworkDownIndicator: React.ComponentType;
|
|
88
49
|
/**
|
|
89
50
|
* Initial channels query loading state, triggers the LoadingIndicator
|
|
90
51
|
*/
|
|
91
52
|
loadingChannels: boolean;
|
|
92
|
-
/**
|
|
93
|
-
* Custom indicator to use when there is error in fetching channels
|
|
94
|
-
*
|
|
95
|
-
* Default: [LoadingErrorIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#loadingerrorindicator)
|
|
96
|
-
* */
|
|
97
|
-
LoadingErrorIndicator: React.ComponentType<LoadingErrorProps>;
|
|
98
|
-
/**
|
|
99
|
-
* Custom loading indicator to use on Channel List
|
|
100
|
-
*
|
|
101
|
-
* */
|
|
102
|
-
LoadingIndicator: React.ComponentType<Pick<LoadingProps, 'listType'>>;
|
|
103
53
|
/**
|
|
104
54
|
* Whether or not additional channels are being loaded, triggers the FooterLoadingIndicator
|
|
105
55
|
*/
|
|
@@ -121,12 +71,6 @@ export type ChannelsContextValue = {
|
|
|
121
71
|
* Number of skeletons that should show when loading. Default: 6
|
|
122
72
|
*/
|
|
123
73
|
numberOfSkeletons: number;
|
|
124
|
-
/**
|
|
125
|
-
* Custom UI component to display individual channel list items
|
|
126
|
-
*
|
|
127
|
-
* Default: [ChannelPreviewView](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-preview-view/)
|
|
128
|
-
*/
|
|
129
|
-
Preview: React.ComponentType<ChannelPreviewViewProps>;
|
|
130
74
|
/**
|
|
131
75
|
* Triggered when the channel list is refreshing, displays a loading spinner at the top of the list
|
|
132
76
|
*/
|
|
@@ -159,73 +103,16 @@ export type ChannelsContextValue = {
|
|
|
159
103
|
* ```
|
|
160
104
|
*/
|
|
161
105
|
setFlatListRef: (ref: FlatList<Channel> | null) => void;
|
|
162
|
-
/**
|
|
163
|
-
* Custom UI component to display loading channel skeletons
|
|
164
|
-
*
|
|
165
|
-
* Default: [Skeleton](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#skeleton)
|
|
166
|
-
*/
|
|
167
|
-
Skeleton: React.ComponentType;
|
|
168
106
|
/**
|
|
169
107
|
* Error in channels query, if any
|
|
170
108
|
*/
|
|
171
109
|
error?: Error;
|
|
172
|
-
ListHeaderComponent?: React.ComponentType;
|
|
173
110
|
/**
|
|
174
111
|
* Function to set the currently active channel, acts as a bridge between ChannelList and Channel components
|
|
175
112
|
*
|
|
176
113
|
* @param channel A channel object
|
|
177
114
|
*/
|
|
178
115
|
onSelect?: (channel: Channel) => void;
|
|
179
|
-
/**
|
|
180
|
-
* Custom UI component to render preview avatar.
|
|
181
|
-
*
|
|
182
|
-
* **Default** [ChannelAvatar](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelAvatar.tsx)
|
|
183
|
-
*/
|
|
184
|
-
PreviewAvatar?: React.ComponentType<ChannelAvatarProps>;
|
|
185
|
-
/**
|
|
186
|
-
* Custom UI component to render preview of latest message on channel.
|
|
187
|
-
*
|
|
188
|
-
* **Default** [ChannelPreviewMessage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewMessage.tsx)
|
|
189
|
-
*/
|
|
190
|
-
PreviewMessage?: React.ComponentType<ChannelPreviewMessageProps>;
|
|
191
|
-
/**
|
|
192
|
-
* Custom UI component to render delivery status of latest message on channel.
|
|
193
|
-
*
|
|
194
|
-
* **Default** [ChannelMessagePreviewDeliveryStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx)
|
|
195
|
-
*/
|
|
196
|
-
PreviewMessageDeliveryStatus?: React.ComponentType<ChannelMessagePreviewDeliveryStatusProps>;
|
|
197
|
-
/**
|
|
198
|
-
* Custom UI component to render muted status.
|
|
199
|
-
*
|
|
200
|
-
* **Default** [ChannelMutedStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx)
|
|
201
|
-
*/
|
|
202
|
-
PreviewMutedStatus?: React.ComponentType;
|
|
203
|
-
/**
|
|
204
|
-
* Custom UI component to render preview avatar.
|
|
205
|
-
*
|
|
206
|
-
* **Default** [ChannelPreviewStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewStatus.tsx)
|
|
207
|
-
*/
|
|
208
|
-
PreviewStatus?: React.ComponentType<ChannelPreviewStatusProps>;
|
|
209
|
-
/**
|
|
210
|
-
* Custom UI component to render preview avatar.
|
|
211
|
-
*
|
|
212
|
-
* **Default** [ChannelPreviewTitle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewTitle.tsx)
|
|
213
|
-
*/
|
|
214
|
-
PreviewTitle?: React.ComponentType<ChannelPreviewTitleProps>;
|
|
215
|
-
/**
|
|
216
|
-
* Custom UI component to render preview avatar.
|
|
217
|
-
*
|
|
218
|
-
* **Default** [ChannelPreviewUnreadCount](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx)
|
|
219
|
-
*/
|
|
220
|
-
PreviewUnreadCount?: React.ComponentType<ChannelPreviewUnreadCountProps>;
|
|
221
|
-
PreviewTypingIndicator?: React.ComponentType<ChannelPreviewTypingIndicatorProps>;
|
|
222
|
-
ChannelDetailsBottomSheet?: React.ComponentType<ChannelDetailsBottomSheetProps>;
|
|
223
|
-
/**
|
|
224
|
-
* Custom UI component to render preview of last message on channel.
|
|
225
|
-
*
|
|
226
|
-
* **Default** [ChannelLastMessagePreview](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelLastMessagePreview.tsx)
|
|
227
|
-
*/
|
|
228
|
-
PreviewLastMessage?: React.ComponentType<ChannelLastMessagePreviewProps>;
|
|
229
116
|
getChannelActionItems?: GetChannelActionItems;
|
|
230
117
|
swipeActionsEnabled?: boolean;
|
|
231
118
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { PropsWithChildren, useContext } from 'react';
|
|
2
|
-
import type { ImageProps } from 'react-native';
|
|
3
2
|
|
|
4
3
|
import type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';
|
|
5
4
|
|
|
@@ -32,10 +31,6 @@ export type ChatContextValue = {
|
|
|
32
31
|
client: StreamChat;
|
|
33
32
|
connectionRecovering: boolean;
|
|
34
33
|
enableOfflineSupport: boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Drop in replacement of all the underlying Image components within SDK. This is useful for the purpose of offline caching of images. Please check the Offline Support Guide for usage.
|
|
37
|
-
*/
|
|
38
|
-
ImageComponent: React.ComponentType<ImageProps>;
|
|
39
34
|
isOnline: boolean | null;
|
|
40
35
|
mutedUsers: Mute[];
|
|
41
36
|
/**
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { PropsWithChildren, useContext, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* All overridable UI components in the SDK.
|
|
5
|
+
* Derived from the DEFAULT_COMPONENTS map in defaultComponents.ts.
|
|
6
|
+
* Adding a new default automatically makes it available as an override.
|
|
7
|
+
*
|
|
8
|
+
* Every key is optional — only specify the components you want to override.
|
|
9
|
+
*/
|
|
10
|
+
export type ComponentOverrides = Partial<
|
|
11
|
+
(typeof import('./defaultComponents'))['DEFAULT_COMPONENTS']
|
|
12
|
+
>;
|
|
13
|
+
|
|
14
|
+
const ComponentsContext = React.createContext<ComponentOverrides>({});
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Provider to override UI components at any level of the tree.
|
|
18
|
+
* Supports nesting — inner overrides merge over outer ones (closest wins).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <WithComponents overrides={{ Message: MyCustomMessage, SendButton: MyCustomSendButton }}>
|
|
23
|
+
* <Channel channel={channel}>
|
|
24
|
+
* <MessageList />
|
|
25
|
+
* <MessageInput />
|
|
26
|
+
* </Channel>
|
|
27
|
+
* </WithComponents>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export const WithComponents = ({
|
|
31
|
+
children,
|
|
32
|
+
overrides,
|
|
33
|
+
}: PropsWithChildren<{ overrides: ComponentOverrides }>) => {
|
|
34
|
+
const parent = useContext(ComponentsContext);
|
|
35
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally stable: overrides are set once at mount
|
|
36
|
+
const merged = useMemo(() => ({ ...parent, ...overrides }), []);
|
|
37
|
+
return <ComponentsContext.Provider value={merged}>{children}</ComponentsContext.Provider>;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Lazy-loaded to break circular dependency:
|
|
41
|
+
// defaultComponents.ts → imports components → components import useComponentsContext from this file
|
|
42
|
+
let cachedDefaults: ComponentOverrides | undefined;
|
|
43
|
+
const getDefaults = (): ComponentOverrides => {
|
|
44
|
+
if (!cachedDefaults) {
|
|
45
|
+
cachedDefaults = (require('./defaultComponents') as { DEFAULT_COMPONENTS: ComponentOverrides })
|
|
46
|
+
.DEFAULT_COMPONENTS;
|
|
47
|
+
}
|
|
48
|
+
return cachedDefaults;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Hook to access resolved component overrides.
|
|
53
|
+
* Returns all components with defaults filled in — user overrides merged over defaults.
|
|
54
|
+
*/
|
|
55
|
+
export const useComponentsContext = () => {
|
|
56
|
+
const overrides = useContext(ComponentsContext);
|
|
57
|
+
return useMemo(
|
|
58
|
+
() => ({ ...getDefaults(), ...overrides }) as Required<ComponentOverrides>,
|
|
59
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally stable: overrides are set once at mount
|
|
60
|
+
[],
|
|
61
|
+
);
|
|
62
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# WithComponents — Component Override System
|
|
2
|
+
|
|
3
|
+
## Design Principle
|
|
4
|
+
|
|
5
|
+
**All components are read from `useComponentsContext()`. All other contexts only provide data + APIs — never components.**
|
|
6
|
+
|
|
7
|
+
## Current State (Completed)
|
|
8
|
+
|
|
9
|
+
### What was done
|
|
10
|
+
|
|
11
|
+
1. **Created `ComponentsContext`** — `WithComponents` provider, `useComponentsContext()` hook, `ComponentOverrides` type
|
|
12
|
+
2. **Created `defaultComponents.ts`** — centralized map of all ~130 default components
|
|
13
|
+
3. **Stripped component keys** from all existing context types: `MessagesContextValue`, `InputMessageInputContextValue`, `ChannelContextValue`, `ChannelsContextValue`, `AttachmentPickerContextValue`, `ThreadsContextValue`, `ImageGalleryContextValue`
|
|
14
|
+
4. **Simplified `useCreate*Context` hooks** — no longer receive or forward component params
|
|
15
|
+
5. **Simplified `Channel.tsx`** — removed ~90 component imports, prop defaults, forwarding lines
|
|
16
|
+
6. **Simplified `ChannelList.tsx`** — removed ~19 component props
|
|
17
|
+
7. **Updated ~80 consumer files** — switched from old context hooks to `useComponentsContext()`
|
|
18
|
+
8. **Removed component override props** from ALL individual components
|
|
19
|
+
9. **Updated all 3 example apps** (SampleApp, ExpoMessaging, TypeScriptMessaging)
|
|
20
|
+
10. **Updated ~45 documentation pages** across docs-content repo
|
|
21
|
+
11. **Merged with develop** and resolved conflicts
|
|
22
|
+
|
|
23
|
+
### Architecture
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
User: <WithComponents overrides={{ Message: Custom }}>
|
|
27
|
+
↓
|
|
28
|
+
ComponentsContext (merges parent + overrides, inner wins)
|
|
29
|
+
↓
|
|
30
|
+
useComponentsContext() → { ...DEFAULT_COMPONENTS, ...overrides }
|
|
31
|
+
↓
|
|
32
|
+
Consumer: const { Message } = useComponentsContext()
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Key Files
|
|
36
|
+
|
|
37
|
+
| File | Purpose |
|
|
38
|
+
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
+
| `ComponentsContext.tsx` | ~60 lines. `ComponentOverrides` type (derived from `typeof DEFAULT_COMPONENTS`), `WithComponents` provider, `useComponentsContext()` hook |
|
|
40
|
+
| `defaultComponents.ts` | ~300 lines. Single source of truth for all default component mappings. Adding a new component here auto-extends `ComponentOverrides` |
|
|
41
|
+
|
|
42
|
+
### Type System
|
|
43
|
+
|
|
44
|
+
`ComponentOverrides` is derived automatically:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
export type ComponentOverrides = Partial<(typeof import('./defaultComponents'))['DEFAULT_COMPONENTS']>;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
No manual type maintenance — add a component to `DEFAULT_COMPONENTS` and the type updates.
|
|
51
|
+
|
|
52
|
+
### Circular Dependency Handling
|
|
53
|
+
|
|
54
|
+
`defaultComponents.ts` → imports components → components import `useComponentsContext` from `ComponentsContext.tsx`.
|
|
55
|
+
|
|
56
|
+
Broken by lazy-loading defaults in the hook:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
let cachedDefaults: ComponentOverrides | undefined;
|
|
60
|
+
const getDefaults = () => {
|
|
61
|
+
if (!cachedDefaults) {
|
|
62
|
+
cachedDefaults = require('./defaultComponents').DEFAULT_COMPONENTS;
|
|
63
|
+
}
|
|
64
|
+
return cachedDefaults;
|
|
65
|
+
};
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Naming Conventions
|
|
69
|
+
|
|
70
|
+
Some component keys differ from their default component names to avoid collisions:
|
|
71
|
+
|
|
72
|
+
| Override Key | Default Component | Why renamed |
|
|
73
|
+
| ----------------------------- | --------------------------------------- | ---------------------------------------------------------- |
|
|
74
|
+
| `FileAttachmentIcon` | `FileIcon` | Clarity |
|
|
75
|
+
| `ChannelListLoadingIndicator` | `ChannelListLoadingIndicator` | Split from shared `LoadingIndicator` — renders skeleton UI |
|
|
76
|
+
| `MessageListLoadingIndicator` | `LoadingIndicator` | Split from shared `LoadingIndicator` — renders text |
|
|
77
|
+
| `ChatLoadingIndicator` | `undefined` | Optional, no default |
|
|
78
|
+
| `ThreadMessageComposer` | `MessageComposer` | Avoid collision with `MessageComposer` component name |
|
|
79
|
+
| `ThreadListComponent` | `DefaultThreadListComponent` | Avoid collision with exported `ThreadList` |
|
|
80
|
+
| `StartAudioRecordingButton` | `AudioRecordingButton` | Historical naming |
|
|
81
|
+
| `Preview` | `ChannelPreviewView` | ChannelList preview item |
|
|
82
|
+
| `PreviewAvatar` | `ChannelAvatar` | ChannelList preview avatar |
|
|
83
|
+
| `FooterLoadingIndicator` | `ChannelListFooterLoadingIndicator` | ChannelList footer |
|
|
84
|
+
| `HeaderErrorIndicator` | `ChannelListHeaderErrorIndicator` | ChannelList header |
|
|
85
|
+
| `HeaderNetworkDownIndicator` | `ChannelListHeaderNetworkDownIndicator` | ChannelList header |
|
|
86
|
+
|
|
87
|
+
### Optional Components (no default)
|
|
88
|
+
|
|
89
|
+
These exist in `DEFAULT_COMPONENTS` as `undefined` with `React.ComponentType<any> | undefined` type assertions:
|
|
90
|
+
|
|
91
|
+
`AttachmentPickerIOSSelectMorePhotos`, `ChatLoadingIndicator`, `CreatePollContent`, `ImageComponent`, `Input`, `ListHeaderComponent`, `MessageContentBottomView`, `MessageContentLeadingView`, `MessageContentTopView`, `MessageContentTrailingView`, `MessageLocation`, `MessageSpacer`, `MessageText`, `PollContent`
|
|
92
|
+
|
|
93
|
+
### Shared Component Keys (audited)
|
|
94
|
+
|
|
95
|
+
Some keys were used in multiple contexts before the refactor. Audit results:
|
|
96
|
+
|
|
97
|
+
| Key | Used By | Same Default? | Resolution |
|
|
98
|
+
| ----------------------- | --------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
99
|
+
| `EmptyStateIndicator` | Channel + ChannelList | Yes (differentiates via `listType` prop) | Single key ✅ |
|
|
100
|
+
| `LoadingErrorIndicator` | Channel + ChannelList | Yes (differentiates via `listType` prop) | Single key ✅ |
|
|
101
|
+
| `LoadingIndicator` | Channel + ChannelList | **No** — Channel used text-based, ChannelList used skeleton | Split into `MessageListLoadingIndicator` + `ChannelListLoadingIndicator` ✅ |
|
|
102
|
+
|
|
103
|
+
### API Alignment with stream-chat-react
|
|
104
|
+
|
|
105
|
+
| Aspect | React Native | React Web |
|
|
106
|
+
| --------- | ----------------------------------- | -------------------------------------- |
|
|
107
|
+
| Provider | `WithComponents` | `WithComponents` |
|
|
108
|
+
| Prop name | `overrides` | `overrides` |
|
|
109
|
+
| Hook | `useComponentsContext()` | `useComponentContext()` |
|
|
110
|
+
| Type | `ComponentOverrides` (auto-derived) | `ComponentContextValue` (hand-written) |
|
|
111
|
+
| Defaults | Lazy-loaded via `require()` | Set at `Channel` level |
|
|
112
|
+
| Merge | `useMemo` | Plain spread (no memo) |
|
|
113
|
+
|
|
114
|
+
## Known Issues / Future Work
|
|
115
|
+
|
|
116
|
+
### Pre-existing Test Failures (not caused by this work)
|
|
117
|
+
|
|
118
|
+
These test suites fail on `develop` too:
|
|
119
|
+
|
|
120
|
+
- `offline-support/index.test.ts` — timeout
|
|
121
|
+
- `ChannelList.test.js` — filter race condition (`channel.countUnread` mock missing)
|
|
122
|
+
- `isAttachmentEqualHandler.test.js`, `MessageContent.test.js`, `MessageTextContainer.test.tsx`, `MessageUserReactions.test.tsx`, `ChannelPreview.test.tsx` — various pre-existing issues
|
|
123
|
+
|
|
124
|
+
### Linter Interaction
|
|
125
|
+
|
|
126
|
+
`@typescript-eslint/no-unused-vars` (warn, max-warnings 0) aggressively strips unused type keys. When adding new keys to `ComponentOverrides`, the type and its consumer must land in the same edit — otherwise the linter removes the key between saves.
|
|
127
|
+
|
|
128
|
+
Since `ComponentOverrides` is now auto-derived from `DEFAULT_COMPONENTS`, this is no longer an issue for the type itself. But be aware when adding optional components (`undefined as React.ComponentType<any> | undefined`).
|
|
129
|
+
|
|
130
|
+
### `contexts/index.ts` Barrel Export
|
|
131
|
+
|
|
132
|
+
The `export * from './componentsContext/ComponentsContext'` line in `contexts/index.ts` was stripped by the linter multiple times during development. If `WithComponents` becomes unexportable from the package, check this barrel file first.
|
|
133
|
+
|
|
134
|
+
### Documentation
|
|
135
|
+
|
|
136
|
+
Docs PR: https://github.com/GetStream/docs-content/pull/1169
|
|
137
|
+
|
|
138
|
+
Updated ~45 pages across:
|
|
139
|
+
|
|
140
|
+
- Core teaching pages (custom_components, message-customization, etc.)
|
|
141
|
+
- Component reference pages (channel-list, message-list, message-composer, etc.)
|
|
142
|
+
- Context docs (stripped component keys from 7 context pages)
|
|
143
|
+
- Migration guide (upgrading-from-v8.md — comprehensive WithComponents section)
|
|
144
|
+
- Advanced guides (audio, AI, image-picker, etc.)
|
|
145
|
+
|
|
146
|
+
### SDK PR
|
|
147
|
+
|
|
148
|
+
https://github.com/GetStream/stream-chat-react-native/pull/3542
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DEFAULT_COMPONENTS } from '../defaultComponents';
|
|
2
|
+
|
|
3
|
+
// Optional component keys that are intentionally undefined (no default implementation)
|
|
4
|
+
const OPTIONAL_KEYS = new Set([
|
|
5
|
+
'AttachmentPickerIOSSelectMorePhotos',
|
|
6
|
+
'ChatLoadingIndicator',
|
|
7
|
+
'CreatePollContent',
|
|
8
|
+
'Input',
|
|
9
|
+
'ListHeaderComponent',
|
|
10
|
+
'MessageContentBottomView',
|
|
11
|
+
'MessageContentLeadingView',
|
|
12
|
+
'MessageContentTopView',
|
|
13
|
+
'MessageContentTrailingView',
|
|
14
|
+
'MessageLocation',
|
|
15
|
+
'MessageSpacer',
|
|
16
|
+
'MessageText',
|
|
17
|
+
'PollContent',
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
describe('DEFAULT_COMPONENTS', () => {
|
|
21
|
+
it('should have all required values defined', () => {
|
|
22
|
+
const entries = Object.entries(DEFAULT_COMPONENTS);
|
|
23
|
+
expect(entries.length).toBeGreaterThan(50);
|
|
24
|
+
|
|
25
|
+
const unexpectedUndefined = entries.filter(
|
|
26
|
+
([key, value]) => value === undefined && !OPTIONAL_KEYS.has(key),
|
|
27
|
+
);
|
|
28
|
+
if (unexpectedUndefined.length > 0) {
|
|
29
|
+
console.log(
|
|
30
|
+
'Unexpectedly undefined keys:',
|
|
31
|
+
unexpectedUndefined.map(([k]) => k),
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
expect(unexpectedUndefined).toEqual([]);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('optional keys should be explicitly listed', () => {
|
|
38
|
+
const entries = Object.entries(DEFAULT_COMPONENTS);
|
|
39
|
+
const actualUndefined = new Set(
|
|
40
|
+
entries.filter(([, v]) => v === undefined || v === null).map(([k]) => k),
|
|
41
|
+
);
|
|
42
|
+
expect(actualUndefined).toEqual(OPTIONAL_KEYS);
|
|
43
|
+
});
|
|
44
|
+
});
|