@sendbird/uikit-react-native 2.5.0 → 3.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/lib/commonjs/components/{MessageRenderer/MessageTime.js → ChannelInput/AttachmentsButton.js} +20 -17
- package/lib/commonjs/components/ChannelInput/AttachmentsButton.js.map +1 -0
- package/lib/commonjs/components/ChannelInput/EditInput.js +10 -18
- package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/SendInput.js +220 -163
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/index.js +5 -3
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +27 -27
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChatFlatList.js +18 -6
- package/lib/commonjs/components/ChatFlatList.js.map +1 -1
- package/lib/commonjs/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +47 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
- package/lib/commonjs/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +11 -14
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +204 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -0
- package/lib/commonjs/components/MessageSearchResultItem.js +3 -2
- package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +15 -9
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/constants.js +1 -7
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js +13 -13
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +29 -19
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js +17 -14
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/contexts/UserProfileCtx.js +6 -4
- package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +4 -13
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +10 -6
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
- package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
- package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js +4 -8
- package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js.map +1 -1
- package/lib/commonjs/domain/openChannel/types.js.map +1 -1
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js +3 -1
- package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
- package/lib/commonjs/domain/openChannelList/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +1 -1
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +22 -100
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +1 -1
- package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +8 -13
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/fragments/createMessageSearchFragment.js +2 -2
- package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
- package/lib/commonjs/fragments/createOpenChannelFragment.js +1 -7
- package/lib/commonjs/fragments/createOpenChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createOpenChannelListFragment.js +2 -1
- package/lib/commonjs/fragments/createOpenChannelListFragment.js.map +1 -1
- package/lib/commonjs/hooks/useConnection.js +11 -7
- package/lib/commonjs/hooks/useConnection.js.map +1 -1
- package/lib/commonjs/hooks/useMentionTextInput.js +3 -2
- package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -1
- package/lib/commonjs/index.js +20 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/libs/MentionManager.js +8 -9
- package/lib/commonjs/libs/MentionManager.js.map +1 -1
- package/lib/commonjs/libs/SBUUtils.js +7 -3
- package/lib/commonjs/libs/SBUUtils.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +20 -62
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
- package/lib/module/components/ChannelInput/AttachmentsButton.js +29 -0
- package/lib/module/components/ChannelInput/AttachmentsButton.js.map +1 -0
- package/lib/module/components/ChannelInput/EditInput.js +10 -18
- package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
- package/lib/module/components/ChannelInput/SendInput.js +221 -164
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js +5 -3
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +28 -28
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChatFlatList.js +17 -5
- package/lib/module/components/ChatFlatList.js.map +1 -1
- package/lib/module/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +38 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
- package/lib/module/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +12 -15
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js +196 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -0
- package/lib/module/components/MessageSearchResultItem.js +2 -1
- package/lib/module/components/MessageSearchResultItem.js.map +1 -1
- package/lib/module/components/OpenChannelMessageRenderer/index.js +16 -10
- package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/constants.js +0 -5
- package/lib/module/constants.js.map +1 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js +13 -13
- package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +29 -19
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js +17 -14
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/contexts/UserProfileCtx.js +6 -4
- package/lib/module/contexts/UserProfileCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput.js +4 -13
- package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +9 -4
- package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
- package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
- package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
- package/lib/module/domain/groupChannelList/types.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
- package/lib/module/domain/openChannel/component/OpenChannelInput.js +4 -8
- package/lib/module/domain/openChannel/component/OpenChannelInput.js.map +1 -1
- package/lib/module/domain/openChannel/types.js.map +1 -1
- package/lib/module/domain/openChannelList/component/OpenChannelListList.js +3 -1
- package/lib/module/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
- package/lib/module/domain/openChannelList/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelCreateFragment.js +1 -1
- package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +24 -102
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelInviteFragment.js +1 -1
- package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +8 -13
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/fragments/createMessageSearchFragment.js +1 -1
- package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
- package/lib/module/fragments/createOpenChannelFragment.js +2 -8
- package/lib/module/fragments/createOpenChannelFragment.js.map +1 -1
- package/lib/module/fragments/createOpenChannelListFragment.js +2 -1
- package/lib/module/fragments/createOpenChannelListFragment.js.map +1 -1
- package/lib/module/hooks/useConnection.js +11 -7
- package/lib/module/hooks/useConnection.js.map +1 -1
- package/lib/module/hooks/useMentionTextInput.js +3 -2
- package/lib/module/hooks/useMentionTextInput.js.map +1 -1
- package/lib/module/index.js +5 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/libs/MentionManager.js +8 -9
- package/lib/module/libs/MentionManager.js.map +1 -1
- package/lib/module/libs/SBUUtils.js +7 -3
- package/lib/module/libs/SBUUtils.js.map +1 -1
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +20 -62
- package/lib/module/localization/createBaseStringSet.js.map +1 -1
- package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +6 -0
- package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -14
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +2 -4
- package/lib/typescript/src/components/ChatFlatList.d.ts +1 -5
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +6 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +5 -0
- package/lib/typescript/src/components/{MessageRenderer/MessageOutgoingStatus.d.ts → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts} +3 -1
- package/lib/typescript/src/components/{MessageRenderer → GroupChannelMessageRenderer}/index.d.ts +2 -13
- package/lib/typescript/src/components/MessageSearchResultItem.d.ts +2 -1
- package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -1
- package/lib/typescript/src/constants.d.ts +0 -5
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +15 -10
- package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +33 -19
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -4
- package/lib/typescript/src/domain/groupChannel/types.d.ts +2 -9
- package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannelList/types.d.ts +8 -23
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/types.d.ts +2 -2
- package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +1 -1
- package/lib/typescript/src/domain/openChannelList/types.d.ts +3 -12
- package/lib/typescript/src/index.d.ts +4 -1
- package/lib/typescript/src/libs/MentionManager.d.ts +4 -5
- package/lib/typescript/src/libs/SBUUtils.d.ts +1 -1
- package/lib/typescript/src/localization/StringSet.type.d.ts +2 -43
- package/package.json +13 -10
- package/src/components/ChannelInput/AttachmentsButton.tsx +32 -0
- package/src/components/ChannelInput/EditInput.tsx +17 -18
- package/src/components/ChannelInput/SendInput.tsx +237 -181
- package/src/components/ChannelInput/index.tsx +8 -21
- package/src/components/ChannelMessageList/index.tsx +33 -41
- package/src/components/ChatFlatList.tsx +39 -13
- package/src/components/{MessageRenderer/MessageDateSeparator.tsx → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.tsx} +7 -5
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.tsx +29 -0
- package/src/components/{MessageRenderer/MessageOutgoingStatus.tsx → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.tsx} +15 -15
- package/src/components/GroupChannelMessageRenderer/index.tsx +203 -0
- package/src/components/MessageSearchResultItem.tsx +3 -1
- package/src/components/OpenChannelMessageRenderer/index.tsx +10 -5
- package/src/constants.ts +0 -5
- package/src/containers/GroupChannelPreviewContainer.tsx +14 -13
- package/src/containers/SendbirdUIKitContainer.tsx +98 -90
- package/src/contexts/SendbirdChatCtx.tsx +49 -36
- package/src/contexts/UserProfileCtx.tsx +10 -5
- package/src/domain/groupChannel/component/GroupChannelInput.tsx +1 -10
- package/src/domain/groupChannel/types.ts +1 -14
- package/src/domain/groupChannelList/component/GroupChannelListList.tsx +8 -4
- package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +3 -3
- package/src/domain/groupChannelList/types.ts +8 -30
- package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +22 -10
- package/src/domain/openChannel/component/OpenChannelInput.tsx +1 -5
- package/src/domain/openChannel/types.ts +1 -1
- package/src/domain/openChannelList/component/OpenChannelListList.tsx +2 -1
- package/src/domain/openChannelList/types.ts +6 -13
- package/src/fragments/createGroupChannelCreateFragment.tsx +1 -1
- package/src/fragments/createGroupChannelFragment.tsx +21 -97
- package/src/fragments/createGroupChannelInviteFragment.tsx +1 -1
- package/src/fragments/createGroupChannelListFragment.tsx +9 -15
- package/src/fragments/createMessageSearchFragment.tsx +1 -1
- package/src/fragments/createOpenChannelFragment.tsx +2 -3
- package/src/fragments/createOpenChannelListFragment.tsx +2 -1
- package/src/hooks/useConnection.ts +9 -7
- package/src/hooks/useMentionTextInput.ts +7 -2
- package/src/index.ts +4 -2
- package/src/libs/MentionManager.tsx +8 -7
- package/src/libs/SBUUtils.ts +7 -3
- package/src/localization/StringSet.type.ts +2 -46
- package/src/localization/createBaseStringSet.ts +19 -71
- package/src/version.ts +1 -1
- package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js +0 -46
- package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -73
- package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -93
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -132
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +0 -24
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/MessageContainer.js +0 -27
- package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +0 -41
- package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +0 -41
- package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js +0 -46
- package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -113
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -200
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/index.js +0 -22
- package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +0 -1
- package/lib/commonjs/components/MessageRenderer/index.js +0 -186
- package/lib/commonjs/components/MessageRenderer/index.js.map +0 -1
- package/lib/module/components/MessageRenderer/AdminMessage/index.js +0 -38
- package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +0 -1
- package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -65
- package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -84
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -123
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
- package/lib/module/components/MessageRenderer/FileMessage/index.js +0 -16
- package/lib/module/components/MessageRenderer/FileMessage/index.js.map +0 -1
- package/lib/module/components/MessageRenderer/MessageContainer.js +0 -19
- package/lib/module/components/MessageRenderer/MessageContainer.js.map +0 -1
- package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
- package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +0 -33
- package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
- package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +0 -33
- package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
- package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
- package/lib/module/components/MessageRenderer/MessageTime.js +0 -26
- package/lib/module/components/MessageRenderer/MessageTime.js.map +0 -1
- package/lib/module/components/MessageRenderer/UnknownMessage/index.js +0 -38
- package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -105
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -190
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
- package/lib/module/components/MessageRenderer/UserMessage/index.js +0 -14
- package/lib/module/components/MessageRenderer/UserMessage/index.js.map +0 -1
- package/lib/module/components/MessageRenderer/index.js +0 -178
- package/lib/module/components/MessageRenderer/index.js.map +0 -1
- package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +0 -5
- package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +0 -6
- package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +0 -3
- package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +0 -3
- package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +0 -15
- package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +0 -3
- package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +0 -7
- package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +0 -7
- package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +0 -7
- package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +0 -9
- package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +0 -4
- package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +0 -3
- package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +0 -7
- package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +0 -9
- package/src/components/MessageRenderer/AdminMessage/index.tsx +0 -40
- package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +0 -51
- package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +0 -98
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +0 -113
- package/src/components/MessageRenderer/FileMessage/index.tsx +0 -20
- package/src/components/MessageRenderer/MessageContainer.tsx +0 -17
- package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +0 -34
- package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +0 -36
- package/src/components/MessageRenderer/MessageTime.tsx +0 -28
- package/src/components/MessageRenderer/UnknownMessage/index.tsx +0 -34
- package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +0 -102
- package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +0 -188
- package/src/components/MessageRenderer/UserMessage/index.tsx +0 -24
- package/src/components/MessageRenderer/index.tsx +0 -198
|
@@ -32,21 +32,20 @@ type Props = {
|
|
|
32
32
|
onLongPress: () => void;
|
|
33
33
|
};
|
|
34
34
|
const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {
|
|
35
|
-
const { currentUser, sdk,
|
|
35
|
+
const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();
|
|
36
36
|
const { STRINGS } = useLocalization();
|
|
37
37
|
const { colors } = useUIKitTheme();
|
|
38
38
|
|
|
39
39
|
const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
41
|
+
const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');
|
|
42
|
+
useChannelHandler(sdk, handlerId, {
|
|
43
|
+
onTypingStatusUpdated(eventChannel) {
|
|
44
|
+
if (isDifferentChannel(channel, eventChannel)) return;
|
|
45
|
+
if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;
|
|
46
|
+
setTypingUsers(eventChannel.getTypingUsers());
|
|
47
|
+
},
|
|
48
|
+
});
|
|
50
49
|
|
|
51
50
|
const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);
|
|
52
51
|
|
|
@@ -62,8 +61,8 @@ const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props)
|
|
|
62
61
|
});
|
|
63
62
|
|
|
64
63
|
const titleCaptionIcon = useIIFE(() => {
|
|
65
|
-
if (!channel.lastMessage) return undefined;
|
|
66
|
-
if (!
|
|
64
|
+
if (!channel.lastMessage || channel.isEphemeral) return undefined;
|
|
65
|
+
if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;
|
|
67
66
|
if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;
|
|
68
67
|
|
|
69
68
|
if (outgoingStatus === 'PENDING') {
|
|
@@ -89,6 +88,8 @@ const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props)
|
|
|
89
88
|
return undefined;
|
|
90
89
|
});
|
|
91
90
|
|
|
91
|
+
const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));
|
|
92
|
+
|
|
92
93
|
return (
|
|
93
94
|
<Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>
|
|
94
95
|
<GroupChannelPreview
|
|
@@ -99,7 +100,7 @@ const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props)
|
|
|
99
100
|
titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}
|
|
100
101
|
body={bodyText}
|
|
101
102
|
bodyIcon={fileIcon}
|
|
102
|
-
badgeCount={
|
|
103
|
+
badgeCount={unreadMessageCount}
|
|
103
104
|
mentioned={channel.unreadMentionCount > 0}
|
|
104
105
|
mentionTrigger={mentionManager.config.trigger}
|
|
105
106
|
memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}
|
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
ToastProvider,
|
|
15
15
|
UIKitThemeProvider,
|
|
16
16
|
} from '@sendbird/uikit-react-native-foundation';
|
|
17
|
+
import { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';
|
|
17
18
|
import type {
|
|
19
|
+
PartialDeep,
|
|
18
20
|
SendbirdChatSDK,
|
|
19
21
|
SendbirdGroupChannel,
|
|
20
22
|
SendbirdGroupChannelCreateParams,
|
|
@@ -26,7 +28,7 @@ import { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';
|
|
|
26
28
|
import { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';
|
|
27
29
|
import { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';
|
|
28
30
|
import { ReactionProvider } from '../contexts/ReactionCtx';
|
|
29
|
-
import type {
|
|
31
|
+
import type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';
|
|
30
32
|
import { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';
|
|
31
33
|
import { UserProfileProvider } from '../contexts/UserProfileCtx';
|
|
32
34
|
import EmojiManager from '../libs/EmojiManager';
|
|
@@ -49,18 +51,14 @@ import VERSION from '../version';
|
|
|
49
51
|
import InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';
|
|
50
52
|
|
|
51
53
|
const NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');
|
|
52
|
-
|
|
54
|
+
type UnimplementedFeatures = 'enableVoiceMessage' | 'threadReplySelectType' | 'replyType';
|
|
53
55
|
export const SendbirdUIKit = Object.freeze({
|
|
54
56
|
VERSION,
|
|
55
57
|
PLATFORM: Platform.OS.toLowerCase(),
|
|
56
58
|
DEFAULT: {
|
|
57
59
|
AUTO_PUSH_TOKEN_REGISTRATION: true,
|
|
58
|
-
CHANNEL_LIST_TYPING_INDICATOR: false,
|
|
59
|
-
CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,
|
|
60
60
|
USE_USER_ID_FOR_NICKNAME: false,
|
|
61
|
-
USER_MENTION: false,
|
|
62
61
|
IMAGE_COMPRESSION: true,
|
|
63
|
-
MESSAGE_SEARCH: false,
|
|
64
62
|
},
|
|
65
63
|
});
|
|
66
64
|
|
|
@@ -72,10 +70,17 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
72
70
|
clipboard: ClipboardServiceInterface;
|
|
73
71
|
media: MediaServiceInterface;
|
|
74
72
|
};
|
|
75
|
-
chatOptions
|
|
76
|
-
localCacheStorage
|
|
73
|
+
chatOptions: {
|
|
74
|
+
localCacheStorage: LocalCacheStorage;
|
|
77
75
|
onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;
|
|
78
|
-
} & Partial<
|
|
76
|
+
} & Partial<ChatRelatedFeaturesInUIKit>;
|
|
77
|
+
uikitOptions?: PartialDeep<{
|
|
78
|
+
common: SBUConfig['common'];
|
|
79
|
+
groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures>;
|
|
80
|
+
groupChannelList: SBUConfig['groupChannel']['channelList'];
|
|
81
|
+
groupChannelSettings: SBUConfig['groupChannel']['setting'];
|
|
82
|
+
openChannel: SBUConfig['openChannel']['channel'];
|
|
83
|
+
}>;
|
|
79
84
|
localization?: {
|
|
80
85
|
stringSet?: StringSet;
|
|
81
86
|
};
|
|
@@ -109,6 +114,7 @@ const SendbirdUIKitContainer = ({
|
|
|
109
114
|
children,
|
|
110
115
|
appId,
|
|
111
116
|
chatOptions,
|
|
117
|
+
uikitOptions,
|
|
112
118
|
platformServices,
|
|
113
119
|
localization,
|
|
114
120
|
styles,
|
|
@@ -118,17 +124,18 @@ const SendbirdUIKitContainer = ({
|
|
|
118
124
|
userMention,
|
|
119
125
|
imageCompression,
|
|
120
126
|
}: SendbirdUIKitContainerProps) => {
|
|
127
|
+
if (!chatOptions.localCacheStorage) {
|
|
128
|
+
throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');
|
|
129
|
+
}
|
|
130
|
+
|
|
121
131
|
const defaultStringSet = localization?.stringSet ?? StringSetEn;
|
|
122
132
|
|
|
123
133
|
const isFirstMount = useIsFirstMount();
|
|
124
134
|
const unsubscribes = useRef<Array<() => void>>([]);
|
|
125
|
-
const internalStorage = useMemo(
|
|
126
|
-
() => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),
|
|
127
|
-
[chatOptions?.localCacheStorage],
|
|
128
|
-
);
|
|
129
135
|
|
|
136
|
+
const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));
|
|
130
137
|
const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {
|
|
131
|
-
const sendbird = initializeSendbird(appId, internalStorage, chatOptions
|
|
138
|
+
const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);
|
|
132
139
|
unsubscribes.current = sendbird.unsubscribes;
|
|
133
140
|
return sendbird.chatSDK;
|
|
134
141
|
});
|
|
@@ -143,13 +150,8 @@ const SendbirdUIKitContainer = ({
|
|
|
143
150
|
delimiter: MentionConfig.DEFAULT.DELIMITER,
|
|
144
151
|
trigger: MentionConfig.DEFAULT.TRIGGER,
|
|
145
152
|
});
|
|
146
|
-
return new MentionManager(config
|
|
147
|
-
}, [
|
|
148
|
-
chatOptions?.enableUserMention,
|
|
149
|
-
userMention?.mentionLimit,
|
|
150
|
-
userMention?.suggestionLimit,
|
|
151
|
-
userMention?.debounceMills,
|
|
152
|
-
]);
|
|
153
|
+
return new MentionManager(config);
|
|
154
|
+
}, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);
|
|
153
155
|
|
|
154
156
|
const imageCompressionConfig = useMemo(() => {
|
|
155
157
|
return new ImageCompressionConfig({
|
|
@@ -161,7 +163,7 @@ const SendbirdUIKitContainer = ({
|
|
|
161
163
|
|
|
162
164
|
useLayoutEffect(() => {
|
|
163
165
|
if (!isFirstMount) {
|
|
164
|
-
const sendbird = initializeSendbird(appId, internalStorage, chatOptions
|
|
166
|
+
const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);
|
|
165
167
|
setSdkInstance(sendbird.chatSDK);
|
|
166
168
|
unsubscribes.current = sendbird.unsubscribes;
|
|
167
169
|
}
|
|
@@ -187,75 +189,81 @@ const SendbirdUIKitContainer = ({
|
|
|
187
189
|
|
|
188
190
|
return (
|
|
189
191
|
<SafeAreaProvider>
|
|
190
|
-
<
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS
|
|
204
|
-
}
|
|
205
|
-
enableUseUserIdForNickname={
|
|
206
|
-
chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME
|
|
207
|
-
}
|
|
208
|
-
enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}
|
|
209
|
-
enableImageCompression={chatOptions?.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}
|
|
210
|
-
enableMessageSearch={chatOptions?.enableMessageSearch ?? SendbirdUIKit.DEFAULT.MESSAGE_SEARCH}
|
|
192
|
+
<UIKitConfigProvider
|
|
193
|
+
storage={internalStorage}
|
|
194
|
+
localConfigs={{
|
|
195
|
+
common: uikitOptions?.common,
|
|
196
|
+
groupChannel: {
|
|
197
|
+
channel: uikitOptions?.groupChannel,
|
|
198
|
+
channelList: uikitOptions?.groupChannelList,
|
|
199
|
+
setting: uikitOptions?.groupChannelSettings,
|
|
200
|
+
},
|
|
201
|
+
openChannel: {
|
|
202
|
+
channel: uikitOptions?.openChannel,
|
|
203
|
+
},
|
|
204
|
+
}}
|
|
211
205
|
>
|
|
212
|
-
<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
206
|
+
<SendbirdChatProvider
|
|
207
|
+
sdkInstance={sdkInstance}
|
|
208
|
+
emojiManager={emojiManager}
|
|
209
|
+
mentionManager={mentionManager}
|
|
210
|
+
imageCompressionConfig={imageCompressionConfig}
|
|
211
|
+
enableAutoPushTokenRegistration={
|
|
212
|
+
chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION
|
|
213
|
+
}
|
|
214
|
+
enableUseUserIdForNickname={
|
|
215
|
+
chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME
|
|
216
|
+
}
|
|
217
|
+
enableImageCompression={chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}
|
|
218
|
+
>
|
|
219
|
+
<LocalizationProvider stringSet={defaultStringSet}>
|
|
220
|
+
<PlatformServiceProvider
|
|
221
|
+
fileService={platformServices.file}
|
|
222
|
+
notificationService={platformServices.notification}
|
|
223
|
+
clipboardService={platformServices.clipboard}
|
|
224
|
+
mediaService={platformServices.media}
|
|
225
|
+
>
|
|
226
|
+
<UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>
|
|
227
|
+
<HeaderStyleProvider
|
|
228
|
+
HeaderComponent={styles?.HeaderComponent ?? Header}
|
|
229
|
+
defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}
|
|
230
|
+
statusBarTranslucent={styles?.statusBarTranslucent ?? true}
|
|
231
|
+
>
|
|
232
|
+
<ToastProvider dismissTimeout={toast?.dismissTimeout}>
|
|
233
|
+
<UserProfileProvider
|
|
234
|
+
onCreateChannel={userProfile?.onCreateChannel}
|
|
235
|
+
onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}
|
|
236
|
+
statusBarTranslucent={styles?.statusBarTranslucent ?? true}
|
|
237
|
+
>
|
|
238
|
+
<ReactionProvider>
|
|
239
|
+
<LocalizationContext.Consumer>
|
|
240
|
+
{(value) => {
|
|
241
|
+
const STRINGS = value?.STRINGS || defaultStringSet;
|
|
242
|
+
return (
|
|
243
|
+
<DialogProvider
|
|
244
|
+
defaultLabels={{
|
|
245
|
+
alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },
|
|
246
|
+
prompt: {
|
|
247
|
+
ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,
|
|
248
|
+
cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,
|
|
249
|
+
placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,
|
|
250
|
+
},
|
|
251
|
+
}}
|
|
252
|
+
>
|
|
253
|
+
{renderChildren()}
|
|
254
|
+
</DialogProvider>
|
|
255
|
+
);
|
|
256
|
+
}}
|
|
257
|
+
</LocalizationContext.Consumer>
|
|
258
|
+
</ReactionProvider>
|
|
259
|
+
</UserProfileProvider>
|
|
260
|
+
</ToastProvider>
|
|
261
|
+
</HeaderStyleProvider>
|
|
262
|
+
</UIKitThemeProvider>
|
|
263
|
+
</PlatformServiceProvider>
|
|
264
|
+
</LocalizationProvider>
|
|
265
|
+
</SendbirdChatProvider>
|
|
266
|
+
</UIKitConfigProvider>
|
|
259
267
|
</SafeAreaProvider>
|
|
260
268
|
);
|
|
261
269
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useState } from 'react';
|
|
2
2
|
|
|
3
3
|
import { useAppFeatures } from '@sendbird/uikit-chat-hooks';
|
|
4
|
+
import { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';
|
|
4
5
|
import type {
|
|
5
6
|
SendbirdChatSDK,
|
|
6
7
|
SendbirdGroupChannel,
|
|
@@ -14,17 +15,13 @@ import type ImageCompressionConfig from '../libs/ImageCompressionConfig';
|
|
|
14
15
|
import type MentionManager from '../libs/MentionManager';
|
|
15
16
|
import type { FileType } from '../platform/types';
|
|
16
17
|
|
|
17
|
-
export interface
|
|
18
|
+
export interface ChatRelatedFeaturesInUIKit {
|
|
18
19
|
enableAutoPushTokenRegistration: boolean;
|
|
19
|
-
enableChannelListTypingIndicator: boolean;
|
|
20
|
-
enableChannelListMessageReceiptStatus: boolean;
|
|
21
20
|
enableUseUserIdForNickname: boolean;
|
|
22
|
-
enableUserMention: boolean;
|
|
23
21
|
enableImageCompression: boolean;
|
|
24
|
-
enableMessageSearch: boolean;
|
|
25
22
|
}
|
|
26
23
|
|
|
27
|
-
interface Props extends
|
|
24
|
+
interface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {
|
|
28
25
|
sdkInstance: SendbirdChatSDK;
|
|
29
26
|
emojiManager: EmojiManager;
|
|
30
27
|
mentionManager: MentionManager;
|
|
@@ -43,23 +40,40 @@ export type SendbirdChatContextType = {
|
|
|
43
40
|
updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;
|
|
44
41
|
markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;
|
|
45
42
|
|
|
46
|
-
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
43
|
+
sbOptions: {
|
|
44
|
+
// UIKit options
|
|
45
|
+
uikit: SBUConfig;
|
|
46
|
+
uikitWithAppInfo: {
|
|
47
|
+
groupChannel: {
|
|
48
|
+
channel: {
|
|
49
|
+
enableReactions: boolean;
|
|
50
|
+
enableOgtag: boolean;
|
|
51
|
+
};
|
|
52
|
+
setting: {
|
|
53
|
+
enableMessageSearch: boolean;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
openChannel: {
|
|
57
|
+
channel: {
|
|
58
|
+
enableOgtag: boolean;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Chat related options in UIKit
|
|
64
|
+
chat: {
|
|
65
|
+
imageCompressionEnabled: boolean;
|
|
66
|
+
useUserIdForNicknameEnabled: boolean;
|
|
67
|
+
autoPushTokenRegistrationEnabled: boolean; // RN only
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Sendbird application options
|
|
71
|
+
appInfo: {
|
|
72
|
+
deliveryReceiptEnabled: boolean;
|
|
73
|
+
broadcastChannelEnabled: boolean;
|
|
74
|
+
superGroupChannelEnabled: boolean;
|
|
75
|
+
reactionEnabled: boolean;
|
|
76
|
+
};
|
|
63
77
|
};
|
|
64
78
|
};
|
|
65
79
|
|
|
@@ -71,16 +85,13 @@ export const SendbirdChatProvider = ({
|
|
|
71
85
|
mentionManager,
|
|
72
86
|
imageCompressionConfig,
|
|
73
87
|
enableAutoPushTokenRegistration,
|
|
74
|
-
enableChannelListMessageReceiptStatus,
|
|
75
|
-
enableChannelListTypingIndicator,
|
|
76
88
|
enableUseUserIdForNickname,
|
|
77
|
-
enableUserMention,
|
|
78
89
|
enableImageCompression,
|
|
79
|
-
enableMessageSearch,
|
|
80
90
|
}: Props) => {
|
|
81
91
|
const [currentUser, _setCurrentUser] = useState<SendbirdUser>();
|
|
82
92
|
const forceUpdate = useForceUpdate();
|
|
83
93
|
const appFeatures = useAppFeatures(sdkInstance);
|
|
94
|
+
const { configs, configsWithAppAttr } = useUIKitConfig();
|
|
84
95
|
|
|
85
96
|
const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {
|
|
86
97
|
// NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser
|
|
@@ -144,15 +155,17 @@ export const SendbirdChatProvider = ({
|
|
|
144
155
|
updateCurrentUserInfo,
|
|
145
156
|
markAsDeliveredWithChannel,
|
|
146
157
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
158
|
+
// TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.
|
|
159
|
+
// For example, common -> chat context, common -> calls context
|
|
160
|
+
sbOptions: {
|
|
161
|
+
appInfo: appFeatures,
|
|
162
|
+
uikit: configs,
|
|
163
|
+
uikitWithAppInfo: configsWithAppAttr(sdkInstance),
|
|
164
|
+
chat: {
|
|
165
|
+
autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,
|
|
166
|
+
useUserIdForNicknameEnabled: enableUseUserIdForNickname,
|
|
167
|
+
imageCompressionEnabled: enableImageCompression,
|
|
168
|
+
},
|
|
156
169
|
},
|
|
157
170
|
};
|
|
158
171
|
|
|
@@ -62,11 +62,16 @@ export const UserProfileProvider = ({
|
|
|
62
62
|
const [visible, setVisible] = useState(false);
|
|
63
63
|
const [hideMessageButton, setHideMessageButton] = useState(false);
|
|
64
64
|
|
|
65
|
-
const show: UserProfileContextType['show'] = useCallback(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
const show: UserProfileContextType['show'] = useCallback(
|
|
66
|
+
(user, options) => {
|
|
67
|
+
if (chatContext.sbOptions.uikit.common.enableUsingDefaultUserProfile) {
|
|
68
|
+
setUser(user);
|
|
69
|
+
setVisible(true);
|
|
70
|
+
setHideMessageButton(Boolean(options?.hideMessageButton));
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
[chatContext.sbOptions.uikit.common.enableUsingDefaultUserProfile],
|
|
74
|
+
);
|
|
70
75
|
|
|
71
76
|
const hide: UserProfileContextType['hide'] = useCallback(() => {
|
|
72
77
|
setVisible(false);
|
|
@@ -25,16 +25,7 @@ const GroupChannelInput = (props: GroupChannelProps['Input']) => {
|
|
|
25
25
|
inputFrozen={chatAvailableState.frozen}
|
|
26
26
|
inputDisabled={chatAvailableState.disabled}
|
|
27
27
|
keyboardAvoidOffset={keyboardAvoidOffset}
|
|
28
|
-
|
|
29
|
-
onPressSendUserMessage={props.onPressSendUserMessage}
|
|
30
|
-
onPressSendFileMessage={props.onPressSendFileMessage}
|
|
31
|
-
onPressUpdateUserMessage={props.onPressUpdateUserMessage}
|
|
32
|
-
onPressUpdateFileMessage={props.onPressUpdateFileMessage}
|
|
33
|
-
SuggestedMentionList={props.SuggestedMentionList}
|
|
34
|
-
onSendFileMessage={props.onSendFileMessage}
|
|
35
|
-
onSendUserMessage={props.onSendUserMessage}
|
|
36
|
-
onUpdateFileMessage={props.onUpdateFileMessage}
|
|
37
|
-
onUpdateUserMessage={props.onUpdateUserMessage}
|
|
28
|
+
{...props}
|
|
38
29
|
/>
|
|
39
30
|
);
|
|
40
31
|
};
|
|
@@ -43,12 +43,8 @@ export interface GroupChannelProps {
|
|
|
43
43
|
flatListProps?: GroupChannelProps['MessageList']['flatListProps'];
|
|
44
44
|
sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];
|
|
45
45
|
collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];
|
|
46
|
-
queryCreator?: UseGroupChannelMessagesOptions['queryCreator'];
|
|
47
46
|
|
|
48
47
|
searchItem?: GroupChannelProps['MessageList']['searchItem'];
|
|
49
|
-
|
|
50
|
-
/** @deprecated Please use `onPressMediaMessage` instead **/
|
|
51
|
-
onPressImageMessage?: GroupChannelProps['MessageList']['onPressImageMessage'];
|
|
52
48
|
};
|
|
53
49
|
Header: {
|
|
54
50
|
shouldHideRight: () => boolean;
|
|
@@ -73,16 +69,10 @@ export interface GroupChannelProps {
|
|
|
73
69
|
| 'renderNewMessagesButton'
|
|
74
70
|
| 'renderScrollToBottomButton'
|
|
75
71
|
| 'flatListProps'
|
|
76
|
-
| 'onPressImageMessage'
|
|
77
72
|
| 'hasNext'
|
|
78
73
|
| 'searchItem'
|
|
79
74
|
> & {
|
|
80
75
|
onResetMessageList: (callback?: () => void) => void;
|
|
81
|
-
|
|
82
|
-
/** @deprecated Please use `newMessages` instead */
|
|
83
|
-
newMessagesFromMembers: SendbirdMessage[];
|
|
84
|
-
/** @deprecated Please use `newMessages` instead */
|
|
85
|
-
nextMessages: SendbirdMessage[];
|
|
86
76
|
};
|
|
87
77
|
Input: Pick<
|
|
88
78
|
ChannelInputProps,
|
|
@@ -92,10 +82,7 @@ export interface GroupChannelProps {
|
|
|
92
82
|
| 'onPressUpdateUserMessage'
|
|
93
83
|
| 'onPressUpdateFileMessage'
|
|
94
84
|
| 'SuggestedMentionList'
|
|
95
|
-
| '
|
|
96
|
-
| 'onSendUserMessage'
|
|
97
|
-
| 'onUpdateFileMessage'
|
|
98
|
-
| 'onUpdateUserMessage'
|
|
85
|
+
| 'AttachmentsButton'
|
|
99
86
|
>;
|
|
100
87
|
|
|
101
88
|
SuggestedMentionList: SuggestedMentionListProps;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { FlatList, ListRenderItem } from 'react-native';
|
|
3
3
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
4
4
|
|
|
@@ -10,6 +10,7 @@ import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
|
|
|
10
10
|
import type { GroupChannelListProps } from '../types';
|
|
11
11
|
|
|
12
12
|
const GroupChannelListList = ({
|
|
13
|
+
onPressChannel,
|
|
13
14
|
renderGroupChannelPreview,
|
|
14
15
|
groupChannels,
|
|
15
16
|
onLoadNext,
|
|
@@ -55,9 +56,12 @@ const GroupChannelListList = ({
|
|
|
55
56
|
openMenu(menuItem);
|
|
56
57
|
});
|
|
57
58
|
|
|
58
|
-
const renderItem: ListRenderItem<SendbirdGroupChannel> =
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const renderItem: ListRenderItem<SendbirdGroupChannel> = useFreshCallback(({ item }) =>
|
|
60
|
+
renderGroupChannelPreview?.({
|
|
61
|
+
channel: item,
|
|
62
|
+
onPress: () => onPressChannel(item),
|
|
63
|
+
onLongPress: () => onLongPress(item),
|
|
64
|
+
}),
|
|
61
65
|
);
|
|
62
66
|
|
|
63
67
|
const { left, right } = useSafeAreaInsets();
|
|
@@ -25,7 +25,7 @@ const STATUS_BAR_TOP_INSET_AS: 'margin' | 'padding' = Platform.select({ android:
|
|
|
25
25
|
const GroupChannelListTypeSelector = ({ skipTypeSelection, onSelectType }: GroupChannelListProps['TypeSelector']) => {
|
|
26
26
|
const { statusBarTranslucent, HeaderComponent } = useHeaderStyle();
|
|
27
27
|
const { colors } = useUIKitTheme();
|
|
28
|
-
const {
|
|
28
|
+
const { sbOptions } = useSendbirdChat();
|
|
29
29
|
const typeSelector = useContext(GroupChannelListContexts.TypeSelector);
|
|
30
30
|
const { visible, hide } = typeSelector;
|
|
31
31
|
|
|
@@ -50,11 +50,11 @@ const GroupChannelListTypeSelector = ({ skipTypeSelection, onSelectType }: Group
|
|
|
50
50
|
>
|
|
51
51
|
<View style={styles.buttonArea}>
|
|
52
52
|
{TYPES.map((type) => {
|
|
53
|
-
if (type === 'SUPER_GROUP' && !
|
|
53
|
+
if (type === 'SUPER_GROUP' && !sbOptions.appInfo.superGroupChannelEnabled) {
|
|
54
54
|
return null;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
if (type === 'BROADCAST' && !
|
|
57
|
+
if (type === 'BROADCAST' && !sbOptions.appInfo.broadcastChannelEnabled) {
|
|
58
58
|
return null;
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -8,52 +8,30 @@ import type { SendbirdGroupChannel } from '@sendbird/uikit-utils';
|
|
|
8
8
|
import type { CommonComponent } from '../../types';
|
|
9
9
|
|
|
10
10
|
export interface GroupChannelListProps {
|
|
11
|
-
/** Props for `GroupChannelListFragment` **/
|
|
12
11
|
Fragment: {
|
|
13
|
-
|
|
14
|
-
onPressChannel: (channel: SendbirdGroupChannel) => void;
|
|
15
|
-
/** Navigate to GroupChannelCreateFragment **/
|
|
12
|
+
onPressChannel: GroupChannelListProps['List']['onPressChannel'];
|
|
16
13
|
onPressCreateChannel: (channelType: GroupChannelType) => void;
|
|
17
|
-
|
|
18
|
-
renderGroupChannelPreview?: (
|
|
19
|
-
channel: SendbirdGroupChannel,
|
|
20
|
-
onLongPressChannel: () => void,
|
|
21
|
-
) => React.ReactElement | null;
|
|
22
|
-
/** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/
|
|
14
|
+
renderGroupChannelPreview?: GroupChannelListProps['List']['renderGroupChannelPreview'];
|
|
23
15
|
skipTypeSelection?: boolean;
|
|
24
|
-
/** Custom Query creator for channels query **/
|
|
25
|
-
queryCreator?: UseGroupChannelListOptions['queryCreator'];
|
|
26
|
-
/** Custom Collection creator for group channel collection **/
|
|
27
16
|
collectionCreator?: UseGroupChannelListOptions['collectionCreator'];
|
|
28
|
-
/** FlatList props for GroupChannelList.List **/
|
|
29
17
|
flatListProps?: GroupChannelListProps['List']['flatListProps'];
|
|
30
|
-
/** Action menu item creator for onLongPress **/
|
|
31
18
|
menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];
|
|
32
19
|
};
|
|
33
|
-
/** Props for `GroupChannelListModule.Header` **/
|
|
34
20
|
Header: {};
|
|
35
|
-
/** Props for `GroupChannelListModule.List` **/
|
|
36
21
|
List: {
|
|
37
|
-
|
|
22
|
+
onPressChannel: (channel: SendbirdGroupChannel) => void;
|
|
38
23
|
groupChannels: SendbirdGroupChannel[];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
) => React.ReactElement | null;
|
|
45
|
-
/** Method to load more data, called with onEndReached of FlatList **/
|
|
24
|
+
renderGroupChannelPreview: (props: {
|
|
25
|
+
channel: SendbirdGroupChannel;
|
|
26
|
+
onPress: () => void;
|
|
27
|
+
onLongPress: () => void;
|
|
28
|
+
}) => React.ReactElement | null;
|
|
46
29
|
onLoadNext: () => Promise<void>;
|
|
47
|
-
/** Prop from Fragment **/
|
|
48
30
|
flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;
|
|
49
|
-
/** Prop from Fragment **/
|
|
50
31
|
menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;
|
|
51
32
|
};
|
|
52
|
-
/** Props for `GroupChannelListModule.TypeSelector` **/
|
|
53
33
|
TypeSelector: {
|
|
54
|
-
/** Prop from Fragment `Fragment.skipTypeSelection` **/
|
|
55
34
|
skipTypeSelection: boolean;
|
|
56
|
-
/** Method called when type is selected, call `Fragment.onPressCreateChannel` **/
|
|
57
35
|
onSelectType: (type: GroupChannelType) => void;
|
|
58
36
|
};
|
|
59
37
|
}
|