stream-chat-react-native-core 7.0.0-rc.8 → 7.0.0
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/README.md +1 -1
- package/lib/commonjs/components/Attachment/AudioAttachment.js +19 -9
- package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +3 -1
- package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +16 -3
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/ImageReloadIndicator.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +2 -2
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +7 -24
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +2 -4
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +320 -310
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +133 -147
- package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +8 -13
- package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +14 -7
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +70 -54
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +14 -6
- package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +3 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +25 -39
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/InputButtons.js +18 -15
- package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +96 -74
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/hooks/useAudioController.js +4 -4
- package/lib/commonjs/components/MessageInput/hooks/useAudioController.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +281 -223
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js +65 -48
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +1 -1
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getReadState.js +20 -0
- package/lib/commonjs/components/MessageList/utils/getReadState.js.map +1 -0
- package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
- package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +2 -2
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +24 -6
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js +10 -6
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/commonjs/components/index.js +15 -4
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +5 -1
- package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
- package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -1
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +535 -523
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -6
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +37 -41
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/utils/utils.js +4 -4
- package/lib/commonjs/contexts/messageInputContext/utils/utils.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/pollContext/pollContext.js.map +1 -1
- package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +23 -14
- package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +2 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
- package/lib/commonjs/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
- package/lib/commonjs/hooks/index.js +22 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useAudioPlayer.js +60 -69
- package/lib/commonjs/hooks/useAudioPlayer.js.map +1 -1
- package/lib/commonjs/hooks/useStableCallback.js +13 -0
- package/lib/commonjs/hooks/useStableCallback.js.map +1 -0
- package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/commonjs/i18n/en.json +3 -0
- package/lib/commonjs/i18n/es.json +3 -0
- package/lib/commonjs/i18n/fr.json +3 -0
- package/lib/commonjs/i18n/he.json +3 -0
- package/lib/commonjs/i18n/hi.json +2 -0
- package/lib/commonjs/i18n/it.json +3 -0
- package/lib/commonjs/i18n/ja.json +1 -0
- package/lib/commonjs/i18n/ko.json +1 -0
- package/lib/commonjs/i18n/nl.json +2 -0
- package/lib/commonjs/i18n/pt-br.json +3 -0
- package/lib/commonjs/i18n/ru.json +4 -0
- package/lib/commonjs/i18n/tr.json +2 -0
- package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
- package/lib/commonjs/types/types.js.map +1 -1
- package/lib/commonjs/utils/compressImage.js +1 -1
- package/lib/commonjs/utils/compressImage.js.map +1 -1
- package/lib/commonjs/utils/removeReservedFields.js.map +1 -1
- package/lib/commonjs/utils/utils.js +17 -4
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/AudioAttachment.js +19 -9
- package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachmentGroup.js +3 -1
- package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +16 -3
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/ImageReloadIndicator.js.map +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +2 -2
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +7 -24
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +2 -4
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +320 -310
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useMessageListPagination.js +133 -147
- package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -1
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +8 -13
- package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
- package/lib/module/components/Message/Message.js +14 -7
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +70 -54
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageStatus.js +14 -6
- package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js +3 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +25 -39
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/InputButtons.js +18 -15
- package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +96 -74
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
- package/lib/module/components/MessageInput/hooks/useAudioController.js +4 -4
- package/lib/module/components/MessageInput/hooks/useAudioController.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +281 -223
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js +65 -48
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
- package/lib/module/components/MessageList/utils/getGroupStyles.js +1 -1
- package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/module/components/MessageList/utils/getReadState.js +20 -0
- package/lib/module/components/MessageList/utils/getReadState.js.map +1 -0
- package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
- package/lib/module/components/Poll/components/Button.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +2 -2
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/components/Thread/components/ThreadFooterComponent.js +24 -6
- package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
- package/lib/module/components/UIComponents/BottomSheetModal.js +10 -6
- package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/module/components/index.js +15 -4
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/module/contexts/channelsStateContext/useChannelState.js +5 -1
- package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
- package/lib/module/contexts/debugContext/DebugContext.js.map +1 -1
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +535 -523
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -6
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +37 -41
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/module/contexts/messageInputContext/utils/utils.js +4 -4
- package/lib/module/contexts/messageInputContext/utils/utils.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/pollContext/pollContext.js.map +1 -1
- package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +23 -14
- package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +2 -1
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
- package/lib/module/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
- package/lib/module/hooks/index.js +22 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useAudioPlayer.js +60 -69
- package/lib/module/hooks/useAudioPlayer.js.map +1 -1
- package/lib/module/hooks/useStableCallback.js +13 -0
- package/lib/module/hooks/useStableCallback.js.map +1 -0
- package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/module/i18n/en.json +3 -0
- package/lib/module/i18n/es.json +3 -0
- package/lib/module/i18n/fr.json +3 -0
- package/lib/module/i18n/he.json +3 -0
- package/lib/module/i18n/hi.json +2 -0
- package/lib/module/i18n/it.json +3 -0
- package/lib/module/i18n/ja.json +1 -0
- package/lib/module/i18n/ko.json +1 -0
- package/lib/module/i18n/nl.json +2 -0
- package/lib/module/i18n/pt-br.json +3 -0
- package/lib/module/i18n/ru.json +4 -0
- package/lib/module/i18n/tr.json +2 -0
- package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/module/native.js.map +1 -1
- package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
- package/lib/module/types/types.js.map +1 -1
- package/lib/module/utils/compressImage.js +1 -1
- package/lib/module/utils/compressImage.js.map +1 -1
- package/lib/module/utils/removeReservedFields.js.map +1 -1
- package/lib/module/utils/utils.js +17 -4
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/AudioAttachment.d.ts +2 -2
- package/lib/typescript/components/Attachment/AudioAttachment.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/Gallery.d.ts +3 -3
- package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
- package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts +4 -3
- package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts +2 -2
- package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +2 -3
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts.map +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts +3 -4
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +2 -3
- package/lib/typescript/components/Channel/hooks/useChannelDataState.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/useCreateThreadContext.d.ts +6 -6
- package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +3 -3
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +1 -1
- package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +1 -1
- package/lib/typescript/components/Chat/Chat.d.ts +0 -9
- package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
- package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts +3 -0
- package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts.map +1 -1
- package/lib/typescript/components/Message/Message.d.ts +4 -5
- package/lib/typescript/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -3
- package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +2 -2
- package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +2 -2
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -4
- package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
- package/lib/typescript/components/MessageInput/InputButtons.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts +4 -4
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageSystem.d.ts +2 -2
- package/lib/typescript/components/MessageList/MessageSystem.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +14 -9
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts +2 -2
- package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts +2 -2
- package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/utils/getReadState.d.ts +9 -0
- package/lib/typescript/components/MessageList/utils/getReadState.d.ts.map +1 -0
- package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts +2 -3
- package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/Button.d.ts +2 -3
- package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +2 -3
- package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
- package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
- package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
- package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +2 -1
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +3 -3
- package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
- package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
- package/lib/typescript/contexts/debugContext/DebugContext.d.ts +2 -3
- package/lib/typescript/contexts/debugContext/DebugContext.d.ts.map +1 -1
- package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +3 -3
- package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +6 -4
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +13 -15
- 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/messageInputContext/hooks/useMessageDetailsForState.d.ts +3 -3
- package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/utils/utils.d.ts +2 -2
- package/lib/typescript/contexts/messageInputContext/utils/utils.d.ts.map +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +25 -21
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
- package/lib/typescript/contexts/pollContext/pollContext.d.ts +2 -3
- package/lib/typescript/contexts/pollContext/pollContext.d.ts.map +1 -1
- package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
- package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +4 -5
- package/lib/typescript/contexts/threadContext/ThreadContext.d.ts.map +1 -1
- package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts +3 -4
- package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +2 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useAudioPlayer.d.ts.map +1 -1
- package/lib/typescript/hooks/useStableCallback.d.ts +26 -0
- package/lib/typescript/hooks/useStableCallback.d.ts.map +1 -0
- package/lib/typescript/hooks/useTranslatedMessage.d.ts +59 -58
- package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
- package/lib/typescript/i18n/en.json +3 -0
- package/lib/typescript/i18n/es.json +3 -0
- package/lib/typescript/i18n/fr.json +3 -0
- package/lib/typescript/i18n/he.json +3 -0
- package/lib/typescript/i18n/hi.json +2 -0
- package/lib/typescript/i18n/it.json +3 -0
- package/lib/typescript/i18n/ja.json +1 -0
- package/lib/typescript/i18n/ko.json +1 -0
- package/lib/typescript/i18n/nl.json +2 -0
- package/lib/typescript/i18n/pt-br.json +3 -0
- package/lib/typescript/i18n/ru.json +4 -0
- package/lib/typescript/i18n/tr.json +2 -0
- package/lib/typescript/native.d.ts +8 -11
- package/lib/typescript/native.d.ts.map +1 -1
- package/lib/typescript/store/apis/insertReaction.d.ts +2 -2
- package/lib/typescript/store/apis/insertReaction.d.ts.map +1 -1
- package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
- package/lib/typescript/store/apis/updateMessage.d.ts.map +1 -1
- package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
- package/lib/typescript/store/apis/updateReaction.d.ts.map +1 -1
- package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
- package/lib/typescript/store/mappers/mapMessageToStorable.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +28 -50
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/utils/compressImage.d.ts +2 -2
- package/lib/typescript/utils/compressImage.d.ts.map +1 -1
- package/lib/typescript/utils/i18n/Streami18n.d.ts +3 -0
- package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
- package/lib/typescript/utils/removeReservedFields.d.ts +2 -3
- package/lib/typescript/utils/removeReservedFields.d.ts.map +1 -1
- package/lib/typescript/utils/utils.d.ts +10 -10
- package/lib/typescript/utils/utils.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/components/Attachment/AudioAttachment.tsx +12 -6
- package/src/components/Attachment/FileAttachmentGroup.tsx +3 -1
- package/src/components/Attachment/Gallery.tsx +22 -7
- package/src/components/Attachment/ImageReloadIndicator.tsx +4 -5
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -10
- package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +9 -37
- package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +27 -23
- package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +12 -12
- package/src/components/Channel/Channel.tsx +423 -361
- package/src/components/Channel/__tests__/Channel.test.js +10 -3
- package/src/components/Channel/hooks/useChannelDataState.ts +2 -4
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
- package/src/components/Channel/hooks/useMessageListPagination.tsx +150 -150
- package/src/components/Chat/Chat.tsx +0 -9
- package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +8 -7
- package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +5 -4
- package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +5 -4
- package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +3 -2
- package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +12 -5
- package/src/components/Message/Message.tsx +16 -15
- package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -3
- package/src/components/Message/MessageSimple/MessageSimple.tsx +112 -70
- package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -17
- package/src/components/Message/MessageSimple/MessageTextContainer.tsx +3 -3
- package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +11 -5
- package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.tsx +5 -4
- package/src/components/Message/MessageSimple/utils/renderText.tsx +2 -3
- package/src/components/Message/hooks/useCreateMessageContext.ts +3 -0
- package/src/components/Message/hooks/useMessageActionHandlers.ts +1 -3
- package/src/components/Message/hooks/useMessageActions.tsx +4 -3
- package/src/components/MessageInput/FileUploadPreview.tsx +41 -70
- package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
- package/src/components/MessageInput/InputButtons.tsx +14 -10
- package/src/components/MessageInput/MessageInput.tsx +28 -30
- package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +1 -1
- package/src/components/MessageInput/__tests__/MessageInput.test.js +3 -1
- package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +1 -0
- package/src/components/MessageInput/hooks/useAudioController.tsx +6 -5
- package/src/components/MessageList/MessageList.tsx +253 -137
- package/src/components/MessageList/MessageSystem.tsx +2 -2
- package/src/components/MessageList/hooks/useMessageList.ts +82 -64
- package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.ts +2 -2
- package/src/components/MessageList/utils/getGroupStyles.ts +7 -5
- package/src/components/MessageList/utils/getLastReceivedMessage.ts +3 -3
- package/src/components/MessageList/utils/getReadState.ts +27 -0
- package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +2 -3
- package/src/components/MessageMenu/hooks/useFetchReactions.ts +2 -3
- package/src/components/Poll/components/Button.tsx +2 -4
- package/src/components/Poll/components/PollResults/PollResultItem.tsx +2 -3
- package/src/components/Reply/Reply.tsx +1 -2
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +318 -847
- package/src/components/Thread/components/ThreadFooterComponent.tsx +31 -9
- package/src/components/ThreadList/ThreadListItem.tsx +6 -4
- package/src/components/UIComponents/BottomSheetModal.tsx +11 -7
- package/src/components/index.ts +2 -1
- package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +5 -4
- package/src/contexts/channelsStateContext/useChannelState.ts +5 -1
- package/src/contexts/debugContext/DebugContext.tsx +2 -4
- package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +5 -4
- package/src/contexts/messageContext/MessageContext.tsx +6 -4
- package/src/contexts/messageInputContext/MessageInputContext.tsx +295 -262
- package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +10 -6
- package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +6 -5
- package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +3 -5
- package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +14 -9
- package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +7 -3
- package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +37 -40
- package/src/contexts/messageInputContext/utils/utils.ts +6 -8
- package/src/contexts/messagesContext/MessagesContext.tsx +26 -20
- package/src/contexts/pollContext/pollContext.tsx +2 -4
- package/src/contexts/suggestionsContext/SuggestionsContext.tsx +33 -14
- package/src/contexts/themeContext/utils/theme.ts +2 -0
- package/src/contexts/threadContext/ThreadContext.tsx +4 -6
- package/src/contexts/threadsContext/ThreadListItemContext.tsx +3 -5
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useAudioPlayer.ts +37 -31
- package/src/hooks/useStableCallback.ts +37 -0
- package/src/hooks/useTranslatedMessage.ts +2 -2
- package/src/i18n/en.json +3 -0
- package/src/i18n/es.json +3 -0
- package/src/i18n/fr.json +3 -0
- package/src/i18n/he.json +3 -0
- package/src/i18n/hi.json +2 -0
- package/src/i18n/it.json +3 -0
- package/src/i18n/ja.json +1 -0
- package/src/i18n/ko.json +1 -0
- package/src/i18n/nl.json +2 -0
- package/src/i18n/pt-br.json +3 -0
- package/src/i18n/ru.json +4 -0
- package/src/i18n/tr.json +2 -0
- package/src/mock-builders/api/channelMocks.tsx +2 -8
- package/src/native.ts +13 -8
- package/src/store/apis/insertReaction.ts +2 -2
- package/src/store/apis/updateMessage.ts +2 -2
- package/src/store/apis/updateReaction.ts +2 -2
- package/src/store/mappers/mapMessageToStorable.ts +2 -2
- package/src/types/stream-chat-common-custom-data.d.ts +22 -22
- package/src/types/types.ts +35 -54
- package/src/utils/compressImage.ts +3 -4
- package/src/utils/removeReservedFields.ts +3 -5
- package/src/utils/utils.ts +25 -16
- package/src/version.json +1 -1
- package/lib/commonjs/components/MessageList/hooks/useLastReadData.js +0 -20
- package/lib/commonjs/components/MessageList/hooks/useLastReadData.js.map +0 -1
- package/lib/commonjs/components/MessageList/utils/getReadStates.js +0 -34
- package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +0 -1
- package/lib/module/components/MessageList/hooks/useLastReadData.js +0 -20
- package/lib/module/components/MessageList/hooks/useLastReadData.js.map +0 -1
- package/lib/module/components/MessageList/utils/getReadStates.js +0 -34
- package/lib/module/components/MessageList/utils/getReadStates.js.map +0 -1
- package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts +0 -12
- package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts.map +0 -1
- package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +0 -5
- package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +0 -1
- package/src/components/MessageList/hooks/useLastReadData.ts +0 -29
- package/src/components/MessageList/utils/getReadStates.ts +0 -55
|
@@ -18,8 +18,12 @@ exports[`MessageInputContext's sendMessage exit sendMessage when edit message is
|
|
|
18
18
|
"html": "<p>regular</p>",
|
|
19
19
|
"id": "7a85f744-cc89-4f82-a1d4-5456432cc8bf",
|
|
20
20
|
"mentioned_users": [
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
{
|
|
22
|
+
"id": "dummy1",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "dummy2",
|
|
26
|
+
},
|
|
23
27
|
],
|
|
24
28
|
"quoted_message": undefined,
|
|
25
29
|
"text": "",
|
|
@@ -42,7 +46,7 @@ exports[`MessageInputContext's sendMessage exit sendMessage when file upload sta
|
|
|
42
46
|
{
|
|
43
47
|
"asset_url": undefined,
|
|
44
48
|
"file_size": undefined,
|
|
45
|
-
"mime_type":
|
|
49
|
+
"mime_type": "file",
|
|
46
50
|
"originalFile": {
|
|
47
51
|
"name": "dummy.pdf",
|
|
48
52
|
"state": "uploaded",
|
|
@@ -54,7 +58,7 @@ exports[`MessageInputContext's sendMessage exit sendMessage when file upload sta
|
|
|
54
58
|
{
|
|
55
59
|
"asset_url": undefined,
|
|
56
60
|
"file_size": undefined,
|
|
57
|
-
"mime_type":
|
|
61
|
+
"mime_type": "video/mp4",
|
|
58
62
|
"originalFile": {
|
|
59
63
|
"name": "dummy.pdf",
|
|
60
64
|
"state": "finished",
|
|
@@ -66,7 +70,7 @@ exports[`MessageInputContext's sendMessage exit sendMessage when file upload sta
|
|
|
66
70
|
{
|
|
67
71
|
"asset_url": undefined,
|
|
68
72
|
"file_size": undefined,
|
|
69
|
-
"mime_type":
|
|
73
|
+
"mime_type": "audio/mp3",
|
|
70
74
|
"originalFile": {
|
|
71
75
|
"name": "dummy.pdf",
|
|
72
76
|
"state": "uploaded",
|
|
@@ -78,7 +82,7 @@ exports[`MessageInputContext's sendMessage exit sendMessage when file upload sta
|
|
|
78
82
|
{
|
|
79
83
|
"asset_url": undefined,
|
|
80
84
|
"file_size": undefined,
|
|
81
|
-
"mime_type":
|
|
85
|
+
"mime_type": "image/jpeg",
|
|
82
86
|
"originalFile": {
|
|
83
87
|
"name": "dummy.pdf",
|
|
84
88
|
"state": "finished",
|
|
@@ -3,7 +3,8 @@ import { act } from 'react-test-renderer';
|
|
|
3
3
|
|
|
4
4
|
import { renderHook, waitFor } from '@testing-library/react-native';
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { LocalMessage } from 'stream-chat';
|
|
7
|
+
|
|
7
8
|
import {
|
|
8
9
|
generateFileUploadPreview,
|
|
9
10
|
generateImageUploadPreview,
|
|
@@ -40,7 +41,7 @@ describe("MessageInputContext's sendMessage", () => {
|
|
|
40
41
|
setSelectedFiles: jest.fn(),
|
|
41
42
|
setSelectedImages: jest.fn(),
|
|
42
43
|
}));
|
|
43
|
-
const message:
|
|
44
|
+
const message: LocalMessage | undefined = generateMessage({
|
|
44
45
|
created_at: 'Sat Jul 02 2022 23:55:13 GMT+0530 (India Standard Time)',
|
|
45
46
|
id: '7a85f744-cc89-4f82-a1d4-5456432cc8bf',
|
|
46
47
|
updated_at: 'Sat Jul 02 2022 23:55:13 GMT+0530 (India Standard Time)',
|
|
@@ -49,7 +50,7 @@ describe("MessageInputContext's sendMessage", () => {
|
|
|
49
50
|
image: 'fc86ddcb-bac4-400c-9afd-b0c0a1c0cd33',
|
|
50
51
|
name: '50cbdd0e-ca7e-4478-9e2c-be0f1ac6a995',
|
|
51
52
|
}),
|
|
52
|
-
}) as unknown as
|
|
53
|
+
}) as unknown as LocalMessage;
|
|
53
54
|
|
|
54
55
|
it('exit sendMessage when file upload status failed', async () => {
|
|
55
56
|
const initialProps = {
|
|
@@ -223,7 +224,7 @@ describe("MessageInputContext's sendMessage", () => {
|
|
|
223
224
|
it('exit sendMessage when image upload has an error and catch block is executed', () => {
|
|
224
225
|
const setQuotedMessageStateMock = jest.fn();
|
|
225
226
|
const clearQuotedMessageStateMock = jest.fn();
|
|
226
|
-
const generatedQuotedMessage: boolean |
|
|
227
|
+
const generatedQuotedMessage: boolean | LocalMessage = message;
|
|
227
228
|
const images = [
|
|
228
229
|
generateImageUploadPreview({ state: FileState.UPLOADED }),
|
|
229
230
|
generateImageUploadPreview({ state: FileState.FINISHED }),
|
|
@@ -268,7 +269,7 @@ describe("MessageInputContext's sendMessage", () => {
|
|
|
268
269
|
const clearEditingStateMock = jest.fn();
|
|
269
270
|
const editMessageMock = jest.fn().mockResolvedValue({ data: {} });
|
|
270
271
|
const images = generateImageUploadPreview({ state: FileState.UPLOADED });
|
|
271
|
-
const generatedMessage: boolean |
|
|
272
|
+
const generatedMessage: boolean | LocalMessage = message;
|
|
272
273
|
const initialProps = {
|
|
273
274
|
clearEditingState: clearEditingStateMock,
|
|
274
275
|
clearQuotedMessageState: clearQuotedMessageStateMock,
|
|
@@ -3,9 +3,7 @@ import { act } from 'react-test-renderer';
|
|
|
3
3
|
|
|
4
4
|
import { renderHook } from '@testing-library/react-native';
|
|
5
5
|
|
|
6
|
-
import type { StreamChat } from 'stream-chat';
|
|
7
|
-
|
|
8
|
-
import type { MessageType } from '../../../components/MessageList/hooks/useMessageList';
|
|
6
|
+
import type { LocalMessage, StreamChat } from 'stream-chat';
|
|
9
7
|
|
|
10
8
|
import { ChatContextValue, ChatProvider } from '../../../contexts/chatContext/ChatContext';
|
|
11
9
|
import { generateMessage } from '../../../mock-builders/generator/message';
|
|
@@ -51,7 +49,7 @@ describe("MessageInputContext's updateMessage", () => {
|
|
|
51
49
|
setSelectedImages: jest.fn(),
|
|
52
50
|
}));
|
|
53
51
|
const clearEditingStateMock = jest.fn();
|
|
54
|
-
const generatedMessage: boolean |
|
|
52
|
+
const generatedMessage: boolean | LocalMessage = generateMessage({
|
|
55
53
|
created_at: 'Sat Jul 02 2022 23:55:13 GMT+0530 (India Standard Time)',
|
|
56
54
|
id: '7a85f744-cc89-4f82-a1d4-5456432cc8bf',
|
|
57
55
|
text: 'hey',
|
|
@@ -61,7 +59,7 @@ describe("MessageInputContext's updateMessage", () => {
|
|
|
61
59
|
image: 'fc86ddcb-bac4-400c-9afd-b0c0a1c0cd33',
|
|
62
60
|
name: '50cbdd0e-ca7e-4478-9e2c-be0f1ac6a995',
|
|
63
61
|
}),
|
|
64
|
-
}) as unknown as
|
|
62
|
+
}) as unknown as LocalMessage;
|
|
65
63
|
|
|
66
64
|
it('updateMessage throws error as clearEditingState is not available', async () => {
|
|
67
65
|
const initialProps = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { renderHook } from '@testing-library/react-native';
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { LocalMessage } from 'stream-chat';
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
generateFileAttachment,
|
|
@@ -13,24 +13,29 @@ import { generateUser } from '../../../mock-builders/generator/user';
|
|
|
13
13
|
import { useMessageDetailsForState } from '../hooks/useMessageDetailsForState';
|
|
14
14
|
|
|
15
15
|
describe('useMessageDetailsForState', () => {
|
|
16
|
-
|
|
16
|
+
const message = generateMessage({ text: 'Dummy text' });
|
|
17
|
+
it.each([[{ message }, { initialValue: '', message }]])(
|
|
17
18
|
'test state of useMessageDetailsForState when initialProps differ',
|
|
18
19
|
() => {
|
|
19
|
-
const { result } = renderHook(
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const { result } = renderHook(
|
|
21
|
+
({ message }) => useMessageDetailsForState(message as unknown as LocalMessage),
|
|
22
|
+
{
|
|
23
|
+
initialProps: { message },
|
|
24
|
+
},
|
|
25
|
+
);
|
|
22
26
|
|
|
23
|
-
expect(result.current.text).toBe(
|
|
27
|
+
expect(result.current.text).toBe(message.text);
|
|
24
28
|
},
|
|
25
29
|
);
|
|
26
30
|
|
|
27
31
|
it('showMoreOptions is true when initialValue and text is same', () => {
|
|
28
32
|
const { result } = renderHook(
|
|
29
|
-
({ initialValue, message }) =>
|
|
33
|
+
({ initialValue, message }) =>
|
|
34
|
+
useMessageDetailsForState(message as unknown as LocalMessage, initialValue),
|
|
30
35
|
{
|
|
31
36
|
initialProps: {
|
|
32
37
|
initialValue: 'Dummy text',
|
|
33
|
-
message: generateMessage({ text: 'Dummy text' })
|
|
38
|
+
message: generateMessage({ text: 'Dummy text' }),
|
|
34
39
|
},
|
|
35
40
|
},
|
|
36
41
|
);
|
|
@@ -41,7 +46,7 @@ describe('useMessageDetailsForState', () => {
|
|
|
41
46
|
it('fileUploads, imageUploads and mentionedUsers are not empty when attachments are present in message', () => {
|
|
42
47
|
const { result } = renderHook(
|
|
43
48
|
({ initialValue, message }) =>
|
|
44
|
-
useMessageDetailsForState(message as unknown as
|
|
49
|
+
useMessageDetailsForState(message as unknown as LocalMessage, initialValue),
|
|
45
50
|
{
|
|
46
51
|
initialProps: {
|
|
47
52
|
initialValue: '',
|
|
@@ -38,11 +38,13 @@ export const useCreateMessageInputContext = ({
|
|
|
38
38
|
FileUploadPreview,
|
|
39
39
|
fileUploads,
|
|
40
40
|
giphyActive,
|
|
41
|
+
giphyEnabled,
|
|
41
42
|
handleAttachButtonPress,
|
|
42
43
|
hasCameraPicker,
|
|
43
44
|
hasCommands,
|
|
44
45
|
hasFilePicker,
|
|
45
46
|
hasImagePicker,
|
|
47
|
+
hasText,
|
|
46
48
|
ImageUploadPreview,
|
|
47
49
|
imageUploads,
|
|
48
50
|
initialValue,
|
|
@@ -114,9 +116,7 @@ export const useCreateMessageInputContext = ({
|
|
|
114
116
|
UploadProgressIndicator,
|
|
115
117
|
}: MessageInputContextValue & Pick<ThreadContextValue, 'thread'>) => {
|
|
116
118
|
const editingdep = editing?.id;
|
|
117
|
-
const fileUploadsValue = fileUploads
|
|
118
|
-
.map(({ duration, paused, progress, state }) => `${state},${paused},${progress},${duration}`)
|
|
119
|
-
.join();
|
|
119
|
+
const fileUploadsValue = fileUploads.map(({ state }) => state).join();
|
|
120
120
|
const imageUploadsValue = imageUploads.map(({ state }) => state).join();
|
|
121
121
|
const asyncUploadsValue = Object.keys(asyncUploads).join();
|
|
122
122
|
const mentionedUsersLength = mentionedUsers.length;
|
|
@@ -160,11 +160,13 @@ export const useCreateMessageInputContext = ({
|
|
|
160
160
|
FileUploadPreview,
|
|
161
161
|
fileUploads,
|
|
162
162
|
giphyActive,
|
|
163
|
+
giphyEnabled,
|
|
163
164
|
handleAttachButtonPress,
|
|
164
165
|
hasCameraPicker,
|
|
165
166
|
hasCommands,
|
|
166
167
|
hasFilePicker,
|
|
167
168
|
hasImagePicker,
|
|
169
|
+
hasText,
|
|
168
170
|
ImageUploadPreview,
|
|
169
171
|
imageUploads,
|
|
170
172
|
initialValue,
|
|
@@ -242,6 +244,8 @@ export const useCreateMessageInputContext = ({
|
|
|
242
244
|
editingdep,
|
|
243
245
|
fileUploadsValue,
|
|
244
246
|
giphyActive,
|
|
247
|
+
giphyEnabled,
|
|
248
|
+
hasText,
|
|
245
249
|
imageUploadsValue,
|
|
246
250
|
maxMessageLength,
|
|
247
251
|
mentionedUsersLength,
|
|
@@ -2,8 +2,8 @@ import { useEffect, useState } from 'react';
|
|
|
2
2
|
|
|
3
3
|
import { Attachment } from 'stream-chat';
|
|
4
4
|
|
|
5
|
-
import { FileTypes, FileUpload
|
|
6
|
-
import { generateRandomId, stringifyMessage } from '../../../utils/utils';
|
|
5
|
+
import { FileTypes, FileUpload } from '../../../types/types';
|
|
6
|
+
import { generateRandomId, getFileTypeFromMimeType, stringifyMessage } from '../../../utils/utils';
|
|
7
7
|
|
|
8
8
|
import type { MessageInputContextValue } from '../MessageInputContext';
|
|
9
9
|
|
|
@@ -12,23 +12,25 @@ export const useMessageDetailsForState = (
|
|
|
12
12
|
initialValue?: string,
|
|
13
13
|
) => {
|
|
14
14
|
const [fileUploads, setFileUploads] = useState<FileUpload[]>([]);
|
|
15
|
-
const [imageUploads, setImageUploads] = useState<
|
|
15
|
+
const [imageUploads, setImageUploads] = useState<FileUpload[]>([]);
|
|
16
16
|
const [mentionedUsers, setMentionedUsers] = useState<string[]>([]);
|
|
17
17
|
const [numberOfUploads, setNumberOfUploads] = useState(0);
|
|
18
|
-
const [showMoreOptions, setShowMoreOptions] = useState(true);
|
|
19
18
|
|
|
20
19
|
const initialTextValue = initialValue || '';
|
|
21
20
|
const [text, setText] = useState(initialTextValue);
|
|
22
21
|
|
|
22
|
+
const isEqualToInitialText = text === initialTextValue;
|
|
23
|
+
|
|
24
|
+
const [showMoreOptions, setShowMoreOptions] = useState(true);
|
|
25
|
+
|
|
23
26
|
useEffect(() => {
|
|
24
|
-
if (
|
|
27
|
+
if (!isEqualToInitialText) {
|
|
25
28
|
setShowMoreOptions(false);
|
|
26
29
|
}
|
|
27
30
|
if (fileUploads.length || imageUploads.length) {
|
|
28
31
|
setShowMoreOptions(false);
|
|
29
32
|
}
|
|
30
|
-
|
|
31
|
-
}, [text, imageUploads.length, fileUploads.length]);
|
|
33
|
+
}, [isEqualToInitialText, imageUploads.length, fileUploads.length]);
|
|
32
34
|
|
|
33
35
|
const messageValue = message ? stringifyMessage(message) : '';
|
|
34
36
|
|
|
@@ -46,66 +48,59 @@ export const useMessageDetailsForState = (
|
|
|
46
48
|
if (attachment.type === FileTypes.Audio) {
|
|
47
49
|
return {
|
|
48
50
|
file: {
|
|
49
|
-
duration: attachment.duration,
|
|
50
|
-
mimeType: attachment.mime_type,
|
|
51
|
+
duration: attachment.duration || 0,
|
|
51
52
|
name: attachment.title || '',
|
|
52
|
-
size: attachment.file_size,
|
|
53
|
-
|
|
53
|
+
size: attachment.file_size || 0,
|
|
54
|
+
type: attachment.mime_type || '',
|
|
55
|
+
uri: attachment.asset_url || '',
|
|
54
56
|
},
|
|
55
57
|
id,
|
|
56
58
|
state: 'finished',
|
|
59
|
+
type: FileTypes.Audio,
|
|
57
60
|
url: attachment.asset_url,
|
|
58
61
|
};
|
|
59
62
|
} else if (attachment.type === FileTypes.Video) {
|
|
60
63
|
return {
|
|
61
64
|
file: {
|
|
62
|
-
duration: attachment.duration,
|
|
63
|
-
mimeType: attachment.mime_type,
|
|
65
|
+
duration: attachment.duration || 0,
|
|
64
66
|
name: attachment.title || '',
|
|
65
|
-
size: attachment.file_size,
|
|
66
|
-
|
|
67
|
+
size: attachment.file_size || 0,
|
|
68
|
+
thumb_url: attachment.thumb_url || '',
|
|
69
|
+
type: attachment.mime_type || '',
|
|
70
|
+
uri: attachment.asset_url || '',
|
|
67
71
|
},
|
|
68
72
|
id,
|
|
69
73
|
state: 'finished',
|
|
70
74
|
thumb_url: attachment.thumb_url,
|
|
75
|
+
type: FileTypes.Video,
|
|
71
76
|
url: attachment.asset_url,
|
|
72
77
|
};
|
|
73
78
|
} else if (attachment.type === FileTypes.VoiceRecording) {
|
|
74
79
|
return {
|
|
75
80
|
file: {
|
|
76
|
-
duration: attachment.duration,
|
|
77
|
-
mimeType: attachment.mime_type,
|
|
81
|
+
duration: attachment.duration || 0,
|
|
78
82
|
name: attachment.title || '',
|
|
79
|
-
size: attachment.file_size,
|
|
80
|
-
|
|
83
|
+
size: attachment.file_size || 0,
|
|
84
|
+
type: attachment.mime_type || '',
|
|
85
|
+
uri: attachment.asset_url || '',
|
|
81
86
|
waveform_data: attachment.waveform_data,
|
|
82
87
|
},
|
|
83
88
|
id,
|
|
84
89
|
state: 'finished',
|
|
85
|
-
|
|
86
|
-
};
|
|
87
|
-
} else if (attachment.type === FileTypes.File) {
|
|
88
|
-
return {
|
|
89
|
-
file: {
|
|
90
|
-
mimeType: attachment.mime_type,
|
|
91
|
-
name: attachment.title || '',
|
|
92
|
-
size: attachment.file_size,
|
|
93
|
-
uri: attachment.asset_url,
|
|
94
|
-
},
|
|
95
|
-
id,
|
|
96
|
-
state: 'finished',
|
|
90
|
+
type: FileTypes.VoiceRecording,
|
|
97
91
|
url: attachment.asset_url,
|
|
98
92
|
};
|
|
99
93
|
} else {
|
|
100
94
|
return {
|
|
101
95
|
file: {
|
|
102
|
-
mimeType: attachment.mime_type,
|
|
103
96
|
name: attachment.title || '',
|
|
104
|
-
size: attachment.file_size,
|
|
105
|
-
|
|
97
|
+
size: attachment.file_size || 0,
|
|
98
|
+
type: attachment.mime_type || '',
|
|
99
|
+
uri: attachment.asset_url || '',
|
|
106
100
|
},
|
|
107
101
|
id,
|
|
108
102
|
state: 'finished',
|
|
103
|
+
type: getFileTypeFromMimeType(attachment.mime_type || ''),
|
|
109
104
|
url: attachment.asset_url,
|
|
110
105
|
};
|
|
111
106
|
}
|
|
@@ -115,7 +110,7 @@ export const useMessageDetailsForState = (
|
|
|
115
110
|
if (message) {
|
|
116
111
|
setText(message?.text || '');
|
|
117
112
|
const newFileUploads: FileUpload[] = [];
|
|
118
|
-
const newImageUploads:
|
|
113
|
+
const newImageUploads: FileUpload[] = [];
|
|
119
114
|
|
|
120
115
|
const attachments = Array.isArray(message.attachments) ? message.attachments : [];
|
|
121
116
|
|
|
@@ -124,14 +119,16 @@ export const useMessageDetailsForState = (
|
|
|
124
119
|
const id = generateRandomId();
|
|
125
120
|
newImageUploads.push({
|
|
126
121
|
file: {
|
|
127
|
-
height: attachment.original_height,
|
|
128
|
-
name: attachment.fallback,
|
|
129
|
-
size: attachment.file_size,
|
|
130
|
-
type: attachment.type,
|
|
131
|
-
|
|
122
|
+
height: attachment.original_height || 0,
|
|
123
|
+
name: attachment.fallback || '',
|
|
124
|
+
size: attachment.file_size || 0,
|
|
125
|
+
type: attachment.type || '',
|
|
126
|
+
uri: attachment.image_url || '',
|
|
127
|
+
width: attachment.original_width || 0,
|
|
132
128
|
},
|
|
133
129
|
id,
|
|
134
130
|
state: 'finished',
|
|
131
|
+
type: FileTypes.Image,
|
|
135
132
|
url: attachment.image_url || attachment.asset_url || attachment.thumb_url,
|
|
136
133
|
});
|
|
137
134
|
} else {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { lookup } from 'mime-types';
|
|
2
2
|
import type { FileUploadConfig } from 'stream-chat';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { File } from '../../../types/types';
|
|
5
5
|
|
|
6
6
|
export const MAX_FILE_SIZE_TO_UPLOAD = 100 * 1024 * 1024; // 100 MB
|
|
7
7
|
|
|
8
8
|
type CheckUploadPermissionsParams = {
|
|
9
9
|
config: FileUploadConfig;
|
|
10
|
-
file: File
|
|
10
|
+
file: File;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -44,10 +44,9 @@ export const isUploadAllowed = ({ config, file }: CheckUploadPermissionsParams)
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
if (allowed_mime_types?.length) {
|
|
47
|
-
if (file.
|
|
47
|
+
if (file.type) {
|
|
48
48
|
const allowed = allowed_mime_types.some(
|
|
49
|
-
(mimeType: string) =>
|
|
50
|
-
file.mimeType && file.mimeType.toLowerCase() === mimeType.toLowerCase(),
|
|
49
|
+
(mimeType: string) => file.type && file.type.toLowerCase() === mimeType.toLowerCase(),
|
|
51
50
|
);
|
|
52
51
|
|
|
53
52
|
if (!allowed) {
|
|
@@ -66,10 +65,9 @@ export const isUploadAllowed = ({ config, file }: CheckUploadPermissionsParams)
|
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
if (blocked_mime_types?.length) {
|
|
69
|
-
if (file.
|
|
68
|
+
if (file.type) {
|
|
70
69
|
const blocked = blocked_mime_types.some(
|
|
71
|
-
(mimeType: string) =>
|
|
72
|
-
file.mimeType && file.mimeType.toLowerCase() === mimeType.toLowerCase(),
|
|
70
|
+
(mimeType: string) => file.type && file.type.toLowerCase() === mimeType.toLowerCase(),
|
|
73
71
|
);
|
|
74
72
|
|
|
75
73
|
if (blocked) {
|
|
@@ -2,7 +2,7 @@ import React, { PropsWithChildren, useContext } from 'react';
|
|
|
2
2
|
|
|
3
3
|
import { PressableProps, ViewProps } from 'react-native';
|
|
4
4
|
|
|
5
|
-
import type { Attachment, ChannelState, MessageResponse } from 'stream-chat';
|
|
5
|
+
import type { Attachment, ChannelState, LocalMessage, MessageResponse } from 'stream-chat';
|
|
6
6
|
|
|
7
7
|
import type { PollContentProps, StreamingMessageViewProps } from '../../components';
|
|
8
8
|
import type { AttachmentProps } from '../../components/Attachment/Attachment';
|
|
@@ -16,6 +16,7 @@ import type { GalleryProps } from '../../components/Attachment/Gallery';
|
|
|
16
16
|
import type { GiphyProps } from '../../components/Attachment/Giphy';
|
|
17
17
|
import type { ImageLoadingFailedIndicatorProps } from '../../components/Attachment/ImageLoadingFailedIndicator';
|
|
18
18
|
import type { ImageLoadingIndicatorProps } from '../../components/Attachment/ImageLoadingIndicator';
|
|
19
|
+
import { ImageReloadIndicatorProps } from '../../components/Attachment/ImageReloadIndicator';
|
|
19
20
|
import type { VideoThumbnailProps } from '../../components/Attachment/VideoThumbnail';
|
|
20
21
|
import type {
|
|
21
22
|
MessagePressableHandlerPayload,
|
|
@@ -40,7 +41,6 @@ import type { ReactionListTopProps } from '../../components/Message/MessageSimpl
|
|
|
40
41
|
import type { MarkdownRules } from '../../components/Message/MessageSimple/utils/renderText';
|
|
41
42
|
import type { MessageActionsParams } from '../../components/Message/utils/messageActions';
|
|
42
43
|
import type { DateHeaderProps } from '../../components/MessageList/DateHeader';
|
|
43
|
-
import type { MessageType } from '../../components/MessageList/hooks/useMessageList';
|
|
44
44
|
import type { InlineDateSeparatorProps } from '../../components/MessageList/InlineDateSeparator';
|
|
45
45
|
import type { MessageListProps } from '../../components/MessageList/MessageList';
|
|
46
46
|
import type { MessageSystemProps } from '../../components/MessageList/MessageSystem';
|
|
@@ -107,7 +107,7 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
|
|
|
107
107
|
* Defaults to: [DateHeader](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageList/DateHeader.tsx)
|
|
108
108
|
**/
|
|
109
109
|
DateHeader: React.ComponentType<DateHeaderProps>;
|
|
110
|
-
deleteMessage: (message:
|
|
110
|
+
deleteMessage: (message: LocalMessage) => Promise<void>;
|
|
111
111
|
deleteReaction: (type: string, messageId: string) => Promise<void>;
|
|
112
112
|
|
|
113
113
|
/** Should keyboard be dismissed when messaged is touched */
|
|
@@ -151,6 +151,11 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
|
|
|
151
151
|
*/
|
|
152
152
|
ImageLoadingFailedIndicator: React.ComponentType<ImageLoadingFailedIndicatorProps>;
|
|
153
153
|
|
|
154
|
+
/**
|
|
155
|
+
* The indicator rendered at the center of an image whenever its loading fails, used to trigger retries.
|
|
156
|
+
*/
|
|
157
|
+
ImageReloadIndicator: React.ComponentType<ImageReloadIndicatorProps>;
|
|
158
|
+
|
|
154
159
|
/**
|
|
155
160
|
* The indicator rendered when image is loading. By default renders <ActivityIndicator/>
|
|
156
161
|
*/
|
|
@@ -289,15 +294,15 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
|
|
|
289
294
|
/**
|
|
290
295
|
* Override the api request for retry message functionality.
|
|
291
296
|
*/
|
|
292
|
-
retrySendMessage: (message:
|
|
297
|
+
retrySendMessage: (message: LocalMessage) => Promise<void>;
|
|
293
298
|
/**
|
|
294
299
|
* UI component for ScrollToBottomButton
|
|
295
300
|
* Defaults to: [ScrollToBottomButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/scroll-to-bottom-button/)
|
|
296
301
|
*/
|
|
297
302
|
ScrollToBottomButton: React.ComponentType<ScrollToBottomButtonProps>;
|
|
298
303
|
sendReaction: (type: string, messageId: string) => Promise<void>;
|
|
299
|
-
setEditingState: (message?:
|
|
300
|
-
setQuotedMessageState: (message?:
|
|
304
|
+
setEditingState: (message?: LocalMessage) => void;
|
|
305
|
+
setQuotedMessageState: (message?: LocalMessage) => void;
|
|
301
306
|
/**
|
|
302
307
|
* UI component for StreamingMessageView. Displays the text of a message with a typewriter animation.
|
|
303
308
|
*/
|
|
@@ -314,12 +319,13 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
|
|
|
314
319
|
TypingIndicatorContainer: React.ComponentType<TypingIndicatorContainerProps>;
|
|
315
320
|
UnreadMessagesNotification: React.ComponentType<UnreadMessagesNotificationProps>;
|
|
316
321
|
updateMessage: (
|
|
317
|
-
updatedMessage: MessageResponse,
|
|
322
|
+
updatedMessage: MessageResponse | LocalMessage,
|
|
318
323
|
extraState?: {
|
|
319
324
|
commands?: SuggestionCommand[];
|
|
320
325
|
messageInput?: string;
|
|
321
326
|
threadMessages?: ChannelState['threads'][string];
|
|
322
327
|
},
|
|
328
|
+
throttled?: boolean,
|
|
323
329
|
) => void;
|
|
324
330
|
/**
|
|
325
331
|
* Custom UI component to display enriched url preview.
|
|
@@ -376,29 +382,29 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
|
|
|
376
382
|
* Handler to access when a ban user action is invoked.
|
|
377
383
|
* @param message
|
|
378
384
|
*/
|
|
379
|
-
handleBan?: (message:
|
|
385
|
+
handleBan?: (message: LocalMessage) => Promise<void>;
|
|
380
386
|
/** Handler to access when a copy message action is invoked */
|
|
381
|
-
handleCopy?: (message:
|
|
387
|
+
handleCopy?: (message: LocalMessage) => Promise<void>;
|
|
382
388
|
/** Handler to access when a delete message action is invoked */
|
|
383
|
-
handleDelete?: (message:
|
|
389
|
+
handleDelete?: (message: LocalMessage) => Promise<void>;
|
|
384
390
|
/** Handler to access when an edit message action is invoked */
|
|
385
|
-
handleEdit?: (message:
|
|
391
|
+
handleEdit?: (message: LocalMessage) => void;
|
|
386
392
|
/** Handler to access when a flag message action is invoked */
|
|
387
|
-
handleFlag?: (message:
|
|
393
|
+
handleFlag?: (message: LocalMessage) => Promise<void>;
|
|
388
394
|
/** Handler to access when a mark unread action is invoked */
|
|
389
|
-
handleMarkUnread?: (message:
|
|
395
|
+
handleMarkUnread?: (message: LocalMessage) => Promise<void>;
|
|
390
396
|
/** Handler to access when a mute user action is invoked */
|
|
391
|
-
handleMute?: (message:
|
|
397
|
+
handleMute?: (message: LocalMessage) => Promise<void>;
|
|
392
398
|
/** Handler to access when a pin/unpin user action is invoked*/
|
|
393
|
-
handlePinMessage?: ((message:
|
|
399
|
+
handlePinMessage?: ((message: LocalMessage) => MessageActionType) | null;
|
|
394
400
|
/** Handler to access when a quoted reply action is invoked */
|
|
395
|
-
handleQuotedReply?: (message:
|
|
401
|
+
handleQuotedReply?: (message: LocalMessage) => Promise<void>;
|
|
396
402
|
/** Handler to process a reaction */
|
|
397
|
-
handleReaction?: (message:
|
|
403
|
+
handleReaction?: (message: LocalMessage, reactionType: string) => Promise<void>;
|
|
398
404
|
/** Handler to access when a retry action is invoked */
|
|
399
|
-
handleRetry?: (message:
|
|
405
|
+
handleRetry?: (message: LocalMessage) => Promise<void>;
|
|
400
406
|
/** Handler to access when a thread reply action is invoked */
|
|
401
|
-
handleThreadReply?: (message:
|
|
407
|
+
handleThreadReply?: (message: LocalMessage) => Promise<void>;
|
|
402
408
|
/** A flag specifying whether the poll creation button is available or not. */
|
|
403
409
|
hasCreatePoll?: boolean;
|
|
404
410
|
/** Handler to deal with custom memoization logic of Attachment */
|
|
@@ -586,7 +592,7 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
|
|
|
586
592
|
*
|
|
587
593
|
* Please check [cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#override-or-intercept-message-actions-edit-delete-reaction-reply-etc) for details.
|
|
588
594
|
* */
|
|
589
|
-
selectReaction?: (message:
|
|
595
|
+
selectReaction?: (message: LocalMessage) => (reactionType: string) => Promise<void>;
|
|
590
596
|
|
|
591
597
|
/**
|
|
592
598
|
* Boolean to enable/disable the message underlay background when there are unread messages in the Message List.
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import React, { PropsWithChildren, useContext } from 'react';
|
|
2
2
|
|
|
3
|
-
import { Poll } from 'stream-chat';
|
|
4
|
-
|
|
5
|
-
import { MessageType } from '../../components';
|
|
3
|
+
import { LocalMessage, Poll } from 'stream-chat';
|
|
6
4
|
|
|
7
5
|
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
|
|
8
6
|
|
|
9
7
|
import { isTestEnvironment } from '../utils/isTestEnvironment';
|
|
10
8
|
|
|
11
9
|
export type PollContextValue = {
|
|
12
|
-
message:
|
|
10
|
+
message: LocalMessage;
|
|
13
11
|
poll: Poll;
|
|
14
12
|
};
|
|
15
13
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { PropsWithChildren, useContext, useState } from 'react';
|
|
1
|
+
import React, { PropsWithChildren, useCallback, useContext, useMemo, useState } from 'react';
|
|
2
2
|
|
|
3
3
|
import type { CommandResponse, UserResponse } from 'stream-chat';
|
|
4
4
|
|
|
@@ -70,35 +70,54 @@ export const SuggestionsProvider = ({
|
|
|
70
70
|
children,
|
|
71
71
|
value,
|
|
72
72
|
}: PropsWithChildren<{ value?: Partial<SuggestionsContextValue> }>) => {
|
|
73
|
+
const { AutoCompleteSuggestionHeader, AutoCompleteSuggestionItem, AutoCompleteSuggestionList } =
|
|
74
|
+
value ?? {};
|
|
73
75
|
const [triggerType, setTriggerType] = useState<SuggestionComponentType | null>(null);
|
|
74
76
|
const [suggestions, setSuggestions] = useState<Suggestions>();
|
|
75
77
|
const [suggestionsViewActive, setSuggestionsViewActive] = useState(false);
|
|
76
78
|
|
|
77
|
-
const openSuggestions = (component: SuggestionComponentType) => {
|
|
79
|
+
const openSuggestions = useCallback((component: SuggestionComponentType) => {
|
|
78
80
|
setTriggerType(component);
|
|
79
81
|
setSuggestionsViewActive(true);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const updateSuggestions = (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
}, []);
|
|
83
|
+
|
|
84
|
+
const updateSuggestions = useCallback(
|
|
85
|
+
(newSuggestions: Suggestions) => {
|
|
86
|
+
setSuggestions(newSuggestions);
|
|
87
|
+
setSuggestionsViewActive(!!triggerType);
|
|
88
|
+
},
|
|
89
|
+
[triggerType],
|
|
90
|
+
);
|
|
86
91
|
|
|
87
|
-
const closeSuggestions = () => {
|
|
92
|
+
const closeSuggestions = useCallback(() => {
|
|
88
93
|
setTriggerType(null);
|
|
89
94
|
setSuggestions(undefined);
|
|
90
95
|
setSuggestionsViewActive(false);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
const suggestionsContext = {
|
|
94
|
-
|
|
96
|
+
}, []);
|
|
97
|
+
|
|
98
|
+
const suggestionsContext = useMemo(() => {
|
|
99
|
+
return {
|
|
100
|
+
AutoCompleteSuggestionHeader,
|
|
101
|
+
AutoCompleteSuggestionItem,
|
|
102
|
+
AutoCompleteSuggestionList,
|
|
103
|
+
closeSuggestions,
|
|
104
|
+
openSuggestions,
|
|
105
|
+
suggestions,
|
|
106
|
+
suggestionsViewActive,
|
|
107
|
+
triggerType,
|
|
108
|
+
updateSuggestions,
|
|
109
|
+
};
|
|
110
|
+
}, [
|
|
111
|
+
AutoCompleteSuggestionHeader,
|
|
112
|
+
AutoCompleteSuggestionItem,
|
|
113
|
+
AutoCompleteSuggestionList,
|
|
95
114
|
closeSuggestions,
|
|
96
115
|
openSuggestions,
|
|
97
116
|
suggestions,
|
|
98
117
|
suggestionsViewActive,
|
|
99
118
|
triggerType,
|
|
100
119
|
updateSuggestions,
|
|
101
|
-
|
|
120
|
+
]);
|
|
102
121
|
|
|
103
122
|
return (
|
|
104
123
|
<SuggestionsContext.Provider value={suggestionsContext as unknown as SuggestionsContextValue}>
|
|
@@ -674,6 +674,7 @@ export type Theme = {
|
|
|
674
674
|
roundedView: ViewStyle;
|
|
675
675
|
};
|
|
676
676
|
unreadUnderlayColor?: ColorValue;
|
|
677
|
+
wrapper: ViewStyle;
|
|
677
678
|
};
|
|
678
679
|
poll: {
|
|
679
680
|
allOptions: {
|
|
@@ -1466,6 +1467,7 @@ export const defaultTheme: Theme = {
|
|
|
1466
1467
|
container: {},
|
|
1467
1468
|
roundedView: {},
|
|
1468
1469
|
},
|
|
1470
|
+
wrapper: {},
|
|
1469
1471
|
},
|
|
1470
1472
|
poll: {
|
|
1471
1473
|
allOptions: {
|