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
package/src/types/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChannelFilters, ChannelSort, ChannelState } from 'stream-chat';
|
|
1
|
+
import type { ChannelFilters, ChannelSort, ChannelState, FileReference } from 'stream-chat';
|
|
2
2
|
|
|
3
3
|
import type { FileStateValue } from '../utils/utils';
|
|
4
4
|
|
|
@@ -12,93 +12,74 @@ export enum FileTypes {
|
|
|
12
12
|
VoiceRecording = 'voiceRecording',
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export type
|
|
16
|
-
duration: number;
|
|
17
|
-
height: number;
|
|
18
|
-
name: string;
|
|
19
|
-
source: 'camera' | 'picker';
|
|
20
|
-
type: string;
|
|
21
|
-
uri: string;
|
|
22
|
-
width: number;
|
|
23
|
-
id?: string;
|
|
24
|
-
mimeType?: string;
|
|
25
|
-
originalUri?: string;
|
|
26
|
-
size?: number;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export type File = {
|
|
30
|
-
name: string;
|
|
31
|
-
duration?: number;
|
|
32
|
-
id?: string;
|
|
33
|
-
mimeType?: string;
|
|
34
|
-
originalUri?: string;
|
|
35
|
-
size?: number;
|
|
36
|
-
type?: FileTypes;
|
|
37
|
-
// The uri should be of type `string`. But is `string|undefined` because the same type is used for the response from Stream's Attachment. This shall be fixed.
|
|
38
|
-
uri?: string;
|
|
39
|
-
waveform_data?: number[];
|
|
40
|
-
};
|
|
15
|
+
export type File = FileReference;
|
|
41
16
|
|
|
17
|
+
/**
|
|
18
|
+
* This is nothing but a substitute for the attachment type prior to sending the message.
|
|
19
|
+
* This will change if we unify the file uploads to attachments.
|
|
20
|
+
*/
|
|
42
21
|
export type FileUpload = {
|
|
43
22
|
file: File;
|
|
44
23
|
id: string;
|
|
45
24
|
state: FileStateValue;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
type?: string;
|
|
25
|
+
|
|
26
|
+
mime_type?: string;
|
|
27
|
+
|
|
28
|
+
type?: FileTypes;
|
|
51
29
|
url?: string;
|
|
30
|
+
|
|
31
|
+
thumb_url?: string;
|
|
32
|
+
|
|
33
|
+
duration?: number;
|
|
52
34
|
waveform_data?: number[];
|
|
35
|
+
|
|
36
|
+
height?: number;
|
|
37
|
+
width?: number;
|
|
53
38
|
};
|
|
54
|
-
|
|
39
|
+
|
|
40
|
+
export type AudioUpload = FileUpload & {
|
|
41
|
+
progress?: number;
|
|
42
|
+
paused?: boolean;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export interface DefaultAttachmentData {
|
|
55
46
|
duration?: number;
|
|
56
47
|
file_size?: number;
|
|
57
48
|
mime_type?: string;
|
|
58
49
|
originalFile?: File;
|
|
59
|
-
originalImage?:
|
|
50
|
+
originalImage?: File;
|
|
60
51
|
waveform_data?: number[];
|
|
61
52
|
}
|
|
62
53
|
|
|
63
|
-
export interface
|
|
54
|
+
export interface DefaultUserData {
|
|
64
55
|
image?: string;
|
|
65
56
|
}
|
|
66
57
|
|
|
67
|
-
export interface
|
|
58
|
+
export interface DefaultChannelData {
|
|
68
59
|
image?: string;
|
|
69
60
|
name?: string;
|
|
70
61
|
}
|
|
71
62
|
|
|
72
|
-
export interface
|
|
63
|
+
export interface DefaultCommandData {
|
|
73
64
|
flag: unknown;
|
|
74
65
|
imgur: unknown;
|
|
75
66
|
}
|
|
76
67
|
|
|
77
68
|
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
78
69
|
|
|
79
|
-
export interface
|
|
80
|
-
|
|
81
|
-
export interface DefaultMemberType {}
|
|
70
|
+
export interface DefaultEventData {}
|
|
82
71
|
|
|
83
|
-
export interface
|
|
72
|
+
export interface DefaultMemberData {}
|
|
84
73
|
|
|
85
|
-
export interface
|
|
74
|
+
export interface DefaultMessageData {}
|
|
86
75
|
|
|
87
|
-
export interface
|
|
76
|
+
export interface DefaultPollOptionData {}
|
|
88
77
|
|
|
89
|
-
export interface
|
|
78
|
+
export interface DefaultPollData {}
|
|
90
79
|
|
|
91
|
-
export interface
|
|
80
|
+
export interface DefaultReactionData {}
|
|
92
81
|
|
|
93
|
-
|
|
94
|
-
export type ImageUpload = {
|
|
95
|
-
file: Partial<Asset>;
|
|
96
|
-
id: string;
|
|
97
|
-
state: FileStateValue;
|
|
98
|
-
height?: number;
|
|
99
|
-
url?: string;
|
|
100
|
-
width?: number;
|
|
101
|
-
};
|
|
82
|
+
export interface DefaultThreadData {}
|
|
102
83
|
|
|
103
84
|
export type Reaction = {
|
|
104
85
|
id: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NativeHandlers } from '../native';
|
|
2
|
-
import type {
|
|
2
|
+
import type { File } from '../types/types';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Function to compress and Image and return the compressed Image URI
|
|
@@ -7,7 +7,7 @@ import type { Asset } from '../types/types';
|
|
|
7
7
|
* @param compressImageQuality
|
|
8
8
|
* @returns string
|
|
9
9
|
*/
|
|
10
|
-
export const compressedImageURI = async (image:
|
|
10
|
+
export const compressedImageURI = async (image: File, compressImageQuality?: number) => {
|
|
11
11
|
const uri = image.uri || '';
|
|
12
12
|
/**
|
|
13
13
|
* We skip compression if:
|
|
@@ -15,8 +15,7 @@ export const compressedImageURI = async (image: Partial<Asset>, compressImageQua
|
|
|
15
15
|
* - the file has no height/width value to maintain for compression
|
|
16
16
|
* - the compressImageQuality number is not present or is 1 (meaning no compression)
|
|
17
17
|
*/
|
|
18
|
-
const compressedUri = await (image.
|
|
19
|
-
!image.height ||
|
|
18
|
+
const compressedUri = await (!image.height ||
|
|
20
19
|
!image.width ||
|
|
21
20
|
typeof compressImageQuality !== 'number' ||
|
|
22
21
|
compressImageQuality === 1
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import type { MessageResponse } from 'stream-chat';
|
|
2
|
-
|
|
3
|
-
import type { MessageType } from '../components/MessageList/hooks/useMessageList';
|
|
1
|
+
import type { LocalMessage, MessageResponse } from 'stream-chat';
|
|
4
2
|
|
|
5
3
|
export const removeReservedFields = (
|
|
6
|
-
message:
|
|
7
|
-
):
|
|
4
|
+
message: LocalMessage | MessageResponse,
|
|
5
|
+
): LocalMessage | MessageResponse => {
|
|
8
6
|
const retryMessage = { ...message };
|
|
9
7
|
const reserved = [
|
|
10
8
|
'cid',
|
package/src/utils/utils.ts
CHANGED
|
@@ -2,17 +2,13 @@ import type React from 'react';
|
|
|
2
2
|
|
|
3
3
|
import dayjs from 'dayjs';
|
|
4
4
|
import EmojiRegex from 'emoji-regex';
|
|
5
|
-
import type { ChannelState,
|
|
5
|
+
import type { ChannelState, LocalMessage, MessageResponse } from 'stream-chat';
|
|
6
6
|
|
|
7
7
|
import { IconProps } from '../../src/icons/utils/base';
|
|
8
|
-
import {
|
|
9
|
-
MessagesWithStylesReadByAndDateSeparator,
|
|
10
|
-
MessageType,
|
|
11
|
-
} from '../components/MessageList/hooks/useMessageList';
|
|
12
8
|
import type { EmojiSearchIndex } from '../contexts/messageInputContext/MessageInputContext';
|
|
13
9
|
import { compiledEmojis } from '../emoji-data';
|
|
14
10
|
import type { TableRowJoinedUser } from '../store/types';
|
|
15
|
-
import
|
|
11
|
+
import { FileTypes, ValueOf } from '../types/types';
|
|
16
12
|
|
|
17
13
|
export type ReactionData = {
|
|
18
14
|
Icon: React.ComponentType<IconProps>;
|
|
@@ -78,7 +74,7 @@ export const getIndicatorTypeForFileState = (
|
|
|
78
74
|
* @param message
|
|
79
75
|
* @returns boolean
|
|
80
76
|
*/
|
|
81
|
-
export const isBlockedMessage = (message:
|
|
77
|
+
export const isBlockedMessage = (message: LocalMessage | TableRowJoinedUser<'messages'>) => {
|
|
82
78
|
// The only indicator for the blocked message is its message type is error and that the message text contains "Message was blocked by moderation policies".
|
|
83
79
|
const pattern = /\bMessage was blocked by moderation policies\b/;
|
|
84
80
|
return message.type === 'error' && message.text && pattern.test(message.text);
|
|
@@ -89,7 +85,7 @@ export const isBlockedMessage = (message: MessageType | TableRowJoinedUser<'mess
|
|
|
89
85
|
* @param message
|
|
90
86
|
* @returns boolean
|
|
91
87
|
*/
|
|
92
|
-
export const isBouncedMessage = (message:
|
|
88
|
+
export const isBouncedMessage = (message: LocalMessage) =>
|
|
93
89
|
(message.type === 'error' &&
|
|
94
90
|
message?.moderation_details?.action === 'MESSAGE_RESPONSE_ACTION_BOUNCE') ||
|
|
95
91
|
message?.moderation?.action === 'bounce';
|
|
@@ -99,7 +95,7 @@ export const isBouncedMessage = (message: MessageType) =>
|
|
|
99
95
|
* @param message
|
|
100
96
|
* @returns boolean
|
|
101
97
|
*/
|
|
102
|
-
export const isEditedMessage = (message:
|
|
98
|
+
export const isEditedMessage = (message: LocalMessage) => !!message.message_text_updated_at;
|
|
103
99
|
|
|
104
100
|
/**
|
|
105
101
|
* Default emoji search index for auto complete text input
|
|
@@ -187,12 +183,10 @@ export const hasOnlyEmojis = (text: string) => {
|
|
|
187
183
|
|
|
188
184
|
/**
|
|
189
185
|
* Stringifies a message object
|
|
190
|
-
* @param {
|
|
186
|
+
* @param {LocalMessage} message - the message object to be stringified
|
|
191
187
|
* @returns {string} The stringified message
|
|
192
188
|
*/
|
|
193
|
-
export const stringifyMessage = (
|
|
194
|
-
message: MessageResponse | FormatMessageResponse | MessageType,
|
|
195
|
-
): string => {
|
|
189
|
+
export const stringifyMessage = (message: MessageResponse | LocalMessage): string => {
|
|
196
190
|
const {
|
|
197
191
|
deleted_at,
|
|
198
192
|
i18n,
|
|
@@ -204,7 +198,6 @@ export const stringifyMessage = (
|
|
|
204
198
|
type,
|
|
205
199
|
updated_at,
|
|
206
200
|
} = message;
|
|
207
|
-
const readBy = (message as MessagesWithStylesReadByAndDateSeparator)?.readBy ?? '';
|
|
208
201
|
return `${
|
|
209
202
|
latest_reactions ? latest_reactions.map(({ type, user }) => `${type}${user?.id}`).join() : ''
|
|
210
203
|
}${
|
|
@@ -216,7 +209,7 @@ export const stringifyMessage = (
|
|
|
216
209
|
)
|
|
217
210
|
.join()
|
|
218
211
|
: ''
|
|
219
|
-
}${type}${deleted_at}${text}${
|
|
212
|
+
}${type}${deleted_at}${text}${reply_count}${status}${updated_at}${JSON.stringify(i18n)}`;
|
|
220
213
|
};
|
|
221
214
|
|
|
222
215
|
/**
|
|
@@ -224,7 +217,7 @@ export const stringifyMessage = (
|
|
|
224
217
|
* @param {messages} messages - the array of messages to be compared
|
|
225
218
|
* @returns {string} The mapped message string
|
|
226
219
|
*/
|
|
227
|
-
export const reduceMessagesToString = (messages:
|
|
220
|
+
export const reduceMessagesToString = (messages: LocalMessage[]): string =>
|
|
228
221
|
messages.map(stringifyMessage).join();
|
|
229
222
|
|
|
230
223
|
/**
|
|
@@ -241,12 +234,28 @@ export const getFileNameFromPath = (path: string) => {
|
|
|
241
234
|
return match ? match[0] : '';
|
|
242
235
|
};
|
|
243
236
|
|
|
237
|
+
export const getFileTypeFromMimeType = (mimeType: string) => {
|
|
238
|
+
const fileType = mimeType.split('/')[0];
|
|
239
|
+
if (fileType === 'image') {
|
|
240
|
+
return FileTypes.Image;
|
|
241
|
+
} else if (fileType === 'video') {
|
|
242
|
+
return FileTypes.Video;
|
|
243
|
+
} else if (fileType === 'audio') {
|
|
244
|
+
return FileTypes.Audio;
|
|
245
|
+
}
|
|
246
|
+
return FileTypes.File;
|
|
247
|
+
};
|
|
248
|
+
|
|
244
249
|
/**
|
|
245
250
|
* Utility to get the duration label from the duration in seconds.
|
|
246
251
|
* @param duration number
|
|
247
252
|
* @returns string
|
|
248
253
|
*/
|
|
249
254
|
export const getDurationLabelFromDuration = (duration: number) => {
|
|
255
|
+
if (!duration) {
|
|
256
|
+
return '00:00';
|
|
257
|
+
}
|
|
258
|
+
|
|
250
259
|
const ONE_HOUR_IN_SECONDS = 3600;
|
|
251
260
|
const ONE_HOUR_IN_MILLISECONDS = ONE_HOUR_IN_SECONDS * 1000;
|
|
252
261
|
let durationLabel = '00:00';
|
package/src/version.json
CHANGED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", {
|
|
2
|
-
value: true
|
|
3
|
-
});
|
|
4
|
-
exports.useLastReadData = void 0;
|
|
5
|
-
var _react = require("react");
|
|
6
|
-
var _getReadStates = require("../utils/getReadStates");
|
|
7
|
-
var useLastReadData = exports.useLastReadData = function useLastReadData(props) {
|
|
8
|
-
var messages = props.messages,
|
|
9
|
-
read = props.read,
|
|
10
|
-
_props$returnAllReadD = props.returnAllReadData,
|
|
11
|
-
returnAllReadData = _props$returnAllReadD === void 0 ? true : _props$returnAllReadD,
|
|
12
|
-
userID = props.userID;
|
|
13
|
-
return (0, _react.useMemo)(function () {
|
|
14
|
-
return (0, _getReadStates.getReadStates)(messages.filter(function (_ref) {
|
|
15
|
-
var user = _ref.user;
|
|
16
|
-
return (user == null ? void 0 : user.id) === userID;
|
|
17
|
-
}), read, returnAllReadData);
|
|
18
|
-
}, [messages, read, returnAllReadData, userID]);
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=useLastReadData.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_getReadStates","useLastReadData","exports","props","messages","read","_props$returnAllReadD","returnAllReadData","userID","useMemo","getReadStates","filter","_ref","user","id"],"sourceRoot":"../../../../../src","sources":["components/MessageList/hooks/useLastReadData.ts"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,cAAA,GAAAD,OAAA;AASO,IAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAAIE,KAA4B,EAAK;EAC/D,IAAQC,QAAQ,GAA6CD,KAAK,CAA1DC,QAAQ;IAAEC,IAAI,GAAuCF,KAAK,CAAhDE,IAAI;IAAAC,qBAAA,GAAuCH,KAAK,CAA1CI,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAEE,MAAM,GAAKL,KAAK,CAAhBK,MAAM;EAExD,OAAO,IAAAC,cAAO,EACZ;IAAA,OACE,IAAAC,4BAAa,EACXN,QAAQ,CAACO,MAAM,CAAC,UAAAC,IAAA;MAAA,IAAGC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAA,OAAO,CAAAA,IAAI,oBAAJA,IAAI,CAAEC,EAAE,MAAKN,MAAM;IAAA,EAAC,EAClDH,IAAI,EACJE,iBACF,CAAC;EAAA,GACH,CAACH,QAAQ,EAAEC,IAAI,EAAEE,iBAAiB,EAAEC,MAAM,CAC5C,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", {
|
|
2
|
-
value: true
|
|
3
|
-
});
|
|
4
|
-
exports.getReadStates = void 0;
|
|
5
|
-
var getReadStates = exports.getReadStates = function getReadStates(messages, read, returnAllReadData) {
|
|
6
|
-
var readData = {};
|
|
7
|
-
if (read) {
|
|
8
|
-
Object.values(read).forEach(function (readState) {
|
|
9
|
-
if (!readState.last_read) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
var userLastReadMsgId;
|
|
13
|
-
messages.forEach(function (msg) {
|
|
14
|
-
if (msg.created_at && msg.created_at < readState.last_read) {
|
|
15
|
-
userLastReadMsgId = msg.id;
|
|
16
|
-
if (returnAllReadData) {
|
|
17
|
-
if (!readData[userLastReadMsgId]) {
|
|
18
|
-
readData[userLastReadMsgId] = 0;
|
|
19
|
-
}
|
|
20
|
-
readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
if (userLastReadMsgId && !returnAllReadData) {
|
|
25
|
-
if (!readData[userLastReadMsgId]) {
|
|
26
|
-
readData[userLastReadMsgId] = 0;
|
|
27
|
-
}
|
|
28
|
-
readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
return readData;
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=getReadStates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getReadStates","exports","messages","read","returnAllReadData","readData","Object","values","forEach","readState","last_read","userLastReadMsgId","msg","created_at","id"],"sourceRoot":"../../../../../src","sources":["components/MessageList/utils/getReadStates.ts"],"mappings":";;;;AAKO,IAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,SAAhBA,aAAaA,CACxBE,QAA6F,EAC7FC,IAA2B,EAC3BC,iBAA2B,EACxB;EACH,IAAMC,QAAgC,GAAG,CAAC,CAAC;EAE3C,IAAIF,IAAI,EAAE;IAQRG,MAAM,CAACC,MAAM,CAACJ,IAAI,CAAC,CAACK,OAAO,CAAC,UAACC,SAAS,EAAK;MACzC,IAAI,CAACA,SAAS,CAACC,SAAS,EAAE;QACxB;MACF;MAEA,IAAIC,iBAAqC;MAGzCT,QAAQ,CAACM,OAAO,CAAC,UAACI,GAAG,EAAK;QACxB,IAAIA,GAAG,CAACC,UAAU,IAAID,GAAG,CAACC,UAAU,GAAGJ,SAAS,CAACC,SAAS,EAAE;UAC1DC,iBAAiB,GAAGC,GAAG,CAACE,EAAE;UAE1B,IAAIV,iBAAiB,EAAE;YAErB,IAAI,CAACC,QAAQ,CAACM,iBAAiB,CAAC,EAAE;cAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;YACjC;YACAN,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;UAC/D;QACF;MACF,CAAC,CAAC;MAGF,IAAIA,iBAAiB,IAAI,CAACP,iBAAiB,EAAE;QAC3C,IAAI,CAACC,QAAQ,CAACM,iBAAiB,CAAC,EAAE;UAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;QACjC;QAEAN,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ;EAEA,OAAON,QAAQ;AACjB,CAAC","ignoreList":[]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", {
|
|
2
|
-
value: true
|
|
3
|
-
});
|
|
4
|
-
exports.useLastReadData = void 0;
|
|
5
|
-
var _react = require("react");
|
|
6
|
-
var _getReadStates = require("../utils/getReadStates");
|
|
7
|
-
var useLastReadData = exports.useLastReadData = function useLastReadData(props) {
|
|
8
|
-
var messages = props.messages,
|
|
9
|
-
read = props.read,
|
|
10
|
-
_props$returnAllReadD = props.returnAllReadData,
|
|
11
|
-
returnAllReadData = _props$returnAllReadD === void 0 ? true : _props$returnAllReadD,
|
|
12
|
-
userID = props.userID;
|
|
13
|
-
return (0, _react.useMemo)(function () {
|
|
14
|
-
return (0, _getReadStates.getReadStates)(messages.filter(function (_ref) {
|
|
15
|
-
var user = _ref.user;
|
|
16
|
-
return (user == null ? void 0 : user.id) === userID;
|
|
17
|
-
}), read, returnAllReadData);
|
|
18
|
-
}, [messages, read, returnAllReadData, userID]);
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=useLastReadData.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_getReadStates","useLastReadData","exports","props","messages","read","_props$returnAllReadD","returnAllReadData","userID","useMemo","getReadStates","filter","_ref","user","id"],"sourceRoot":"../../../../../src","sources":["components/MessageList/hooks/useLastReadData.ts"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,cAAA,GAAAD,OAAA;AASO,IAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAAIE,KAA4B,EAAK;EAC/D,IAAQC,QAAQ,GAA6CD,KAAK,CAA1DC,QAAQ;IAAEC,IAAI,GAAuCF,KAAK,CAAhDE,IAAI;IAAAC,qBAAA,GAAuCH,KAAK,CAA1CI,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAEE,MAAM,GAAKL,KAAK,CAAhBK,MAAM;EAExD,OAAO,IAAAC,cAAO,EACZ;IAAA,OACE,IAAAC,4BAAa,EACXN,QAAQ,CAACO,MAAM,CAAC,UAAAC,IAAA;MAAA,IAAGC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAA,OAAO,CAAAA,IAAI,oBAAJA,IAAI,CAAEC,EAAE,MAAKN,MAAM;IAAA,EAAC,EAClDH,IAAI,EACJE,iBACF,CAAC;EAAA,GACH,CAACH,QAAQ,EAAEC,IAAI,EAAEE,iBAAiB,EAAEC,MAAM,CAC5C,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", {
|
|
2
|
-
value: true
|
|
3
|
-
});
|
|
4
|
-
exports.getReadStates = void 0;
|
|
5
|
-
var getReadStates = exports.getReadStates = function getReadStates(messages, read, returnAllReadData) {
|
|
6
|
-
var readData = {};
|
|
7
|
-
if (read) {
|
|
8
|
-
Object.values(read).forEach(function (readState) {
|
|
9
|
-
if (!readState.last_read) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
var userLastReadMsgId;
|
|
13
|
-
messages.forEach(function (msg) {
|
|
14
|
-
if (msg.created_at && msg.created_at < readState.last_read) {
|
|
15
|
-
userLastReadMsgId = msg.id;
|
|
16
|
-
if (returnAllReadData) {
|
|
17
|
-
if (!readData[userLastReadMsgId]) {
|
|
18
|
-
readData[userLastReadMsgId] = 0;
|
|
19
|
-
}
|
|
20
|
-
readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
if (userLastReadMsgId && !returnAllReadData) {
|
|
25
|
-
if (!readData[userLastReadMsgId]) {
|
|
26
|
-
readData[userLastReadMsgId] = 0;
|
|
27
|
-
}
|
|
28
|
-
readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
return readData;
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=getReadStates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getReadStates","exports","messages","read","returnAllReadData","readData","Object","values","forEach","readState","last_read","userLastReadMsgId","msg","created_at","id"],"sourceRoot":"../../../../../src","sources":["components/MessageList/utils/getReadStates.ts"],"mappings":";;;;AAKO,IAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,SAAhBA,aAAaA,CACxBE,QAA6F,EAC7FC,IAA2B,EAC3BC,iBAA2B,EACxB;EACH,IAAMC,QAAgC,GAAG,CAAC,CAAC;EAE3C,IAAIF,IAAI,EAAE;IAQRG,MAAM,CAACC,MAAM,CAACJ,IAAI,CAAC,CAACK,OAAO,CAAC,UAACC,SAAS,EAAK;MACzC,IAAI,CAACA,SAAS,CAACC,SAAS,EAAE;QACxB;MACF;MAEA,IAAIC,iBAAqC;MAGzCT,QAAQ,CAACM,OAAO,CAAC,UAACI,GAAG,EAAK;QACxB,IAAIA,GAAG,CAACC,UAAU,IAAID,GAAG,CAACC,UAAU,GAAGJ,SAAS,CAACC,SAAS,EAAE;UAC1DC,iBAAiB,GAAGC,GAAG,CAACE,EAAE;UAE1B,IAAIV,iBAAiB,EAAE;YAErB,IAAI,CAACC,QAAQ,CAACM,iBAAiB,CAAC,EAAE;cAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;YACjC;YACAN,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;UAC/D;QACF;MACF,CAAC,CAAC;MAGF,IAAIA,iBAAiB,IAAI,CAACP,iBAAiB,EAAE;QAC3C,IAAI,CAACC,QAAQ,CAACM,iBAAiB,CAAC,EAAE;UAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;QACjC;QAEAN,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ;EAEA,OAAON,QAAQ;AACjB,CAAC","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ChannelState } from 'stream-chat';
|
|
2
|
-
import { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';
|
|
3
|
-
import { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';
|
|
4
|
-
type UseLastReadDataParams = {
|
|
5
|
-
messages: PaginatedMessageListContextValue['messages'] | ThreadContextValue['threadMessages'];
|
|
6
|
-
userID: string | undefined;
|
|
7
|
-
read?: ChannelState['read'];
|
|
8
|
-
returnAllReadData?: boolean;
|
|
9
|
-
};
|
|
10
|
-
export declare const useLastReadData: (props: UseLastReadDataParams) => Record<string, number>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=useLastReadData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLastReadData.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/useLastReadData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gCAAgC,EAAE,MAAM,2EAA2E,CAAC;AAC7H,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAInF,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,gCAAgC,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC9F,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,qBAAqB,2BAY3D,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ChannelState } from 'stream-chat';
|
|
2
|
-
import type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';
|
|
3
|
-
import type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';
|
|
4
|
-
export declare const getReadStates: (messages: PaginatedMessageListContextValue["messages"] | ThreadContextValue["threadMessages"], read?: ChannelState["read"], returnAllReadData?: boolean) => Record<string, number>;
|
|
5
|
-
//# sourceMappingURL=getReadStates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getReadStates.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/utils/getReadStates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2EAA2E,CAAC;AAClI,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAExF,eAAO,MAAM,aAAa,GACxB,UAAU,gCAAgC,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,EAC7F,OAAO,YAAY,CAAC,MAAM,CAAC,EAC3B,oBAAoB,OAAO,2BA8C5B,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
|
-
|
|
3
|
-
import type { ChannelState } from 'stream-chat';
|
|
4
|
-
|
|
5
|
-
import { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';
|
|
6
|
-
import { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';
|
|
7
|
-
|
|
8
|
-
import { getReadStates } from '../utils/getReadStates';
|
|
9
|
-
|
|
10
|
-
type UseLastReadDataParams = {
|
|
11
|
-
messages: PaginatedMessageListContextValue['messages'] | ThreadContextValue['threadMessages'];
|
|
12
|
-
userID: string | undefined;
|
|
13
|
-
read?: ChannelState['read'];
|
|
14
|
-
returnAllReadData?: boolean;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export const useLastReadData = (props: UseLastReadDataParams) => {
|
|
18
|
-
const { messages, read, returnAllReadData = true, userID } = props;
|
|
19
|
-
|
|
20
|
-
return useMemo(
|
|
21
|
-
() =>
|
|
22
|
-
getReadStates(
|
|
23
|
-
messages.filter(({ user }) => user?.id === userID),
|
|
24
|
-
read,
|
|
25
|
-
returnAllReadData,
|
|
26
|
-
),
|
|
27
|
-
[messages, read, returnAllReadData, userID],
|
|
28
|
-
);
|
|
29
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ChannelState } from 'stream-chat';
|
|
2
|
-
|
|
3
|
-
import type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';
|
|
4
|
-
import type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';
|
|
5
|
-
|
|
6
|
-
export const getReadStates = (
|
|
7
|
-
messages: PaginatedMessageListContextValue['messages'] | ThreadContextValue['threadMessages'],
|
|
8
|
-
read?: ChannelState['read'],
|
|
9
|
-
returnAllReadData?: boolean,
|
|
10
|
-
) => {
|
|
11
|
-
const readData: Record<string, number> = {};
|
|
12
|
-
|
|
13
|
-
if (read) {
|
|
14
|
-
/**
|
|
15
|
-
* Array is in reverse order so newest message is at 0,
|
|
16
|
-
* we find the index of the first message that is older
|
|
17
|
-
* than the last read and then set last read to that, or
|
|
18
|
-
* if there are no newer messages, the first message is
|
|
19
|
-
* last read message.
|
|
20
|
-
*/
|
|
21
|
-
Object.values(read).forEach((readState) => {
|
|
22
|
-
if (!readState.last_read) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
let userLastReadMsgId: string | undefined;
|
|
27
|
-
|
|
28
|
-
// loop messages sent by current user and add read data for other users in channel
|
|
29
|
-
messages.forEach((msg) => {
|
|
30
|
-
if (msg.created_at && msg.created_at < readState.last_read) {
|
|
31
|
-
userLastReadMsgId = msg.id;
|
|
32
|
-
|
|
33
|
-
if (returnAllReadData) {
|
|
34
|
-
// if true, save other user's read data for all messages they've read
|
|
35
|
-
if (!readData[userLastReadMsgId]) {
|
|
36
|
-
readData[userLastReadMsgId] = 0;
|
|
37
|
-
}
|
|
38
|
-
readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
// if true, only save read data for other user's last read message
|
|
44
|
-
if (userLastReadMsgId && !returnAllReadData) {
|
|
45
|
-
if (!readData[userLastReadMsgId]) {
|
|
46
|
-
readData[userLastReadMsgId] = 0;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return readData;
|
|
55
|
-
};
|