stream-chat-react-native-core 9.0.1 → 9.0.2-beta.2
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/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +6 -2
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +1 -1
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +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/MessageInput/components/AttachmentPreview/AttachmentUploadProgressIndicator.js +8 -3
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadProgressIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/components/Poll/CreatePollContent.js +3 -3
- package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
- package/lib/commonjs/i18n/en.json +8 -0
- package/lib/commonjs/i18n/es.json +8 -0
- package/lib/commonjs/i18n/fr.json +8 -0
- package/lib/commonjs/i18n/he.json +8 -0
- package/lib/commonjs/i18n/hi.json +8 -0
- package/lib/commonjs/i18n/it.json +8 -0
- package/lib/commonjs/i18n/ja.json +8 -0
- package/lib/commonjs/i18n/ko.json +8 -0
- package/lib/commonjs/i18n/nl.json +8 -0
- package/lib/commonjs/i18n/pt-br.json +8 -0
- package/lib/commonjs/i18n/ru.json +8 -0
- package/lib/commonjs/i18n/tr.json +8 -0
- 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/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +6 -2
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/Indicators/EmptyStateIndicator.js +1 -1
- package/lib/module/components/Indicators/EmptyStateIndicator.js.map +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/MessageInput/components/AttachmentPreview/AttachmentUploadProgressIndicator.js +8 -3
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadProgressIndicator.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/components/Poll/CreatePollContent.js +3 -3
- package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
- package/lib/module/i18n/en.json +8 -0
- package/lib/module/i18n/es.json +8 -0
- package/lib/module/i18n/fr.json +8 -0
- package/lib/module/i18n/he.json +8 -0
- package/lib/module/i18n/hi.json +8 -0
- package/lib/module/i18n/it.json +8 -0
- package/lib/module/i18n/ja.json +8 -0
- package/lib/module/i18n/ko.json +8 -0
- package/lib/module/i18n/nl.json +8 -0
- package/lib/module/i18n/pt-br.json +8 -0
- package/lib/module/i18n/ru.json +8 -0
- package/lib/module/i18n/tr.json +8 -0
- 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/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.d.ts.map +1 -1
- package/lib/typescript/components/Indicators/EmptyStateIndicator.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadProgressIndicator.d.ts.map +1 -1
- package/lib/typescript/components/Poll/CreatePollContent.d.ts.map +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/i18n/en.json +8 -0
- package/lib/typescript/i18n/es.json +8 -0
- package/lib/typescript/i18n/fr.json +8 -0
- package/lib/typescript/i18n/he.json +8 -0
- package/lib/typescript/i18n/hi.json +8 -0
- package/lib/typescript/i18n/it.json +8 -0
- package/lib/typescript/i18n/ja.json +8 -0
- package/lib/typescript/i18n/ko.json +8 -0
- package/lib/typescript/i18n/nl.json +8 -0
- package/lib/typescript/i18n/pt-br.json +8 -0
- package/lib/typescript/i18n/ru.json +8 -0
- package/lib/typescript/i18n/tr.json +8 -0
- 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/lib/typescript/utils/i18n/Streami18n.d.ts +8 -0
- package/lib/typescript/utils/i18n/Streami18n.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/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +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/Indicators/EmptyStateIndicator.tsx +3 -1
- 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/MessageInput/components/AttachmentPreview/AttachmentUploadProgressIndicator.tsx +8 -3
- 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/Poll/CreatePollContent.tsx +5 -3
- 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/i18n/en.json +8 -0
- package/src/i18n/es.json +8 -0
- package/src/i18n/fr.json +8 -0
- package/src/i18n/he.json +8 -0
- package/src/i18n/hi.json +8 -0
- package/src/i18n/it.json +8 -0
- package/src/i18n/ja.json +8 -0
- package/src/i18n/ko.json +8 -0
- package/src/i18n/nl.json +8 -0
- package/src/i18n/pt-br.json +8 -0
- package/src/i18n/ru.json +8 -0
- package/src/i18n/tr.json +8 -0
- 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
|
@@ -3,9 +3,18 @@ import { View } from 'react-native';
|
|
|
3
3
|
|
|
4
4
|
import { act, cleanup, render, screen, waitFor } from '@testing-library/react-native';
|
|
5
5
|
|
|
6
|
+
import type {
|
|
7
|
+
Channel as ChannelLLC,
|
|
8
|
+
ChannelAPIResponse,
|
|
9
|
+
ChannelMemberResponse,
|
|
10
|
+
LocalMessage,
|
|
11
|
+
ReactionResponse,
|
|
12
|
+
StreamChat,
|
|
13
|
+
UserResponse,
|
|
14
|
+
} from 'stream-chat';
|
|
6
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
7
16
|
|
|
8
|
-
import { Channel } from '../../components/Channel/Channel';
|
|
17
|
+
import { Channel as ChannelRaw } from '../../components/Channel/Channel';
|
|
9
18
|
import { Chat } from '../../components/Chat/Chat';
|
|
10
19
|
import { MessageInputContext, MessagesContext } from '../../contexts';
|
|
11
20
|
import { deleteMessageApi } from '../../mock-builders/api/deleteMessage';
|
|
@@ -28,27 +37,64 @@ import { SqliteClient } from '../../store/SqliteClient';
|
|
|
28
37
|
import { BetterSqlite } from '../../test-utils/BetterSqlite';
|
|
29
38
|
import { MessageStatusTypes } from '../../utils/utils';
|
|
30
39
|
|
|
40
|
+
// `initialValue` is not part of Channel's props today, but these legacy tests pass it to
|
|
41
|
+
// mimic a pre-populated input. Keep the runtime behavior unchanged and widen the prop type
|
|
42
|
+
// at the component boundary so TS stops complaining.
|
|
43
|
+
const Channel = ChannelRaw as unknown as React.ComponentType<
|
|
44
|
+
React.ComponentProps<typeof ChannelRaw> & { initialValue?: string }
|
|
45
|
+
>;
|
|
46
|
+
|
|
47
|
+
// Tests reach into internal / private StreamChat + LLC Channel APIs (sync manager, legacy
|
|
48
|
+
// `wsConnection`, `_deleteMessage`, `_sendReaction`, `_sendMessage`). Helpers narrow at the
|
|
49
|
+
// call sites without sprinkling `any` everywhere.
|
|
50
|
+
type TestPendingTask = { id: number; type: string; payload: unknown };
|
|
51
|
+
type TestSyncManager = {
|
|
52
|
+
invokeSyncStatusListeners: (recovered: boolean) => Promise<void>;
|
|
53
|
+
};
|
|
54
|
+
// Intentionally not intersected with the real `StreamChat['offlineDb']` — the
|
|
55
|
+
// real `syncManager` member is a class with `invokeSyncStatusListeners` marked
|
|
56
|
+
// private, which conflicts with the test-only accessor. Kept as a standalone
|
|
57
|
+
// test shim shape.
|
|
58
|
+
type TestOfflineDb = {
|
|
59
|
+
addPendingTask: (task: {
|
|
60
|
+
channelId: string | undefined;
|
|
61
|
+
channelType: string;
|
|
62
|
+
messageId: string;
|
|
63
|
+
payload: unknown;
|
|
64
|
+
type: string;
|
|
65
|
+
}) => Promise<void>;
|
|
66
|
+
deletePendingTask: (params: { id: number }) => Promise<void>;
|
|
67
|
+
getPendingTasks: () => Promise<TestPendingTask[]>;
|
|
68
|
+
syncManager: TestSyncManager;
|
|
69
|
+
};
|
|
70
|
+
const getOfflineDb = (client: StreamChat): TestOfflineDb =>
|
|
71
|
+
client.offlineDb as unknown as TestOfflineDb;
|
|
72
|
+
|
|
31
73
|
test('Workaround to allow exporting tests', () => expect(true).toBe(true));
|
|
32
74
|
|
|
33
75
|
export const OptimisticUpdates = () => {
|
|
34
76
|
describe('Optimistic Updates', () => {
|
|
35
|
-
let chatClient;
|
|
77
|
+
let chatClient: StreamChat;
|
|
36
78
|
|
|
37
|
-
const getRandomInt = (lower, upper) =>
|
|
79
|
+
const getRandomInt = (lower: number, upper: number) =>
|
|
80
|
+
Math.floor(lower + Math.random() * (upper - lower + 1));
|
|
38
81
|
const createChannel = () => {
|
|
39
82
|
const allUsers = Array(20).fill(1).map(generateUser);
|
|
40
|
-
const allMessages = [];
|
|
41
|
-
const allMembers = [];
|
|
42
|
-
const allReactions = [];
|
|
43
|
-
const allReads
|
|
83
|
+
const allMessages: LocalMessage[] = [];
|
|
84
|
+
const allMembers: ChannelMemberResponse[] = [];
|
|
85
|
+
const allReactions: ReactionResponse[] = [];
|
|
86
|
+
const allReads: Array<{
|
|
87
|
+
last_read: Date;
|
|
88
|
+
unread_messages: number;
|
|
89
|
+
user: ReturnType<typeof generateUser> | undefined;
|
|
90
|
+
}> = [];
|
|
44
91
|
const id = uuidv4();
|
|
45
92
|
const cid = `messaging:${id}`;
|
|
46
93
|
const begin = getRandomInt(0, allUsers.length - 2); // begin shouldn't be the end of users.length
|
|
47
94
|
const end = getRandomInt(begin + 1, allUsers.length - 1);
|
|
48
95
|
const usersForMembers = allUsers.slice(begin, end);
|
|
49
|
-
const members = usersForMembers.map((user) =>
|
|
96
|
+
const members = usersForMembers.map((user: UserResponse) =>
|
|
50
97
|
generateMember({
|
|
51
|
-
cid,
|
|
52
98
|
user,
|
|
53
99
|
}),
|
|
54
100
|
);
|
|
@@ -62,7 +108,7 @@ export const OptimisticUpdates = () => {
|
|
|
62
108
|
const end = getRandomInt(begin + 1, usersForMembers.length - 1);
|
|
63
109
|
|
|
64
110
|
const usersForReactions = usersForMembers.slice(begin, end);
|
|
65
|
-
const reactions = usersForReactions.map((user) =>
|
|
111
|
+
const reactions = usersForReactions.map((user: UserResponse) =>
|
|
66
112
|
generateReaction({
|
|
67
113
|
message_id: id,
|
|
68
114
|
user,
|
|
@@ -74,11 +120,11 @@ export const OptimisticUpdates = () => {
|
|
|
74
120
|
id,
|
|
75
121
|
latest_reactions: reactions,
|
|
76
122
|
user,
|
|
77
|
-
|
|
123
|
+
user_id: user.id,
|
|
78
124
|
});
|
|
79
125
|
});
|
|
80
126
|
|
|
81
|
-
const reads = members.map((member) => ({
|
|
127
|
+
const reads = members.map((member: ChannelMemberResponse) => ({
|
|
82
128
|
last_read: new Date(new Date().setDate(new Date().getDate() - getRandomInt(0, 20))),
|
|
83
129
|
unread_messages: getRandomInt(0, messages.length),
|
|
84
130
|
user: member.user,
|
|
@@ -88,12 +134,17 @@ export const OptimisticUpdates = () => {
|
|
|
88
134
|
allMembers.push(...members);
|
|
89
135
|
allReads.push(...reads);
|
|
90
136
|
|
|
137
|
+
// `cid` is not part of `GeneratedChannelResponseCustomValues`, but tests rely on reading it
|
|
138
|
+
// back as a top-level field on the generated channel response — keep the runtime shape and
|
|
139
|
+
// widen the input type.
|
|
91
140
|
return generateChannelResponse({
|
|
92
141
|
cid,
|
|
93
142
|
id,
|
|
94
143
|
members,
|
|
95
144
|
messages,
|
|
96
|
-
})
|
|
145
|
+
} as unknown as Parameters<typeof generateChannelResponse>[0]) as ReturnType<
|
|
146
|
+
typeof generateChannelResponse
|
|
147
|
+
> & { cid: string; id: string };
|
|
97
148
|
};
|
|
98
149
|
|
|
99
150
|
beforeEach(async () => {
|
|
@@ -112,10 +163,13 @@ export const OptimisticUpdates = () => {
|
|
|
112
163
|
await SqliteClient.initializeDatabase();
|
|
113
164
|
await BetterSqlite.openDB();
|
|
114
165
|
await upsertChannels({
|
|
115
|
-
channels: [channelResponse],
|
|
166
|
+
channels: [channelResponse] as unknown as ChannelAPIResponse[],
|
|
116
167
|
isLatestMessagesSet: true,
|
|
117
168
|
});
|
|
118
|
-
chatClient.wsConnection = {
|
|
169
|
+
chatClient.wsConnection = {
|
|
170
|
+
isHealthy: true,
|
|
171
|
+
onlineStatusChanged: jest.fn(),
|
|
172
|
+
} as unknown as StreamChat['wsConnection'];
|
|
119
173
|
});
|
|
120
174
|
|
|
121
175
|
afterEach(() => {
|
|
@@ -125,11 +179,19 @@ export const OptimisticUpdates = () => {
|
|
|
125
179
|
jest.clearAllMocks();
|
|
126
180
|
});
|
|
127
181
|
|
|
128
|
-
let channel;
|
|
182
|
+
let channel: ChannelLLC;
|
|
129
183
|
// This component is used for performing effects in a component that consumes ChannelContext,
|
|
130
184
|
// i.e. making use of the callbacks & values provided by the Channel component.
|
|
131
185
|
// the effect is called every time channelContext changes
|
|
132
|
-
const CallbackEffectWithContext = ({
|
|
186
|
+
const CallbackEffectWithContext = <T,>({
|
|
187
|
+
callback,
|
|
188
|
+
children,
|
|
189
|
+
context,
|
|
190
|
+
}: {
|
|
191
|
+
callback: (ctx: T) => Promise<void> | void;
|
|
192
|
+
children: React.ReactNode;
|
|
193
|
+
context: React.Context<T>;
|
|
194
|
+
}) => {
|
|
133
195
|
const ctx = useContext(context);
|
|
134
196
|
const [ready, setReady] = useState(false);
|
|
135
197
|
useEffect(() => {
|
|
@@ -145,7 +207,7 @@ export const OptimisticUpdates = () => {
|
|
|
145
207
|
return null;
|
|
146
208
|
}
|
|
147
209
|
|
|
148
|
-
return children
|
|
210
|
+
return <>{children}</>;
|
|
149
211
|
};
|
|
150
212
|
|
|
151
213
|
describe('delete message', () => {
|
|
@@ -175,7 +237,7 @@ export const OptimisticUpdates = () => {
|
|
|
175
237
|
await waitFor(async () => {
|
|
176
238
|
const pendingTasksRows = await BetterSqlite.selectFromTable('pendingTasks');
|
|
177
239
|
const pendingTaskType = pendingTasksRows?.[0]?.type;
|
|
178
|
-
const pendingTaskPayload = JSON.parse(pendingTasksRows?.[0]?.payload || '{}');
|
|
240
|
+
const pendingTaskPayload = JSON.parse((pendingTasksRows?.[0]?.payload as string) || '{}');
|
|
179
241
|
expect(pendingTaskType).toBe('delete-message');
|
|
180
242
|
expect(pendingTaskPayload[0]).toBe(message.id);
|
|
181
243
|
});
|
|
@@ -235,7 +297,7 @@ export const OptimisticUpdates = () => {
|
|
|
235
297
|
await waitFor(async () => {
|
|
236
298
|
const pendingTasksRows = await BetterSqlite.selectFromTable('pendingTasks');
|
|
237
299
|
const pendingTaskType = pendingTasksRows?.[0]?.type;
|
|
238
|
-
const pendingTaskPayload = JSON.parse(pendingTasksRows?.[0]?.payload || '{}');
|
|
300
|
+
const pendingTaskPayload = JSON.parse((pendingTasksRows?.[0]?.payload as string) || '{}');
|
|
239
301
|
expect(pendingTaskType).toBe('send-reaction');
|
|
240
302
|
expect(pendingTaskPayload[0]).toBe(targetMessage.id);
|
|
241
303
|
});
|
|
@@ -276,7 +338,7 @@ export const OptimisticUpdates = () => {
|
|
|
276
338
|
localMessage: newMessage,
|
|
277
339
|
message: newMessage,
|
|
278
340
|
options: {},
|
|
279
|
-
});
|
|
341
|
+
} as unknown as Awaited<ReturnType<typeof channel.messageComposer.compose>>);
|
|
280
342
|
|
|
281
343
|
render(
|
|
282
344
|
<Chat client={chatClient} enableOfflineSupport>
|
|
@@ -301,7 +363,7 @@ export const OptimisticUpdates = () => {
|
|
|
301
363
|
await waitFor(async () => {
|
|
302
364
|
const pendingTasksRows = await BetterSqlite.selectFromTable('pendingTasks');
|
|
303
365
|
const pendingTaskType = pendingTasksRows?.[0]?.type;
|
|
304
|
-
const pendingTaskPayload = JSON.parse(pendingTasksRows?.[0]?.payload || '{}');
|
|
366
|
+
const pendingTaskPayload = JSON.parse((pendingTasksRows?.[0]?.payload as string) || '{}');
|
|
305
367
|
expect(pendingTaskType).toBe('send-message');
|
|
306
368
|
expect(pendingTaskPayload[0].id).toEqual(newMessage.id);
|
|
307
369
|
expect(pendingTaskPayload[0].text).toEqual(newMessage.text);
|
|
@@ -319,7 +381,7 @@ export const OptimisticUpdates = () => {
|
|
|
319
381
|
<CallbackEffectWithContext
|
|
320
382
|
callback={async ({ sendMessage }) => {
|
|
321
383
|
useMockedApis(chatClient, [sendMessageApi(newMessage)]);
|
|
322
|
-
await sendMessage(
|
|
384
|
+
await sendMessage();
|
|
323
385
|
}}
|
|
324
386
|
context={MessageInputContext}
|
|
325
387
|
>
|
|
@@ -365,7 +427,7 @@ export const OptimisticUpdates = () => {
|
|
|
365
427
|
await waitFor(async () => {
|
|
366
428
|
const pendingTasksRows = await BetterSqlite.selectFromTable('pendingTasks');
|
|
367
429
|
const pendingTaskType = pendingTasksRows?.[0]?.type;
|
|
368
|
-
const pendingTaskPayload = JSON.parse(pendingTasksRows?.[0]?.payload || '{}');
|
|
430
|
+
const pendingTaskPayload = JSON.parse((pendingTasksRows?.[0]?.payload as string) || '{}');
|
|
369
431
|
expect(pendingTaskType).toBe('delete-reaction');
|
|
370
432
|
expect(pendingTaskPayload[0]).toBe(targetMessage.id);
|
|
371
433
|
});
|
|
@@ -408,22 +470,24 @@ export const OptimisticUpdates = () => {
|
|
|
408
470
|
<Chat client={chatClient} enableOfflineSupport>
|
|
409
471
|
<Channel
|
|
410
472
|
channel={channel}
|
|
411
|
-
doUpdateMessageRequest={
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
473
|
+
doUpdateMessageRequest={
|
|
474
|
+
(async (_channelId: string, localMessage: LocalMessage, options: unknown) => {
|
|
475
|
+
await getOfflineDb(chatClient).addPendingTask({
|
|
476
|
+
channelId: channel.id,
|
|
477
|
+
channelType: channel.type,
|
|
478
|
+
messageId: message.id,
|
|
479
|
+
payload: [localMessage, undefined, options],
|
|
480
|
+
type: 'update-message',
|
|
481
|
+
});
|
|
482
|
+
return {
|
|
483
|
+
message: {
|
|
484
|
+
...localMessage,
|
|
485
|
+
message_text_updated_at: new Date(),
|
|
486
|
+
updated_at: new Date(),
|
|
487
|
+
},
|
|
488
|
+
};
|
|
489
|
+
}) as unknown as React.ComponentProps<typeof Channel>['doUpdateMessageRequest']
|
|
490
|
+
}
|
|
427
491
|
>
|
|
428
492
|
<CallbackEffectWithContext
|
|
429
493
|
callback={async ({ editMessage }) => {
|
|
@@ -452,12 +516,12 @@ export const OptimisticUpdates = () => {
|
|
|
452
516
|
const dbMessages = await BetterSqlite.selectFromTable('messages');
|
|
453
517
|
const dbMessage = dbMessages.find((row) => row.id === message.id);
|
|
454
518
|
|
|
455
|
-
expect(updatedMessage
|
|
456
|
-
expect(updatedMessage
|
|
519
|
+
expect(updatedMessage!.text).toBe(editedText);
|
|
520
|
+
expect(updatedMessage!.message_text_updated_at).toBeTruthy();
|
|
457
521
|
expect(pendingTasksRows).toHaveLength(1);
|
|
458
522
|
expect(pendingTasksRows[0].type).toBe('update-message');
|
|
459
|
-
expect(dbMessage
|
|
460
|
-
expect(dbMessage
|
|
523
|
+
expect(dbMessage!.text).toBe(editedText);
|
|
524
|
+
expect(dbMessage!.messageTextUpdatedAt).toBeTruthy();
|
|
461
525
|
});
|
|
462
526
|
});
|
|
463
527
|
|
|
@@ -504,9 +568,9 @@ export const OptimisticUpdates = () => {
|
|
|
504
568
|
const dbMessages = await BetterSqlite.selectFromTable('messages');
|
|
505
569
|
const dbMessage = dbMessages.find((row) => row.id === message.id);
|
|
506
570
|
|
|
507
|
-
expect(updatedMessage
|
|
571
|
+
expect(updatedMessage!.text).toBe(editedText);
|
|
508
572
|
expect(pendingTasksRows).toHaveLength(0);
|
|
509
|
-
expect(dbMessage
|
|
573
|
+
expect(dbMessage!.text).toBe(editedText);
|
|
510
574
|
});
|
|
511
575
|
});
|
|
512
576
|
|
|
@@ -518,16 +582,18 @@ export const OptimisticUpdates = () => {
|
|
|
518
582
|
<Chat client={chatClient} enableOfflineSupport>
|
|
519
583
|
<Channel
|
|
520
584
|
channel={channel}
|
|
521
|
-
doUpdateMessageRequest={
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
585
|
+
doUpdateMessageRequest={
|
|
586
|
+
(() => {
|
|
587
|
+
const optimisticMessage = channel.state.findMessage(message.id);
|
|
588
|
+
optimisticStateSpy(optimisticMessage);
|
|
589
|
+
|
|
590
|
+
return {
|
|
591
|
+
message: {
|
|
592
|
+
...optimisticMessage,
|
|
593
|
+
},
|
|
594
|
+
};
|
|
595
|
+
}) as unknown as React.ComponentProps<typeof Channel>['doUpdateMessageRequest']
|
|
596
|
+
}
|
|
531
597
|
>
|
|
532
598
|
<CallbackEffectWithContext
|
|
533
599
|
callback={async ({ editMessage }) => {
|
|
@@ -611,12 +677,12 @@ export const OptimisticUpdates = () => {
|
|
|
611
677
|
const pendingTasksRows = await BetterSqlite.selectFromTable('pendingTasks');
|
|
612
678
|
const dbMessages = await BetterSqlite.selectFromTable('messages');
|
|
613
679
|
const dbMessage = dbMessages.find((row) => row.id === message.id);
|
|
614
|
-
const storedAttachments = JSON.parse(dbMessage
|
|
680
|
+
const storedAttachments = JSON.parse(dbMessage!.attachments as string);
|
|
615
681
|
|
|
616
|
-
expect(updatedMessage
|
|
617
|
-
expect(updatedMessage
|
|
682
|
+
expect(updatedMessage!.text).toBe(editedText);
|
|
683
|
+
expect(updatedMessage!.attachments![0].asset_url).toBe(localUri);
|
|
618
684
|
expect(pendingTasksRows).toHaveLength(0);
|
|
619
|
-
expect(dbMessage
|
|
685
|
+
expect(dbMessage!.text).toBe(editedText);
|
|
620
686
|
expect(storedAttachments[0].asset_url).toBe(localUri);
|
|
621
687
|
});
|
|
622
688
|
});
|
|
@@ -681,7 +747,7 @@ export const OptimisticUpdates = () => {
|
|
|
681
747
|
localMessage: newMessage,
|
|
682
748
|
message: newMessage,
|
|
683
749
|
options: {},
|
|
684
|
-
});
|
|
750
|
+
} as unknown as Awaited<ReturnType<typeof channel.messageComposer.compose>>);
|
|
685
751
|
|
|
686
752
|
// initialValue is needed as a prop to trick the message input ctx into thinking
|
|
687
753
|
// we are sending a message.
|
|
@@ -726,20 +792,20 @@ export const OptimisticUpdates = () => {
|
|
|
726
792
|
status: MessageStatusTypes.SENDING,
|
|
727
793
|
text: 'offline resend',
|
|
728
794
|
user: chatClient.user,
|
|
729
|
-
|
|
795
|
+
user_id: chatClient.userID,
|
|
730
796
|
});
|
|
731
797
|
const serverMessage = generateMessage({
|
|
732
798
|
id: localMessage.id,
|
|
733
799
|
text: localMessage.text,
|
|
734
800
|
user: chatClient.user,
|
|
735
|
-
|
|
801
|
+
user_id: chatClient.userID,
|
|
736
802
|
});
|
|
737
803
|
|
|
738
|
-
jest
|
|
739
|
-
|
|
740
|
-
message: localMessage
|
|
741
|
-
|
|
742
|
-
|
|
804
|
+
jest
|
|
805
|
+
.spyOn(channel.messageComposer, 'compose')
|
|
806
|
+
.mockResolvedValue({ localMessage, message: localMessage } as unknown as Awaited<
|
|
807
|
+
ReturnType<typeof channel.messageComposer.compose>
|
|
808
|
+
>);
|
|
743
809
|
|
|
744
810
|
render(
|
|
745
811
|
<Chat client={chatClient} enableOfflineSupport>
|
|
@@ -758,23 +824,25 @@ export const OptimisticUpdates = () => {
|
|
|
758
824
|
);
|
|
759
825
|
await waitFor(() => expect(screen.getByTestId('children')).toBeTruthy());
|
|
760
826
|
|
|
761
|
-
let pendingTask;
|
|
827
|
+
let pendingTask: TestPendingTask | undefined;
|
|
762
828
|
await waitFor(async () => {
|
|
763
|
-
const pendingTasks = await chatClient.
|
|
829
|
+
const pendingTasks = await getOfflineDb(chatClient).getPendingTasks();
|
|
764
830
|
expect(pendingTasks).toHaveLength(1);
|
|
765
831
|
pendingTask = pendingTasks[0];
|
|
766
832
|
});
|
|
767
833
|
|
|
768
834
|
expect(channel.state.messages.some((message) => message.id === localMessage.id)).toBe(true);
|
|
769
835
|
|
|
770
|
-
jest
|
|
836
|
+
jest
|
|
837
|
+
.spyOn(channel, 'watch')
|
|
838
|
+
.mockResolvedValue({} as Awaited<ReturnType<typeof channel.watch>>);
|
|
771
839
|
|
|
772
840
|
channel.state.removeMessage(localMessage);
|
|
773
841
|
channel.state.addMessageSorted(serverMessage, true);
|
|
774
|
-
await chatClient.
|
|
842
|
+
await getOfflineDb(chatClient).deletePendingTask({ id: pendingTask!.id });
|
|
775
843
|
|
|
776
844
|
await act(async () => {
|
|
777
|
-
await chatClient.
|
|
845
|
+
await getOfflineDb(chatClient).syncManager.invokeSyncStatusListeners(true);
|
|
778
846
|
});
|
|
779
847
|
|
|
780
848
|
await waitFor(() => {
|
|
@@ -793,14 +861,14 @@ export const OptimisticUpdates = () => {
|
|
|
793
861
|
status: MessageStatusTypes.SENDING,
|
|
794
862
|
text: 'offline resend unresolved',
|
|
795
863
|
user: chatClient.user,
|
|
796
|
-
|
|
864
|
+
user_id: chatClient.userID,
|
|
797
865
|
});
|
|
798
866
|
|
|
799
|
-
jest
|
|
800
|
-
|
|
801
|
-
message: localMessage
|
|
802
|
-
|
|
803
|
-
|
|
867
|
+
jest
|
|
868
|
+
.spyOn(channel.messageComposer, 'compose')
|
|
869
|
+
.mockResolvedValue({ localMessage, message: localMessage } as unknown as Awaited<
|
|
870
|
+
ReturnType<typeof channel.messageComposer.compose>
|
|
871
|
+
>);
|
|
804
872
|
|
|
805
873
|
render(
|
|
806
874
|
<Chat client={chatClient} enableOfflineSupport>
|
|
@@ -819,20 +887,22 @@ export const OptimisticUpdates = () => {
|
|
|
819
887
|
);
|
|
820
888
|
await waitFor(() => expect(screen.getByTestId('children')).toBeTruthy());
|
|
821
889
|
|
|
822
|
-
let pendingTask;
|
|
890
|
+
let pendingTask: TestPendingTask | undefined;
|
|
823
891
|
await waitFor(async () => {
|
|
824
|
-
const pendingTasks = await chatClient.
|
|
892
|
+
const pendingTasks = await getOfflineDb(chatClient).getPendingTasks();
|
|
825
893
|
expect(pendingTasks).toHaveLength(1);
|
|
826
894
|
pendingTask = pendingTasks[0];
|
|
827
895
|
});
|
|
828
896
|
|
|
829
|
-
jest
|
|
897
|
+
jest
|
|
898
|
+
.spyOn(channel, 'watch')
|
|
899
|
+
.mockResolvedValue({} as Awaited<ReturnType<typeof channel.watch>>);
|
|
830
900
|
|
|
831
901
|
channel.state.removeMessage(localMessage);
|
|
832
|
-
await chatClient.
|
|
902
|
+
await getOfflineDb(chatClient).deletePendingTask({ id: pendingTask!.id });
|
|
833
903
|
|
|
834
904
|
await act(async () => {
|
|
835
|
-
await chatClient.
|
|
905
|
+
await getOfflineDb(chatClient).syncManager.invokeSyncStatusListeners(true);
|
|
836
906
|
});
|
|
837
907
|
|
|
838
908
|
await waitFor(() => {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ComponentProps } from 'react';
|
|
2
2
|
|
|
3
3
|
import { render, waitFor } from '@testing-library/react-native';
|
|
4
4
|
import { v4 as uuidv4 } from 'uuid';
|
|
5
5
|
|
|
6
|
+
import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
|
|
6
7
|
import { MessageProvider } from '../../../contexts/messageContext/MessageContext';
|
|
8
|
+
import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
|
|
7
9
|
import { MessagesProvider } from '../../../contexts/messagesContext/MessagesContext';
|
|
8
10
|
import { ThemeProvider } from '../../../contexts/themeContext/ThemeContext';
|
|
9
11
|
import {
|
|
@@ -24,18 +26,20 @@ jest.mock('../../../native.ts', () => ({
|
|
|
24
26
|
isSoundPackageAvailable: jest.fn(() => false),
|
|
25
27
|
}));
|
|
26
28
|
|
|
27
|
-
const getAttachmentComponent = (props) => {
|
|
29
|
+
const getAttachmentComponent = (props: ComponentProps<typeof Attachment>) => {
|
|
28
30
|
const message = generateMessage();
|
|
29
31
|
return (
|
|
30
32
|
<ThemeProvider>
|
|
31
33
|
<MessagesProvider
|
|
32
|
-
value={
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
value={
|
|
35
|
+
{
|
|
36
|
+
ImageLoadingFailedIndicator,
|
|
37
|
+
ImageLoadingIndicator,
|
|
38
|
+
FilePreview: FilePreviewDefault,
|
|
39
|
+
} as unknown as MessagesContextValue
|
|
40
|
+
}
|
|
37
41
|
>
|
|
38
|
-
<MessageProvider value={{ message }}>
|
|
42
|
+
<MessageProvider value={{ message } as unknown as MessageContextValue}>
|
|
39
43
|
<Attachment {...props} />
|
|
40
44
|
</MessageProvider>
|
|
41
45
|
</MessagesProvider>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ComponentProps } from 'react';
|
|
2
2
|
|
|
3
3
|
import { fireEvent, render, screen, waitFor } from '@testing-library/react-native';
|
|
4
|
+
import type { Attachment, ChannelResponse } from 'stream-chat';
|
|
4
5
|
|
|
5
6
|
import { OverlayProvider } from '../../../contexts/overlayContext/OverlayProvider';
|
|
6
7
|
|
|
@@ -31,7 +32,10 @@ describe('Gallery', () => {
|
|
|
31
32
|
|
|
32
33
|
const user1 = generateUser();
|
|
33
34
|
|
|
34
|
-
const getComponent = async (
|
|
35
|
+
const getComponent = async (
|
|
36
|
+
attachments: Attachment[] = [],
|
|
37
|
+
channelProps: Partial<ComponentProps<typeof Channel>> = {},
|
|
38
|
+
) => {
|
|
35
39
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
36
40
|
|
|
37
41
|
const mockedChannel = generateChannelResponse({
|
|
@@ -39,7 +43,10 @@ describe('Gallery', () => {
|
|
|
39
43
|
messages: [generateMessage({ attachments, user: user1 })],
|
|
40
44
|
});
|
|
41
45
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
42
|
-
const channel = chatClient.channel(
|
|
46
|
+
const channel = chatClient.channel(
|
|
47
|
+
'messaging',
|
|
48
|
+
(mockedChannel.channel as unknown as ChannelResponse).id,
|
|
49
|
+
);
|
|
43
50
|
await channel.watch();
|
|
44
51
|
|
|
45
52
|
return (
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ComponentProps } from 'react';
|
|
2
|
+
import type { Image, ImageStyle, StyleProp } from 'react-native';
|
|
2
3
|
|
|
3
4
|
import {
|
|
4
5
|
act,
|
|
@@ -9,8 +10,11 @@ import {
|
|
|
9
10
|
userEvent,
|
|
10
11
|
waitFor,
|
|
11
12
|
} from '@testing-library/react-native';
|
|
13
|
+
import type { Channel as ChannelType, ChannelResponse, StreamChat } from 'stream-chat';
|
|
12
14
|
|
|
15
|
+
import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
|
|
13
16
|
import { MessageProvider } from '../../../contexts/messageContext/MessageContext';
|
|
17
|
+
import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
|
|
14
18
|
import { MessagesProvider } from '../../../contexts/messagesContext/MessagesContext';
|
|
15
19
|
import { OverlayProvider } from '../../../contexts/overlayContext/OverlayProvider';
|
|
16
20
|
|
|
@@ -38,21 +42,34 @@ const streami18n = new Streami18n({
|
|
|
38
42
|
describe('Giphy', () => {
|
|
39
43
|
const lightTheme = mergeThemes({ scheme: 'light' });
|
|
40
44
|
|
|
41
|
-
const getAttachmentComponent = (
|
|
45
|
+
const getAttachmentComponent = (
|
|
46
|
+
props: ComponentProps<typeof Giphy>,
|
|
47
|
+
messageContextValue: Partial<MessageContextValue> = {},
|
|
48
|
+
) => {
|
|
42
49
|
const message = generateMessage();
|
|
43
50
|
return (
|
|
44
51
|
<ThemeProvider>
|
|
45
|
-
<MessagesProvider
|
|
46
|
-
|
|
52
|
+
<MessagesProvider
|
|
53
|
+
value={
|
|
54
|
+
{
|
|
55
|
+
ImageLoadingFailedIndicator,
|
|
56
|
+
ImageLoadingIndicator,
|
|
57
|
+
} as unknown as MessagesContextValue
|
|
58
|
+
}
|
|
59
|
+
>
|
|
60
|
+
<MessageProvider
|
|
61
|
+
value={{ message, ...messageContextValue } as unknown as MessageContextValue}
|
|
62
|
+
>
|
|
47
63
|
<Giphy {...props} />
|
|
48
64
|
</MessageProvider>
|
|
49
65
|
</MessagesProvider>
|
|
50
66
|
</ThemeProvider>
|
|
51
67
|
);
|
|
52
68
|
};
|
|
53
|
-
let chatClient;
|
|
54
|
-
let channel;
|
|
55
|
-
|
|
69
|
+
let chatClient: StreamChat;
|
|
70
|
+
let channel: ChannelType;
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
let attachment: any;
|
|
56
73
|
|
|
57
74
|
const actions = [
|
|
58
75
|
{ name: 'image_action', text: 'Send', value: 'send' },
|
|
@@ -91,7 +108,10 @@ describe('Giphy', () => {
|
|
|
91
108
|
|
|
92
109
|
chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
93
110
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
94
|
-
channel = chatClient.channel(
|
|
111
|
+
channel = chatClient.channel(
|
|
112
|
+
'messaging',
|
|
113
|
+
(mockedChannel.channel as unknown as ChannelResponse).id,
|
|
114
|
+
);
|
|
95
115
|
await channel.watch();
|
|
96
116
|
};
|
|
97
117
|
|
|
@@ -176,14 +196,17 @@ describe('Giphy', () => {
|
|
|
176
196
|
attachment.giphy = giphy;
|
|
177
197
|
render(getAttachmentComponent({ attachment, giphyVersion: 'fixed_height' }));
|
|
178
198
|
await waitFor(() => {
|
|
179
|
-
const checkImageProps = (
|
|
180
|
-
|
|
199
|
+
const checkImageProps = (
|
|
200
|
+
imageProps: ComponentProps<typeof Image>,
|
|
201
|
+
specificSizedGiphyData: { height: string; url: string; width: string },
|
|
202
|
+
) => {
|
|
203
|
+
let imageStyle = imageProps.style as StyleProp<ImageStyle>;
|
|
181
204
|
if (Array.isArray(imageStyle)) {
|
|
182
205
|
imageStyle = Object.assign({}, ...imageStyle);
|
|
183
206
|
}
|
|
184
|
-
expect(imageStyle.height).toBe(parseFloat(specificSizedGiphyData.height));
|
|
185
|
-
expect(imageStyle.width).toBe(parseFloat(specificSizedGiphyData.width));
|
|
186
|
-
expect(imageProps.source.uri).toBe(specificSizedGiphyData.url);
|
|
207
|
+
expect((imageStyle as ImageStyle).height).toBe(parseFloat(specificSizedGiphyData.height));
|
|
208
|
+
expect((imageStyle as ImageStyle).width).toBe(parseFloat(specificSizedGiphyData.width));
|
|
209
|
+
expect((imageProps.source as { uri: string }).uri).toBe(specificSizedGiphyData.url);
|
|
187
210
|
};
|
|
188
211
|
checkImageProps(
|
|
189
212
|
screen.getByLabelText('Giphy Attachment Image').props,
|
|
@@ -192,14 +215,17 @@ describe('Giphy', () => {
|
|
|
192
215
|
});
|
|
193
216
|
render(getAttachmentComponent({ attachment, giphyVersion: 'original' }));
|
|
194
217
|
await waitFor(() => {
|
|
195
|
-
const checkImageProps = (
|
|
196
|
-
|
|
218
|
+
const checkImageProps = (
|
|
219
|
+
imageProps: ComponentProps<typeof Image>,
|
|
220
|
+
specificSizedGiphyData: { height: string; url: string; width: string },
|
|
221
|
+
) => {
|
|
222
|
+
let imageStyle = imageProps.style as StyleProp<ImageStyle>;
|
|
197
223
|
if (Array.isArray(imageStyle)) {
|
|
198
224
|
imageStyle = Object.assign({}, ...imageStyle);
|
|
199
225
|
}
|
|
200
|
-
expect(imageStyle.height).toBe(parseFloat(specificSizedGiphyData.height));
|
|
201
|
-
expect(imageStyle.width).toBe(parseFloat(specificSizedGiphyData.width));
|
|
202
|
-
expect(imageProps.source.uri).toBe(specificSizedGiphyData.url);
|
|
226
|
+
expect((imageStyle as ImageStyle).height).toBe(parseFloat(specificSizedGiphyData.height));
|
|
227
|
+
expect((imageStyle as ImageStyle).width).toBe(parseFloat(specificSizedGiphyData.width));
|
|
228
|
+
expect((imageProps.source as { uri: string }).uri).toBe(specificSizedGiphyData.url);
|
|
203
229
|
};
|
|
204
230
|
checkImageProps(
|
|
205
231
|
screen.getByLabelText('Giphy Attachment Image').props,
|
|
@@ -321,7 +347,10 @@ describe('Giphy', () => {
|
|
|
321
347
|
|
|
322
348
|
const chatClient = await getTestClientWithUser({ id: 'testID' });
|
|
323
349
|
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
|
|
324
|
-
const channel = chatClient.channel(
|
|
350
|
+
const channel = chatClient.channel(
|
|
351
|
+
'messaging',
|
|
352
|
+
(mockedChannel.channel as unknown as ChannelResponse).id,
|
|
353
|
+
);
|
|
325
354
|
await channel.watch();
|
|
326
355
|
|
|
327
356
|
render(
|