stream-chat-react-native-core 9.4.0-beta.1 → 9.4.0-beta.11
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/Attachment/Attachment.js +10 -5
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Audio/AudioAttachment.js +2 -4
- package/lib/commonjs/components/Attachment/Audio/AudioAttachment.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +7 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +2 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +41 -55
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +27 -7
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js +55 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js +47 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js +39 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionItem.js +45 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionItem.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionRoleItem.js +33 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionRoleItem.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js +26 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserItem.js +53 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserItem.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js +38 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/index.js +60 -0
- package/lib/commonjs/components/AutoCompleteInput/mentionItems/index.js.map +1 -0
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsActionItems.js +2 -1
- package/lib/commonjs/components/ChannelDetails/hooks/useChannelDetailsActionItems.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelList.js +4 -1
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +5 -3
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +5 -3
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +3 -0
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewPinnedStatus.js +30 -0
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewPinnedStatus.js.map +1 -0
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js +8 -3
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js +2 -1
- package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/index.js +11 -0
- package/lib/commonjs/components/ChannelPreview/hooks/index.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewData.js +3 -0
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewData.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useIsChannelPinned.js +11 -0
- package/lib/commonjs/components/ChannelPreview/hooks/useIsChannelPinned.js.map +1 -0
- package/lib/commonjs/components/Message/Message.js +53 -16
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js +6 -84
- package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js +14 -0
- package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
- package/lib/commonjs/components/Message/MessageItemView/utils/renderText.js +69 -11
- package/lib/commonjs/components/Message/MessageItemView/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageComposer.js +13 -41
- package/lib/commonjs/components/MessageInput/MessageComposer.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageFlashList.js +22 -3
- package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +23 -4
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageActionList.js +1 -1
- package/lib/commonjs/components/Poll/components/CreatePollHeader.js +5 -5
- package/lib/commonjs/components/Poll/components/CreatePollHeader.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollButtons.js +25 -56
- package/lib/commonjs/components/Poll/components/PollButtons.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollInputDialog.js +9 -11
- package/lib/commonjs/components/Poll/components/PollInputDialog.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollModal.js +50 -0
- package/lib/commonjs/components/Poll/components/PollModal.js.map +1 -0
- package/lib/commonjs/components/Poll/components/PollModalHeader.js +4 -5
- package/lib/commonjs/components/Poll/components/PollModalHeader.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js +10 -24
- package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
- package/lib/commonjs/components/Poll/components/index.js +11 -0
- package/lib/commonjs/components/Poll/components/index.js.map +1 -1
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js +4 -17
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/commonjs/components/UIComponents/ClippingFadeBottom.js +56 -0
- package/lib/commonjs/components/UIComponents/ClippingFadeBottom.js.map +1 -0
- package/lib/commonjs/components/UIComponents/PortalWhileClosingView.js +0 -3
- package/lib/commonjs/components/UIComponents/PortalWhileClosingView.js.map +1 -1
- package/lib/commonjs/components/UIComponents/index.js +11 -0
- package/lib/commonjs/components/UIComponents/index.js.map +1 -1
- package/lib/commonjs/components/index.js +22 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/contexts/componentsContext/defaultComponents.js +3 -0
- package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageComposer.js +2 -2
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageComposer.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +9 -2
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/hooks/actions/useChannelActionItems.js +20 -1
- package/lib/commonjs/hooks/actions/useChannelActionItems.js.map +1 -1
- package/lib/commonjs/hooks/actions/useChannelActionItemsById.js +3 -1
- package/lib/commonjs/hooks/actions/useChannelActionItemsById.js.map +1 -1
- package/lib/commonjs/i18n/ar.json +12 -1
- package/lib/commonjs/i18n/en.json +12 -1
- package/lib/commonjs/i18n/es.json +12 -1
- package/lib/commonjs/i18n/fr.json +12 -1
- package/lib/commonjs/i18n/he.json +12 -1
- package/lib/commonjs/i18n/hi.json +12 -1
- package/lib/commonjs/i18n/it.json +12 -1
- package/lib/commonjs/i18n/ja.json +12 -1
- package/lib/commonjs/i18n/ko.json +12 -1
- package/lib/commonjs/i18n/nl.json +12 -1
- package/lib/commonjs/i18n/pt-br.json +12 -1
- package/lib/commonjs/i18n/ru.json +12 -1
- package/lib/commonjs/i18n/tr.json +12 -1
- package/lib/commonjs/icons/index.js +12 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/icons/megaphone.js +36 -0
- package/lib/commonjs/icons/megaphone.js.map +1 -0
- package/lib/commonjs/icons/shield.js +36 -0
- package/lib/commonjs/icons/shield.js.map +1 -0
- package/lib/commonjs/store/SqliteClient.js +1 -1
- package/lib/commonjs/store/mappers/mapDraftMessageToStorable.js +8 -0
- package/lib/commonjs/store/mappers/mapDraftMessageToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToDraftMessage.js +8 -0
- package/lib/commonjs/store/mappers/mapStorableToDraftMessage.js.map +1 -1
- package/lib/commonjs/store/schema.js +4 -0
- package/lib/commonjs/store/schema.js.map +1 -1
- package/lib/commonjs/theme/generated/dark/StreamTokens.android.js +10 -1
- package/lib/commonjs/theme/generated/dark/StreamTokens.android.js.map +1 -1
- package/lib/commonjs/theme/generated/dark/StreamTokens.ios.js +10 -1
- package/lib/commonjs/theme/generated/dark/StreamTokens.ios.js.map +1 -1
- package/lib/commonjs/theme/generated/dark/StreamTokens.web.js +10 -1
- package/lib/commonjs/theme/generated/dark/StreamTokens.web.js.map +1 -1
- package/lib/commonjs/theme/generated/light/StreamTokens.android.js +10 -1
- package/lib/commonjs/theme/generated/light/StreamTokens.android.js.map +1 -1
- package/lib/commonjs/theme/generated/light/StreamTokens.ios.js +10 -1
- package/lib/commonjs/theme/generated/light/StreamTokens.ios.js.map +1 -1
- package/lib/commonjs/theme/generated/light/StreamTokens.web.js +10 -1
- package/lib/commonjs/theme/generated/light/StreamTokens.web.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +10 -5
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Attachment/Audio/AudioAttachment.js +2 -4
- package/lib/module/components/Attachment/Audio/AudioAttachment.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +7 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +2 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +41 -55
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +27 -7
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js +55 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js +47 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js +39 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionItem.js +45 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionItem.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionRoleItem.js +33 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionRoleItem.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js +26 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserItem.js +53 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserItem.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js +38 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/index.js +60 -0
- package/lib/module/components/AutoCompleteInput/mentionItems/index.js.map +1 -0
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsActionItems.js +2 -1
- package/lib/module/components/ChannelDetails/hooks/useChannelDetailsActionItems.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelList.js +4 -1
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +5 -3
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +5 -3
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +3 -0
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewPinnedStatus.js +30 -0
- package/lib/module/components/ChannelPreview/ChannelPreviewPinnedStatus.js.map +1 -0
- package/lib/module/components/ChannelPreview/ChannelPreviewView.js +8 -3
- package/lib/module/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js +2 -1
- package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/index.js +11 -0
- package/lib/module/components/ChannelPreview/hooks/index.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewData.js +3 -0
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewData.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useIsChannelPinned.js +11 -0
- package/lib/module/components/ChannelPreview/hooks/useIsChannelPinned.js.map +1 -0
- package/lib/module/components/Message/Message.js +53 -16
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageItemView.js +6 -84
- package/lib/module/components/Message/MessageItemView/MessageItemView.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/MessageTextContainer.js +14 -0
- package/lib/module/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
- package/lib/module/components/Message/MessageItemView/utils/renderText.js +69 -11
- package/lib/module/components/Message/MessageItemView/utils/renderText.js.map +1 -1
- package/lib/module/components/MessageInput/MessageComposer.js +13 -41
- package/lib/module/components/MessageInput/MessageComposer.js.map +1 -1
- package/lib/module/components/MessageList/MessageFlashList.js +22 -3
- package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +23 -4
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageActionList.js +1 -1
- package/lib/module/components/Poll/components/CreatePollHeader.js +5 -5
- package/lib/module/components/Poll/components/CreatePollHeader.js.map +1 -1
- package/lib/module/components/Poll/components/PollButtons.js +25 -56
- package/lib/module/components/Poll/components/PollButtons.js.map +1 -1
- package/lib/module/components/Poll/components/PollInputDialog.js +9 -11
- package/lib/module/components/Poll/components/PollInputDialog.js.map +1 -1
- package/lib/module/components/Poll/components/PollModal.js +50 -0
- package/lib/module/components/Poll/components/PollModal.js.map +1 -0
- package/lib/module/components/Poll/components/PollModalHeader.js +4 -5
- package/lib/module/components/Poll/components/PollModalHeader.js.map +1 -1
- package/lib/module/components/Poll/components/PollResults/PollResultItem.js +10 -24
- package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
- package/lib/module/components/Poll/components/index.js +11 -0
- package/lib/module/components/Poll/components/index.js.map +1 -1
- package/lib/module/components/UIComponents/BottomSheetModal.js +4 -17
- package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/module/components/UIComponents/ClippingFadeBottom.js +56 -0
- package/lib/module/components/UIComponents/ClippingFadeBottom.js.map +1 -0
- package/lib/module/components/UIComponents/PortalWhileClosingView.js +0 -3
- package/lib/module/components/UIComponents/PortalWhileClosingView.js.map +1 -1
- package/lib/module/components/UIComponents/index.js +11 -0
- package/lib/module/components/UIComponents/index.js.map +1 -1
- package/lib/module/components/index.js +22 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/contexts/componentsContext/defaultComponents.js +3 -0
- package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageComposer.js +2 -2
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageComposer.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +9 -2
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/hooks/actions/useChannelActionItems.js +20 -1
- package/lib/module/hooks/actions/useChannelActionItems.js.map +1 -1
- package/lib/module/hooks/actions/useChannelActionItemsById.js +3 -1
- package/lib/module/hooks/actions/useChannelActionItemsById.js.map +1 -1
- package/lib/module/i18n/ar.json +12 -1
- package/lib/module/i18n/en.json +12 -1
- package/lib/module/i18n/es.json +12 -1
- package/lib/module/i18n/fr.json +12 -1
- package/lib/module/i18n/he.json +12 -1
- package/lib/module/i18n/hi.json +12 -1
- package/lib/module/i18n/it.json +12 -1
- package/lib/module/i18n/ja.json +12 -1
- package/lib/module/i18n/ko.json +12 -1
- package/lib/module/i18n/nl.json +12 -1
- package/lib/module/i18n/pt-br.json +12 -1
- package/lib/module/i18n/ru.json +12 -1
- package/lib/module/i18n/tr.json +12 -1
- package/lib/module/icons/index.js +12 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/icons/megaphone.js +36 -0
- package/lib/module/icons/megaphone.js.map +1 -0
- package/lib/module/icons/shield.js +36 -0
- package/lib/module/icons/shield.js.map +1 -0
- package/lib/module/store/SqliteClient.js +1 -1
- package/lib/module/store/mappers/mapDraftMessageToStorable.js +8 -0
- package/lib/module/store/mappers/mapDraftMessageToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToDraftMessage.js +8 -0
- package/lib/module/store/mappers/mapStorableToDraftMessage.js.map +1 -1
- package/lib/module/store/schema.js +4 -0
- package/lib/module/store/schema.js.map +1 -1
- package/lib/module/theme/generated/dark/StreamTokens.android.js +10 -1
- package/lib/module/theme/generated/dark/StreamTokens.android.js.map +1 -1
- package/lib/module/theme/generated/dark/StreamTokens.ios.js +10 -1
- package/lib/module/theme/generated/dark/StreamTokens.ios.js.map +1 -1
- package/lib/module/theme/generated/dark/StreamTokens.web.js +10 -1
- package/lib/module/theme/generated/dark/StreamTokens.web.js.map +1 -1
- package/lib/module/theme/generated/light/StreamTokens.android.js +10 -1
- package/lib/module/theme/generated/light/StreamTokens.android.js.map +1 -1
- package/lib/module/theme/generated/light/StreamTokens.ios.js +10 -1
- package/lib/module/theme/generated/light/StreamTokens.ios.js.map +1 -1
- package/lib/module/theme/generated/light/StreamTokens.web.js +10 -1
- package/lib/module/theme/generated/light/StreamTokens.web.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Audio/AudioAttachment.d.ts +1 -0
- package/lib/typescript/components/Attachment/Audio/AudioAttachment.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +8 -2
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
- package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.d.ts +13 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.d.ts +26 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.d.ts +7 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionItem.d.ts +17 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionItem.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionRoleItem.d.ts +7 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionRoleItem.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.d.ts +7 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserItem.d.ts +7 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserItem.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.d.ts +21 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.d.ts.map +1 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/index.d.ts +17 -0
- package/lib/typescript/components/AutoCompleteInput/mentionItems/index.d.ts.map +1 -0
- package/lib/typescript/components/ChannelList/ChannelList.d.ts +1 -1
- package/lib/typescript/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts +1 -1
- package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreviewPinnedStatus.d.ts +6 -0
- package/lib/typescript/components/ChannelPreview/ChannelPreviewPinnedStatus.d.ts.map +1 -0
- package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts +3 -1
- package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/hooks/index.d.ts +1 -0
- package/lib/typescript/components/ChannelPreview/hooks/index.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +1 -0
- package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/hooks/useIsChannelPinned.d.ts +3 -0
- package/lib/typescript/components/ChannelPreview/hooks/useIsChannelPinned.d.ts.map +1 -0
- package/lib/typescript/components/Message/Message.d.ts +11 -1
- package/lib/typescript/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageItemView/utils/renderText.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/MessageComposer.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/CreatePollHeader.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollButtons.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollModal.d.ts +9 -0
- package/lib/typescript/components/Poll/components/PollModal.d.ts.map +1 -0
- package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/index.d.ts +1 -0
- package/lib/typescript/components/Poll/components/index.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/ClippingFadeBottom.d.ts +18 -0
- package/lib/typescript/components/UIComponents/ClippingFadeBottom.d.ts.map +1 -0
- package/lib/typescript/components/UIComponents/index.d.ts +1 -0
- package/lib/typescript/components/UIComponents/index.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +2 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +1 -0
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts.map +1 -1
- package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +2 -0
- package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageComposer.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/ThemeContext.d.ts +7 -0
- package/lib/typescript/contexts/themeContext/ThemeContext.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +7 -0
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
- package/lib/typescript/hooks/actions/useChannelActionItems.d.ts +35 -2
- package/lib/typescript/hooks/actions/useChannelActionItems.d.ts.map +1 -1
- package/lib/typescript/hooks/actions/useChannelActionItemsById.d.ts +3 -2
- package/lib/typescript/hooks/actions/useChannelActionItemsById.d.ts.map +1 -1
- package/lib/typescript/i18n/ar.json +12 -1
- package/lib/typescript/i18n/en.json +12 -1
- package/lib/typescript/i18n/es.json +12 -1
- package/lib/typescript/i18n/fr.json +12 -1
- package/lib/typescript/i18n/he.json +12 -1
- package/lib/typescript/i18n/hi.json +12 -1
- package/lib/typescript/i18n/it.json +12 -1
- package/lib/typescript/i18n/ja.json +12 -1
- package/lib/typescript/i18n/ko.json +12 -1
- package/lib/typescript/i18n/nl.json +12 -1
- package/lib/typescript/i18n/pt-br.json +12 -1
- package/lib/typescript/i18n/ru.json +12 -1
- package/lib/typescript/i18n/tr.json +12 -1
- package/lib/typescript/icons/index.d.ts +1 -0
- package/lib/typescript/icons/index.d.ts.map +1 -1
- package/lib/typescript/icons/megaphone.d.ts +4 -0
- package/lib/typescript/icons/megaphone.d.ts.map +1 -0
- package/lib/typescript/icons/shield.d.ts +4 -0
- package/lib/typescript/icons/shield.d.ts.map +1 -0
- package/lib/typescript/store/mappers/mapDraftMessageToStorable.d.ts.map +1 -1
- package/lib/typescript/store/mappers/mapStorableToDraftMessage.d.ts.map +1 -1
- package/lib/typescript/store/schema.d.ts +4 -0
- package/lib/typescript/store/schema.d.ts.map +1 -1
- package/lib/typescript/theme/generated/StreamTokens.types.d.ts +9 -0
- package/lib/typescript/theme/generated/StreamTokens.types.d.ts.map +1 -1
- package/lib/typescript/theme/generated/dark/StreamTokens.android.d.ts.map +1 -1
- package/lib/typescript/theme/generated/dark/StreamTokens.ios.d.ts.map +1 -1
- package/lib/typescript/theme/generated/dark/StreamTokens.web.d.ts.map +1 -1
- package/lib/typescript/theme/generated/light/StreamTokens.android.d.ts.map +1 -1
- package/lib/typescript/theme/generated/light/StreamTokens.ios.d.ts.map +1 -1
- package/lib/typescript/theme/generated/light/StreamTokens.web.d.ts.map +1 -1
- package/lib/typescript/utils/i18n/Streami18n.d.ts +11 -0
- package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/Attachment/Attachment.tsx +15 -6
- package/src/components/Attachment/Audio/AudioAttachment.tsx +3 -4
- package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +13 -0
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +2 -1
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +35 -43
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +28 -3
- package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.tsx +71 -0
- package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.tsx +71 -0
- package/src/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.tsx +36 -0
- package/src/components/AutoCompleteInput/mentionItems/MentionItem.tsx +59 -0
- package/src/components/AutoCompleteInput/mentionItems/MentionRoleItem.tsx +27 -0
- package/src/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.tsx +23 -0
- package/src/components/AutoCompleteInput/mentionItems/MentionUserItem.tsx +55 -0
- package/src/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.tsx +56 -0
- package/src/components/AutoCompleteInput/mentionItems/__tests__/MentionItems.test.tsx +129 -0
- package/src/components/AutoCompleteInput/mentionItems/__tests__/TokenizedSuggestionParts.test.tsx +63 -0
- package/src/components/AutoCompleteInput/mentionItems/index.ts +16 -0
- package/src/components/ChannelDetails/__tests__/useChannelDetailsActionItems.test.tsx +6 -2
- package/src/components/ChannelDetails/hooks/useChannelDetailsActionItems.ts +1 -1
- package/src/components/ChannelList/ChannelList.tsx +3 -0
- package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +3 -0
- package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx +3 -2
- package/src/components/ChannelPreview/ChannelPreview.tsx +21 -3
- package/src/components/ChannelPreview/ChannelPreviewPinnedStatus.tsx +25 -0
- package/src/components/ChannelPreview/ChannelPreviewView.tsx +18 -2
- package/src/components/ChannelPreview/ChannelSwipableWrapper.tsx +5 -1
- package/src/components/ChannelPreview/hooks/__tests__/useIsChannelPinned.test.tsx +35 -0
- package/src/components/ChannelPreview/hooks/index.ts +1 -0
- package/src/components/ChannelPreview/hooks/useChannelPreviewData.ts +3 -1
- package/src/components/ChannelPreview/hooks/useIsChannelPinned.ts +8 -0
- package/src/components/Message/Message.tsx +82 -24
- package/src/components/Message/MessageItemView/MessageItemView.tsx +5 -116
- package/src/components/Message/MessageItemView/MessageTextContainer.tsx +25 -0
- package/src/components/Message/MessageItemView/__tests__/MessageItemView.test.tsx +22 -13
- package/src/components/Message/MessageItemView/utils/renderText.tsx +97 -18
- package/src/components/MessageInput/MessageComposer.tsx +16 -39
- package/src/components/MessageList/MessageFlashList.tsx +28 -0
- package/src/components/MessageList/MessageList.tsx +28 -0
- package/src/components/MessageMenu/MessageActionList.tsx +1 -1
- package/src/components/Poll/components/CreatePollHeader.tsx +12 -5
- package/src/components/Poll/components/PollButtons.tsx +14 -38
- package/src/components/Poll/components/PollInputDialog.tsx +12 -12
- package/src/components/Poll/components/PollModal.tsx +55 -0
- package/src/components/Poll/components/PollModalHeader.tsx +4 -5
- package/src/components/Poll/components/PollResults/PollResultItem.tsx +6 -18
- package/src/components/Poll/components/__tests__/CreatePollHeader.test.tsx +4 -36
- package/src/components/Poll/components/__tests__/PollModalHeader.test.tsx +8 -45
- package/src/components/Poll/components/index.ts +1 -0
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap +29 -20
- package/src/components/UIComponents/BottomSheetModal.tsx +2 -17
- package/src/components/UIComponents/ClippingFadeBottom.tsx +47 -0
- package/src/components/UIComponents/PortalWhileClosingView.tsx +0 -4
- package/src/components/UIComponents/index.ts +1 -0
- package/src/components/index.ts +2 -0
- package/src/contexts/channelsContext/ChannelsContext.tsx +1 -0
- package/src/contexts/componentsContext/defaultComponents.ts +7 -1
- package/src/contexts/messageInputContext/hooks/useCreateMessageComposer.ts +10 -4
- package/src/contexts/themeContext/utils/theme.ts +14 -0
- package/src/hooks/actions/__tests__/useChannelActionItems.test.tsx +137 -14
- package/src/hooks/actions/__tests__/useChannelActionItemsById.test.tsx +3 -1
- package/src/hooks/actions/useChannelActionItems.tsx +60 -2
- package/src/hooks/actions/useChannelActionItemsById.ts +8 -1
- package/src/i18n/ar.json +12 -1
- package/src/i18n/en.json +12 -1
- package/src/i18n/es.json +12 -1
- package/src/i18n/fr.json +12 -1
- package/src/i18n/he.json +12 -1
- package/src/i18n/hi.json +12 -1
- package/src/i18n/it.json +12 -1
- package/src/i18n/ja.json +12 -1
- package/src/i18n/ko.json +12 -1
- package/src/i18n/nl.json +12 -1
- package/src/i18n/pt-br.json +12 -1
- package/src/i18n/ru.json +12 -1
- package/src/i18n/tr.json +12 -1
- package/src/icons/index.ts +1 -0
- package/src/icons/megaphone.tsx +21 -0
- package/src/icons/shield.tsx +21 -0
- package/src/store/SqliteClient.ts +1 -1
- package/src/store/mappers/mapDraftMessageToStorable.ts +8 -0
- package/src/store/mappers/mapStorableToDraftMessage.ts +8 -0
- package/src/store/schema.ts +8 -0
- package/src/theme/generated/StreamTokens.types.ts +9 -0
- package/src/theme/generated/dark/StreamTokens.android.ts +10 -1
- package/src/theme/generated/dark/StreamTokens.ios.ts +10 -1
- package/src/theme/generated/dark/StreamTokens.web.ts +10 -1
- package/src/theme/generated/light/StreamTokens.android.ts +10 -1
- package/src/theme/generated/light/StreamTokens.ios.ts +10 -1
- package/src/theme/generated/light/StreamTokens.web.ts +10 -1
- package/src/version.json +1 -1
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { useEffect, useMemo } from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { MessageComposer } from 'stream-chat';
|
|
4
4
|
|
|
5
5
|
import { useChatContext } from '../../chatContext/ChatContext';
|
|
6
6
|
import { MessageComposerContextValue } from '../../messageComposerContext/MessageComposerContext';
|
|
7
7
|
|
|
8
|
-
const queueCache = new FixedSizeQueueCache<string, MessageComposer>(64);
|
|
9
|
-
|
|
10
8
|
export const useCreateMessageComposer = ({
|
|
11
9
|
editing: editedMessage,
|
|
12
10
|
thread: parentMessage,
|
|
@@ -14,6 +12,7 @@ export const useCreateMessageComposer = ({
|
|
|
14
12
|
channel,
|
|
15
13
|
}: Pick<MessageComposerContextValue, 'channel' | 'threadInstance' | 'thread' | 'editing'>) => {
|
|
16
14
|
const { client } = useChatContext();
|
|
15
|
+
const { messageComposerCache: queueCache } = client;
|
|
17
16
|
|
|
18
17
|
const cachedEditedMessage = useMemo(() => {
|
|
19
18
|
if (!editedMessage) return undefined;
|
|
@@ -69,7 +68,14 @@ export const useCreateMessageComposer = ({
|
|
|
69
68
|
} else {
|
|
70
69
|
return channel.messageComposer;
|
|
71
70
|
}
|
|
72
|
-
}, [
|
|
71
|
+
}, [
|
|
72
|
+
cachedEditedMessage,
|
|
73
|
+
cachedParentMessage,
|
|
74
|
+
channel.messageComposer,
|
|
75
|
+
client,
|
|
76
|
+
queueCache,
|
|
77
|
+
threadInstance,
|
|
78
|
+
]);
|
|
73
79
|
|
|
74
80
|
if (
|
|
75
81
|
(['legacy_thread', 'message'] as MessageComposer['contextType'][]).includes(
|
|
@@ -299,12 +299,14 @@ export type Theme = {
|
|
|
299
299
|
contentContainer: ViewStyle;
|
|
300
300
|
date: TextStyle;
|
|
301
301
|
mutedStatus: IconProps;
|
|
302
|
+
pinnedStatus: IconProps;
|
|
302
303
|
messageDeliveryStatus: {
|
|
303
304
|
container: ViewStyle;
|
|
304
305
|
text: TextStyle;
|
|
305
306
|
checkAllIcon: IconProps;
|
|
306
307
|
checkIcon: IconProps;
|
|
307
308
|
timeIcon: IconProps;
|
|
309
|
+
username: TextStyle;
|
|
308
310
|
};
|
|
309
311
|
lowerRow: ViewStyle;
|
|
310
312
|
title: TextStyle;
|
|
@@ -561,6 +563,10 @@ export type Theme = {
|
|
|
561
563
|
avatarSize: number;
|
|
562
564
|
column: ViewStyle;
|
|
563
565
|
container: ViewStyle;
|
|
566
|
+
enhancedMentionContainer: ViewStyle;
|
|
567
|
+
enhancedMentionIcon: ViewStyle;
|
|
568
|
+
enhancedMentionSubtitle: TextStyle;
|
|
569
|
+
enhancedMentionTitle: TextStyle;
|
|
564
570
|
name: TextStyle;
|
|
565
571
|
tag: TextStyle;
|
|
566
572
|
};
|
|
@@ -568,6 +574,7 @@ export type Theme = {
|
|
|
568
574
|
suggestionsListContainer: {
|
|
569
575
|
container: ViewStyle;
|
|
570
576
|
flatlist: ViewStyle;
|
|
577
|
+
flatlistContentContainer: ViewStyle;
|
|
571
578
|
};
|
|
572
579
|
videoAttachmentUploadPreview: {
|
|
573
580
|
durationContainer: ViewStyle;
|
|
@@ -1355,8 +1362,10 @@ export const defaultTheme: Theme = {
|
|
|
1355
1362
|
checkAllIcon: {},
|
|
1356
1363
|
checkIcon: {},
|
|
1357
1364
|
timeIcon: {},
|
|
1365
|
+
username: {},
|
|
1358
1366
|
},
|
|
1359
1367
|
mutedStatus: {},
|
|
1368
|
+
pinnedStatus: {},
|
|
1360
1369
|
lowerRow: {},
|
|
1361
1370
|
title: {},
|
|
1362
1371
|
unreadContainer: {},
|
|
@@ -1598,6 +1607,10 @@ export const defaultTheme: Theme = {
|
|
|
1598
1607
|
avatarSize: 40,
|
|
1599
1608
|
column: {},
|
|
1600
1609
|
container: {},
|
|
1610
|
+
enhancedMentionContainer: {},
|
|
1611
|
+
enhancedMentionIcon: {},
|
|
1612
|
+
enhancedMentionSubtitle: {},
|
|
1613
|
+
enhancedMentionTitle: {},
|
|
1601
1614
|
name: {},
|
|
1602
1615
|
tag: {},
|
|
1603
1616
|
},
|
|
@@ -1605,6 +1618,7 @@ export const defaultTheme: Theme = {
|
|
|
1605
1618
|
suggestionsListContainer: {
|
|
1606
1619
|
container: {},
|
|
1607
1620
|
flatlist: {},
|
|
1621
|
+
flatlistContentContainer: {},
|
|
1608
1622
|
},
|
|
1609
1623
|
wrapper: {},
|
|
1610
1624
|
linkPreviewList: {
|
|
@@ -99,30 +99,43 @@ describe('useChannelActionItems', () => {
|
|
|
99
99
|
});
|
|
100
100
|
|
|
101
101
|
it('returns default channel action items', () => {
|
|
102
|
-
const { result } = renderHook(() => useChannelActionItems({ channel }));
|
|
102
|
+
const { result } = renderHook(() => useChannelActionItems({ channel, surface: 'list' }));
|
|
103
103
|
|
|
104
|
-
expect(result.current).toHaveLength(
|
|
104
|
+
expect(result.current).toHaveLength(4);
|
|
105
105
|
expect(result.current.map((item) => item.action)).toEqual([
|
|
106
106
|
channelActions.muteChannel,
|
|
107
|
+
channelActions.pin,
|
|
107
108
|
channelActions.leave,
|
|
108
109
|
expect.any(Function),
|
|
109
110
|
]);
|
|
110
|
-
expect(result.current.map((item) => item.id)).toEqual([
|
|
111
|
+
expect(result.current.map((item) => item.id)).toEqual([
|
|
112
|
+
'mute',
|
|
113
|
+
'pin',
|
|
114
|
+
'leave',
|
|
115
|
+
'deleteChannel',
|
|
116
|
+
]);
|
|
111
117
|
expect(result.current.map((item) => item.type)).toEqual([
|
|
118
|
+
'standard',
|
|
112
119
|
'standard',
|
|
113
120
|
'destructive',
|
|
114
121
|
'destructive',
|
|
115
122
|
]);
|
|
116
|
-
expect(result.current.map((item) => item.placement)).toEqual([
|
|
123
|
+
expect(result.current.map((item) => item.placement)).toEqual([
|
|
124
|
+
'swipe',
|
|
125
|
+
'sheet',
|
|
126
|
+
'sheet',
|
|
127
|
+
'sheet',
|
|
128
|
+
]);
|
|
117
129
|
});
|
|
118
130
|
|
|
119
131
|
it('returns muteUser only in direct chats', () => {
|
|
120
132
|
jest.spyOn(useIsDirectChatModule, 'useIsDirectChat').mockReturnValue(true);
|
|
121
133
|
|
|
122
|
-
const { result } = renderHook(() => useChannelActionItems({ channel }));
|
|
134
|
+
const { result } = renderHook(() => useChannelActionItems({ channel, surface: 'list' }));
|
|
123
135
|
|
|
124
136
|
expect(result.current.map((item) => item.id)).toEqual([
|
|
125
137
|
'mute',
|
|
138
|
+
'pin',
|
|
126
139
|
'muteUser',
|
|
127
140
|
'block',
|
|
128
141
|
'leave',
|
|
@@ -143,7 +156,7 @@ describe('useChannelActionItems', () => {
|
|
|
143
156
|
});
|
|
144
157
|
jest.spyOn(useMutedUsersModule, 'useMutedUsers').mockReturnValue([] as Mute[]);
|
|
145
158
|
|
|
146
|
-
const { result } = renderHook(() => useChannelActionItems({ channel }));
|
|
159
|
+
const { result } = renderHook(() => useChannelActionItems({ channel, surface: 'list' }));
|
|
147
160
|
|
|
148
161
|
const muteItem = result.current.find((item) => item.id === 'mute');
|
|
149
162
|
const muteUserItem = result.current.find((item) => item.id === 'muteUser');
|
|
@@ -152,7 +165,7 @@ describe('useChannelActionItems', () => {
|
|
|
152
165
|
});
|
|
153
166
|
|
|
154
167
|
it('forwards options from item.action to the underlying channel action', async () => {
|
|
155
|
-
const { result } = renderHook(() => useChannelActionItems({ channel }));
|
|
168
|
+
const { result } = renderHook(() => useChannelActionItems({ channel, surface: 'list' }));
|
|
156
169
|
|
|
157
170
|
const muteItem = result.current.find((item) => item.id === 'mute');
|
|
158
171
|
expect(muteItem).toBeDefined();
|
|
@@ -165,7 +178,7 @@ describe('useChannelActionItems', () => {
|
|
|
165
178
|
it('marks block as destructive when user is not blocked', () => {
|
|
166
179
|
jest.spyOn(useIsDirectChatModule, 'useIsDirectChat').mockReturnValue(true);
|
|
167
180
|
|
|
168
|
-
const { result } = renderHook(() => useChannelActionItems({ channel }));
|
|
181
|
+
const { result } = renderHook(() => useChannelActionItems({ channel, surface: 'list' }));
|
|
169
182
|
|
|
170
183
|
const blockItem = result.current.find((item) => item.id === 'block');
|
|
171
184
|
expect(blockItem?.type).toBe('destructive');
|
|
@@ -175,7 +188,9 @@ describe('useChannelActionItems', () => {
|
|
|
175
188
|
jest.spyOn(useIsDirectChatModule, 'useIsDirectChat').mockReturnValue(true);
|
|
176
189
|
const blockedChannel = createChannelMock({ blockedUserIds: ['other-user-id'] });
|
|
177
190
|
|
|
178
|
-
const { result } = renderHook(() =>
|
|
191
|
+
const { result } = renderHook(() =>
|
|
192
|
+
useChannelActionItems({ channel: blockedChannel, surface: 'list' }),
|
|
193
|
+
);
|
|
179
194
|
|
|
180
195
|
const blockItem = result.current.find((item) => item.id === 'block');
|
|
181
196
|
expect(blockItem?.type).toBe('standard');
|
|
@@ -190,6 +205,7 @@ describe('useChannelActionItems', () => {
|
|
|
190
205
|
useChannelActionItems({
|
|
191
206
|
channel,
|
|
192
207
|
getChannelActionItems: customGetChannelActionItems,
|
|
208
|
+
surface: 'list',
|
|
193
209
|
}),
|
|
194
210
|
);
|
|
195
211
|
|
|
@@ -202,6 +218,7 @@ describe('useChannelActionItems', () => {
|
|
|
202
218
|
isBlocked: undefined,
|
|
203
219
|
isDirectChat: false,
|
|
204
220
|
isPinned: false,
|
|
221
|
+
surface: 'list',
|
|
205
222
|
t: expect.any(Function),
|
|
206
223
|
userMuteActive: false,
|
|
207
224
|
},
|
|
@@ -228,6 +245,7 @@ describe('getChannelActionItems', () => {
|
|
|
228
245
|
isBlocked: undefined,
|
|
229
246
|
isDirectChat: false,
|
|
230
247
|
isPinned: false,
|
|
248
|
+
surface: 'list',
|
|
231
249
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
232
250
|
userMuteActive: false,
|
|
233
251
|
});
|
|
@@ -240,6 +258,7 @@ describe('getChannelActionItems', () => {
|
|
|
240
258
|
isBlocked: undefined,
|
|
241
259
|
isDirectChat: false,
|
|
242
260
|
isPinned: false,
|
|
261
|
+
surface: 'list',
|
|
243
262
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
244
263
|
userMuteActive: false,
|
|
245
264
|
},
|
|
@@ -248,11 +267,13 @@ describe('getChannelActionItems', () => {
|
|
|
248
267
|
|
|
249
268
|
expect(actionItems.map((item) => item.action)).toEqual([
|
|
250
269
|
channelActions.muteChannel,
|
|
270
|
+
channelActions.pin,
|
|
251
271
|
channelActions.leave,
|
|
252
272
|
expect.any(Function),
|
|
253
273
|
]);
|
|
254
|
-
expect(actionItems.map((item) => item.id)).toEqual(['mute', 'leave', 'deleteChannel']);
|
|
274
|
+
expect(actionItems.map((item) => item.id)).toEqual(['mute', 'pin', 'leave', 'deleteChannel']);
|
|
255
275
|
expect(actionItems.map((item) => item.type)).toEqual([
|
|
276
|
+
'standard',
|
|
256
277
|
'standard',
|
|
257
278
|
'destructive',
|
|
258
279
|
'destructive',
|
|
@@ -269,12 +290,14 @@ describe('getChannelActionItems', () => {
|
|
|
269
290
|
isBlocked: true,
|
|
270
291
|
isDirectChat: true,
|
|
271
292
|
isPinned: false,
|
|
293
|
+
surface: 'list',
|
|
272
294
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
273
295
|
userMuteActive: true,
|
|
274
296
|
});
|
|
275
297
|
|
|
276
298
|
expect(actionItems.map((item) => item.id)).toEqual([
|
|
277
299
|
'mute',
|
|
300
|
+
'pin',
|
|
278
301
|
'muteUser',
|
|
279
302
|
'block',
|
|
280
303
|
'leave',
|
|
@@ -282,6 +305,7 @@ describe('getChannelActionItems', () => {
|
|
|
282
305
|
]);
|
|
283
306
|
expect(actionItems.map((item) => item.action)).toEqual([
|
|
284
307
|
channelActions.unmuteChannel,
|
|
308
|
+
channelActions.pin,
|
|
285
309
|
channelActions.unmuteUser,
|
|
286
310
|
channelActions.unblockUser,
|
|
287
311
|
channelActions.leave,
|
|
@@ -289,6 +313,7 @@ describe('getChannelActionItems', () => {
|
|
|
289
313
|
]);
|
|
290
314
|
expect(actionItems.map((item) => item.label)).toEqual([
|
|
291
315
|
'Unmute Chat',
|
|
316
|
+
'Pin Chat',
|
|
292
317
|
'Unmute User',
|
|
293
318
|
'Unblock User',
|
|
294
319
|
'Leave Chat',
|
|
@@ -300,6 +325,7 @@ describe('getChannelActionItems', () => {
|
|
|
300
325
|
'sheet',
|
|
301
326
|
'sheet',
|
|
302
327
|
'sheet',
|
|
328
|
+
'sheet',
|
|
303
329
|
]);
|
|
304
330
|
});
|
|
305
331
|
|
|
@@ -312,6 +338,7 @@ describe('getChannelActionItems', () => {
|
|
|
312
338
|
isBlocked: undefined,
|
|
313
339
|
isDirectChat: false,
|
|
314
340
|
isPinned: false,
|
|
341
|
+
surface: 'list',
|
|
315
342
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
316
343
|
userMuteActive: false,
|
|
317
344
|
});
|
|
@@ -328,11 +355,12 @@ describe('getChannelActionItems', () => {
|
|
|
328
355
|
isBlocked: undefined,
|
|
329
356
|
isDirectChat: false,
|
|
330
357
|
isPinned: false,
|
|
358
|
+
surface: 'list',
|
|
331
359
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
332
360
|
userMuteActive: false,
|
|
333
361
|
});
|
|
334
362
|
|
|
335
|
-
expect(actionItems.map((item) => item.id)).toEqual(['mute', 'leave']);
|
|
363
|
+
expect(actionItems.map((item) => item.id)).toEqual(['mute', 'pin', 'leave']);
|
|
336
364
|
});
|
|
337
365
|
|
|
338
366
|
it('uses group mute variants for labels and placements', () => {
|
|
@@ -345,6 +373,7 @@ describe('getChannelActionItems', () => {
|
|
|
345
373
|
isBlocked: undefined,
|
|
346
374
|
isDirectChat: false,
|
|
347
375
|
isPinned: false,
|
|
376
|
+
surface: 'list',
|
|
348
377
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
349
378
|
userMuteActive: false,
|
|
350
379
|
});
|
|
@@ -353,9 +382,101 @@ describe('getChannelActionItems', () => {
|
|
|
353
382
|
expect(actionItems[0].label).toBe('Unmute Group');
|
|
354
383
|
expect(actionItems[0].placement).toBe('swipe');
|
|
355
384
|
|
|
356
|
-
|
|
357
|
-
expect(
|
|
358
|
-
expect(
|
|
385
|
+
const leaveItem = actionItems.find((item) => item.id === 'leave');
|
|
386
|
+
expect(leaveItem?.action).toBe(channelActions.leave);
|
|
387
|
+
expect(leaveItem?.label).toBe('Leave Group');
|
|
388
|
+
expect(leaveItem?.placement).toBe('sheet');
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
it('pin item toggles to unpin when channel is pinned', () => {
|
|
392
|
+
const channelActions = createChannelActions();
|
|
393
|
+
const actionItems = buildDefaultChannelActionItems({
|
|
394
|
+
actions: channelActions,
|
|
395
|
+
channel,
|
|
396
|
+
channelMuteActive: false,
|
|
397
|
+
isArchived: false,
|
|
398
|
+
isBlocked: undefined,
|
|
399
|
+
isDirectChat: false,
|
|
400
|
+
isPinned: true,
|
|
401
|
+
surface: 'list',
|
|
402
|
+
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
403
|
+
userMuteActive: false,
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
const pinItem = actionItems.find((item) => item.id === 'pin');
|
|
407
|
+
expect(pinItem?.action).toBe(channelActions.unpin);
|
|
408
|
+
expect(pinItem?.label).toBe('Unpin Group');
|
|
409
|
+
expect(pinItem?.placement).toBe('sheet');
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
it('pin item uses direct-chat label variant', () => {
|
|
413
|
+
const channelActions = createChannelActions();
|
|
414
|
+
const actionItems = buildDefaultChannelActionItems({
|
|
415
|
+
actions: channelActions,
|
|
416
|
+
channel,
|
|
417
|
+
channelMuteActive: false,
|
|
418
|
+
isArchived: false,
|
|
419
|
+
isBlocked: undefined,
|
|
420
|
+
isDirectChat: true,
|
|
421
|
+
isPinned: false,
|
|
422
|
+
surface: 'list',
|
|
423
|
+
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
424
|
+
userMuteActive: false,
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
const pinItem = actionItems.find((item) => item.id === 'pin');
|
|
428
|
+
expect(pinItem?.action).toBe(channelActions.pin);
|
|
429
|
+
expect(pinItem?.label).toBe('Pin Chat');
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
it('omits the pin item when building for the details surface', () => {
|
|
433
|
+
const actionItems = buildDefaultChannelActionItems({
|
|
434
|
+
actions: createChannelActions(),
|
|
435
|
+
channel,
|
|
436
|
+
channelMuteActive: false,
|
|
437
|
+
isArchived: false,
|
|
438
|
+
isBlocked: undefined,
|
|
439
|
+
isDirectChat: false,
|
|
440
|
+
isPinned: false,
|
|
441
|
+
surface: 'details',
|
|
442
|
+
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
443
|
+
userMuteActive: false,
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
expect(actionItems.map((item) => item.id)).not.toContain('pin');
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
it('includes the pin item when building for the list surface', () => {
|
|
450
|
+
const actionItems = buildDefaultChannelActionItems({
|
|
451
|
+
actions: createChannelActions(),
|
|
452
|
+
channel,
|
|
453
|
+
channelMuteActive: false,
|
|
454
|
+
isArchived: false,
|
|
455
|
+
isBlocked: undefined,
|
|
456
|
+
isDirectChat: false,
|
|
457
|
+
isPinned: false,
|
|
458
|
+
surface: 'list',
|
|
459
|
+
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
460
|
+
userMuteActive: false,
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
expect(actionItems.map((item) => item.id)).toContain('pin');
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
it('applies no surface-specific filtering when surface is omitted', () => {
|
|
467
|
+
const actionItems = buildDefaultChannelActionItems({
|
|
468
|
+
actions: createChannelActions(),
|
|
469
|
+
channel,
|
|
470
|
+
channelMuteActive: false,
|
|
471
|
+
isArchived: false,
|
|
472
|
+
isBlocked: undefined,
|
|
473
|
+
isDirectChat: false,
|
|
474
|
+
isPinned: false,
|
|
475
|
+
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
476
|
+
userMuteActive: false,
|
|
477
|
+
});
|
|
478
|
+
|
|
479
|
+
expect(actionItems.map((item) => item.id)).toEqual(['mute', 'pin', 'leave', 'deleteChannel']);
|
|
359
480
|
});
|
|
360
481
|
|
|
361
482
|
it('mute and muteUser reflect their respective active states independently', () => {
|
|
@@ -368,6 +489,7 @@ describe('getChannelActionItems', () => {
|
|
|
368
489
|
isBlocked: undefined,
|
|
369
490
|
isDirectChat: true,
|
|
370
491
|
isPinned: false,
|
|
492
|
+
surface: 'list',
|
|
371
493
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
372
494
|
userMuteActive: true,
|
|
373
495
|
});
|
|
@@ -393,6 +515,7 @@ describe('getChannelActionItems', () => {
|
|
|
393
515
|
isBlocked: undefined,
|
|
394
516
|
isDirectChat: false,
|
|
395
517
|
isPinned: false,
|
|
518
|
+
surface: 'list',
|
|
396
519
|
t: ((value: string) => value) as TranslationContextValue['t'],
|
|
397
520
|
userMuteActive: false,
|
|
398
521
|
});
|
|
@@ -41,7 +41,7 @@ describe('useChannelActionItemsById', () => {
|
|
|
41
41
|
.spyOn(useChannelActionItemsModule, 'useChannelActionItems')
|
|
42
42
|
.mockReturnValue(channelActionItems);
|
|
43
43
|
|
|
44
|
-
const { result } = renderHook(() => useChannelActionItemsById({ channel }));
|
|
44
|
+
const { result } = renderHook(() => useChannelActionItemsById({ channel, surface: 'list' }));
|
|
45
45
|
|
|
46
46
|
expect(result.current.pin).toBe(channelActionItems[0]);
|
|
47
47
|
expect(result.current.deleteChannel).toBe(channelActionItems[1]);
|
|
@@ -59,12 +59,14 @@ describe('useChannelActionItemsById', () => {
|
|
|
59
59
|
useChannelActionItemsById({
|
|
60
60
|
channel,
|
|
61
61
|
getChannelActionItems,
|
|
62
|
+
surface: 'list',
|
|
62
63
|
}),
|
|
63
64
|
);
|
|
64
65
|
|
|
65
66
|
expect(useChannelActionItemsSpy).toHaveBeenCalledWith({
|
|
66
67
|
channel,
|
|
67
68
|
getChannelActionItems,
|
|
69
|
+
surface: 'list',
|
|
68
70
|
});
|
|
69
71
|
});
|
|
70
72
|
});
|
|
@@ -15,18 +15,50 @@ import { useIsChannelMuted } from '../../components/ChannelPreview/hooks/useIsCh
|
|
|
15
15
|
import { useUserMuteActive } from '../../components/Message/hooks/useUserMuteActive';
|
|
16
16
|
import { useTheme, useTranslationContext } from '../../contexts';
|
|
17
17
|
import type { TranslationContextValue } from '../../contexts/translationContext/TranslationContext';
|
|
18
|
-
import { IconProps, Mute, BlockUser, Delete, Sound } from '../../icons';
|
|
18
|
+
import { IconProps, Mute, BlockUser, Delete, Pin, Sound, Unpin } from '../../icons';
|
|
19
19
|
import { ArrowBoxLeft } from '../../icons/leave';
|
|
20
20
|
import { useChannelMembershipState } from '../useChannelMembershipState';
|
|
21
21
|
import { useIsDirectChat } from '../useIsDirectChat';
|
|
22
22
|
import { useStateStore } from '../useStateStore';
|
|
23
23
|
|
|
24
24
|
export type ChannelActionItem = ActionItem<
|
|
25
|
-
'mute' | 'muteUser' | 'block' | 'leave' | 'deleteChannel' | string
|
|
25
|
+
'mute' | 'muteUser' | 'block' | 'leave' | 'deleteChannel' | 'pin' | string
|
|
26
26
|
> & {
|
|
27
|
+
/**
|
|
28
|
+
* Per item routing **within a channel preview interaction** (swipe row vs
|
|
29
|
+
* the sheet that opens from it). Only meaningful when the items are consumed
|
|
30
|
+
* from `<ChannelSwipableWrapper>`:
|
|
31
|
+
*
|
|
32
|
+
* - `'swipe'`: shown only in the swipe-row chips.
|
|
33
|
+
* - `'sheet'`: shown only in the swipe-triggered options sheet.
|
|
34
|
+
* - `'both'`: shown in both swipe row and sheet.
|
|
35
|
+
*
|
|
36
|
+
* The standalone Channel Details screen does **not** filter by `placement` -
|
|
37
|
+
* use {@link ChannelActionSurface} (`surface`) instead to vary items between
|
|
38
|
+
* the channel list and the Channel Details screen.
|
|
39
|
+
*/
|
|
27
40
|
placement: 'both' | 'sheet' | 'swipe';
|
|
28
41
|
};
|
|
29
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Identifies which top level UI surface is requesting channel action items.
|
|
45
|
+
* Passed verbatim into {@link ChannelActionItemsParams} so the default builder
|
|
46
|
+
* and any integrator supplied `getChannelActionItems` can branch on it - i.e.
|
|
47
|
+
* to drop or relabel an item on a specific surface or to provide an entirely
|
|
48
|
+
* different builder per surface.
|
|
49
|
+
*
|
|
50
|
+
* - `'list'`: anything driven by a ChannelList interaction, the swipe row
|
|
51
|
+
* chips on a channel preview and the bottom sheet that opens from them.
|
|
52
|
+
* Subrouting between the swipe row and the sheet is handled by the per item
|
|
53
|
+
* {@link ChannelActionItem.placement} field.
|
|
54
|
+
* - `'details'`: items for the standalone Channel Details screen.
|
|
55
|
+
*
|
|
56
|
+
* `surface` operates at the call site level (which UI is asking). It is
|
|
57
|
+
* optional and when omitted, the default builder applies no surface specific
|
|
58
|
+
* filtering and returns every item it would otherwise produce.
|
|
59
|
+
*/
|
|
60
|
+
export type ChannelActionSurface = 'list' | 'details';
|
|
61
|
+
|
|
30
62
|
export type ChannelActionItemsParams = {
|
|
31
63
|
actions: ChannelActions;
|
|
32
64
|
channel: Channel;
|
|
@@ -35,6 +67,7 @@ export type ChannelActionItemsParams = {
|
|
|
35
67
|
isBlocked: boolean | undefined;
|
|
36
68
|
isDirectChat: boolean;
|
|
37
69
|
isPinned: boolean;
|
|
70
|
+
surface?: ChannelActionSurface;
|
|
38
71
|
t: TranslationContextValue['t'];
|
|
39
72
|
userMuteActive: boolean;
|
|
40
73
|
};
|
|
@@ -67,10 +100,14 @@ export const buildDefaultChannelActionItems: BuildDefaultChannelActionItems = (
|
|
|
67
100
|
unmuteUser,
|
|
68
101
|
blockUser,
|
|
69
102
|
unblockUser,
|
|
103
|
+
pin,
|
|
104
|
+
unpin,
|
|
70
105
|
},
|
|
71
106
|
channelMuteActive,
|
|
72
107
|
isBlocked,
|
|
73
108
|
isDirectChat,
|
|
109
|
+
isPinned,
|
|
110
|
+
surface,
|
|
74
111
|
userMuteActive,
|
|
75
112
|
t,
|
|
76
113
|
channel,
|
|
@@ -105,6 +142,23 @@ export const buildDefaultChannelActionItems: BuildDefaultChannelActionItems = (
|
|
|
105
142
|
},
|
|
106
143
|
];
|
|
107
144
|
|
|
145
|
+
if (surface !== 'details') {
|
|
146
|
+
actionItems.push({
|
|
147
|
+
action: isPinned ? unpin : pin,
|
|
148
|
+
Icon: (props) => <ChannelActionsIcon Icon={isPinned ? Unpin : Pin} {...props} />,
|
|
149
|
+
id: 'pin',
|
|
150
|
+
label: isDirectChat
|
|
151
|
+
? isPinned
|
|
152
|
+
? t('Unpin Chat')
|
|
153
|
+
: t('Pin Chat')
|
|
154
|
+
: isPinned
|
|
155
|
+
? t('Unpin Group')
|
|
156
|
+
: t('Pin Group'),
|
|
157
|
+
placement: 'sheet',
|
|
158
|
+
type: 'standard',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
108
162
|
if (isDirectChat) {
|
|
109
163
|
actionItems.push({
|
|
110
164
|
action: userMuteActive ? unmuteUser : muteUser,
|
|
@@ -186,6 +240,7 @@ export const getChannelActionItems: GetChannelActionItems = ({ defaultItems }) =
|
|
|
186
240
|
|
|
187
241
|
type UseChannelActionItemsParams = {
|
|
188
242
|
channel: Channel;
|
|
243
|
+
surface?: ChannelActionSurface;
|
|
189
244
|
getChannelActionItems?: GetChannelActionItems;
|
|
190
245
|
};
|
|
191
246
|
|
|
@@ -194,6 +249,7 @@ const blockedUsersStateSelector = (state: BlockedUsersState) =>
|
|
|
194
249
|
|
|
195
250
|
export const useChannelActionItems = ({
|
|
196
251
|
channel,
|
|
252
|
+
surface,
|
|
197
253
|
getChannelActionItems: getChannelActionItemsProp = getChannelActionItems,
|
|
198
254
|
}: UseChannelActionItemsParams) => {
|
|
199
255
|
const { t } = useTranslationContext();
|
|
@@ -225,6 +281,7 @@ export const useChannelActionItems = ({
|
|
|
225
281
|
isBlocked,
|
|
226
282
|
isDirectChat,
|
|
227
283
|
isPinned,
|
|
284
|
+
surface,
|
|
228
285
|
t,
|
|
229
286
|
userMuteActive,
|
|
230
287
|
}),
|
|
@@ -236,6 +293,7 @@ export const useChannelActionItems = ({
|
|
|
236
293
|
isBlocked,
|
|
237
294
|
isDirectChat,
|
|
238
295
|
isPinned,
|
|
296
|
+
surface,
|
|
239
297
|
t,
|
|
240
298
|
userMuteActive,
|
|
241
299
|
],
|
|
@@ -2,23 +2,30 @@ import { useMemo } from 'react';
|
|
|
2
2
|
|
|
3
3
|
import type { Channel } from 'stream-chat';
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type {
|
|
6
|
+
ChannelActionItem,
|
|
7
|
+
ChannelActionSurface,
|
|
8
|
+
GetChannelActionItems,
|
|
9
|
+
} from './useChannelActionItems';
|
|
6
10
|
import { useChannelActionItems } from './useChannelActionItems';
|
|
7
11
|
|
|
8
12
|
export type ChannelActionItemsById = Partial<Record<ChannelActionItem['id'], ChannelActionItem>>;
|
|
9
13
|
|
|
10
14
|
type UseChannelActionItemsByIdParams = {
|
|
11
15
|
channel: Channel;
|
|
16
|
+
surface?: ChannelActionSurface;
|
|
12
17
|
getChannelActionItems?: GetChannelActionItems;
|
|
13
18
|
};
|
|
14
19
|
|
|
15
20
|
export const useChannelActionItemsById = ({
|
|
16
21
|
channel,
|
|
22
|
+
surface,
|
|
17
23
|
getChannelActionItems,
|
|
18
24
|
}: UseChannelActionItemsByIdParams) => {
|
|
19
25
|
const channelActionItems = useChannelActionItems({
|
|
20
26
|
channel,
|
|
21
27
|
getChannelActionItems,
|
|
28
|
+
surface,
|
|
22
29
|
});
|
|
23
30
|
|
|
24
31
|
return useMemo(
|
package/src/i18n/ar.json
CHANGED
|
@@ -274,6 +274,7 @@
|
|
|
274
274
|
"a11y/Loading failed": "Loading failed",
|
|
275
275
|
"a11y/Message actions": "Message actions",
|
|
276
276
|
"a11y/Muted": "مكتوم",
|
|
277
|
+
"a11y/Pinned": "مثبت",
|
|
277
278
|
"a11y/New message from {{user}}": "New message from {{user}}",
|
|
278
279
|
"a11y/Offline": "Offline",
|
|
279
280
|
"a11y/Open message actions": "Open message actions",
|
|
@@ -435,5 +436,15 @@
|
|
|
435
436
|
"a11y/Message from {{sender}}": "رسالة من {{sender}}",
|
|
436
437
|
"a11y/Gallery Image": "صورة من المعرض",
|
|
437
438
|
"a11y/Gallery Video": "فيديو من المعرض",
|
|
438
|
-
"a11y/{{position}} of {{count}}": "{{position}} من {{count}}"
|
|
439
|
+
"a11y/{{position}} of {{count}}": "{{position}} من {{count}}",
|
|
440
|
+
"Notify all {{ role }} members": "Notify all {{ role }} members",
|
|
441
|
+
"a11y/Command suggestions available": "Command suggestions available",
|
|
442
|
+
"a11y/Emoji suggestions available": "Emoji suggestions available",
|
|
443
|
+
"a11y/Mention suggestions available": "Mention suggestions available",
|
|
444
|
+
"mention/Channel Description": "Notify everyone in this channel",
|
|
445
|
+
"mention/Here Description": "Notify every online member in this channel",
|
|
446
|
+
"Pin Chat": "تثبيت الدردشة",
|
|
447
|
+
"Pin Group": "تثبيت المجموعة",
|
|
448
|
+
"Unpin Chat": "إلغاء تثبيت الدردشة",
|
|
449
|
+
"Unpin Group": "إلغاء تثبيت المجموعة"
|
|
439
450
|
}
|
package/src/i18n/en.json
CHANGED
|
@@ -246,6 +246,8 @@
|
|
|
246
246
|
"Leave Group": "Leave Group",
|
|
247
247
|
"Mute Chat": "Mute Chat",
|
|
248
248
|
"Mute Group": "Mute Group",
|
|
249
|
+
"Pin Chat": "Pin Chat",
|
|
250
|
+
"Pin Group": "Pin Group",
|
|
249
251
|
"Admin": "Admin",
|
|
250
252
|
"Moderator": "Moderator",
|
|
251
253
|
"Offline": "Offline",
|
|
@@ -255,6 +257,8 @@
|
|
|
255
257
|
"Unarchive Group": "Unarchive Group",
|
|
256
258
|
"Unmute Chat": "Unmute Chat",
|
|
257
259
|
"Unmute Group": "Unmute Group",
|
|
260
|
+
"Unpin Chat": "Unpin Chat",
|
|
261
|
+
"Unpin Group": "Unpin Group",
|
|
258
262
|
"{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} member, {{onlineCount}} online",
|
|
259
263
|
"{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} members, {{onlineCount}} online",
|
|
260
264
|
"{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} members, {{onlineCount}} online",
|
|
@@ -284,6 +288,7 @@
|
|
|
284
288
|
"a11y/Message from you": "Message from you",
|
|
285
289
|
"a11y/Message from {{sender}}": "Message from {{sender}}",
|
|
286
290
|
"a11y/Muted": "Muted",
|
|
291
|
+
"a11y/Pinned": "Pinned",
|
|
287
292
|
"a11y/New message from {{user}}": "New message from {{user}}",
|
|
288
293
|
"a11y/Offline": "Offline",
|
|
289
294
|
"a11y/Open message actions": "Open message actions",
|
|
@@ -435,5 +440,11 @@
|
|
|
435
440
|
"a11y/{{count}} unread messages": "{{count}} unread messages",
|
|
436
441
|
"a11y/Gallery Image": "Gallery image",
|
|
437
442
|
"a11y/Gallery Video": "Gallery video",
|
|
438
|
-
"a11y/{{position}} of {{count}}": "{{position}} of {{count}}"
|
|
443
|
+
"a11y/{{position}} of {{count}}": "{{position}} of {{count}}",
|
|
444
|
+
"Notify all {{ role }} members": "Notify all {{ role }} members",
|
|
445
|
+
"a11y/Command suggestions available": "Command suggestions available",
|
|
446
|
+
"a11y/Emoji suggestions available": "Emoji suggestions available",
|
|
447
|
+
"a11y/Mention suggestions available": "Mention suggestions available",
|
|
448
|
+
"mention/Channel Description": "Notify everyone in this channel",
|
|
449
|
+
"mention/Here Description": "Notify every online member in this channel"
|
|
439
450
|
}
|