stream-chat-react-native-core 9.0.1 → 9.0.2-beta.1
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/Message/MessageItemView/utils/renderText.test.js +1 -1
- package/lib/commonjs/components/Message/MessageItemView/utils/renderText.test.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
- package/lib/commonjs/mock-builders/api/channelMocks.js +38 -31
- package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -1
- package/lib/commonjs/mock-builders/api/error.js.map +1 -1
- package/lib/commonjs/mock-builders/api/getOrCreateChannel.js.map +1 -1
- package/lib/commonjs/mock-builders/api/initiateClientWithChannels.js +1 -1
- package/lib/commonjs/mock-builders/api/initiateClientWithChannels.js.map +1 -1
- package/lib/commonjs/mock-builders/api/queryChannels.js.map +1 -1
- package/lib/commonjs/mock-builders/api/queryMembers.js +12 -11
- package/lib/commonjs/mock-builders/api/queryMembers.js.map +1 -1
- package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -1
- package/lib/commonjs/mock-builders/api/threadReplies.js.map +1 -1
- package/lib/commonjs/mock-builders/api/useMockedApis.js.map +1 -1
- package/lib/commonjs/mock-builders/api/utils.js.map +1 -1
- package/lib/commonjs/mock-builders/attachments.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelDeleted.js +3 -2
- package/lib/commonjs/mock-builders/event/channelDeleted.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelHidden.js +3 -2
- package/lib/commonjs/mock-builders/event/channelHidden.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelTruncated.js +3 -2
- package/lib/commonjs/mock-builders/event/channelTruncated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/channelUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelVisible.js +3 -2
- package/lib/commonjs/mock-builders/event/channelVisible.js.map +1 -1
- package/lib/commonjs/mock-builders/event/connectionChanged.js +3 -2
- package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
- package/lib/commonjs/mock-builders/event/connectionRecovered.js +3 -2
- package/lib/commonjs/mock-builders/event/connectionRecovered.js.map +1 -1
- package/lib/commonjs/mock-builders/event/memberAdded.js +3 -2
- package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -1
- package/lib/commonjs/mock-builders/event/memberRemoved.js +3 -2
- package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -1
- package/lib/commonjs/mock-builders/event/memberUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageDeleted.js +3 -2
- package/lib/commonjs/mock-builders/event/messageDeleted.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageNew.js +3 -2
- package/lib/commonjs/mock-builders/event/messageNew.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageRead.js +3 -2
- package/lib/commonjs/mock-builders/event/messageRead.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/messageUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationMarkRead.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationMarkRead.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationMarkUnread.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationMarkUnread.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationMessageNew.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationMessageNew.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js +3 -2
- package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
- package/lib/commonjs/mock-builders/event/reactionDeleted.js +3 -2
- package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -1
- package/lib/commonjs/mock-builders/event/reactionNew.js +3 -2
- package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -1
- package/lib/commonjs/mock-builders/event/reactionUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/typing.js +3 -2
- package/lib/commonjs/mock-builders/event/typing.js.map +1 -1
- package/lib/commonjs/mock-builders/event/userPresence.js +3 -2
- package/lib/commonjs/mock-builders/event/userPresence.js.map +1 -1
- package/lib/commonjs/mock-builders/event/userUpdated.js +3 -2
- package/lib/commonjs/mock-builders/event/userUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/attachment.js +0 -3
- package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/channel.js +10 -12
- package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/member.js +3 -2
- package/lib/commonjs/mock-builders/generator/member.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/message.js +12 -7
- package/lib/commonjs/mock-builders/generator/message.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/reaction.js +3 -2
- package/lib/commonjs/mock-builders/generator/reaction.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/user.js +4 -3
- package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
- package/lib/commonjs/mock-builders/mock.js +15 -11
- package/lib/commonjs/mock-builders/mock.js.map +1 -1
- package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
- package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
- package/lib/commonjs/store/apis/upsertDraft.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
- package/lib/commonjs/test-utils/BetterSqlite.js +11 -7
- package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/MessageItemView/utils/renderText.test.js +1 -1
- package/lib/module/components/Message/MessageItemView/utils/renderText.test.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/mock-builders/DB/mock.js.map +1 -1
- package/lib/module/mock-builders/api/channelMocks.js +38 -31
- package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/module/mock-builders/api/deleteMessage.js.map +1 -1
- package/lib/module/mock-builders/api/deleteReaction.js.map +1 -1
- package/lib/module/mock-builders/api/error.js.map +1 -1
- package/lib/module/mock-builders/api/getOrCreateChannel.js.map +1 -1
- package/lib/module/mock-builders/api/initiateClientWithChannels.js +1 -1
- package/lib/module/mock-builders/api/initiateClientWithChannels.js.map +1 -1
- package/lib/module/mock-builders/api/queryChannels.js.map +1 -1
- package/lib/module/mock-builders/api/queryMembers.js +12 -11
- package/lib/module/mock-builders/api/queryMembers.js.map +1 -1
- package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
- package/lib/module/mock-builders/api/sendReaction.js.map +1 -1
- package/lib/module/mock-builders/api/threadReplies.js.map +1 -1
- package/lib/module/mock-builders/api/useMockedApis.js.map +1 -1
- package/lib/module/mock-builders/api/utils.js.map +1 -1
- package/lib/module/mock-builders/attachments.js.map +1 -1
- package/lib/module/mock-builders/event/channelDeleted.js +3 -2
- package/lib/module/mock-builders/event/channelDeleted.js.map +1 -1
- package/lib/module/mock-builders/event/channelHidden.js +3 -2
- package/lib/module/mock-builders/event/channelHidden.js.map +1 -1
- package/lib/module/mock-builders/event/channelTruncated.js +3 -2
- package/lib/module/mock-builders/event/channelTruncated.js.map +1 -1
- package/lib/module/mock-builders/event/channelUpdated.js +3 -2
- package/lib/module/mock-builders/event/channelUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/channelVisible.js +3 -2
- package/lib/module/mock-builders/event/channelVisible.js.map +1 -1
- package/lib/module/mock-builders/event/connectionChanged.js +3 -2
- package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
- package/lib/module/mock-builders/event/connectionRecovered.js +3 -2
- package/lib/module/mock-builders/event/connectionRecovered.js.map +1 -1
- package/lib/module/mock-builders/event/memberAdded.js +3 -2
- package/lib/module/mock-builders/event/memberAdded.js.map +1 -1
- package/lib/module/mock-builders/event/memberRemoved.js +3 -2
- package/lib/module/mock-builders/event/memberRemoved.js.map +1 -1
- package/lib/module/mock-builders/event/memberUpdated.js +3 -2
- package/lib/module/mock-builders/event/memberUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/messageDeleted.js +3 -2
- package/lib/module/mock-builders/event/messageDeleted.js.map +1 -1
- package/lib/module/mock-builders/event/messageNew.js +3 -2
- package/lib/module/mock-builders/event/messageNew.js.map +1 -1
- package/lib/module/mock-builders/event/messageRead.js +3 -2
- package/lib/module/mock-builders/event/messageRead.js.map +1 -1
- package/lib/module/mock-builders/event/messageUpdated.js +3 -2
- package/lib/module/mock-builders/event/messageUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/notificationAddedToChannel.js +3 -2
- package/lib/module/mock-builders/event/notificationAddedToChannel.js.map +1 -1
- package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js +3 -2
- package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/notificationMarkRead.js +3 -2
- package/lib/module/mock-builders/event/notificationMarkRead.js.map +1 -1
- package/lib/module/mock-builders/event/notificationMarkUnread.js +3 -2
- package/lib/module/mock-builders/event/notificationMarkUnread.js.map +1 -1
- package/lib/module/mock-builders/event/notificationMessageNew.js +3 -2
- package/lib/module/mock-builders/event/notificationMessageNew.js.map +1 -1
- package/lib/module/mock-builders/event/notificationMutesUpdated.js +3 -2
- package/lib/module/mock-builders/event/notificationMutesUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/notificationRemovedFromChannel.js +3 -2
- package/lib/module/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
- package/lib/module/mock-builders/event/reactionDeleted.js +3 -2
- package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -1
- package/lib/module/mock-builders/event/reactionNew.js +3 -2
- package/lib/module/mock-builders/event/reactionNew.js.map +1 -1
- package/lib/module/mock-builders/event/reactionUpdated.js +3 -2
- package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/typing.js +3 -2
- package/lib/module/mock-builders/event/typing.js.map +1 -1
- package/lib/module/mock-builders/event/userPresence.js +3 -2
- package/lib/module/mock-builders/event/userPresence.js.map +1 -1
- package/lib/module/mock-builders/event/userUpdated.js +3 -2
- package/lib/module/mock-builders/event/userUpdated.js.map +1 -1
- package/lib/module/mock-builders/generator/attachment.js +0 -3
- package/lib/module/mock-builders/generator/attachment.js.map +1 -1
- package/lib/module/mock-builders/generator/channel.js +10 -12
- package/lib/module/mock-builders/generator/channel.js.map +1 -1
- package/lib/module/mock-builders/generator/member.js +3 -2
- package/lib/module/mock-builders/generator/member.js.map +1 -1
- package/lib/module/mock-builders/generator/message.js +12 -7
- package/lib/module/mock-builders/generator/message.js.map +1 -1
- package/lib/module/mock-builders/generator/reaction.js +3 -2
- package/lib/module/mock-builders/generator/reaction.js.map +1 -1
- package/lib/module/mock-builders/generator/user.js +4 -3
- package/lib/module/mock-builders/generator/user.js.map +1 -1
- package/lib/module/mock-builders/mock.js +15 -11
- package/lib/module/mock-builders/mock.js.map +1 -1
- package/lib/module/store/apis/addPendingTask.js.map +1 -1
- package/lib/module/store/apis/deleteMessage.js.map +1 -1
- package/lib/module/store/apis/upsertDraft.js.map +1 -1
- package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -1
- package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -1
- package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
- package/lib/module/test-utils/BetterSqlite.js +11 -7
- package/lib/module/test-utils/BetterSqlite.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/UIComponents/SwipableWrapper.d.ts +1 -1
- package/lib/typescript/components/UIComponents/SwipableWrapper.d.ts.map +1 -1
- package/lib/typescript/store/OfflineDB.d.ts +1 -1
- package/lib/typescript/store/OfflineDB.d.ts.map +1 -1
- package/lib/typescript/store/apis/addPendingTask.d.ts.map +1 -1
- package/lib/typescript/store/apis/deleteMessage.d.ts +2 -1
- package/lib/typescript/store/apis/deleteMessage.d.ts.map +1 -1
- package/lib/typescript/store/apis/upsertDraft.d.ts +1 -1
- package/lib/typescript/store/apis/upsertDraft.d.ts.map +1 -1
- package/lib/typescript/store/sqlite-utils/createCreateTableQuery.d.ts.map +1 -1
- package/lib/typescript/test-utils/BetterSqlite.d.ts +4 -3
- package/lib/typescript/test-utils/BetterSqlite.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/__tests__/offline-support/{offline-feature.js → offline-feature.tsx} +282 -139
- package/src/__tests__/offline-support/{optimistic-update.js → optimistic-update.tsx} +154 -84
- package/src/components/Attachment/__tests__/{Attachment.test.js → Attachment.test.tsx} +12 -8
- package/src/components/Attachment/__tests__/{Gallery.test.js → Gallery.test.tsx} +10 -3
- package/src/components/Attachment/__tests__/{Giphy.test.js → Giphy.test.tsx} +48 -19
- package/src/components/Attachment/__tests__/{buildGallery.test.js → buildGallery.test.ts} +4 -2
- package/src/components/AutoCompleteInput/__tests__/{AutoCompleteInput.test.js → AutoCompleteInput.test.tsx} +21 -11
- package/src/components/Channel/__tests__/{Channel.test.js → Channel.test.tsx} +129 -89
- package/src/components/Channel/__tests__/{isAttachmentEqualHandler.test.js → isAttachmentEqualHandler.test.tsx} +25 -8
- package/src/components/Channel/__tests__/{ownCapabilities.test.js → ownCapabilities.test.tsx} +16 -12
- package/src/components/Channel/__tests__/{useMessageListPagination.test.js → useMessageListPagination.test.tsx} +105 -63
- package/src/components/ChannelList/__tests__/{ChannelList.test.js → ChannelList.test.tsx} +63 -29
- package/src/components/ChannelList/__tests__/{ChannelListView.test.js → ChannelListView.test.tsx} +30 -20
- package/src/components/ChannelList/hooks/__tests__/useChannelActionItems.test.tsx +6 -6
- package/src/components/ChannelList/hooks/__tests__/useChannelActionItemsById.test.tsx +2 -2
- package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +17 -14
- package/src/components/ChannelPreview/__tests__/ChannelDetailsBottomSheet.test.tsx +14 -4
- package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +23 -12
- package/src/components/ChannelPreview/__tests__/{ChannelPreviewView.test.js → ChannelPreviewView.test.tsx} +9 -34
- package/src/components/ChannelPreview/__tests__/ChannelSwipableWrapper.test.tsx +4 -2
- package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayPresence.test.tsx +1 -1
- package/src/components/Chat/__tests__/{Chat.test.js → Chat.test.tsx} +37 -30
- package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +10 -14
- package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +3 -3
- package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +5 -4
- package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +7 -6
- package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +9 -13
- package/src/components/Message/MessageItemView/__tests__/{Message.test.js → Message.test.tsx} +20 -11
- package/src/components/Message/MessageItemView/__tests__/{MessageAuthor.test.js → MessageAuthor.test.tsx} +10 -12
- package/src/components/Message/MessageItemView/__tests__/{MessageContent.test.js → MessageContent.test.tsx} +22 -12
- package/src/components/Message/MessageItemView/__tests__/{MessageItemView.test.js → MessageItemView.test.tsx} +11 -4
- package/src/components/Message/MessageItemView/__tests__/{MessagePinnedHeader.test.js → MessagePinnedHeader.test.tsx} +5 -3
- package/src/components/Message/MessageItemView/__tests__/{MessageReplies.test.js → MessageReplies.test.tsx} +15 -36
- package/src/components/Message/MessageItemView/__tests__/{MessageStatus.test.js → MessageStatus.test.tsx} +20 -10
- package/src/components/Message/MessageItemView/__tests__/MessageTextContainer.test.tsx +8 -8
- package/src/components/Message/MessageItemView/__tests__/{ReactionListBottom.test.js → ReactionListBottom.test.tsx} +19 -8
- package/src/components/Message/MessageItemView/__tests__/{ReactionListTop.test.js → ReactionListTop.test.tsx} +8 -4
- package/src/components/Message/MessageItemView/utils/renderText.test.tsx +2 -4
- package/src/components/Message/MessageItemView/utils/renderText.tsx +1 -1
- package/src/components/Message/hooks/__tests__/useShouldUseOverlayStyles.test.tsx +2 -2
- package/src/components/MessageInput/__tests__/{AttachButton.test.js → AttachButton.test.tsx} +14 -4
- package/src/components/MessageInput/__tests__/{AttachmentUploadPreviewList.test.js → AttachmentUploadPreviewList.test.tsx} +27 -8
- package/src/components/MessageInput/__tests__/{AudioAttachmentUploadPreview.test.js → AudioAttachmentUploadPreview.test.tsx} +18 -5
- package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +47 -15
- package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +57 -17
- package/src/components/MessageInput/__tests__/{InputButtons.test.js → InputButtons.test.tsx} +14 -4
- package/src/components/MessageInput/__tests__/{MessageComposer.test.js → MessageComposer.test.tsx} +28 -20
- package/src/components/MessageInput/__tests__/{SendButton.test.js → SendButton.test.tsx} +13 -4
- package/src/components/MessageInput/__tests__/{SendMessageDisallowedIndicator.test.js → SendMessageDisallowedIndicator.test.tsx} +47 -31
- package/src/components/MessageList/__tests__/{MessageList.test.js → MessageList.test.tsx} +31 -34
- package/src/components/MessageList/__tests__/{MessageSystem.test.js → MessageSystem.test.tsx} +13 -5
- package/src/components/MessageList/__tests__/{ScrollToBottomButton.test.js → ScrollToBottomButton.test.tsx} +8 -12
- package/src/components/MessageList/__tests__/{TypingIndicator.test.js → TypingIndicator.test.tsx} +6 -4
- package/src/components/MessageList/__tests__/useMessageList.test.tsx +2 -2
- package/src/components/MessageList/hooks/useMessageList.ts +1 -1
- package/src/components/MessageMenu/__tests__/MessageActionList.test.tsx +4 -1
- package/src/components/MessageMenu/__tests__/MessageActionListItem.test.tsx +1 -0
- package/src/components/MessageMenu/__tests__/MessageReactionPicker.test.tsx +6 -2
- package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +3 -3
- package/src/components/MessageMenu/__tests__/MessageUserReactionsAvatar.test.tsx +7 -3
- package/src/components/MessageMenu/__tests__/MessageUserReactionsItem.test.tsx +2 -1
- package/src/components/Thread/__tests__/{Thread.test.js → Thread.test.tsx} +41 -13
- package/src/components/Thread/__tests__/__snapshots__/{Thread.test.js.snap → Thread.test.tsx.snap} +0 -21
- package/src/components/UIComponents/SwipableWrapper.tsx +1 -1
- package/src/components/UIComponents/__tests__/SwipableWrapper.test.tsx +1 -1
- package/src/contexts/messageInputContext/__tests__/filePickers.test.tsx +31 -10
- package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +24 -12
- package/src/contexts/overlayContext/__tests__/MessageOverlayHostLayer.test.tsx +2 -2
- package/src/hooks/__tests__/useTranslatedMessage.test.tsx +4 -4
- package/src/mock-builders/DB/mock.ts +1 -1
- package/src/mock-builders/api/channelMocks.tsx +39 -29
- package/src/mock-builders/api/deleteMessage.ts +21 -0
- package/src/mock-builders/api/deleteReaction.ts +23 -0
- package/src/mock-builders/api/{error.js → error.ts} +13 -5
- package/src/mock-builders/api/getOrCreateChannel.ts +22 -11
- package/src/mock-builders/api/{initiateClientWithChannels.js → initiateClientWithChannels.ts} +21 -3
- package/src/mock-builders/api/{queryChannels.js → queryChannels.ts} +2 -4
- package/src/mock-builders/api/{queryMembers.js → queryMembers.ts} +29 -27
- package/src/mock-builders/api/sendMessage.ts +25 -0
- package/src/mock-builders/api/sendReaction.ts +9 -5
- package/src/mock-builders/api/threadReplies.ts +18 -0
- package/src/mock-builders/api/{useMockedApis.js → useMockedApis.ts} +5 -4
- package/src/mock-builders/api/utils.ts +16 -0
- package/src/mock-builders/{attachments.js → attachments.ts} +24 -8
- package/src/mock-builders/event/channelDeleted.ts +12 -0
- package/src/mock-builders/event/channelHidden.ts +12 -0
- package/src/mock-builders/event/channelTruncated.ts +12 -0
- package/src/mock-builders/event/channelUpdated.ts +12 -0
- package/src/mock-builders/event/channelVisible.ts +12 -0
- package/src/mock-builders/event/connectionChanged.ts +11 -0
- package/src/mock-builders/event/connectionRecovered.ts +10 -0
- package/src/mock-builders/event/memberAdded.ts +19 -0
- package/src/mock-builders/event/memberRemoved.ts +18 -0
- package/src/mock-builders/event/memberUpdated.ts +18 -0
- package/src/mock-builders/event/messageDeleted.ts +23 -0
- package/src/mock-builders/event/messageNew.ts +26 -0
- package/src/mock-builders/event/messageRead.ts +23 -0
- package/src/mock-builders/event/messageUpdated.ts +23 -0
- package/src/mock-builders/event/notificationAddedToChannel.ts +12 -0
- package/src/mock-builders/event/notificationChannelMutesUpdated.ts +12 -0
- package/src/mock-builders/event/notificationMarkRead.ts +12 -0
- package/src/mock-builders/event/notificationMarkUnread.ts +22 -0
- package/src/mock-builders/event/notificationMessageNew.ts +12 -0
- package/src/mock-builders/event/notificationMutesUpdated.ts +16 -0
- package/src/mock-builders/event/notificationRemovedFromChannel.ts +12 -0
- package/src/mock-builders/event/reactionDeleted.ts +26 -0
- package/src/mock-builders/event/reactionNew.ts +26 -0
- package/src/mock-builders/event/reactionUpdated.ts +26 -0
- package/src/mock-builders/event/typing.ts +18 -0
- package/src/mock-builders/event/userPresence.ts +13 -0
- package/src/mock-builders/event/userUpdated.ts +13 -0
- package/src/mock-builders/generator/{attachment.js → attachment.ts} +17 -13
- package/src/mock-builders/generator/channel.ts +70 -39
- package/src/mock-builders/generator/member.ts +18 -0
- package/src/mock-builders/generator/message.ts +50 -0
- package/src/mock-builders/generator/reaction.ts +15 -0
- package/src/mock-builders/generator/{user.js → user.ts} +20 -16
- package/src/mock-builders/mock.ts +79 -0
- package/src/state-store/__tests__/audio-player.test.ts +3 -1
- package/src/state-store/__tests__/image-gallery-state-store.test.ts +31 -28
- package/src/state-store/__tests__/video-player-pool.test.ts +9 -9
- package/src/store/apis/__tests__/updatePendingTask.test.ts +17 -6
- package/src/store/apis/addPendingTask.ts +2 -1
- package/src/store/apis/deleteMessage.ts +2 -1
- package/src/store/apis/upsertDraft.ts +2 -2
- package/src/store/sqlite-utils/appendOrderByClause.ts +1 -1
- package/src/store/sqlite-utils/appendWhereCluase.ts +1 -1
- package/src/store/sqlite-utils/createCreateTableQuery.ts +7 -5
- package/src/test-utils/BetterSqlite.ts +38 -0
- package/src/utils/__tests__/{Streami18n.test.js → Streami18n.test.ts} +66 -31
- package/src/utils/__tests__/getResizedImageUrl.test.ts +10 -8
- package/src/utils/__tests__/{utils.test.js → utils.test.ts} +1 -1
- package/src/version.json +1 -1
- package/src/mock-builders/api/deleteMessage.js +0 -18
- package/src/mock-builders/api/deleteReaction.js +0 -19
- package/src/mock-builders/api/sendMessage.js +0 -18
- package/src/mock-builders/api/threadReplies.js +0 -16
- package/src/mock-builders/api/utils.js +0 -7
- package/src/mock-builders/event/channelDeleted.js +0 -7
- package/src/mock-builders/event/channelHidden.js +0 -7
- package/src/mock-builders/event/channelTruncated.js +0 -7
- package/src/mock-builders/event/channelUpdated.js +0 -7
- package/src/mock-builders/event/channelVisible.js +0 -7
- package/src/mock-builders/event/connectionChanged.js +0 -6
- package/src/mock-builders/event/connectionRecovered.js +0 -5
- package/src/mock-builders/event/memberAdded.js +0 -10
- package/src/mock-builders/event/memberRemoved.js +0 -9
- package/src/mock-builders/event/memberUpdated.js +0 -9
- package/src/mock-builders/event/messageDeleted.js +0 -8
- package/src/mock-builders/event/messageNew.js +0 -11
- package/src/mock-builders/event/messageRead.js +0 -15
- package/src/mock-builders/event/messageUpdated.js +0 -8
- package/src/mock-builders/event/notificationAddedToChannel.js +0 -7
- package/src/mock-builders/event/notificationChannelMutesUpdated.js +0 -7
- package/src/mock-builders/event/notificationMarkRead.js +0 -7
- package/src/mock-builders/event/notificationMarkUnread.js +0 -12
- package/src/mock-builders/event/notificationMessageNew.js +0 -7
- package/src/mock-builders/event/notificationMutesUpdated.js +0 -11
- package/src/mock-builders/event/notificationRemovedFromChannel.js +0 -7
- package/src/mock-builders/event/reactionDeleted.js +0 -9
- package/src/mock-builders/event/reactionNew.js +0 -9
- package/src/mock-builders/event/reactionUpdated.js +0 -9
- package/src/mock-builders/event/typing.js +0 -9
- package/src/mock-builders/event/userPresence.js +0 -8
- package/src/mock-builders/event/userUpdated.js +0 -8
- package/src/mock-builders/generator/member.js +0 -13
- package/src/mock-builders/generator/message.js +0 -32
- package/src/mock-builders/generator/reaction.js +0 -12
- package/src/mock-builders/mock.js +0 -57
- package/src/test-utils/BetterSqlite.js +0 -36
- /package/src/components/Message/MessageItemView/__tests__/__snapshots__/{MessageAuthor.test.js.snap → MessageAuthor.test.tsx.snap} +0 -0
- /package/src/components/Message/MessageItemView/__tests__/__snapshots__/{MessagePinnedHeader.test.js.snap → MessagePinnedHeader.test.tsx.snap} +0 -0
- /package/src/components/MessageInput/__tests__/__snapshots__/{AttachButton.test.js.snap → AttachButton.test.tsx.snap} +0 -0
- /package/src/components/MessageInput/__tests__/__snapshots__/{SendButton.test.js.snap → SendButton.test.tsx.snap} +0 -0
- /package/src/components/MessageList/__tests__/__snapshots__/{MessageSystem.test.js.snap → MessageSystem.test.tsx.snap} +0 -0
- /package/src/components/MessageList/__tests__/__snapshots__/{ScrollToBottomButton.test.js.snap → ScrollToBottomButton.test.tsx.snap} +0 -0
- /package/src/components/MessageList/__tests__/__snapshots__/{TypingIndicator.test.js.snap → TypingIndicator.test.tsx.snap} +0 -0
|
@@ -38,7 +38,7 @@ describe('MessageList', () => {
|
|
|
38
38
|
|
|
39
39
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
40
40
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
41
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
41
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
42
42
|
await channel.watch();
|
|
43
43
|
|
|
44
44
|
const { getByText, queryAllByTestId } = render(
|
|
@@ -56,7 +56,7 @@ describe('MessageList', () => {
|
|
|
56
56
|
|
|
57
57
|
await waitFor(() => {
|
|
58
58
|
expect(queryAllByTestId('scroll-to-bottom-button')).toHaveLength(0);
|
|
59
|
-
expect(getByText(newMessage.text)).toBeTruthy();
|
|
59
|
+
expect(getByText(newMessage.text as string)).toBeTruthy();
|
|
60
60
|
});
|
|
61
61
|
}, 10000);
|
|
62
62
|
|
|
@@ -73,7 +73,7 @@ describe('MessageList', () => {
|
|
|
73
73
|
|
|
74
74
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
75
75
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
76
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
76
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
77
77
|
await channel.watch();
|
|
78
78
|
|
|
79
79
|
const { getByTestId } = render(
|
|
@@ -105,7 +105,7 @@ describe('MessageList', () => {
|
|
|
105
105
|
|
|
106
106
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
107
107
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
108
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
108
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
109
109
|
await channel.watch();
|
|
110
110
|
|
|
111
111
|
const { getByTestId, queryByTestId } = render(
|
|
@@ -133,7 +133,7 @@ describe('MessageList', () => {
|
|
|
133
133
|
|
|
134
134
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
135
135
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
136
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
136
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
137
137
|
await channel.watch();
|
|
138
138
|
|
|
139
139
|
const { getByTestId, queryAllByTestId } = render(
|
|
@@ -165,7 +165,7 @@ describe('MessageList', () => {
|
|
|
165
165
|
|
|
166
166
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
167
167
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
168
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
168
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
169
169
|
await channel.watch();
|
|
170
170
|
|
|
171
171
|
const { getByTestId } = render(
|
|
@@ -192,7 +192,7 @@ describe('MessageList', () => {
|
|
|
192
192
|
|
|
193
193
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
194
194
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
195
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
195
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
196
196
|
await channel.watch();
|
|
197
197
|
|
|
198
198
|
const { getByTestId, getByText, queryAllByTestId } = render(
|
|
@@ -216,7 +216,7 @@ describe('MessageList', () => {
|
|
|
216
216
|
it('should scroll to a message even if out of the loaded window', async () => {
|
|
217
217
|
const user1 = generateUser();
|
|
218
218
|
|
|
219
|
-
const mockedLongMessagesList = [];
|
|
219
|
+
const mockedLongMessagesList: ReturnType<typeof generateMessage>[] = [];
|
|
220
220
|
// we need a long enough list to make sure elements aren't preloaded by the underlying FlatList
|
|
221
221
|
for (let i = 0; i <= 150; i += 1) {
|
|
222
222
|
mockedLongMessagesList.push(generateMessage({ timestamp: new Date(), user: user1 }));
|
|
@@ -233,7 +233,7 @@ describe('MessageList', () => {
|
|
|
233
233
|
|
|
234
234
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
235
235
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
236
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
236
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
237
237
|
await channel.watch();
|
|
238
238
|
|
|
239
239
|
render(
|
|
@@ -247,8 +247,8 @@ describe('MessageList', () => {
|
|
|
247
247
|
);
|
|
248
248
|
|
|
249
249
|
await waitFor(() => {
|
|
250
|
-
expect(screen.getByText(targetedMessageText)).toBeOnTheScreen();
|
|
251
|
-
expect(() => screen.getByText(latestMessageText)).toThrow();
|
|
250
|
+
expect(screen.getByText(targetedMessageText as string)).toBeOnTheScreen();
|
|
251
|
+
expect(() => screen.getByText(latestMessageText as string)).toThrow();
|
|
252
252
|
});
|
|
253
253
|
});
|
|
254
254
|
|
|
@@ -271,7 +271,7 @@ describe('MessageList', () => {
|
|
|
271
271
|
|
|
272
272
|
const chatClient = await getTestClientWithUser({ id: user1.id });
|
|
273
273
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
274
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
274
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
275
275
|
await channel.watch();
|
|
276
276
|
|
|
277
277
|
channel.state = {
|
|
@@ -279,7 +279,7 @@ describe('MessageList', () => {
|
|
|
279
279
|
latestMessages: [],
|
|
280
280
|
messages,
|
|
281
281
|
read: read_data,
|
|
282
|
-
};
|
|
282
|
+
} as unknown as typeof channel.state;
|
|
283
283
|
|
|
284
284
|
const { queryByLabelText } = render(
|
|
285
285
|
<OverlayProvider>
|
|
@@ -308,25 +308,20 @@ describe('MessageList', () => {
|
|
|
308
308
|
|
|
309
309
|
const chatClient = await getTestClientWithUser({ id: user1.id });
|
|
310
310
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
311
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
311
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
312
312
|
await channel.watch();
|
|
313
313
|
|
|
314
|
-
const channelUnreadState = {
|
|
315
|
-
last_read: new Date(),
|
|
316
|
-
unread_messages: 0,
|
|
317
|
-
};
|
|
318
|
-
|
|
319
314
|
channel.state = {
|
|
320
315
|
...channelInitialState,
|
|
321
316
|
latestMessages: [],
|
|
322
317
|
messages,
|
|
323
|
-
};
|
|
318
|
+
} as unknown as typeof channel.state;
|
|
324
319
|
|
|
325
320
|
const { queryByLabelText } = render(
|
|
326
321
|
<OverlayProvider>
|
|
327
322
|
<Chat client={chatClient}>
|
|
328
323
|
<Channel channel={channel}>
|
|
329
|
-
<MessageList
|
|
324
|
+
<MessageList />
|
|
330
325
|
</Channel>
|
|
331
326
|
</Chat>
|
|
332
327
|
</OverlayProvider>,
|
|
@@ -345,7 +340,7 @@ describe('MessageList', () => {
|
|
|
345
340
|
|
|
346
341
|
const chatClient = await getTestClientWithUser({ id: user.id });
|
|
347
342
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
348
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
343
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
349
344
|
await channel.watch();
|
|
350
345
|
|
|
351
346
|
const user2 = generateUser();
|
|
@@ -382,7 +377,7 @@ describe('MessageList', () => {
|
|
|
382
377
|
|
|
383
378
|
const chatClient = await getTestClientWithUser({ id: user.id });
|
|
384
379
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
385
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
380
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
386
381
|
await channel.watch();
|
|
387
382
|
|
|
388
383
|
const targetedMessage = messages[15].id;
|
|
@@ -391,7 +386,7 @@ describe('MessageList', () => {
|
|
|
391
386
|
...channelInitialState,
|
|
392
387
|
latestMessages: [],
|
|
393
388
|
messages,
|
|
394
|
-
};
|
|
389
|
+
} as unknown as typeof channel.state;
|
|
395
390
|
|
|
396
391
|
const flatListRefMock = jest
|
|
397
392
|
.spyOn(FlatList.prototype, 'scrollToIndex')
|
|
@@ -428,17 +423,17 @@ describe('MessageList', () => {
|
|
|
428
423
|
|
|
429
424
|
const chatClient = await getTestClientWithUser({ id: user.id });
|
|
430
425
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
431
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
426
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
432
427
|
await channel.watch();
|
|
433
428
|
|
|
434
|
-
const targetedMessage = 21;
|
|
429
|
+
const targetedMessage = '21';
|
|
435
430
|
const setTargetedMessage = jest.fn();
|
|
436
431
|
|
|
437
432
|
channel.state = {
|
|
438
433
|
...channelInitialState,
|
|
439
434
|
latestMessages: [],
|
|
440
435
|
messages,
|
|
441
|
-
};
|
|
436
|
+
} as unknown as typeof channel.state;
|
|
442
437
|
|
|
443
438
|
const loadChannelAroundMessage = jest.fn(() => Promise.resolve());
|
|
444
439
|
|
|
@@ -471,7 +466,9 @@ describe('MessageList pagination', () => {
|
|
|
471
466
|
jest.clearAllMocks();
|
|
472
467
|
});
|
|
473
468
|
|
|
474
|
-
const mockedHook = (
|
|
469
|
+
const mockedHook = (
|
|
470
|
+
values: Partial<ReturnType<typeof MessageListPaginationHook.useMessageListPagination>>,
|
|
471
|
+
) => {
|
|
475
472
|
const messages = Array.from({ length: 100 }, (_, i) =>
|
|
476
473
|
generateMessage({ text: `message-${i}` }),
|
|
477
474
|
);
|
|
@@ -499,7 +496,7 @@ describe('MessageList pagination', () => {
|
|
|
499
496
|
|
|
500
497
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
501
498
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
502
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
499
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
503
500
|
await channel.watch();
|
|
504
501
|
|
|
505
502
|
const loadMoreRecent = jest.fn(() => Promise.resolve());
|
|
@@ -541,7 +538,7 @@ describe('MessageList pagination', () => {
|
|
|
541
538
|
|
|
542
539
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
543
540
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
544
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
541
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
545
542
|
await channel.watch();
|
|
546
543
|
|
|
547
544
|
const loadMore = jest.fn(() => Promise.resolve());
|
|
@@ -586,18 +583,18 @@ describe('MessageList pagination', () => {
|
|
|
586
583
|
|
|
587
584
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
588
585
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
589
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
586
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
590
587
|
await channel.watch();
|
|
591
588
|
|
|
592
589
|
channel.state = {
|
|
593
590
|
...channelInitialState,
|
|
594
591
|
latestMessages: [],
|
|
595
592
|
members: Object.fromEntries(
|
|
596
|
-
Array.from({ length: 10 }, (_, i) => [i, generateMember({
|
|
593
|
+
Array.from({ length: 10 }, (_, i) => [i, generateMember({ user_id: String(i) })]),
|
|
597
594
|
),
|
|
598
|
-
messages: Array.from({ length: 10 }, (_, i) => generateMessage({ id: i })),
|
|
595
|
+
messages: Array.from({ length: 10 }, (_, i) => generateMessage({ id: String(i) })),
|
|
599
596
|
messageSets: [{ isCurrent: true, isLatest: true }],
|
|
600
|
-
};
|
|
597
|
+
} as unknown as typeof channel.state;
|
|
601
598
|
|
|
602
599
|
const loadLatestMessages = jest.fn(() => Promise.resolve());
|
|
603
600
|
mockedHook({ loadLatestMessages });
|
package/src/components/MessageList/__tests__/{MessageSystem.test.js → MessageSystem.test.tsx}
RENAMED
|
@@ -13,7 +13,7 @@ import { MessageSystem } from '../MessageSystem';
|
|
|
13
13
|
|
|
14
14
|
afterEach(cleanup);
|
|
15
15
|
|
|
16
|
-
let i18nInstance;
|
|
16
|
+
let i18nInstance: Streami18n;
|
|
17
17
|
|
|
18
18
|
describe('MessageSystem', () => {
|
|
19
19
|
beforeAll(() => {
|
|
@@ -25,8 +25,12 @@ describe('MessageSystem', () => {
|
|
|
25
25
|
const translators = await i18nInstance.getTranslators();
|
|
26
26
|
const message = generateMessage();
|
|
27
27
|
const { queryByTestId } = render(
|
|
28
|
-
<ThemeProvider
|
|
29
|
-
<
|
|
28
|
+
<ThemeProvider
|
|
29
|
+
style={defaultTheme as unknown as Parameters<typeof ThemeProvider>[0]['style']}
|
|
30
|
+
>
|
|
31
|
+
<TranslationProvider
|
|
32
|
+
value={translators as unknown as Parameters<typeof TranslationProvider>[0]['value']}
|
|
33
|
+
>
|
|
30
34
|
<MessageSystem message={message} />
|
|
31
35
|
</TranslationProvider>
|
|
32
36
|
</ThemeProvider>,
|
|
@@ -42,8 +46,12 @@ describe('MessageSystem', () => {
|
|
|
42
46
|
const user = generateStaticUser(0);
|
|
43
47
|
const message = generateStaticMessage('Hello World', { user });
|
|
44
48
|
render(
|
|
45
|
-
<ThemeProvider
|
|
46
|
-
<
|
|
49
|
+
<ThemeProvider
|
|
50
|
+
style={defaultTheme as unknown as Parameters<typeof ThemeProvider>[0]['style']}
|
|
51
|
+
>
|
|
52
|
+
<TranslationProvider
|
|
53
|
+
value={translators as unknown as Parameters<typeof TranslationProvider>[0]['value']}
|
|
54
|
+
>
|
|
47
55
|
<MessageSystem message={message} />
|
|
48
56
|
</TranslationProvider>
|
|
49
57
|
</ThemeProvider>,
|
|
@@ -3,6 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import { cleanup, fireEvent, render, waitFor } from '@testing-library/react-native';
|
|
4
4
|
|
|
5
5
|
import { ThemeProvider } from '../../../contexts/themeContext/ThemeContext';
|
|
6
|
+
import type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';
|
|
6
7
|
import { TranslationProvider } from '../../../contexts/translationContext/TranslationContext';
|
|
7
8
|
import { Streami18n } from '../../../utils/i18n/Streami18n';
|
|
8
9
|
import { ScrollToBottomButton } from '../ScrollToBottomButton';
|
|
@@ -20,7 +21,7 @@ describe('ScrollToBottomButton', () => {
|
|
|
20
21
|
const translators = await i18nInstance.getTranslators();
|
|
21
22
|
const { queryByTestId } = render(
|
|
22
23
|
<ThemeProvider>
|
|
23
|
-
<TranslationProvider value={translators}>
|
|
24
|
+
<TranslationProvider value={translators as TranslationContextValue}>
|
|
24
25
|
<ScrollToBottomButton onPress={() => null} showNotification={false} />
|
|
25
26
|
</TranslationProvider>
|
|
26
27
|
</ThemeProvider>,
|
|
@@ -36,7 +37,7 @@ describe('ScrollToBottomButton', () => {
|
|
|
36
37
|
const translators = await i18nInstance.getTranslators();
|
|
37
38
|
const { queryByTestId } = render(
|
|
38
39
|
<ThemeProvider>
|
|
39
|
-
<TranslationProvider value={translators}>
|
|
40
|
+
<TranslationProvider value={translators as TranslationContextValue}>
|
|
40
41
|
<ScrollToBottomButton onPress={() => null} showNotification={true} />
|
|
41
42
|
</TranslationProvider>
|
|
42
43
|
</ThemeProvider>,
|
|
@@ -53,7 +54,7 @@ describe('ScrollToBottomButton', () => {
|
|
|
53
54
|
const onPress = jest.fn();
|
|
54
55
|
const { getByTestId } = render(
|
|
55
56
|
<ThemeProvider>
|
|
56
|
-
<TranslationProvider value={translators}>
|
|
57
|
+
<TranslationProvider value={translators as TranslationContextValue}>
|
|
57
58
|
<ScrollToBottomButton onPress={onPress} showNotification={true} />
|
|
58
59
|
</TranslationProvider>
|
|
59
60
|
</ThemeProvider>,
|
|
@@ -63,18 +64,13 @@ describe('ScrollToBottomButton', () => {
|
|
|
63
64
|
});
|
|
64
65
|
|
|
65
66
|
it('should display the unread count', async () => {
|
|
66
|
-
const t = jest.fn((key) => key);
|
|
67
|
+
const t = jest.fn((key: string) => key);
|
|
67
68
|
const i18nInstance = new Streami18n();
|
|
68
69
|
const translators = await i18nInstance.getTranslators();
|
|
69
70
|
const { getByTestId, getByText } = render(
|
|
70
71
|
<ThemeProvider>
|
|
71
|
-
<TranslationProvider value={{ ...translators, t }}>
|
|
72
|
-
<ScrollToBottomButton
|
|
73
|
-
onPress={() => null}
|
|
74
|
-
showNotification={true}
|
|
75
|
-
t={t}
|
|
76
|
-
unreadCount={3}
|
|
77
|
-
/>
|
|
72
|
+
<TranslationProvider value={{ ...translators, t } as unknown as TranslationContextValue}>
|
|
73
|
+
<ScrollToBottomButton onPress={() => null} showNotification={true} unreadCount={3} />
|
|
78
74
|
</TranslationProvider>
|
|
79
75
|
</ThemeProvider>,
|
|
80
76
|
);
|
|
@@ -89,7 +85,7 @@ describe('ScrollToBottomButton', () => {
|
|
|
89
85
|
const translators = await i18nInstance.getTranslators();
|
|
90
86
|
const { toJSON } = render(
|
|
91
87
|
<ThemeProvider>
|
|
92
|
-
<TranslationProvider value={translators}>
|
|
88
|
+
<TranslationProvider value={translators as TranslationContextValue}>
|
|
93
89
|
<ScrollToBottomButton onPress={() => null} showNotification={true} />
|
|
94
90
|
</TranslationProvider>
|
|
95
91
|
</ThemeProvider>,
|
package/src/components/MessageList/__tests__/{TypingIndicator.test.js → TypingIndicator.test.tsx}
RENAMED
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
|
|
3
3
|
import { cleanup, render, waitFor } from '@testing-library/react-native';
|
|
4
4
|
|
|
5
|
+
import type { Event, StreamChat } from 'stream-chat';
|
|
6
|
+
|
|
5
7
|
import { TypingProvider } from '../../../contexts/typingContext/TypingContext';
|
|
6
8
|
|
|
7
9
|
import { generateStaticUser, generateUser } from '../../../mock-builders/generator/user';
|
|
@@ -12,7 +14,7 @@ import { TypingIndicator } from '../TypingIndicator';
|
|
|
12
14
|
afterEach(cleanup);
|
|
13
15
|
|
|
14
16
|
describe('TypingIndicator', () => {
|
|
15
|
-
let chatClient;
|
|
17
|
+
let chatClient: StreamChat;
|
|
16
18
|
|
|
17
19
|
it('should render typing indicator for two users', async () => {
|
|
18
20
|
const user0 = generateUser();
|
|
@@ -25,7 +27,7 @@ describe('TypingIndicator', () => {
|
|
|
25
27
|
|
|
26
28
|
const { getAllByTestId, getByTestId } = render(
|
|
27
29
|
<Chat client={chatClient}>
|
|
28
|
-
<TypingProvider value={{ typing }}>
|
|
30
|
+
<TypingProvider value={{ typing: typing as unknown as Record<string, Event> }}>
|
|
29
31
|
<TypingIndicator />
|
|
30
32
|
</TypingProvider>
|
|
31
33
|
</Chat>,
|
|
@@ -46,7 +48,7 @@ describe('TypingIndicator', () => {
|
|
|
46
48
|
|
|
47
49
|
const { getAllByTestId, getByTestId } = render(
|
|
48
50
|
<Chat client={chatClient}>
|
|
49
|
-
<TypingProvider value={{ typing }}>
|
|
51
|
+
<TypingProvider value={{ typing: typing as unknown as Record<string, Event> }}>
|
|
50
52
|
<TypingIndicator />
|
|
51
53
|
</TypingProvider>
|
|
52
54
|
</Chat>,
|
|
@@ -68,7 +70,7 @@ describe('TypingIndicator', () => {
|
|
|
68
70
|
|
|
69
71
|
const { toJSON } = render(
|
|
70
72
|
<Chat client={chatClient}>
|
|
71
|
-
<TypingProvider value={{ typing }}>
|
|
73
|
+
<TypingProvider value={{ typing: typing as unknown as Record<string, Event> }}>
|
|
72
74
|
<TypingIndicator />
|
|
73
75
|
</TypingProvider>
|
|
74
76
|
</Chat>,
|
|
@@ -27,7 +27,7 @@ beforeEach(async () => {
|
|
|
27
27
|
|
|
28
28
|
const messages = new Array(10)
|
|
29
29
|
.fill(undefined)
|
|
30
|
-
.map((_: undefined, id: number) => generateMessage({ id }));
|
|
30
|
+
.map((_: undefined, id: number) => generateMessage({ id: String(id) }));
|
|
31
31
|
|
|
32
32
|
const Providers: FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
33
33
|
const messageListContext = useCreatePaginatedMessageListContext({
|
|
@@ -57,7 +57,7 @@ describe('useMessageList', () => {
|
|
|
57
57
|
useMessageList({
|
|
58
58
|
noGroupByUser: true,
|
|
59
59
|
threadList: false,
|
|
60
|
-
}),
|
|
60
|
+
} as unknown as Parameters<typeof useMessageList>[0]),
|
|
61
61
|
{ wrapper: Providers },
|
|
62
62
|
);
|
|
63
63
|
const reversedMessages = messages.reverse();
|
|
@@ -29,7 +29,7 @@ export const useMessageList = (params: UseMessageListParams) => {
|
|
|
29
29
|
const messageList = threadList ? threadMessages : messages;
|
|
30
30
|
|
|
31
31
|
const processedMessageList = useMemo<LocalMessage[]>(() => {
|
|
32
|
-
const newMessageList = [];
|
|
32
|
+
const newMessageList: LocalMessage[] = [];
|
|
33
33
|
for (const message of messageList) {
|
|
34
34
|
if (isFlashList) {
|
|
35
35
|
newMessageList.push(message);
|
|
@@ -9,11 +9,14 @@ import { render } from '@testing-library/react-native';
|
|
|
9
9
|
import { ThemeProvider } from '../../../contexts/themeContext/ThemeContext';
|
|
10
10
|
import { defaultTheme } from '../../../contexts/themeContext/utils/theme';
|
|
11
11
|
import { MessageActionList } from '../MessageActionList';
|
|
12
|
+
import type { MessageActionListProps } from '../MessageActionList';
|
|
12
13
|
import { MessageActionListItemProps } from '../MessageActionListItem';
|
|
13
14
|
|
|
14
15
|
const MockMessageActionListItem = (props: MessageActionListItemProps) => <Text>{props.title}</Text>;
|
|
15
16
|
|
|
16
|
-
const defaultProps
|
|
17
|
+
const defaultProps: MessageActionListProps & {
|
|
18
|
+
MessageActionListItem: typeof MockMessageActionListItem;
|
|
19
|
+
} = {
|
|
17
20
|
MessageActionListItem: MockMessageActionListItem,
|
|
18
21
|
messageActions: [
|
|
19
22
|
{ action: jest.fn(), actionType: 'copyMessage', type: 'standard', title: 'Copy Message' },
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
import { fireEvent, render, cleanup, waitFor } from '@testing-library/react-native';
|
|
4
|
+
import type { StreamChat } from 'stream-chat';
|
|
4
5
|
|
|
5
6
|
import {
|
|
6
7
|
MessageContextValue,
|
|
@@ -39,8 +40,11 @@ const defaultProps = {
|
|
|
39
40
|
};
|
|
40
41
|
|
|
41
42
|
describe('MessageReactionPicker', () => {
|
|
42
|
-
let client;
|
|
43
|
-
let renderComponent
|
|
43
|
+
let client: StreamChat;
|
|
44
|
+
let renderComponent: (
|
|
45
|
+
props?: Partial<React.ComponentProps<typeof MessageReactionPicker>>,
|
|
46
|
+
ownCapabilities?: Partial<OwnCapabilitiesContextValue>,
|
|
47
|
+
) => ReturnType<typeof render>;
|
|
44
48
|
|
|
45
49
|
beforeEach(async () => {
|
|
46
50
|
client = await getTestClientWithUser({ id: 'reaction-test-user' });
|
|
@@ -4,7 +4,7 @@ import { Text } from 'react-native';
|
|
|
4
4
|
|
|
5
5
|
import { fireEvent, render } from '@testing-library/react-native';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { ReactionResponse } from 'stream-chat';
|
|
8
8
|
|
|
9
9
|
import { WithComponents } from '../../../contexts/componentsContext/ComponentsContext';
|
|
10
10
|
import {
|
|
@@ -35,7 +35,7 @@ const defaultProps = {
|
|
|
35
35
|
message: {
|
|
36
36
|
...generateMessage(),
|
|
37
37
|
reaction_groups: { like: { count: 1, sum_scores: 1 }, love: { count: 1, sum_scores: 1 } },
|
|
38
|
-
}
|
|
38
|
+
},
|
|
39
39
|
supportedReactions: mockSupportedReactions,
|
|
40
40
|
};
|
|
41
41
|
|
|
@@ -51,7 +51,7 @@ const renderComponent = (props = {}) =>
|
|
|
51
51
|
),
|
|
52
52
|
}}
|
|
53
53
|
>
|
|
54
|
-
<MessagesProvider value={{} as
|
|
54
|
+
<MessagesProvider value={{} as MessagesContextValue}>
|
|
55
55
|
<MessageUserReactions {...defaultProps} {...props} />
|
|
56
56
|
</MessagesProvider>
|
|
57
57
|
</WithComponents>
|
|
@@ -2,6 +2,10 @@ import React from 'react';
|
|
|
2
2
|
|
|
3
3
|
import { render } from '@testing-library/react-native';
|
|
4
4
|
|
|
5
|
+
import type { StreamChat } from 'stream-chat';
|
|
6
|
+
|
|
7
|
+
import type { DeepPartial } from '../../../contexts/themeContext/ThemeContext';
|
|
8
|
+
import type { Theme } from '../../../contexts/themeContext/utils/theme';
|
|
5
9
|
import { defaultTheme } from '../../../contexts/themeContext/utils/theme';
|
|
6
10
|
import { getTestClientWithUser } from '../../../mock-builders/mock';
|
|
7
11
|
import { Chat } from '../../Chat/Chat';
|
|
@@ -9,7 +13,7 @@ import { MessageUserReactionsAvatar } from '../MessageUserReactionsAvatar';
|
|
|
9
13
|
|
|
10
14
|
describe('MessageUserReactionsAvatar', () => {
|
|
11
15
|
const reaction = { id: 'test-user', image: 'image-url', name: 'Test User', type: 'like' }; // Mock reaction data
|
|
12
|
-
let chatClient;
|
|
16
|
+
let chatClient: StreamChat;
|
|
13
17
|
|
|
14
18
|
beforeEach(async () => {
|
|
15
19
|
chatClient = await getTestClientWithUser({ id: 'me' });
|
|
@@ -17,7 +21,7 @@ describe('MessageUserReactionsAvatar', () => {
|
|
|
17
21
|
|
|
18
22
|
it('should render Avatar with correct image, name, and default size', () => {
|
|
19
23
|
const { queryByTestId } = render(
|
|
20
|
-
<Chat client={chatClient} style={defaultTheme}>
|
|
24
|
+
<Chat client={chatClient} style={defaultTheme as DeepPartial<Theme>}>
|
|
21
25
|
<MessageUserReactionsAvatar reaction={reaction} />
|
|
22
26
|
</Chat>,
|
|
23
27
|
);
|
|
@@ -28,7 +32,7 @@ describe('MessageUserReactionsAvatar', () => {
|
|
|
28
32
|
|
|
29
33
|
it('should render Avatar with correct image, name, and custom size', () => {
|
|
30
34
|
const { queryByTestId } = render(
|
|
31
|
-
<Chat client={chatClient} style={defaultTheme}>
|
|
35
|
+
<Chat client={chatClient} style={defaultTheme as DeepPartial<Theme>}>
|
|
32
36
|
<MessageUserReactionsAvatar reaction={reaction} size={'lg'} />
|
|
33
37
|
</Chat>,
|
|
34
38
|
);
|
|
@@ -38,7 +38,8 @@ const renderComponent = async (props = {}, clientUserID = 'user2') =>
|
|
|
38
38
|
>
|
|
39
39
|
<ThemeProvider theme={defaultTheme}>
|
|
40
40
|
<MessageUserReactionsItem
|
|
41
|
-
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
|
+
{...({ MessageUserReactionsAvatar: MockOverlayReactionsAvatar } as any)}
|
|
42
43
|
reaction={mockReaction}
|
|
43
44
|
supportedReactions={mockSupportedReactions}
|
|
44
45
|
{...props}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
import { act, cleanup, render, screen, waitFor } from '@testing-library/react-native';
|
|
4
|
+
import type { Channel as ChannelType, LocalMessage, StreamChat } from 'stream-chat';
|
|
4
5
|
import { v5 as uuidv5 } from 'uuid';
|
|
5
6
|
|
|
6
7
|
import { AttachmentPickerProvider } from '../../../contexts/attachmentPickerContext/AttachmentPickerContext';
|
|
@@ -23,11 +24,21 @@ import { Thread } from '../Thread';
|
|
|
23
24
|
|
|
24
25
|
const StreamReactNativeNamespace = '9b244ee4-7d69-4d7b-ae23-cf89e9f7b035';
|
|
25
26
|
|
|
26
|
-
const renderComponent = ({
|
|
27
|
+
const renderComponent = ({
|
|
28
|
+
chatClient,
|
|
29
|
+
channel,
|
|
30
|
+
props,
|
|
31
|
+
thread,
|
|
32
|
+
}: {
|
|
33
|
+
channel: ChannelType;
|
|
34
|
+
chatClient: StreamChat;
|
|
35
|
+
props?: Partial<React.ComponentProps<typeof Thread>>;
|
|
36
|
+
thread: LocalMessage;
|
|
37
|
+
}) => {
|
|
27
38
|
return render(
|
|
28
39
|
<OverlayProvider>
|
|
29
40
|
<Chat client={chatClient}>
|
|
30
|
-
<Channel channel={channel}
|
|
41
|
+
<Channel channel={channel} thread={thread} threadList>
|
|
31
42
|
<Thread {...props} />
|
|
32
43
|
</Channel>
|
|
33
44
|
</Chat>
|
|
@@ -36,8 +47,8 @@ const renderComponent = ({ chatClient, channel, props, thread }) => {
|
|
|
36
47
|
};
|
|
37
48
|
|
|
38
49
|
describe('Thread', () => {
|
|
39
|
-
let chatClient;
|
|
40
|
-
let channel;
|
|
50
|
+
let chatClient: StreamChat;
|
|
51
|
+
let channel: ChannelType;
|
|
41
52
|
|
|
42
53
|
beforeEach(async () => {
|
|
43
54
|
const { client: client, channels } = await initiateClientWithChannels();
|
|
@@ -64,7 +75,9 @@ describe('Thread', () => {
|
|
|
64
75
|
generateMessage({ cid, parent_id }),
|
|
65
76
|
];
|
|
66
77
|
|
|
67
|
-
channel.state.addMessagesSorted(
|
|
78
|
+
channel.state.addMessagesSorted(
|
|
79
|
+
threadResponses as unknown as Parameters<typeof channel.state.addMessagesSorted>[0],
|
|
80
|
+
);
|
|
68
81
|
|
|
69
82
|
renderComponent({ channel, chatClient, props, thread });
|
|
70
83
|
|
|
@@ -122,19 +135,30 @@ describe('Thread', () => {
|
|
|
122
135
|
|
|
123
136
|
const chatClient = await getTestClientWithUser({ id: 'testID2' });
|
|
124
137
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
125
|
-
const channel = chatClient.channel('messaging', mockedChannel.id);
|
|
138
|
+
const channel = chatClient.channel('messaging', mockedChannel.channel.id);
|
|
126
139
|
await channel.query();
|
|
127
140
|
|
|
128
|
-
channel.state.addMessagesSorted(
|
|
141
|
+
channel.state.addMessagesSorted(
|
|
142
|
+
threadResponses as unknown as Parameters<typeof channel.state.addMessagesSorted>[0],
|
|
143
|
+
);
|
|
129
144
|
|
|
130
|
-
let setLastRead;
|
|
145
|
+
let setLastRead: ((date?: Date) => void) | undefined;
|
|
131
146
|
|
|
132
147
|
const { getByText, toJSON } = render(
|
|
133
148
|
<ChannelsStateProvider>
|
|
134
149
|
<Chat client={chatClient} i18nInstance={i18nInstance}>
|
|
135
|
-
<AttachmentPickerProvider
|
|
136
|
-
|
|
137
|
-
|
|
150
|
+
<AttachmentPickerProvider
|
|
151
|
+
value={
|
|
152
|
+
{
|
|
153
|
+
closePicker: jest.fn(),
|
|
154
|
+
openPicker: jest.fn(),
|
|
155
|
+
} as unknown as React.ComponentProps<typeof AttachmentPickerProvider>['value']
|
|
156
|
+
}
|
|
157
|
+
>
|
|
158
|
+
<ImageGalleryProvider
|
|
159
|
+
value={{} as React.ComponentProps<typeof ImageGalleryProvider>['value']}
|
|
160
|
+
>
|
|
161
|
+
<Channel channel={channel} thread={thread} threadList>
|
|
138
162
|
<ChannelContext.Consumer>
|
|
139
163
|
{(c) => {
|
|
140
164
|
setLastRead = c.setLastRead;
|
|
@@ -154,9 +178,13 @@ describe('Thread', () => {
|
|
|
154
178
|
expect(getByText('Message6')).toBeTruthy();
|
|
155
179
|
});
|
|
156
180
|
|
|
157
|
-
act(() => setLastRead(new Date('2020-08-17T18:08:03.196Z')));
|
|
181
|
+
act(() => setLastRead!(new Date('2020-08-17T18:08:03.196Z')));
|
|
158
182
|
|
|
159
|
-
const snapshot = toJSON()
|
|
183
|
+
const snapshot = toJSON() as unknown as {
|
|
184
|
+
children: Array<{
|
|
185
|
+
children: Array<{ children: Array<{ props: { ListFooterComponent: unknown } }> }>;
|
|
186
|
+
}>;
|
|
187
|
+
};
|
|
160
188
|
snapshot.children[0].children[0].children[0].props.ListFooterComponent = null;
|
|
161
189
|
|
|
162
190
|
await waitFor(() => {
|