stream-chat-react-native-core 10.0.0-rc.4 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +4 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useChannelLifecycle.js +2 -2
- package/lib/commonjs/components/Channel/hooks/useChannelLifecycle.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +7 -0
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +4 -5
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewPollLabel.js +8 -5
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewPollLabel.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/Headers/SentToChannelHeader.js +6 -32
- package/lib/commonjs/components/Message/MessageItemView/Headers/SentToChannelHeader.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageContent.js +2 -2
- package/lib/commonjs/components/Message/MessageItemView/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageStatus.js +29 -9
- package/lib/commonjs/components/Message/MessageItemView/MessageStatus.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useOpenThreadAtMessage.js +57 -0
- package/lib/commonjs/components/Message/hooks/useOpenThreadAtMessage.js.map +1 -0
- package/lib/commonjs/components/Message/utils/messageActions.js +1 -1
- package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +12 -8
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AudioAttachmentUploadPreview.js +3 -2
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AudioAttachmentUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/hooks/useAudioRecorder.js +2 -2
- package/lib/commonjs/components/MessageInput/hooks/useAudioRecorder.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +2 -2
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +1 -4
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageListFocus.js +18 -2
- package/lib/commonjs/components/MessageList/hooks/useMessageListFocus.js.map +1 -1
- package/lib/commonjs/components/Poll/Poll.js +5 -2
- package/lib/commonjs/components/Poll/Poll.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollAnswersList.js +4 -2
- package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollOption.js +8 -3
- package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +5 -2
- package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js +3 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResults.js +4 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResults.js.map +1 -1
- package/lib/commonjs/components/Poll/hooks/usePollState.js +3 -0
- package/lib/commonjs/components/Poll/hooks/usePollState.js.map +1 -1
- package/lib/commonjs/components/Poll/hooks/usePollTextTranslation.js +17 -0
- package/lib/commonjs/components/Poll/hooks/usePollTextTranslation.js.map +1 -0
- package/lib/commonjs/components/Poll/index.js +11 -0
- package/lib/commonjs/components/Poll/index.js.map +1 -1
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +1 -2
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/commonjs/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js +0 -15
- package/lib/commonjs/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messageListItemContext/MessageListItemContext.js.map +1 -1
- package/lib/commonjs/hooks/messagePreview/useMessagePreviewText.js +9 -4
- package/lib/commonjs/hooks/messagePreview/useMessagePreviewText.js.map +1 -1
- package/lib/commonjs/hooks/useTranslatedMessage.js +4 -3
- package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/commonjs/index.js +0 -12
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/store/SqliteClient.js +1 -1
- package/lib/commonjs/store/mappers/mapPollToStorable.js +4 -0
- package/lib/commonjs/store/mappers/mapPollToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToPoll.js +5 -1
- package/lib/commonjs/store/mappers/mapStorableToPoll.js.map +1 -1
- package/lib/commonjs/store/schema.js +2 -0
- package/lib/commonjs/store/schema.js.map +1 -1
- package/lib/commonjs/types/types.js.map +1 -1
- package/lib/commonjs/utils/i18n/getTranslatedText.js +7 -0
- package/lib/commonjs/utils/i18n/getTranslatedText.js.map +1 -0
- package/lib/commonjs/utils/utils.js +35 -1
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +4 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/Channel/hooks/useChannelLifecycle.js +2 -2
- package/lib/module/components/Channel/hooks/useChannelLifecycle.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +7 -0
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +4 -5
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewPollLabel.js +8 -5
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewPollLabel.js.map +1 -1
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/Headers/SentToChannelHeader.js +6 -32
- package/lib/module/components/Message/MessageItemView/Headers/SentToChannelHeader.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageContent.js +2 -2
- package/lib/module/components/Message/MessageItemView/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageStatus.js +29 -9
- package/lib/module/components/Message/MessageItemView/MessageStatus.js.map +1 -1
- package/lib/module/components/Message/hooks/useOpenThreadAtMessage.js +57 -0
- package/lib/module/components/Message/hooks/useOpenThreadAtMessage.js.map +1 -0
- package/lib/module/components/Message/utils/messageActions.js +1 -1
- package/lib/module/components/Message/utils/messageActions.js.map +1 -1
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +12 -8
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
- package/lib/module/components/MessageInput/components/AttachmentPreview/AudioAttachmentUploadPreview.js +3 -2
- package/lib/module/components/MessageInput/components/AttachmentPreview/AudioAttachmentUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/hooks/useAudioRecorder.js +2 -2
- package/lib/module/components/MessageInput/hooks/useAudioRecorder.js.map +1 -1
- package/lib/module/components/MessageList/InlineUnreadIndicator.js +2 -2
- package/lib/module/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +1 -4
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageListFocus.js +18 -2
- package/lib/module/components/MessageList/hooks/useMessageListFocus.js.map +1 -1
- package/lib/module/components/Poll/Poll.js +5 -2
- package/lib/module/components/Poll/Poll.js.map +1 -1
- package/lib/module/components/Poll/components/PollAnswersList.js +4 -2
- package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
- package/lib/module/components/Poll/components/PollOption.js +8 -3
- package/lib/module/components/Poll/components/PollOption.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +5 -2
- package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollResultItem.js +3 -1
- package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollResults.js +4 -1
- package/lib/module/components/Poll/components/PollResults/PollResults.js.map +1 -1
- package/lib/module/components/Poll/hooks/usePollState.js +3 -0
- package/lib/module/components/Poll/hooks/usePollState.js.map +1 -1
- package/lib/module/components/Poll/hooks/usePollTextTranslation.js +17 -0
- package/lib/module/components/Poll/hooks/usePollTextTranslation.js.map +1 -0
- package/lib/module/components/Poll/index.js +11 -0
- package/lib/module/components/Poll/index.js.map +1 -1
- package/lib/module/components/Thread/components/ThreadFooterComponent.js +1 -2
- package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/module/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js +0 -15
- package/lib/module/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messageListItemContext/MessageListItemContext.js.map +1 -1
- package/lib/module/hooks/messagePreview/useMessagePreviewText.js +9 -4
- package/lib/module/hooks/messagePreview/useMessagePreviewText.js.map +1 -1
- package/lib/module/hooks/useTranslatedMessage.js +4 -3
- package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/module/index.js +0 -12
- package/lib/module/index.js.map +1 -1
- package/lib/module/store/SqliteClient.js +1 -1
- package/lib/module/store/mappers/mapPollToStorable.js +4 -0
- package/lib/module/store/mappers/mapPollToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToPoll.js +5 -1
- package/lib/module/store/mappers/mapStorableToPoll.js.map +1 -1
- package/lib/module/store/schema.js +2 -0
- package/lib/module/store/schema.js.map +1 -1
- package/lib/module/types/types.js.map +1 -1
- package/lib/module/utils/i18n/getTranslatedText.js +7 -0
- package/lib/module/utils/i18n/getTranslatedText.js.map +1 -0
- package/lib/module/utils/utils.js +35 -1
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/ai-components/services/media-picker-service/index.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useChannelLifecycle.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewPollLabel.d.ts.map +1 -1
- package/lib/typescript/components/Message/Message.d.ts +2 -1
- package/lib/typescript/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/Headers/SentToChannelHeader.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageStatus.d.ts +6 -0
- package/lib/typescript/components/Message/MessageItemView/MessageStatus.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useOpenThreadAtMessage.d.ts +14 -0
- package/lib/typescript/components/Message/hooks/useOpenThreadAtMessage.d.ts.map +1 -0
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AudioAttachmentUploadPreview.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageListFocus.d.ts +5 -2
- package/lib/typescript/components/MessageList/hooks/useMessageListFocus.d.ts.map +1 -1
- package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts.map +1 -1
- package/lib/typescript/components/Poll/hooks/usePollState.d.ts +1 -0
- package/lib/typescript/components/Poll/hooks/usePollState.d.ts.map +1 -1
- package/lib/typescript/components/Poll/hooks/usePollTextTranslation.d.ts +7 -0
- package/lib/typescript/components/Poll/hooks/usePollTextTranslation.d.ts.map +1 -0
- package/lib/typescript/components/Poll/index.d.ts +1 -0
- package/lib/typescript/components/Poll/index.d.ts.map +1 -1
- package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
- package/lib/typescript/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageListItemContext/MessageListItemContext.d.ts +10 -6
- package/lib/typescript/contexts/messageListItemContext/MessageListItemContext.d.ts.map +1 -1
- package/lib/typescript/hooks/messagePreview/useMessagePreviewText.d.ts.map +1 -1
- package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
- package/lib/typescript/i18n/keys.d.ts +2 -2
- package/lib/typescript/i18n/keys.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +0 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/store/mappers/mapPollToStorable.d.ts.map +1 -1
- package/lib/typescript/store/mappers/mapStorableToPoll.d.ts.map +1 -1
- package/lib/typescript/store/schema.d.ts +2 -0
- package/lib/typescript/store/schema.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +0 -4
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/utils/i18n/getTranslatedText.d.ts +8 -0
- package/lib/typescript/utils/i18n/getTranslatedText.d.ts.map +1 -0
- package/lib/typescript/utils/utils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +1 -1
- package/src/components/AttachmentPicker/components/AttachmentMediaPicker/__tests__/AttachmentPickerItem.test.tsx +29 -1
- package/src/components/Channel/__tests__/Channel.test.tsx +40 -7
- package/src/components/Channel/hooks/useChannelLifecycle.ts +8 -4
- package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +1 -1
- package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx +8 -0
- package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +2 -7
- package/src/components/ChannelPreview/__tests__/ChannelPreviewView.test.tsx +41 -0
- package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewPollLabel.test.tsx +28 -3
- package/src/components/ChannelPreview/hooks/useChannelPreviewPollLabel.ts +8 -4
- package/src/components/Message/Message.tsx +5 -2
- package/src/components/Message/MessageItemView/Headers/SentToChannelHeader.tsx +4 -32
- package/src/components/Message/MessageItemView/MessageContent.tsx +3 -2
- package/src/components/Message/MessageItemView/MessageStatus.tsx +43 -4
- package/src/components/Message/MessageItemView/__tests__/MessageContent.test.tsx +68 -1
- package/src/components/Message/MessageItemView/__tests__/MessageStatus.test.tsx +57 -0
- package/src/components/Message/hooks/useOpenThreadAtMessage.ts +50 -0
- package/src/components/Message/utils/__tests__/messageActions.test.ts +57 -0
- package/src/components/Message/utils/messageActions.ts +1 -1
- package/src/components/MessageInput/__tests__/AttachmentUploadPreviewList.test.tsx +34 -6
- package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreview.test.tsx +24 -3
- package/src/components/MessageInput/__tests__/SendMessageDisallowedIndicator.test.tsx +3 -6
- package/src/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.tsx +19 -8
- package/src/components/MessageInput/components/AttachmentPreview/AudioAttachmentUploadPreview.tsx +2 -5
- package/src/components/MessageInput/hooks/useAudioRecorder.tsx +2 -2
- package/src/components/MessageList/InlineUnreadIndicator.tsx +2 -2
- package/src/components/MessageList/MessageList.tsx +1 -5
- package/src/components/MessageList/__tests__/InlineUnreadIndicator.test.tsx +2 -2
- package/src/components/MessageList/__tests__/MessageList.test.tsx +163 -0
- package/src/components/MessageList/hooks/useMessageListFocus.ts +22 -2
- package/src/components/Poll/Poll.tsx +4 -2
- package/src/components/Poll/__tests__/PollTranslation.test.tsx +152 -0
- package/src/components/Poll/components/PollAnswersList.tsx +5 -1
- package/src/components/Poll/components/PollOption.tsx +8 -4
- package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +5 -2
- package/src/components/Poll/components/PollResults/PollResultItem.tsx +3 -1
- package/src/components/Poll/components/PollResults/PollResults.tsx +4 -2
- package/src/components/Poll/hooks/usePollState.ts +4 -0
- package/src/components/Poll/hooks/usePollTextTranslation.ts +19 -0
- package/src/components/Poll/index.ts +1 -0
- package/src/components/Thread/__tests__/Thread.test.tsx +46 -1
- package/src/components/Thread/components/ThreadFooterComponent.tsx +0 -1
- package/src/contexts/channelPinnedMessageListContext/ChannelPinnedMessageListContext.tsx +5 -14
- package/src/contexts/messageContext/MessageContext.tsx +2 -1
- package/src/contexts/messageListItemContext/MessageListItemContext.tsx +15 -6
- package/src/hooks/__tests__/useTranslatedMessage.test.tsx +20 -0
- package/src/hooks/messagePreview/__tests__/useMessagePreviewText.test.tsx +37 -2
- package/src/hooks/messagePreview/useMessagePreviewText.tsx +5 -2
- package/src/hooks/useTranslatedMessage.ts +6 -11
- package/src/i18n/__tests__/catalog.fixture.json +2 -2
- package/src/i18n/keys.ts +2 -2
- package/src/index.ts +0 -1
- package/src/store/SqliteClient.ts +1 -1
- package/src/store/apis/__tests__/pollTranslations.test.ts +136 -0
- package/src/store/mappers/mapPollToStorable.ts +6 -0
- package/src/store/mappers/mapStorableToPoll.ts +4 -0
- package/src/store/schema.ts +4 -0
- package/src/types/stream-chat-common-custom-data.d.ts +0 -3
- package/src/types/types.ts +0 -5
- package/src/utils/__tests__/utils.test.ts +42 -1
- package/src/utils/i18n/__tests__/getTranslatedText.test.ts +17 -0
- package/src/utils/i18n/getTranslatedText.ts +10 -0
- package/src/utils/utils.ts +57 -1
- package/src/version.json +1 -1
- package/lib/commonjs/utils/setupCommandUIMiddlewares.js +0 -37
- package/lib/commonjs/utils/setupCommandUIMiddlewares.js.map +0 -1
- package/lib/module/utils/setupCommandUIMiddlewares.js +0 -37
- package/lib/module/utils/setupCommandUIMiddlewares.js.map +0 -1
- package/lib/typescript/utils/setupCommandUIMiddlewares.d.ts +0 -3
- package/lib/typescript/utils/setupCommandUIMiddlewares.d.ts.map +0 -1
- package/src/utils/__tests__/setupCommandUIMiddlewares.test.ts +0 -49
- package/src/utils/setupCommandUIMiddlewares.ts +0 -34
|
@@ -13,6 +13,7 @@ export const mapStorableToPoll = (pollRow: TableRow<'poll'>): PollResponseData =
|
|
|
13
13
|
created_by,
|
|
14
14
|
created_by_id,
|
|
15
15
|
description,
|
|
16
|
+
description_i18n,
|
|
16
17
|
enforce_unique_vote,
|
|
17
18
|
id,
|
|
18
19
|
is_closed,
|
|
@@ -20,6 +21,7 @@ export const mapStorableToPoll = (pollRow: TableRow<'poll'>): PollResponseData =
|
|
|
20
21
|
latest_votes_by_option,
|
|
21
22
|
max_votes_allowed,
|
|
22
23
|
name,
|
|
24
|
+
name_i18n,
|
|
23
25
|
options,
|
|
24
26
|
own_votes,
|
|
25
27
|
updated_at,
|
|
@@ -37,6 +39,7 @@ export const mapStorableToPoll = (pollRow: TableRow<'poll'>): PollResponseData =
|
|
|
37
39
|
created_by_id,
|
|
38
40
|
custom: {},
|
|
39
41
|
description: description ?? '',
|
|
42
|
+
description_i18n: description_i18n ? (JSON.parse(description_i18n) ?? undefined) : undefined,
|
|
40
43
|
enforce_unique_vote,
|
|
41
44
|
id,
|
|
42
45
|
is_closed,
|
|
@@ -44,6 +47,7 @@ export const mapStorableToPoll = (pollRow: TableRow<'poll'>): PollResponseData =
|
|
|
44
47
|
latest_votes_by_option: JSON.parse(latest_votes_by_option),
|
|
45
48
|
max_votes_allowed,
|
|
46
49
|
name,
|
|
50
|
+
name_i18n: name_i18n ? (JSON.parse(name_i18n) ?? undefined) : undefined,
|
|
47
51
|
options: JSON.parse(options),
|
|
48
52
|
own_votes: own_votes ? JSON.parse(own_votes) : [],
|
|
49
53
|
updated_at: mapStorableToRequiredTimestamp(updated_at),
|
package/src/store/schema.ts
CHANGED
|
@@ -225,6 +225,7 @@ export const tables: Tables = {
|
|
|
225
225
|
created_by: 'TEXT',
|
|
226
226
|
created_by_id: 'TEXT',
|
|
227
227
|
description: 'TEXT',
|
|
228
|
+
description_i18n: 'TEXT',
|
|
228
229
|
enforce_unique_vote: 'BOOLEAN DEFAULT FALSE',
|
|
229
230
|
id: 'TEXT NOT NULL',
|
|
230
231
|
is_closed: 'BOOLEAN DEFAULT FALSE',
|
|
@@ -232,6 +233,7 @@ export const tables: Tables = {
|
|
|
232
233
|
latest_votes_by_option: 'TEXT',
|
|
233
234
|
max_votes_allowed: 'INTEGER DEFAULT 1',
|
|
234
235
|
name: 'TEXT',
|
|
236
|
+
name_i18n: 'TEXT',
|
|
235
237
|
options: 'TEXT',
|
|
236
238
|
own_votes: 'TEXT',
|
|
237
239
|
updated_at: 'INTEGER',
|
|
@@ -462,7 +464,9 @@ export type Schema = {
|
|
|
462
464
|
allow_answers?: boolean;
|
|
463
465
|
allow_user_suggested_options?: boolean;
|
|
464
466
|
description?: string;
|
|
467
|
+
description_i18n?: string;
|
|
465
468
|
is_closed?: boolean;
|
|
469
|
+
name_i18n?: string;
|
|
466
470
|
own_votes?: string;
|
|
467
471
|
voting_visibility?: string;
|
|
468
472
|
};
|
|
@@ -3,7 +3,6 @@ import 'stream-chat';
|
|
|
3
3
|
import {
|
|
4
4
|
DefaultAttachmentData,
|
|
5
5
|
DefaultChannelData,
|
|
6
|
-
DefaultCommandData,
|
|
7
6
|
DefaultEventData,
|
|
8
7
|
DefaultMemberData,
|
|
9
8
|
DefaultMessageData,
|
|
@@ -21,8 +20,6 @@ declare module 'stream-chat' {
|
|
|
21
20
|
|
|
22
21
|
interface CustomChannelData extends DefaultChannelData {}
|
|
23
22
|
|
|
24
|
-
interface CustomCommandData extends DefaultCommandData {}
|
|
25
|
-
|
|
26
23
|
interface CustomEventData extends DefaultEventData {}
|
|
27
24
|
|
|
28
25
|
interface CustomMemberData extends DefaultMemberData {}
|
package/src/types/types.ts
CHANGED
|
@@ -60,11 +60,6 @@ export interface DefaultChannelData {
|
|
|
60
60
|
name?: string;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
export interface DefaultCommandData {
|
|
64
|
-
flag: unknown;
|
|
65
|
-
imgur: unknown;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
63
|
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
69
64
|
|
|
70
65
|
export interface DefaultEventData {}
|
|
@@ -1,4 +1,45 @@
|
|
|
1
|
-
import { formatMsToMinSec, getUrlWithoutParams } from '../utils';
|
|
1
|
+
import { formatMsToMinSec, getInitialsFromName, getUrlWithoutParams } from '../utils';
|
|
2
|
+
|
|
3
|
+
describe('getInitialsFromName', () => {
|
|
4
|
+
it('should return the uppercased first letter of the first two words', () => {
|
|
5
|
+
expect(getInitialsFromName('ivan sekovanikj')).toBe('IS');
|
|
6
|
+
expect(getInitialsFromName(' Jane Mary Doe ')).toBe('JM');
|
|
7
|
+
expect(getInitialsFromName('Jane Mary Doe', 3)).toBe('JMD');
|
|
8
|
+
expect(getInitialsFromName('Jane')).toBe('J');
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('should return an empty string for empty or blank names', () => {
|
|
12
|
+
expect(getInitialsFromName('')).toBe('');
|
|
13
|
+
expect(getInitialsFromName(' ')).toBe('');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should keep characters outside the Basic Multilingual Plane intact', () => {
|
|
17
|
+
expect(getInitialsFromName('😀 Smiley')).toBe('😀S');
|
|
18
|
+
expect(getInitialsFromName('𝒜lice Bob')).toBe('𝒜B');
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should keep emoji sequences intact', () => {
|
|
22
|
+
expect(getInitialsFromName('👍🏽 Thumb')).toBe('👍🏽T');
|
|
23
|
+
expect(getInitialsFromName('🇺🇸 Flag')).toBe('🇺🇸F');
|
|
24
|
+
expect(getInitialsFromName('🇺🇸🇬🇧 Flags')).toBe('🇺🇸F');
|
|
25
|
+
expect(getInitialsFromName('👨👩👧 Family')).toBe('👨👩👧F');
|
|
26
|
+
expect(getInitialsFromName('❤️ Heart')).toBe('❤️H');
|
|
27
|
+
expect(getInitialsFromName('🏴 England')).toBe('🏴E');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should bound the length of a pathological emoji sequence', () => {
|
|
31
|
+
const initials = getInitialsFromName(`${'👨👩👧'.repeat(2000)} x`);
|
|
32
|
+
|
|
33
|
+
expect(initials.length).toBeLessThanOrEqual(33);
|
|
34
|
+
expect(initials.endsWith('X')).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should take the first code unit of words that do not start with an emoji', () => {
|
|
38
|
+
expect(getInitialsFromName('Иван Петров')).toBe('ИП');
|
|
39
|
+
expect(getInitialsFromName('大学 同学')).toBe('大同');
|
|
40
|
+
expect(getInitialsFromName('1️⃣ One')).toBe('1O');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
2
43
|
|
|
3
44
|
describe('getUrlWithoutParams', () => {
|
|
4
45
|
const testUrlMap: Record<string, string> = {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getTranslatedText } from '../getTranslatedText';
|
|
2
|
+
|
|
3
|
+
describe('getTranslatedText', () => {
|
|
4
|
+
const i18n = { de_text: 'Wie geht es?', language: 'en' };
|
|
5
|
+
|
|
6
|
+
it('returns the translation into the given language', () => {
|
|
7
|
+
expect(getTranslatedText(i18n, 'de')).toBe('Wie geht es?');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('returns undefined when there is no translation into the given language', () => {
|
|
11
|
+
expect(getTranslatedText(i18n, 'fr')).toBeUndefined();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('returns undefined when the text has no translations', () => {
|
|
15
|
+
expect(getTranslatedText(undefined, 'de')).toBeUndefined();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the translation of a text into `language`, or undefined if there is none.
|
|
3
|
+
*
|
|
4
|
+
* The UI language can be any registered string, while `i18n` only carries the languages the
|
|
5
|
+
* auto-translation endpoint supports, so an unsupported language returns undefined.
|
|
6
|
+
*/
|
|
7
|
+
export const getTranslatedText = (
|
|
8
|
+
i18n: Record<string, string> | undefined,
|
|
9
|
+
language: string,
|
|
10
|
+
): string | undefined => i18n?.[`${language}_text`];
|
package/src/utils/utils.ts
CHANGED
|
@@ -313,6 +313,55 @@ export const checkQuotedMessageEquality = (
|
|
|
313
313
|
return quotedMessageEqual;
|
|
314
314
|
};
|
|
315
315
|
|
|
316
|
+
const ZERO_WIDTH_JOINER = 0x200d;
|
|
317
|
+
// The longest real emoji sequences are ~15 code units, this only bounds pathological input.
|
|
318
|
+
const MAX_EMOJI_LENGTH = 32;
|
|
319
|
+
// Emoji start with a high surrogate or sit in the BMP symbol blocks (e.g. ❤ U+2764). Kept as
|
|
320
|
+
// one-character strings so a word's first character can be compared without `charCodeAt`.
|
|
321
|
+
const SYMBOLS_START = String.fromCharCode(0x2000);
|
|
322
|
+
const SYMBOLS_END = String.fromCharCode(0x2bff);
|
|
323
|
+
const HIGH_SURROGATE_START = String.fromCharCode(0xd800);
|
|
324
|
+
const HIGH_SURROGATE_END = String.fromCharCode(0xdbff);
|
|
325
|
+
|
|
326
|
+
const isRegionalIndicator = (codePoint: number) => codePoint >= 0x1f1e6 && codePoint <= 0x1f1ff;
|
|
327
|
+
|
|
328
|
+
// Code points that attach to the preceding emoji instead of starting a new character.
|
|
329
|
+
const isEmojiModifier = (codePoint: number) =>
|
|
330
|
+
(codePoint >= 0xfe00 && codePoint <= 0xfe0f) || // variation selectors
|
|
331
|
+
(codePoint >= 0x1f3fb && codePoint <= 0x1f3ff) || // skin tone modifiers
|
|
332
|
+
(codePoint >= 0xe0020 && codePoint <= 0xe007f); // tags, used by subdivision flags
|
|
333
|
+
|
|
334
|
+
const codePointLength = (codePoint: number) => (codePoint > 0xffff ? 2 : 1);
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Returns the first character of a string that starts with an emoji, keeping skin tones, flags
|
|
338
|
+
* and ZWJ sequences intact. Hermes has no `Intl.Segmenter`, so the common cases are covered with
|
|
339
|
+
* explicit code point ranges.
|
|
340
|
+
*/
|
|
341
|
+
const getFirstEmoji = (text: string) => {
|
|
342
|
+
const first = text.codePointAt(0) as number;
|
|
343
|
+
let end = codePointLength(first);
|
|
344
|
+
|
|
345
|
+
if (isRegionalIndicator(first)) {
|
|
346
|
+
const next = text.codePointAt(end);
|
|
347
|
+
if (next !== undefined && isRegionalIndicator(next)) {
|
|
348
|
+
end += 2;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
while (end < text.length && end < MAX_EMOJI_LENGTH) {
|
|
352
|
+
const codePoint = text.codePointAt(end) as number;
|
|
353
|
+
if (isEmojiModifier(codePoint)) {
|
|
354
|
+
end += codePointLength(codePoint);
|
|
355
|
+
} else if (codePoint === ZERO_WIDTH_JOINER && end + 1 < text.length) {
|
|
356
|
+
end += 1 + codePointLength(text.codePointAt(end + 1) as number);
|
|
357
|
+
} else {
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
return text.slice(0, end);
|
|
363
|
+
};
|
|
364
|
+
|
|
316
365
|
/**
|
|
317
366
|
* Returns the uppercase first letters of the first words of a name.
|
|
318
367
|
*
|
|
@@ -328,7 +377,14 @@ export const getInitialsFromName = (name: string, numberOfInitials: number = 2)
|
|
|
328
377
|
return trimmed
|
|
329
378
|
.split(/\s+/)
|
|
330
379
|
.slice(0, numberOfInitials)
|
|
331
|
-
.map((n) =>
|
|
380
|
+
.map((n) => {
|
|
381
|
+
const first = n.charAt(0);
|
|
382
|
+
// Plain names take the same `charAt(0)` path as before; only possible emoji do more work.
|
|
383
|
+
const mayBeEmoji =
|
|
384
|
+
first >= SYMBOLS_START &&
|
|
385
|
+
(first <= SYMBOLS_END || (first >= HIGH_SURROGATE_START && first <= HIGH_SURROGATE_END));
|
|
386
|
+
return (mayBeEmoji ? getFirstEmoji(n) : first).toUpperCase();
|
|
387
|
+
})
|
|
332
388
|
.join('');
|
|
333
389
|
};
|
|
334
390
|
|
package/src/version.json
CHANGED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", {
|
|
2
|
-
value: true
|
|
3
|
-
});
|
|
4
|
-
exports.setupCommandUIMiddlewares = void 0;
|
|
5
|
-
var _streamChat = require("stream-chat");
|
|
6
|
-
var setupCommandUIMiddlewares = messageComposer => {
|
|
7
|
-
messageComposer.compositionMiddlewareExecutor.insert({
|
|
8
|
-
middleware: [(0, _streamChat.createCommandInjectionMiddleware)(messageComposer)],
|
|
9
|
-
position: {
|
|
10
|
-
after: 'stream-io/message-composer-middleware/attachments'
|
|
11
|
-
},
|
|
12
|
-
unique: true
|
|
13
|
-
});
|
|
14
|
-
messageComposer.draftCompositionMiddlewareExecutor.insert({
|
|
15
|
-
middleware: [(0, _streamChat.createDraftCommandInjectionMiddleware)(messageComposer)],
|
|
16
|
-
position: {
|
|
17
|
-
after: 'stream-io/message-composer-middleware/draft-attachments'
|
|
18
|
-
},
|
|
19
|
-
unique: true
|
|
20
|
-
});
|
|
21
|
-
messageComposer.textComposer.middlewareExecutor.insert({
|
|
22
|
-
middleware: [(0, _streamChat.createActiveCommandGuardMiddleware)()],
|
|
23
|
-
position: {
|
|
24
|
-
before: 'stream-io/text-composer/commands-middleware'
|
|
25
|
-
},
|
|
26
|
-
unique: true
|
|
27
|
-
});
|
|
28
|
-
messageComposer.textComposer.middlewareExecutor.insert({
|
|
29
|
-
middleware: [(0, _streamChat.createCommandStringExtractionMiddleware)()],
|
|
30
|
-
position: {
|
|
31
|
-
after: 'stream-io/text-composer/commands-middleware'
|
|
32
|
-
},
|
|
33
|
-
unique: true
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
exports.setupCommandUIMiddlewares = setupCommandUIMiddlewares;
|
|
37
|
-
//# sourceMappingURL=setupCommandUIMiddlewares.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_streamChat","require","setupCommandUIMiddlewares","messageComposer","compositionMiddlewareExecutor","insert","middleware","createCommandInjectionMiddleware","position","after","unique","draftCompositionMiddlewareExecutor","createDraftCommandInjectionMiddleware","textComposer","middlewareExecutor","createActiveCommandGuardMiddleware","before","createCommandStringExtractionMiddleware","exports"],"sourceRoot":"../../../src","sources":["utils/setupCommandUIMiddlewares.ts"],"mappings":";;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AASO,IAAMC,yBAAyB,GAAIC,eAAgC,IAAK;EAC7EA,eAAe,CAACC,6BAA6B,CAACC,MAAM,CAAC;IACnDC,UAAU,EAAE,CAAC,IAAAC,4CAAgC,EAACJ,eAAe,CAAC,CAAC;IAC/DK,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAoD,CAAC;IACxEC,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,eAAe,CAACQ,kCAAkC,CAACN,MAAM,CAAC;IACxDC,UAAU,EAAE,CAAC,IAAAM,iDAAqC,EAACT,eAAe,CAAC,CAAC;IACpEK,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAA0D,CAAC;IAC9EC,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,eAAe,CAACU,YAAY,CAACC,kBAAkB,CAACT,MAAM,CAAC;IACrDC,UAAU,EAAE,CAAC,IAAAS,8CAAkC,EAAC,CAAC,CAA2B;IAC5EP,QAAQ,EAAE;MAAEQ,MAAM,EAAE;IAA8C,CAAC;IACnEN,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,eAAe,CAACU,YAAY,CAACC,kBAAkB,CAACT,MAAM,CAAC;IACrDC,UAAU,EAAE,CAAC,IAAAW,mDAAuC,EAAC,CAAC,CAA2B;IACjFT,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAA8C,CAAC;IAClEC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ,CAAC;AAACQ,OAAA,CAAAhB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", {
|
|
2
|
-
value: true
|
|
3
|
-
});
|
|
4
|
-
exports.setupCommandUIMiddlewares = void 0;
|
|
5
|
-
var _streamChat = require("stream-chat");
|
|
6
|
-
var setupCommandUIMiddlewares = messageComposer => {
|
|
7
|
-
messageComposer.compositionMiddlewareExecutor.insert({
|
|
8
|
-
middleware: [(0, _streamChat.createCommandInjectionMiddleware)(messageComposer)],
|
|
9
|
-
position: {
|
|
10
|
-
after: 'stream-io/message-composer-middleware/attachments'
|
|
11
|
-
},
|
|
12
|
-
unique: true
|
|
13
|
-
});
|
|
14
|
-
messageComposer.draftCompositionMiddlewareExecutor.insert({
|
|
15
|
-
middleware: [(0, _streamChat.createDraftCommandInjectionMiddleware)(messageComposer)],
|
|
16
|
-
position: {
|
|
17
|
-
after: 'stream-io/message-composer-middleware/draft-attachments'
|
|
18
|
-
},
|
|
19
|
-
unique: true
|
|
20
|
-
});
|
|
21
|
-
messageComposer.textComposer.middlewareExecutor.insert({
|
|
22
|
-
middleware: [(0, _streamChat.createActiveCommandGuardMiddleware)()],
|
|
23
|
-
position: {
|
|
24
|
-
before: 'stream-io/text-composer/commands-middleware'
|
|
25
|
-
},
|
|
26
|
-
unique: true
|
|
27
|
-
});
|
|
28
|
-
messageComposer.textComposer.middlewareExecutor.insert({
|
|
29
|
-
middleware: [(0, _streamChat.createCommandStringExtractionMiddleware)()],
|
|
30
|
-
position: {
|
|
31
|
-
after: 'stream-io/text-composer/commands-middleware'
|
|
32
|
-
},
|
|
33
|
-
unique: true
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
exports.setupCommandUIMiddlewares = setupCommandUIMiddlewares;
|
|
37
|
-
//# sourceMappingURL=setupCommandUIMiddlewares.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_streamChat","require","setupCommandUIMiddlewares","messageComposer","compositionMiddlewareExecutor","insert","middleware","createCommandInjectionMiddleware","position","after","unique","draftCompositionMiddlewareExecutor","createDraftCommandInjectionMiddleware","textComposer","middlewareExecutor","createActiveCommandGuardMiddleware","before","createCommandStringExtractionMiddleware","exports"],"sourceRoot":"../../../src","sources":["utils/setupCommandUIMiddlewares.ts"],"mappings":";;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AASO,IAAMC,yBAAyB,GAAIC,eAAgC,IAAK;EAC7EA,eAAe,CAACC,6BAA6B,CAACC,MAAM,CAAC;IACnDC,UAAU,EAAE,CAAC,IAAAC,4CAAgC,EAACJ,eAAe,CAAC,CAAC;IAC/DK,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAoD,CAAC;IACxEC,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,eAAe,CAACQ,kCAAkC,CAACN,MAAM,CAAC;IACxDC,UAAU,EAAE,CAAC,IAAAM,iDAAqC,EAACT,eAAe,CAAC,CAAC;IACpEK,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAA0D,CAAC;IAC9EC,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,eAAe,CAACU,YAAY,CAACC,kBAAkB,CAACT,MAAM,CAAC;IACrDC,UAAU,EAAE,CAAC,IAAAS,8CAAkC,EAAC,CAAC,CAA2B;IAC5EP,QAAQ,EAAE;MAAEQ,MAAM,EAAE;IAA8C,CAAC;IACnEN,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,eAAe,CAACU,YAAY,CAACC,kBAAkB,CAACT,MAAM,CAAC;IACrDC,UAAU,EAAE,CAAC,IAAAW,mDAAuC,EAAC,CAAC,CAA2B;IACjFT,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAA8C,CAAC;IAClEC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ,CAAC;AAACQ,OAAA,CAAAhB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setupCommandUIMiddlewares.d.ts","sourceRoot":"","sources":["../../../src/utils/setupCommandUIMiddlewares.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,eAAe,EAEhB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,yBAAyB,GAAI,iBAAiB,eAAe,SAwBzE,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { MessageComposer } from 'stream-chat';
|
|
2
|
-
|
|
3
|
-
import { initiateClientWithChannels } from '../../mock-builders/api/initiateClientWithChannels';
|
|
4
|
-
import { setupCommandUIMiddlewares } from '../setupCommandUIMiddlewares';
|
|
5
|
-
|
|
6
|
-
const countMiddleware = (composer: MessageComposer) => {
|
|
7
|
-
const count = (middleware: ReadonlyArray<{ id: string }>, id: string) =>
|
|
8
|
-
middleware.filter((md) => md.id === id).length;
|
|
9
|
-
|
|
10
|
-
return {
|
|
11
|
-
composition: count(
|
|
12
|
-
composer.compositionMiddlewareExecutor.installedMiddleware,
|
|
13
|
-
'stream-io/message-composer-middleware/command-string-injection',
|
|
14
|
-
),
|
|
15
|
-
draftComposition: count(
|
|
16
|
-
composer.draftCompositionMiddlewareExecutor.installedMiddleware,
|
|
17
|
-
'stream-io/message-composer-middleware/draft-command-string-injection',
|
|
18
|
-
),
|
|
19
|
-
textActiveCommandGuard: count(
|
|
20
|
-
composer.textComposer.middlewareExecutor.installedMiddleware,
|
|
21
|
-
'stream-io/text-composer/active-command-guard',
|
|
22
|
-
),
|
|
23
|
-
textCommandStringExtraction: count(
|
|
24
|
-
composer.textComposer.middlewareExecutor.installedMiddleware,
|
|
25
|
-
'stream-io/text-composer/command-string-extraction',
|
|
26
|
-
),
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
describe('setupCommandUIMiddlewares', () => {
|
|
31
|
-
it('inserts each command middleware once, however often it runs on the same composer', async () => {
|
|
32
|
-
const {
|
|
33
|
-
channels: [channel],
|
|
34
|
-
} = await initiateClientWithChannels();
|
|
35
|
-
const composer = channel.messageComposer;
|
|
36
|
-
|
|
37
|
-
// The `messageComposer` setup function re-runs on every config change and re-subscription.
|
|
38
|
-
setupCommandUIMiddlewares(composer);
|
|
39
|
-
setupCommandUIMiddlewares(composer);
|
|
40
|
-
setupCommandUIMiddlewares(composer);
|
|
41
|
-
|
|
42
|
-
expect(countMiddleware(composer)).toEqual({
|
|
43
|
-
composition: 1,
|
|
44
|
-
draftComposition: 1,
|
|
45
|
-
textActiveCommandGuard: 1,
|
|
46
|
-
textCommandStringExtraction: 1,
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createActiveCommandGuardMiddleware,
|
|
3
|
-
createCommandInjectionMiddleware,
|
|
4
|
-
createCommandStringExtractionMiddleware,
|
|
5
|
-
createDraftCommandInjectionMiddleware,
|
|
6
|
-
MessageComposer,
|
|
7
|
-
TextComposerMiddleware,
|
|
8
|
-
} from 'stream-chat';
|
|
9
|
-
|
|
10
|
-
export const setupCommandUIMiddlewares = (messageComposer: MessageComposer) => {
|
|
11
|
-
messageComposer.compositionMiddlewareExecutor.insert({
|
|
12
|
-
middleware: [createCommandInjectionMiddleware(messageComposer)],
|
|
13
|
-
position: { after: 'stream-io/message-composer-middleware/attachments' },
|
|
14
|
-
unique: true,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
messageComposer.draftCompositionMiddlewareExecutor.insert({
|
|
18
|
-
middleware: [createDraftCommandInjectionMiddleware(messageComposer)],
|
|
19
|
-
position: { after: 'stream-io/message-composer-middleware/draft-attachments' },
|
|
20
|
-
unique: true,
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
messageComposer.textComposer.middlewareExecutor.insert({
|
|
24
|
-
middleware: [createActiveCommandGuardMiddleware() as TextComposerMiddleware],
|
|
25
|
-
position: { before: 'stream-io/text-composer/commands-middleware' },
|
|
26
|
-
unique: true,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
messageComposer.textComposer.middlewareExecutor.insert({
|
|
30
|
-
middleware: [createCommandStringExtractionMiddleware() as TextComposerMiddleware],
|
|
31
|
-
position: { after: 'stream-io/text-composer/commands-middleware' },
|
|
32
|
-
unique: true,
|
|
33
|
-
});
|
|
34
|
-
};
|