@sendbird/uikit-react-native 3.5.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
- package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
- package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
- package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
- package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +7 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
- package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
- package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
- package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
- package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
- package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
- package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
- package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/commonjs/index.js +72 -40
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
- package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +25 -3
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/SendInput.js +23 -6
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +22 -4
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
- package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
- package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
- package/lib/module/components/ThreadChatFlatList/index.js +66 -0
- package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
- package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
- package/lib/module/containers/SendbirdUIKitContainer.js +7 -1
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js +6 -0
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
- package/lib/module/domain/groupChannelThread/index.js +9 -0
- package/lib/module/domain/groupChannelThread/index.js.map +1 -0
- package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
- package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
- package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
- package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelThread/types.js +2 -0
- package/lib/module/domain/groupChannelThread/types.js.map +1 -0
- package/lib/module/fragments/createGroupChannelFragment.js +33 -7
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
- package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
- package/lib/module/hooks/useMentionSuggestion.js +5 -2
- package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
- package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +27 -4
- package/lib/module/localization/createBaseStringSet.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
- package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
- package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
- package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
- package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
- package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +6 -4
- package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
- package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
- package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
- package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
- package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
- package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +6 -6
- package/src/components/ChannelInput/SendInput.tsx +24 -5
- package/src/components/ChannelInput/index.tsx +1 -0
- package/src/components/ChannelMessageList/index.tsx +27 -5
- package/src/components/ChannelThreadMessageList/index.tsx +406 -0
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
- package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
- package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
- package/src/components/ThreadChatFlatList/index.tsx +63 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
- package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
- package/src/containers/SendbirdUIKitContainer.tsx +9 -4
- package/src/contexts/SendbirdChatCtx.tsx +20 -0
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
- package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
- package/src/domain/groupChannel/types.ts +5 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
- package/src/domain/groupChannelThread/index.ts +8 -0
- package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
- package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
- package/src/domain/groupChannelThread/types.ts +184 -0
- package/src/fragments/createGroupChannelFragment.tsx +38 -8
- package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
- package/src/hooks/useMentionSuggestion.ts +13 -9
- package/src/index.ts +4 -0
- package/src/libs/VoiceMessageStatusManager.ts +56 -0
- package/src/localization/StringSet.type.ts +27 -0
- package/src/localization/createBaseStringSet.ts +33 -4
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","MessageFilter","ReplyType","Box","useGroupChannelMessages","NOOP","PASS","confirmAndMarkAsRead","messageComparator","useFreshCallback","useIIFE","useRefTracker","GroupChannelMessageRenderer","GroupChannelTypingIndicatorBubble","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","usePlatformService","useSendbirdChat","pubsub","createGroupChannelFragment","initModule","GroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","sdk","currentUser","sbOptions","internalSearchItem","setInternalSearchItem","navigateFromMessageSearch","Boolean","groupChannelPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","replyType","uikit","groupChannel","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","startingPoint","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","renderItem","content","isFirstItem","memoizedFlatListProps","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","MessageFilter","ReplyType","Box","useToast","useGroupChannelMessages","getReadableFileSize","NOOP","PASS","confirmAndMarkAsRead","messageComparator","useFreshCallback","useIIFE","useRefTracker","GroupChannelMessageRenderer","GroupChannelTypingIndicatorBubble","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","useLocalization","usePlatformService","useSendbirdChat","pubsub","createGroupChannelFragment","initModule","GroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","sdk","currentUser","sbOptions","voiceMessageStatusManager","toast","STRINGS","internalSearchItem","setInternalSearchItem","navigateFromMessageSearch","Boolean","groupChannelPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","replyType","uikit","groupChannel","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","startingPoint","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","clear","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","renderItem","content","isFirstItem","memoizedFlatListProps","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdSendableMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport { FileType } from '../platform/types';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onPressReplyMessageInThread = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager } = useSendbirdChat();\n const toast = useToast();\n const { STRINGS } = useLocalization();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {\n return ReplyType.NONE;\n } else {\n return ReplyType.ONLY_REPLY_TO_CHANNEL;\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n voiceMessageStatusManager.clear();\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as FileType)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n onPressReplyMessageInThread={_onPressReplyMessageInThread}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { Box, useToast } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import { useGroupChannelThreadMessages } from '@sendbird/uikit-tools';
|
|
5
|
+
import { getReadableFileSize } from '@sendbird/uikit-utils';
|
|
6
|
+
import { NOOP, PASS, confirmAndMarkAsRead, messageComparator, useFreshCallback, useRefTracker } from '@sendbird/uikit-utils';
|
|
7
|
+
import GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';
|
|
8
|
+
import StatusComposition from '../components/StatusComposition';
|
|
9
|
+
import createGroupChannelThreadModule from '../domain/groupChannelThread/module/createGroupChannelThreadModule';
|
|
10
|
+
import { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';
|
|
11
|
+
import pubsub from '../utils/pubsub';
|
|
12
|
+
const createGroupChannelThreadFragment = initModule => {
|
|
13
|
+
const GroupChannelThreadModule = createGroupChannelThreadModule(initModule);
|
|
14
|
+
return _ref => {
|
|
15
|
+
let {
|
|
16
|
+
renderMessage,
|
|
17
|
+
enableMessageGrouping = true,
|
|
18
|
+
onPressHeaderLeft = NOOP,
|
|
19
|
+
onPressHeaderSubtitle = NOOP,
|
|
20
|
+
onPressMediaMessage = NOOP,
|
|
21
|
+
onParentMessageDeleted = NOOP,
|
|
22
|
+
onChannelDeleted = NOOP,
|
|
23
|
+
onBeforeSendUserMessage = PASS,
|
|
24
|
+
onBeforeSendFileMessage = PASS,
|
|
25
|
+
onBeforeUpdateUserMessage = PASS,
|
|
26
|
+
onBeforeUpdateFileMessage = PASS,
|
|
27
|
+
channel,
|
|
28
|
+
parentMessage,
|
|
29
|
+
startingPoint,
|
|
30
|
+
keyboardAvoidOffset,
|
|
31
|
+
sortComparator = threadMessageComparator,
|
|
32
|
+
flatListProps
|
|
33
|
+
} = _ref;
|
|
34
|
+
const {
|
|
35
|
+
playerService,
|
|
36
|
+
recorderService
|
|
37
|
+
} = usePlatformService();
|
|
38
|
+
const {
|
|
39
|
+
sdk,
|
|
40
|
+
currentUser,
|
|
41
|
+
sbOptions,
|
|
42
|
+
voiceMessageStatusManager,
|
|
43
|
+
groupChannelFragmentOptions
|
|
44
|
+
} = useSendbirdChat();
|
|
45
|
+
const [groupChannelThreadPubSub] = useState(() => pubsub());
|
|
46
|
+
const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);
|
|
47
|
+
const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);
|
|
48
|
+
const toast = useToast();
|
|
49
|
+
const {
|
|
50
|
+
STRINGS
|
|
51
|
+
} = useLocalization();
|
|
52
|
+
const [_parentMessage, setParentMessage] = useState(parentMessage);
|
|
53
|
+
const {
|
|
54
|
+
loading,
|
|
55
|
+
messages,
|
|
56
|
+
newMessages,
|
|
57
|
+
resetNewMessages,
|
|
58
|
+
loadNext,
|
|
59
|
+
loadPrevious,
|
|
60
|
+
hasNext,
|
|
61
|
+
sendFileMessage,
|
|
62
|
+
sendUserMessage,
|
|
63
|
+
updateFileMessage,
|
|
64
|
+
updateUserMessage,
|
|
65
|
+
resendMessage,
|
|
66
|
+
deleteMessage,
|
|
67
|
+
resetWithStartingPoint
|
|
68
|
+
} = useGroupChannelThreadMessages(sdk, channel, _parentMessage, {
|
|
69
|
+
shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,
|
|
70
|
+
onMessagesReceived(messages) {
|
|
71
|
+
groupChannelThreadPubSub.publish({
|
|
72
|
+
type: 'MESSAGES_RECEIVED',
|
|
73
|
+
data: {
|
|
74
|
+
messages
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
onMessagesUpdated(messages) {
|
|
79
|
+
groupChannelThreadPubSub.publish({
|
|
80
|
+
type: 'MESSAGES_UPDATED',
|
|
81
|
+
data: {
|
|
82
|
+
messages
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
onParentMessageUpdated(parentMessage) {
|
|
87
|
+
setParentMessage(parentMessage);
|
|
88
|
+
},
|
|
89
|
+
onParentMessageDeleted: () => {
|
|
90
|
+
toast.show(STRINGS.TOAST.THREAD_PARENT_MESSAGE_DELETED_ERROR, 'error');
|
|
91
|
+
onParentMessageDeleted === null || onParentMessageDeleted === void 0 ? void 0 : onParentMessageDeleted();
|
|
92
|
+
},
|
|
93
|
+
onChannelDeleted,
|
|
94
|
+
onCurrentUserBanned: onChannelDeleted,
|
|
95
|
+
sortComparator,
|
|
96
|
+
markAsRead: confirmAndMarkAsRead,
|
|
97
|
+
isReactionEnabled: sbOptions.uikit.groupChannel.channel.enableReactions,
|
|
98
|
+
startingPoint
|
|
99
|
+
});
|
|
100
|
+
const onBlurFragment = () => {
|
|
101
|
+
return Promise.allSettled([playerService.reset(), recorderService.reset()]);
|
|
102
|
+
};
|
|
103
|
+
const _onPressHeaderLeft = useFreshCallback(async () => {
|
|
104
|
+
await onBlurFragment();
|
|
105
|
+
voiceMessageStatusManager.publishAll();
|
|
106
|
+
onPressHeaderLeft();
|
|
107
|
+
});
|
|
108
|
+
const _onPressHeaderSubtitle = useFreshCallback(async () => {
|
|
109
|
+
await onBlurFragment();
|
|
110
|
+
voiceMessageStatusManager.publishAll();
|
|
111
|
+
groupChannelFragmentOptions.pubsub.publish({
|
|
112
|
+
type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT',
|
|
113
|
+
data: {
|
|
114
|
+
startingPoint: parentMessage.createdAt
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
onPressHeaderSubtitle();
|
|
118
|
+
});
|
|
119
|
+
const _onPressMediaMessage = useFreshCallback(async (message, deleteMessage, uri) => {
|
|
120
|
+
await onBlurFragment();
|
|
121
|
+
onPressMediaMessage(message, deleteMessage, uri);
|
|
122
|
+
});
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
return () => {
|
|
125
|
+
onBlurFragment();
|
|
126
|
+
};
|
|
127
|
+
}, []);
|
|
128
|
+
const renderItem = useFreshCallback(props => {
|
|
129
|
+
const content = renderMessage ? renderMessage(props) : /*#__PURE__*/React.createElement(GroupChannelMessageRenderer, _extends({
|
|
130
|
+
hideParentMessage: true
|
|
131
|
+
}, props));
|
|
132
|
+
return /*#__PURE__*/React.createElement(Box, null, content);
|
|
133
|
+
});
|
|
134
|
+
const memoizedFlatListProps = useMemo(() => ({
|
|
135
|
+
ListHeaderComponent: /*#__PURE__*/React.createElement(GroupChannelThreadModule.ParentMessageInfo, {
|
|
136
|
+
channel: channel,
|
|
137
|
+
currentUserId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
|
|
138
|
+
onDeleteMessage: deleteMessage,
|
|
139
|
+
onPressMediaMessage: _onPressMediaMessage
|
|
140
|
+
}),
|
|
141
|
+
contentContainerStyle: {
|
|
142
|
+
flexGrow: 1
|
|
143
|
+
},
|
|
144
|
+
...flatListProps
|
|
145
|
+
}), [flatListProps]);
|
|
146
|
+
const onResetMessageList = useCallback(async () => {
|
|
147
|
+
return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);
|
|
148
|
+
}, []);
|
|
149
|
+
const onResetMessageListWithStartingPoint = useCallback(async startingPoint => {
|
|
150
|
+
return await resetWithStartingPoint(startingPoint);
|
|
151
|
+
}, []);
|
|
152
|
+
const onPending = message => {
|
|
153
|
+
groupChannelThreadPubSub.publish({
|
|
154
|
+
type: 'MESSAGE_SENT_PENDING',
|
|
155
|
+
data: {
|
|
156
|
+
message
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
const onSent = message => {
|
|
161
|
+
groupChannelThreadPubSub.publish({
|
|
162
|
+
type: 'MESSAGE_SENT_SUCCESS',
|
|
163
|
+
data: {
|
|
164
|
+
message
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
const updateIfParentMessage = message => {
|
|
169
|
+
if (message.messageId === parentMessage.parentMessageId) {
|
|
170
|
+
setParentMessage(message);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const onPressSendUserMessage = useFreshCallback(async params => {
|
|
174
|
+
const processedParams = await onBeforeSendUserMessage(params);
|
|
175
|
+
const message = await sendUserMessage(processedParams, onPending);
|
|
176
|
+
onSent(message);
|
|
177
|
+
});
|
|
178
|
+
const onPressSendFileMessage = useFreshCallback(async params => {
|
|
179
|
+
var _processedParams$file;
|
|
180
|
+
const processedParams = await onBeforeSendFileMessage(params);
|
|
181
|
+
const fileSize = ((_processedParams$file = processedParams.file) === null || _processedParams$file === void 0 ? void 0 : _processedParams$file.size) ?? processedParams.fileSize;
|
|
182
|
+
const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;
|
|
183
|
+
if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {
|
|
184
|
+
const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;
|
|
185
|
+
toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');
|
|
186
|
+
return;
|
|
187
|
+
} else {
|
|
188
|
+
const message = await sendFileMessage(processedParams, onPending);
|
|
189
|
+
onSent(message);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
const onPressUpdateUserMessage = useFreshCallback(async (message, params) => {
|
|
193
|
+
const processedParams = await onBeforeUpdateUserMessage(params);
|
|
194
|
+
const updatedMessage = await updateUserMessage(message.messageId, processedParams);
|
|
195
|
+
updateIfParentMessage(updatedMessage);
|
|
196
|
+
});
|
|
197
|
+
const onPressUpdateFileMessage = useFreshCallback(async (message, params) => {
|
|
198
|
+
const processedParams = await onBeforeUpdateFileMessage(params);
|
|
199
|
+
const updatedMessage = await updateFileMessage(message.messageId, processedParams);
|
|
200
|
+
updateIfParentMessage(updatedMessage);
|
|
201
|
+
});
|
|
202
|
+
const onScrolledAwayFromBottom = useFreshCallback(value => {
|
|
203
|
+
if (!value) resetNewMessages();
|
|
204
|
+
setScrolledAwayFromBottom(value);
|
|
205
|
+
});
|
|
206
|
+
return /*#__PURE__*/React.createElement(GroupChannelThreadModule.Provider, {
|
|
207
|
+
channel: channel,
|
|
208
|
+
parentMessage: _parentMessage,
|
|
209
|
+
groupChannelThreadPubSub: groupChannelThreadPubSub,
|
|
210
|
+
keyboardAvoidOffset: keyboardAvoidOffset,
|
|
211
|
+
threadedMessages: messages
|
|
212
|
+
}, /*#__PURE__*/React.createElement(GroupChannelThreadModule.Header, {
|
|
213
|
+
onPressLeft: _onPressHeaderLeft,
|
|
214
|
+
onPressSubtitle: _onPressHeaderSubtitle
|
|
215
|
+
}), /*#__PURE__*/React.createElement(StatusComposition, {
|
|
216
|
+
loading: loading,
|
|
217
|
+
LoadingComponent: /*#__PURE__*/React.createElement(GroupChannelThreadModule.StatusLoading, null)
|
|
218
|
+
}, /*#__PURE__*/React.createElement(GroupChannelThreadModule.MessageList, {
|
|
219
|
+
channel: channel,
|
|
220
|
+
onResetMessageList: onResetMessageList,
|
|
221
|
+
onResetMessageListWithStartingPoint: onResetMessageListWithStartingPoint,
|
|
222
|
+
enableMessageGrouping: enableMessageGrouping,
|
|
223
|
+
currentUserId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
|
|
224
|
+
renderMessage: renderItem,
|
|
225
|
+
messages: messages,
|
|
226
|
+
newMessages: newMessages,
|
|
227
|
+
onTopReached: loadPrevious,
|
|
228
|
+
onBottomReached: loadNext,
|
|
229
|
+
hasNext: hasNext,
|
|
230
|
+
scrolledAwayFromBottom: scrolledAwayFromBottom,
|
|
231
|
+
onScrolledAwayFromBottom: onScrolledAwayFromBottom,
|
|
232
|
+
onResendFailedMessage: resendMessage,
|
|
233
|
+
onDeleteMessage: deleteMessage,
|
|
234
|
+
onPressMediaMessage: _onPressMediaMessage,
|
|
235
|
+
flatListProps: memoizedFlatListProps,
|
|
236
|
+
startingPoint: startingPoint
|
|
237
|
+
}), /*#__PURE__*/React.createElement(GroupChannelThreadModule.Input, {
|
|
238
|
+
SuggestedMentionList: GroupChannelThreadModule.SuggestedMentionList,
|
|
239
|
+
shouldRenderInput: shouldRenderInput(channel),
|
|
240
|
+
onPressSendUserMessage: onPressSendUserMessage,
|
|
241
|
+
onPressSendFileMessage: onPressSendFileMessage,
|
|
242
|
+
onPressUpdateUserMessage: onPressUpdateUserMessage,
|
|
243
|
+
onPressUpdateFileMessage: onPressUpdateFileMessage
|
|
244
|
+
})));
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
function shouldRenderInput(channel) {
|
|
248
|
+
if (channel.isBroadcast) {
|
|
249
|
+
return channel.myRole === 'operator';
|
|
250
|
+
}
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
export function threadMessageComparator(a, b) {
|
|
254
|
+
return messageComparator(a, b) * -1;
|
|
255
|
+
}
|
|
256
|
+
export default createGroupChannelThreadFragment;
|
|
257
|
+
//# sourceMappingURL=createGroupChannelThreadFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","Box","useToast","useGroupChannelThreadMessages","getReadableFileSize","NOOP","PASS","confirmAndMarkAsRead","messageComparator","useFreshCallback","useRefTracker","GroupChannelMessageRenderer","StatusComposition","createGroupChannelThreadModule","useLocalization","usePlatformService","useSendbirdChat","pubsub","createGroupChannelThreadFragment","initModule","GroupChannelThreadModule","_ref","renderMessage","enableMessageGrouping","onPressHeaderLeft","onPressHeaderSubtitle","onPressMediaMessage","onParentMessageDeleted","onChannelDeleted","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","parentMessage","startingPoint","keyboardAvoidOffset","sortComparator","threadMessageComparator","flatListProps","playerService","recorderService","sdk","currentUser","sbOptions","voiceMessageStatusManager","groupChannelFragmentOptions","groupChannelThreadPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","toast","STRINGS","_parentMessage","setParentMessage","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onParentMessageUpdated","show","TOAST","THREAD_PARENT_MESSAGE_DELETED_ERROR","onCurrentUserBanned","markAsRead","isReactionEnabled","uikit","groupChannel","enableReactions","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","publishAll","_onPressHeaderSubtitle","createdAt","_onPressMediaMessage","message","uri","renderItem","props","content","createElement","_extends","hideParentMessage","memoizedFlatListProps","ListHeaderComponent","ParentMessageInfo","currentUserId","userId","onDeleteMessage","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onPending","onSent","updateIfParentMessage","messageId","parentMessageId","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","updatedMessage","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","threadedMessages","Header","onPressLeft","onPressSubtitle","LoadingComponent","StatusLoading","MessageList","onTopReached","onBottomReached","onResendFailedMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","a","b"],"sources":["createGroupChannelThreadFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelThreadMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n type SendbirdMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelThreadModule from '../domain/groupChannelThread/module/createGroupChannelThreadModule';\nimport type {\n GroupChannelThreadFragment,\n GroupChannelThreadModule,\n GroupChannelThreadProps,\n GroupChannelThreadPubSubContextPayload,\n} from '../domain/groupChannelThread/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelThreadFragment = (\n initModule?: Partial<GroupChannelThreadModule>,\n): GroupChannelThreadFragment => {\n const GroupChannelThreadModule = createGroupChannelThreadModule(initModule);\n\n return ({\n renderMessage,\n enableMessageGrouping = true,\n onPressHeaderLeft = NOOP,\n onPressHeaderSubtitle = NOOP,\n onPressMediaMessage = NOOP,\n onParentMessageDeleted = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n parentMessage,\n startingPoint,\n keyboardAvoidOffset,\n sortComparator = threadMessageComparator,\n flatListProps,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager, groupChannelFragmentOptions } = useSendbirdChat();\n\n const [groupChannelThreadPubSub] = useState(() => pubsub<GroupChannelThreadPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const [_parentMessage, setParentMessage] = useState(parentMessage);\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelThreadMessages(sdk, channel, _parentMessage, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelThreadPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelThreadPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onParentMessageUpdated(parentMessage) {\n setParentMessage(parentMessage);\n },\n onParentMessageDeleted: () => {\n toast.show(STRINGS.TOAST.THREAD_PARENT_MESSAGE_DELETED_ERROR, 'error');\n onParentMessageDeleted?.();\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n isReactionEnabled: sbOptions.uikit.groupChannel.channel.enableReactions,\n startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n voiceMessageStatusManager.publishAll();\n onPressHeaderLeft();\n });\n const _onPressHeaderSubtitle = useFreshCallback(async () => {\n await onBlurFragment();\n voiceMessageStatusManager.publishAll();\n groupChannelFragmentOptions.pubsub.publish({\n type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT',\n data: { startingPoint: parentMessage.createdAt },\n });\n onPressHeaderSubtitle();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelThreadProps['MessageList']['onPressMediaMessage']> =\n useFreshCallback(async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n });\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelThreadProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? (\n renderMessage(props)\n ) : (\n <GroupChannelMessageRenderer hideParentMessage {...props} />\n );\n return <Box>{content}</Box>;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListHeaderComponent: (\n <GroupChannelThreadModule.ParentMessageInfo\n channel={channel}\n currentUserId={currentUser?.userId}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n />\n ),\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelThreadPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelThreadPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const updateIfParentMessage = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n if (message.messageId === parentMessage.parentMessageId) {\n setParentMessage(message);\n }\n };\n\n const onPressSendUserMessage: GroupChannelThreadProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelThreadProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as File)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelThreadProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n const updatedMessage = await updateUserMessage(message.messageId, processedParams);\n updateIfParentMessage(updatedMessage);\n },\n );\n const onPressUpdateFileMessage: GroupChannelThreadProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n const updatedMessage = await updateFileMessage(message.messageId, processedParams);\n updateIfParentMessage(updatedMessage);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelThreadModule.Provider\n channel={channel}\n parentMessage={_parentMessage}\n groupChannelThreadPubSub={groupChannelThreadPubSub}\n keyboardAvoidOffset={keyboardAvoidOffset}\n threadedMessages={messages}\n >\n <GroupChannelThreadModule.Header onPressLeft={_onPressHeaderLeft} onPressSubtitle={_onPressHeaderSubtitle} />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelThreadModule.StatusLoading />}>\n <GroupChannelThreadModule.MessageList\n channel={channel}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n startingPoint={startingPoint}\n />\n <GroupChannelThreadModule.Input\n SuggestedMentionList={GroupChannelThreadModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelThreadModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport function threadMessageComparator(a: SendbirdMessage, b: SendbirdMessage) {\n return messageComparator(a, b) * -1;\n}\n\nexport default createGroupChannelThreadFragment;\n"],"mappings":"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"}
|
|
@@ -75,9 +75,12 @@ const useMentionSuggestion = params => {
|
|
|
75
75
|
limit: mentionManager.config.suggestionLimit + 1
|
|
76
76
|
}).next().then(members => members.filter(member => member.userId !== (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId))).then(members => members.slice(0, mentionManager.config.suggestionLimit));
|
|
77
77
|
} else {
|
|
78
|
-
return freshChannel.members
|
|
78
|
+
return freshChannel.members
|
|
79
|
+
// NOTE: When using 'org.webkit:android-jsc', there is a problem with sorting lists that include words starting with uppercase and lowercase letters.
|
|
80
|
+
// To ensure consistent sorting regardless of the JSC, we compare the words in lowercase.
|
|
81
|
+
.sort((a, b) => {
|
|
79
82
|
var _a$nickname;
|
|
80
|
-
return (_a$nickname = a.nickname) === null || _a$nickname === void 0 ? void 0 : _a$nickname.localeCompare(b.nickname);
|
|
83
|
+
return (_a$nickname = a.nickname) === null || _a$nickname === void 0 ? void 0 : _a$nickname.toLowerCase().localeCompare(b.nickname.toLowerCase());
|
|
81
84
|
}).filter(member => {
|
|
82
85
|
var _member$nickname;
|
|
83
86
|
return ((_member$nickname = member.nickname) === null || _member$nickname === void 0 ? void 0 : _member$nickname.toLowerCase().startsWith(searchString.toLowerCase())) && member.userId !== (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && member.isActive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","useState","useChannelHandler","isDifferentChannel","useAsyncEffect","useDebounceEffect","useUniqHandlerId","useSendbirdChat","useMentionSuggestion","params","text","selection","channel","mentionedUsers","freshChannel","setFreshChannel","refresh","url","id","sdk","onUserJoined","eventChannel","onUserLeft","onUserBanned","isGroupChannel","mentionManager","currentUser","members","setMembers","searchStringRangeRef","start","end","searchLimitedRef","updateSearchStringRange","selectionIndex","searchString","current","getSearchStringRangeInText","updateSearchLimited","mentionCount","mentionLimit","resetRefs","fetchMembers","selectionRanged","selectionContainsMentionedUser","some","it","rangeHelpers","overlaps","range","isTriggered","isValidSearchString","getSearchString","limited","length","config","isSuper","createMemberListQuery","nicknameStartsWithFilter","limit","suggestionLimit","next","then","filter","member","userId","slice","sort","a","b","_a$nickname","nickname","localeCompare","_member$nickname","
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","useState","useChannelHandler","isDifferentChannel","useAsyncEffect","useDebounceEffect","useUniqHandlerId","useSendbirdChat","useMentionSuggestion","params","text","selection","channel","mentionedUsers","freshChannel","setFreshChannel","refresh","url","id","sdk","onUserJoined","eventChannel","onUserLeft","onUserBanned","isGroupChannel","mentionManager","currentUser","members","setMembers","searchStringRangeRef","start","end","searchLimitedRef","updateSearchStringRange","selectionIndex","searchString","current","getSearchStringRangeInText","updateSearchLimited","mentionCount","mentionLimit","resetRefs","fetchMembers","selectionRanged","selectionContainsMentionedUser","some","it","rangeHelpers","overlaps","range","isTriggered","isValidSearchString","getSearchString","limited","length","config","isSuper","createMemberListQuery","nicknameStartsWithFilter","limit","suggestionLimit","next","then","filter","member","userId","slice","sort","a","b","_a$nickname","nickname","toLowerCase","localeCompare","_member$nickname","startsWith","isActive","catch","debounceMills","reset","searchStringRange","searchLimited"],"sources":["useMentionSuggestion.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useAsyncEffect, useDebounceEffect, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\nimport type { Range } from '../types';\n\nconst useMentionSuggestion = (params: {\n text: string;\n selection: Range;\n mentionedUsers: { user: SendbirdUser; range: Range }[];\n sdk: SendbirdChatSDK;\n channel: SendbirdGroupChannel;\n}) => {\n const { text, selection, channel, mentionedUsers } = params;\n\n const [freshChannel, setFreshChannel] = useState(channel);\n\n useAsyncEffect(async () => {\n setFreshChannel(await channel.refresh());\n }, [channel.url]);\n\n const id = useUniqHandlerId('useMentionSuggestion');\n\n useChannelHandler(params.sdk, id, {\n onUserJoined(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n setFreshChannel(eventChannel);\n },\n onUserLeft(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n setFreshChannel(eventChannel);\n },\n onUserBanned(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n if (!eventChannel.isGroupChannel()) return;\n setFreshChannel(eventChannel);\n },\n });\n\n const { mentionManager, currentUser } = useSendbirdChat();\n const [members, setMembers] = useState<SendbirdMember[]>([]);\n\n const searchStringRangeRef = useRef<Range>({ start: 0, end: 0 });\n const searchLimitedRef = useRef(false);\n\n const updateSearchStringRange = (selectionIndex: number, searchString: string) => {\n searchStringRangeRef.current = mentionManager.getSearchStringRangeInText(selectionIndex, searchString);\n return searchStringRangeRef.current;\n };\n const updateSearchLimited = (mentionCount: number, mentionLimit: number) => {\n searchLimitedRef.current = mentionCount >= mentionLimit;\n return searchLimitedRef.current;\n };\n const resetRefs = () => {\n searchLimitedRef.current = false;\n searchStringRangeRef.current = { start: 0, end: 0 };\n };\n\n const fetchMembers = async (): Promise<SendbirdMember[]> => {\n resetRefs();\n\n const selectionRanged = selection.start !== selection.end;\n if (selectionRanged) return [];\n\n const selectionContainsMentionedUser = mentionedUsers.some((it) =>\n mentionManager.rangeHelpers.overlaps(it.range, selection, 'underMore'),\n );\n if (selectionContainsMentionedUser) return [];\n\n const { isTriggered, isValidSearchString, searchString } = mentionManager.getSearchString(text, selection.start);\n if (!isTriggered() || !isValidSearchString()) return [];\n\n const limited = updateSearchLimited(mentionedUsers.length, mentionManager.config.mentionLimit);\n if (limited) return [];\n\n updateSearchStringRange(selection.start, searchString);\n\n if (freshChannel.isSuper) {\n return freshChannel\n .createMemberListQuery({\n nicknameStartsWithFilter: searchString,\n limit: mentionManager.config.suggestionLimit + 1,\n })\n .next()\n .then((members) => members.filter((member) => member.userId !== currentUser?.userId))\n .then((members) => members.slice(0, mentionManager.config.suggestionLimit));\n } else {\n return (\n freshChannel.members\n // NOTE: When using 'org.webkit:android-jsc', there is a problem with sorting lists that include words starting with uppercase and lowercase letters.\n // To ensure consistent sorting regardless of the JSC, we compare the words in lowercase.\n .sort((a, b) => a.nickname?.toLowerCase().localeCompare(b.nickname.toLowerCase()))\n .filter(\n (member) =>\n member.nickname?.toLowerCase().startsWith(searchString.toLowerCase()) &&\n member.userId !== currentUser?.userId &&\n member.isActive,\n )\n .slice(0, mentionManager.config.suggestionLimit)\n );\n }\n };\n\n useDebounceEffect(\n () => {\n return fetchMembers()\n .then(setMembers)\n .catch(() => setMembers([]));\n },\n mentionManager.config.debounceMills,\n [text, selection],\n );\n\n return {\n members,\n reset: useCallback(() => setMembers([]), []),\n searchStringRange: searchStringRangeRef.current,\n searchLimited: searchLimitedRef.current,\n };\n};\n\nexport default useMentionSuggestion;\n"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -34,6 +34,7 @@ export { default as createGroupChannelRegisterOperatorFragment } from './fragmen
|
|
|
34
34
|
export { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';
|
|
35
35
|
export { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';
|
|
36
36
|
export { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';
|
|
37
|
+
export { default as createGroupChannelThreadFragment } from './fragments/createGroupChannelThreadFragment';
|
|
37
38
|
export { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';
|
|
38
39
|
|
|
39
40
|
/** Fragments - open channels **/
|
|
@@ -94,6 +95,8 @@ export * from './domain/groupChannelNotifications';
|
|
|
94
95
|
export * from './domain/groupChannelNotifications/types';
|
|
95
96
|
export * from './domain/groupChannelUserList/types';
|
|
96
97
|
export * from './domain/messageSearch/types';
|
|
98
|
+
export * from './domain/groupChannelThread';
|
|
99
|
+
export * from './domain/groupChannelThread/types';
|
|
97
100
|
|
|
98
101
|
/** Feature - open channels **/
|
|
99
102
|
export * from './domain/openChannel';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","Logger","PromisePolyfill","default","ChannelInput","ChannelMessageList","GroupChannelMessageRenderer","OpenChannelMessageRenderer","ReactionAddons","ReactionBottomSheets","ChannelCover","ChatFlatList","FileViewer","MessageSearchResultItem","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","createGroupChannelModerationFragment","createGroupChannelOperatorsFragment","createGroupChannelRegisterOperatorFragment","createGroupChannelMutedMembersFragment","createGroupChannelBannedUsersFragment","createGroupChannelNotificationsFragment","createMessageSearchFragment","createOpenChannelFragment","createOpenChannelParticipantsFragment","createOpenChannelSettingsFragment","createOpenChannelListFragment","createOpenChannelCreateFragment","createOpenChannelModerationFragment","createOpenChannelBannedUsersFragment","createOpenChannelMutedParticipantsFragment","createOpenChannelOperatorsFragment","createOpenChannelRegisterOperatorFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","UserProfileContext","UserProfileProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","createBaseStringSet","StringSetEn","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createNativePlayerService","createNativeRecorderService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","createExpoPlayerService","createExpoRecorderService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","SBUUtils","setLogLevel","__DEV__","setTitle","OS","apply"],"sources":["index.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport { PromisePolyfill } from './utils/promise';\n\n/** Components **/\nexport { default as ChannelInput } from './components/ChannelInput';\nexport { default as ChannelMessageList } from './components/ChannelMessageList';\nexport { default as GroupChannelMessageRenderer } from './components/GroupChannelMessageRenderer';\nexport { default as OpenChannelMessageRenderer } from './components/OpenChannelMessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as MessageSearchResultItem } from './components/MessageSearchResultItem';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments - group channels **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\nexport { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';\n\n/** Fragments - open channels **/\nexport { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';\nexport { default as createOpenChannelParticipantsFragment } from './fragments/createOpenChannelParticipantsFragment';\nexport { default as createOpenChannelSettingsFragment } from './fragments/createOpenChannelSettingsFragment';\nexport { default as createOpenChannelListFragment } from './fragments/createOpenChannelListFragment';\nexport { default as createOpenChannelCreateFragment } from './fragments/createOpenChannelCreateFragment';\nexport { default as createOpenChannelModerationFragment } from './fragments/createOpenChannelModerationFragment';\nexport { default as createOpenChannelBannedUsersFragment } from './fragments/createOpenChannelBannedUsersFragment';\nexport { default as createOpenChannelMutedParticipantsFragment } from './fragments/createOpenChannelMutedParticipantsFragment';\nexport { default as createOpenChannelOperatorsFragment } from './fragments/createOpenChannelOperatorsFragment';\nexport { default as createOpenChannelRegisterOperatorFragment } from './fragments/createOpenChannelRegisterOperatorFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { createBaseStringSet } from './localization/createBaseStringSet';\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport * from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createNativePlayerService } from './platform/createPlayerService.native';\nexport { default as createNativeRecorderService } from './platform/createRecorderService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\nexport { default as createExpoPlayerService } from './platform/createPlayerService.expo';\nexport { default as createExpoRecorderService } from './platform/createRecorderService.expo';\nexport * from './platform/types';\n\n/** Feature - shared **/\nexport * from './domain/userList';\nexport * from './domain/userList/types';\n\n/** Feature - group channels **/\nexport * from './domain/groupChannel';\nexport * from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport * from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport * from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport * from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\n\nexport * from './domain/messageSearch/types';\n\n/** Feature - open channels **/\nexport * from './domain/openChannel';\nexport * from './domain/openChannel/types';\n\nexport * from './domain/openChannelSettings';\nexport * from './domain/openChannelSettings/types';\n\nexport * from './domain/openChannelList';\nexport * from './domain/openChannelList/types';\n\nexport * from './domain/openChannelCreate';\nexport * from './domain/openChannelCreate/types';\n\nexport * from './domain/openChannelModeration';\nexport * from './domain/openChannelModeration/types';\n\nexport * from './domain/openChannelBannedUsers';\nexport * from './domain/openChannelBannedUsers/types';\n\nexport * from './domain/openChannelMutedParticipants';\nexport * from './domain/openChannelMutedParticipants/types';\n\nexport * from './domain/openChannelOperators';\nexport * from './domain/openChannelOperators/types';\n\nexport * from './domain/openChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\nexport { default as SBUUtils } from './libs/SBUUtils';\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n\n// NOTE: In Hermes, not all implementations of Promise are included\nPromisePolyfill.apply();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Platform","Logger","PromisePolyfill","default","ChannelInput","ChannelMessageList","GroupChannelMessageRenderer","OpenChannelMessageRenderer","ReactionAddons","ReactionBottomSheets","ChannelCover","ChatFlatList","FileViewer","MessageSearchResultItem","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","createGroupChannelModerationFragment","createGroupChannelOperatorsFragment","createGroupChannelRegisterOperatorFragment","createGroupChannelMutedMembersFragment","createGroupChannelBannedUsersFragment","createGroupChannelNotificationsFragment","createGroupChannelThreadFragment","createMessageSearchFragment","createOpenChannelFragment","createOpenChannelParticipantsFragment","createOpenChannelSettingsFragment","createOpenChannelListFragment","createOpenChannelCreateFragment","createOpenChannelModerationFragment","createOpenChannelBannedUsersFragment","createOpenChannelMutedParticipantsFragment","createOpenChannelOperatorsFragment","createOpenChannelRegisterOperatorFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","UserProfileContext","UserProfileProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","createBaseStringSet","StringSetEn","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createNativePlayerService","createNativeRecorderService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","createExpoPlayerService","createExpoRecorderService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","SBUUtils","setLogLevel","__DEV__","setTitle","OS","apply"],"sources":["index.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport { PromisePolyfill } from './utils/promise';\n\n/** Components **/\nexport { default as ChannelInput } from './components/ChannelInput';\nexport { default as ChannelMessageList } from './components/ChannelMessageList';\nexport { default as GroupChannelMessageRenderer } from './components/GroupChannelMessageRenderer';\nexport { default as OpenChannelMessageRenderer } from './components/OpenChannelMessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as MessageSearchResultItem } from './components/MessageSearchResultItem';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments - group channels **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\nexport { default as createGroupChannelThreadFragment } from './fragments/createGroupChannelThreadFragment';\nexport { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';\n\n/** Fragments - open channels **/\nexport { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';\nexport { default as createOpenChannelParticipantsFragment } from './fragments/createOpenChannelParticipantsFragment';\nexport { default as createOpenChannelSettingsFragment } from './fragments/createOpenChannelSettingsFragment';\nexport { default as createOpenChannelListFragment } from './fragments/createOpenChannelListFragment';\nexport { default as createOpenChannelCreateFragment } from './fragments/createOpenChannelCreateFragment';\nexport { default as createOpenChannelModerationFragment } from './fragments/createOpenChannelModerationFragment';\nexport { default as createOpenChannelBannedUsersFragment } from './fragments/createOpenChannelBannedUsersFragment';\nexport { default as createOpenChannelMutedParticipantsFragment } from './fragments/createOpenChannelMutedParticipantsFragment';\nexport { default as createOpenChannelOperatorsFragment } from './fragments/createOpenChannelOperatorsFragment';\nexport { default as createOpenChannelRegisterOperatorFragment } from './fragments/createOpenChannelRegisterOperatorFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { createBaseStringSet } from './localization/createBaseStringSet';\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport * from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createNativePlayerService } from './platform/createPlayerService.native';\nexport { default as createNativeRecorderService } from './platform/createRecorderService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\nexport { default as createExpoPlayerService } from './platform/createPlayerService.expo';\nexport { default as createExpoRecorderService } from './platform/createRecorderService.expo';\nexport * from './platform/types';\n\n/** Feature - shared **/\nexport * from './domain/userList';\nexport * from './domain/userList/types';\n\n/** Feature - group channels **/\nexport * from './domain/groupChannel';\nexport * from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport * from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport * from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport * from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\n\nexport * from './domain/messageSearch/types';\n\nexport * from './domain/groupChannelThread';\nexport * from './domain/groupChannelThread/types';\n\n/** Feature - open channels **/\nexport * from './domain/openChannel';\nexport * from './domain/openChannel/types';\n\nexport * from './domain/openChannelSettings';\nexport * from './domain/openChannelSettings/types';\n\nexport * from './domain/openChannelList';\nexport * from './domain/openChannelList/types';\n\nexport * from './domain/openChannelCreate';\nexport * from './domain/openChannelCreate/types';\n\nexport * from './domain/openChannelModeration';\nexport * from './domain/openChannelModeration/types';\n\nexport * from './domain/openChannelBannedUsers';\nexport * from './domain/openChannelBannedUsers/types';\n\nexport * from './domain/openChannelMutedParticipants';\nexport * from './domain/openChannelMutedParticipants/types';\n\nexport * from './domain/openChannelOperators';\nexport * from './domain/openChannelOperators/types';\n\nexport * from './domain/openChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\nexport { default as SBUUtils } from './libs/SBUUtils';\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n\n// NOTE: In Hermes, not all implementations of Promise are included\nPromisePolyfill.apply();\n"],"mappings":"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"}
|