@sendbird/uikit-react-native 3.5.4 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -27
- 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 +12 -11
- 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/EmojiManager.js.map +1 -1
- package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
- package/lib/commonjs/libs/InternalLocalCacheStorage.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/platform/createMediaService.native.js.map +1 -1
- package/lib/commonjs/types.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 +13 -12
- 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/EmojiManager.js.map +1 -1
- package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
- package/lib/module/libs/InternalLocalCacheStorage.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/platform/createMediaService.native.js.map +1 -1
- package/lib/module/types.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 +8 -10
- 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/InternalLocalCacheStorage.d.ts +5 -4
- 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/types.d.ts +4 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +27 -22
- 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 +28 -17
- 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/EmojiManager.ts +2 -2
- package/src/libs/InternalLocalCacheStorage.ts +70 -21
- package/src/libs/VoiceMessageStatusManager.ts +56 -0
- package/src/localization/StringSet.type.ts +27 -0
- package/src/localization/createBaseStringSet.ts +33 -4
- package/src/platform/createMediaService.native.tsx +9 -1
- package/src/types.ts +6 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitChatHooks","_uikitUtils","_ProviderLayout","_interopRequireDefault","_constants","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelContexts","Fragment","createContext","headerTitle","channel","setMessageToEdit","NOOP","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","exports","GroupChannelContextsProvider","_ref","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","Error","handlerId","useUniqHandlerId","STRINGS","useLocalization","currentUser","sdk","useSendbirdChat","setTypingUsers","useState","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","useChannelHandler","onMessageDeleted","_","messageId","onChannelFrozen","frozenChannel","url","isGroupChannel","getGroupChannelChatAvailableState","frozen","onUserMuted","mutedChannel","user","_sdk$currentUser","userId","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","createElement","Provider","value","GROUP_CHANNEL","HEADER_TITLE","useCallback","params","useRef","useFreshCallback","logFlatListRefWarning","setTimeout","_flatListRef$current","scrollToOffset","offset","animated","timeout","_flatListRef$current2","scrollToIndex","index","viewPosition","options","foundMessageIndex","findIndex","it","isIncludedInList","focusAnimated","startingPoint","createdAt","MESSAGE_FOCUS_ANIMATION_DELAY","Logger","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY } from '../../../constants';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type { GroupChannelContextsType, GroupChannelModule, GroupChannelPubSubContextPayload } from '../types';\nimport { GroupChannelProps } from '../types';\n\nexport const GroupChannelContexts: GroupChannelContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n setMessageToEdit: NOOP,\n setMessageToReply: NOOP,\n }),\n TypingIndicator: createContext({\n typingUsers: [] as SendbirdUser[],\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelContextsProvider: GroupChannelModule['Provider'] = ({\n children,\n channel,\n enableTypingIndicator,\n keyboardAvoidOffset = 0,\n groupChannelPubSub,\n messages,\n onUpdateSearchItem,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');\n\n const handlerId = useUniqHandlerId('GroupChannelContextsProvider');\n const { STRINGS } = useLocalization();\n const { currentUser, sdk } = useSendbirdChat();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const [messageToReply, setMessageToReply] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n messages,\n onUpdateSearchItem,\n });\n\n const updateInputMode = (mode: 'send' | 'edit' | 'reply', message?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (mode === 'send' || !message) {\n setMessageToEdit(undefined);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'edit') {\n setMessageToEdit(message);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'reply') {\n setMessageToEdit(undefined);\n setMessageToReply(message);\n return;\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n onMessageDeleted(_, messageId) {\n if (messageToReply?.messageId === messageId) {\n setMessageToReply(undefined);\n }\n },\n onChannelFrozen(frozenChannel) {\n if (frozenChannel.url === channel.url) {\n if (frozenChannel.isGroupChannel() && getGroupChannelChatAvailableState(channel).frozen) {\n setMessageToReply(undefined);\n }\n }\n },\n onUserMuted(mutedChannel, user) {\n if (mutedChannel.url === channel.url && user.userId === sdk.currentUser?.userId) {\n setMessageToReply(undefined);\n }\n },\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n return (\n <ProviderLayout>\n <GroupChannelContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL.HEADER_TITLE(currentUser?.userId ?? '', channel),\n channel,\n keyboardAvoidOffset,\n messageToEdit,\n setMessageToEdit: useCallback((message) => updateInputMode('edit', message), []),\n messageToReply,\n setMessageToReply: useCallback((message) => updateInputMode('reply', message), []),\n }}\n >\n <GroupChannelContexts.PubSub.Provider value={groupChannelPubSub}>\n <GroupChannelContexts.TypingIndicator.Provider value={{ typingUsers }}>\n <GroupChannelContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n }}\n >\n {children}\n </GroupChannelContexts.MessageList.Provider>\n </GroupChannelContexts.TypingIndicator.Provider>\n </GroupChannelContexts.PubSub.Provider>\n </GroupChannelContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelProps['Provider'], 'messages' | 'onUpdateSearchItem'>) => {\n const { messages, onUpdateSearchItem } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({ offset: 0, animated: params?.animated ?? false });\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = messages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (options?.focusAnimated) {\n setTimeout(\n () => onUpdateSearchItem({ startingPoint: messages[foundMessageIndex].createdAt }),\n MESSAGE_FOCUS_ANIMATION_DELAY,\n );\n }\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitChatHooks","_uikitUtils","_ProviderLayout","_interopRequireDefault","_constants","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelContexts","Fragment","createContext","headerTitle","channel","setMessageToEdit","NOOP","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","exports","GroupChannelContextsProvider","_ref","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","onPressReplyMessageInThread","Error","handlerId","useUniqHandlerId","STRINGS","useLocalization","currentUser","sdk","sbOptions","useSendbirdChat","setTypingUsers","useState","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","onPressMessageToReply","parentMessage","uikit","groupChannel","replyType","Number","MAX_SAFE_INTEGER","useChannelHandler","onMessageDeleted","_","messageId","onChannelFrozen","frozenChannel","url","isGroupChannel","getGroupChannelChatAvailableState","frozen","onUserMuted","mutedChannel","user","_sdk$currentUser","userId","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","createElement","Provider","value","GROUP_CHANNEL","HEADER_TITLE","useCallback","params","useRef","useFreshCallback","logFlatListRefWarning","setTimeout","_flatListRef$current","scrollToOffset","offset","animated","timeout","_flatListRef$current2","scrollToIndex","index","viewPosition","options","foundMessageIndex","findIndex","it","isIncludedInList","focusAnimated","startingPoint","createdAt","MESSAGE_FOCUS_ANIMATION_DELAY","Logger","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY } from '../../../constants';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type { GroupChannelContextsType, GroupChannelModule, GroupChannelPubSubContextPayload } from '../types';\nimport { GroupChannelProps } from '../types';\n\nexport const GroupChannelContexts: GroupChannelContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n setMessageToEdit: NOOP,\n setMessageToReply: NOOP,\n }),\n TypingIndicator: createContext({\n typingUsers: [] as SendbirdUser[],\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelContextsProvider: GroupChannelModule['Provider'] = ({\n children,\n channel,\n enableTypingIndicator,\n keyboardAvoidOffset = 0,\n groupChannelPubSub,\n messages,\n onUpdateSearchItem,\n onPressReplyMessageInThread,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');\n\n const handlerId = useUniqHandlerId('GroupChannelContextsProvider');\n const { STRINGS } = useLocalization();\n const { currentUser, sdk, sbOptions } = useSendbirdChat();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const [messageToReply, setMessageToReply] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n messages,\n onUpdateSearchItem,\n });\n\n const updateInputMode = (mode: 'send' | 'edit' | 'reply', message?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (mode === 'send' || !message) {\n setMessageToEdit(undefined);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'edit') {\n setMessageToEdit(message);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'reply') {\n setMessageToEdit(undefined);\n setMessageToReply(message);\n return;\n }\n };\n\n const onPressMessageToReply = (parentMessage?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && parentMessage) {\n onPressReplyMessageInThread?.(parentMessage, Number.MAX_SAFE_INTEGER);\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n updateInputMode('reply', parentMessage);\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n onMessageDeleted(_, messageId) {\n if (messageToReply?.messageId === messageId) {\n setMessageToReply(undefined);\n }\n },\n onChannelFrozen(frozenChannel) {\n if (frozenChannel.url === channel.url) {\n if (frozenChannel.isGroupChannel() && getGroupChannelChatAvailableState(channel).frozen) {\n setMessageToReply(undefined);\n }\n }\n },\n onUserMuted(mutedChannel, user) {\n if (mutedChannel.url === channel.url && user.userId === sdk.currentUser?.userId) {\n setMessageToReply(undefined);\n }\n },\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n return (\n <ProviderLayout>\n <GroupChannelContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL.HEADER_TITLE(currentUser?.userId ?? '', channel),\n channel,\n keyboardAvoidOffset,\n messageToEdit,\n setMessageToEdit: useCallback((message) => updateInputMode('edit', message), []),\n messageToReply,\n setMessageToReply: useCallback((message) => onPressMessageToReply(message), []),\n }}\n >\n <GroupChannelContexts.PubSub.Provider value={groupChannelPubSub}>\n <GroupChannelContexts.TypingIndicator.Provider value={{ typingUsers }}>\n <GroupChannelContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n onPressReplyMessageInThread,\n }}\n >\n {children}\n </GroupChannelContexts.MessageList.Provider>\n </GroupChannelContexts.TypingIndicator.Provider>\n </GroupChannelContexts.PubSub.Provider>\n </GroupChannelContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelProps['Provider'], 'messages' | 'onUpdateSearchItem'>) => {\n const { messages, onUpdateSearchItem } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({ offset: 0, animated: params?.animated ?? false });\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = messages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (options?.focusAnimated) {\n setTimeout(\n () => onUpdateSearchItem({ startingPoint: messages[foundMessageIndex].createdAt }),\n MESSAGE_FOCUS_ANIMATION_DELAY,\n );\n }\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAGA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAeA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAA6E,SAAAI,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAZ,wBAAAQ,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAKtE,MAAMW,oBAA8C,GAAG;EAC5DC,QAAQ,eAAE,IAAAC,oBAAa,EAAC;IACtBC,WAAW,EAAE,EAAE;IACfC,OAAO,EAAE,CAAC,CAAyB;IACnCC,gBAAgB,EAAEC,gBAAI;IACtBC,iBAAiB,EAAED;EACrB,CAAC,CAAC;EACFE,eAAe,eAAE,IAAAN,oBAAa,EAAC;IAC7BO,WAAW,EAAE;EACf,CAAC,CAAC;EACFC,MAAM,eAAE,IAAAR,oBAAa,EAAC;IACpBS,OAAO,EAAEL,gBAAI;IACbM,SAAS,EAAEA,CAAA,KAAMN;EACnB,CAAC,CAA6C;EAC9CO,WAAW,eAAE,IAAAX,oBAAa,EAAC;IACzBY,WAAW,EAAE;MAAEC,OAAO,EAAE;IAAK,CAAC;IAC9BC,eAAe,EAAEA,CAAA,KAAM,KAAK;IAC5BC,kBAAkB,EAAEA,CAAA,KAAM;MACxB;IAAA,CACD;IACDC,iBAAiB,EAAEA,CAAA,KAAM;MACvB;IAAA;EAEJ,CAAC;AACH,CAAC;AAACC,OAAA,CAAAnB,oBAAA,GAAAA,oBAAA;AAEK,MAAMoB,4BAA4D,GAAGC,IAAA,IAStE;EAAA,IATuE;IAC3EC,QAAQ;IACRlB,OAAO;IACPmB,qBAAqB;IACrBC,mBAAmB,GAAG,CAAC;IACvBC,kBAAkB;IAClBC,QAAQ;IACRC,kBAAkB;IAClBC;EACF,CAAC,GAAAP,IAAA;EACC,IAAI,CAACjB,OAAO,EAAE,MAAM,IAAIyB,KAAK,CAAC,oDAAoD,CAAC;EAEnF,MAAMC,SAAS,GAAG,IAAAC,4BAAgB,EAAC,8BAA8B,CAAC;EAClE,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAM;IAAEC,WAAW;IAAEC,GAAG;IAAEC;EAAU,CAAC,GAAG,IAAAC,2BAAe,GAAE;EAEzD,MAAM,CAAC5B,WAAW,EAAE6B,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAiB,EAAE,CAAC;EAClE,MAAM,CAACC,aAAa,EAAEnC,gBAAgB,CAAC,GAAG,IAAAkC,eAAQ,GAA6C;EAC/F,MAAM,CAACE,cAAc,EAAElC,iBAAiB,CAAC,GAAG,IAAAgC,eAAQ,GAA6C;EAEjG,MAAM;IAAEzB,WAAW;IAAEI,iBAAiB;IAAED,kBAAkB;IAAED;EAAgB,CAAC,GAAG0B,gBAAgB,CAAC;IAC/FhB,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,MAAMgB,eAAe,GAAGA,CAACC,IAA+B,EAAEC,OAAmD,KAAK;IAChH,IAAID,IAAI,KAAK,MAAM,IAAI,CAACC,OAAO,EAAE;MAC/BxC,gBAAgB,CAACyC,SAAS,CAAC;MAC3BvC,iBAAiB,CAACuC,SAAS,CAAC;MAC5B;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,MAAM,EAAE;MAC1BvC,gBAAgB,CAACwC,OAAO,CAAC;MACzBtC,iBAAiB,CAACuC,SAAS,CAAC;MAC5B;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,OAAO,EAAE;MAC3BvC,gBAAgB,CAACyC,SAAS,CAAC;MAC3BvC,iBAAiB,CAACsC,OAAO,CAAC;MAC1B;IACF;EACF,CAAC;EAED,MAAME,qBAAqB,GAAIC,aAAyD,IAAK;IAC3F,IAAIZ,SAAS,CAACa,KAAK,CAACC,YAAY,CAAC9C,OAAO,CAAC+C,SAAS,KAAK,QAAQ,IAAIH,aAAa,EAAE;MAChFpB,2BAA2B,aAA3BA,2BAA2B,uBAA3BA,2BAA2B,CAAGoB,aAAa,EAAEI,MAAM,CAACC,gBAAgB,CAAC;IACvE,CAAC,MAAM,IAAIjB,SAAS,CAACa,KAAK,CAACC,YAAY,CAAC9C,OAAO,CAAC+C,SAAS,KAAK,aAAa,EAAE;MAC3ER,eAAe,CAAC,OAAO,EAAEK,aAAa,CAAC;IACzC;EACF,CAAC;EAED,IAAAM,iCAAiB,EAACnB,GAAG,EAAEL,SAAS,EAAE;IAChCyB,gBAAgBA,CAACC,CAAC,EAAEC,SAAS,EAAE;MAC7B,IAAI,CAAAhB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgB,SAAS,MAAKA,SAAS,EAAE;QAC3ClD,iBAAiB,CAACuC,SAAS,CAAC;MAC9B;IACF,CAAC;IACDY,eAAeA,CAACC,aAAa,EAAE;MAC7B,IAAIA,aAAa,CAACC,GAAG,KAAKxD,OAAO,CAACwD,GAAG,EAAE;QACrC,IAAID,aAAa,CAACE,cAAc,EAAE,IAAI,IAAAC,6CAAiC,EAAC1D,OAAO,CAAC,CAAC2D,MAAM,EAAE;UACvFxD,iBAAiB,CAACuC,SAAS,CAAC;QAC9B;MACF;IACF,CAAC;IACDkB,WAAWA,CAACC,YAAY,EAAEC,IAAI,EAAE;MAAA,IAAAC,gBAAA;MAC9B,IAAIF,YAAY,CAACL,GAAG,KAAKxD,OAAO,CAACwD,GAAG,IAAIM,IAAI,CAACE,MAAM,OAAAD,gBAAA,GAAKhC,GAAG,CAACD,WAAW,cAAAiC,gBAAA,uBAAfA,gBAAA,CAAiBC,MAAM,GAAE;QAC/E7D,iBAAiB,CAACuC,SAAS,CAAC;MAC9B;IACF,CAAC;IACDuB,qBAAqBA,CAACC,YAAY,EAAE;MAClC,IAAI,IAAAC,8BAAkB,EAACnE,OAAO,EAAEkE,YAAY,CAAC,EAAE;MAC/C,IAAI,CAAC/C,qBAAqB,EAAE;MAC5Be,cAAc,CAACgC,YAAY,CAACE,cAAc,EAAE,CAAC;IAC/C;EACF,CAAC,CAAC;EAEF,oBACEvG,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACnG,eAAA,CAAAM,OAAc,qBACbX,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACzE,oBAAoB,CAACC,QAAQ,CAACyE,QAAQ;IACrCC,KAAK,EAAE;MACLxE,WAAW,EAAE6B,OAAO,CAAC4C,aAAa,CAACC,YAAY,CAAC,CAAA3C,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEkC,MAAM,KAAI,EAAE,EAAEhE,OAAO,CAAC;MACnFA,OAAO;MACPoB,mBAAmB;MACnBgB,aAAa;MACbnC,gBAAgB,EAAE,IAAAyE,kBAAW,EAAEjC,OAAO,IAAKF,eAAe,CAAC,MAAM,EAAEE,OAAO,CAAC,EAAE,EAAE,CAAC;MAChFJ,cAAc;MACdlC,iBAAiB,EAAE,IAAAuE,kBAAW,EAAEjC,OAAO,IAAKE,qBAAqB,CAACF,OAAO,CAAC,EAAE,EAAE;IAChF;EAAE,gBAEF5E,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACzE,oBAAoB,CAACU,MAAM,CAACgE,QAAQ;IAACC,KAAK,EAAElD;EAAmB,gBAC9DxD,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACzE,oBAAoB,CAACQ,eAAe,CAACkE,QAAQ;IAACC,KAAK,EAAE;MAAElE;IAAY;EAAE,gBACpExC,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACzE,oBAAoB,CAACa,WAAW,CAAC6D,QAAQ;IACxCC,KAAK,EAAE;MACL7D,WAAW;MACXE,eAAe;MACfE,iBAAiB;MACjBD,kBAAkB;MAClBW;IACF;EAAE,GAEDN,QAAQ,CACiC,CACE,CACX,CACA,CAC1B;AAErB,CAAC;AAACH,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAGF,MAAMsB,gBAAgB,GAAIqC,MAA8E,IAAK;EAC3G,MAAM;IAAErD,QAAQ;IAAEC;EAAmB,CAAC,GAAGoD,MAAM;EAC/C,MAAMjE,WAAW,GAAG,IAAAkE,aAAM,EAA4B,IAAI,CAAC;;EAE3D;EACA,MAAM/D,kBAAkB,GAAG,IAAAgE,4BAAgB,EAAgDF,MAAM,IAAK;IACpG,IAAI,CAACjE,WAAW,CAACC,OAAO,EAAE;MACxBmE,qBAAqB,EAAE;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAC,oBAAA;MACf,CAAAA,oBAAA,GAAAtE,WAAW,CAACC,OAAO,cAAAqE,oBAAA,uBAAnBA,oBAAA,CAAqBC,cAAc,CAAC;QAAEC,MAAM,EAAE,CAAC;QAAEC,QAAQ,EAAE,CAAAR,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEQ,QAAQ,KAAI;MAAM,CAAC,CAAC;IACzF,CAAC,EAAE,CAAAR,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAES,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;;EAEF;EACA,MAAMtE,iBAAiB,GAAG,IAAA+D,4BAAgB,EAAgDF,MAAM,IAAK;IACnG,IAAI,CAACjE,WAAW,CAACC,OAAO,EAAE;MACxBmE,qBAAqB,EAAE;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAM,qBAAA;MACf,CAAAA,qBAAA,GAAA3E,WAAW,CAACC,OAAO,cAAA0E,qBAAA,uBAAnBA,qBAAA,CAAqBC,aAAa,CAAC;QACjCC,KAAK,EAAE,CAAAZ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEY,KAAK,KAAI,CAAC;QACzBJ,QAAQ,EAAE,CAAAR,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEQ,QAAQ,KAAI,KAAK;QACnCK,YAAY,EAAE,CAAAb,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEa,YAAY,KAAI;MACxC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAAb,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAES,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;EAEF,MAAMxE,eAAe,GAAG,IAAAiE,4BAAgB,EAA6C,CAACxB,SAAS,EAAEoC,OAAO,KAAK;IAC3G,IAAI,CAAC/E,WAAW,CAACC,OAAO,EAAE;MACxBmE,qBAAqB,EAAE;MACvB,OAAO,KAAK;IACd;IAEA,MAAMY,iBAAiB,GAAGpE,QAAQ,CAACqE,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACvC,SAAS,KAAKA,SAAS,CAAC;IAChF,MAAMwC,gBAAgB,GAAGH,iBAAiB,GAAG,CAAC,CAAC;IAE/C,IAAIG,gBAAgB,EAAE;MACpB,IAAIJ,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,aAAa,EAAE;QAC1Bf,UAAU,CACR,MAAMxD,kBAAkB,CAAC;UAAEwE,aAAa,EAAEzE,QAAQ,CAACoE,iBAAiB,CAAC,CAACM;QAAU,CAAC,CAAC,EAClFC,wCAA6B,CAC9B;MACH;MACAnF,iBAAiB,CAAC;QAChByE,KAAK,EAAEG,iBAAiB;QACxBP,QAAQ,EAAE,IAAI;QACdC,OAAO,EAAE,CAAC;QACVI,YAAY,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED;MACzB,CAAC,CAAC;MACF,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF,CAAC,CAAC;EAEF,OAAO;IACL9E,WAAW;IACXI,iBAAiB;IACjBD,kBAAkB;IAClBD;EACF,CAAC;AACH,CAAC;AAED,MAAMkE,qBAAqB,GAAGA,CAAA,KAAM;EAClCoB,kBAAM,CAACC,IAAI,CACT,kFAAkF,GAChF,uDAAuD,CAC1D;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport type MessageListQueryParamsType = Omit<MessageCollectionParams, 'filter'> & MessageFilterParams;\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n /**\n * @description You can specify the query parameters for the message list.\n * @example\n * ```\n * <GroupChannelFragment messageListQueryParams={{ prevResultLimit: 20, customTypesFilter: ['filter'] }} />\n * ```\n * */\n messageListQueryParams?: MessageListQueryParamsType;\n /** @deprecated Please use `messageListQueryParams` instead */\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdSendableMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport type MessageListQueryParamsType = Omit<MessageCollectionParams, 'filter'> & MessageFilterParams;\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n onPressReplyMessageInThread?: GroupChannelProps['Provider']['onPressReplyMessageInThread'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n /**\n * @description You can specify the query parameters for the message list.\n * @example\n * ```\n * <GroupChannelFragment messageListQueryParams={{ prevResultLimit: 20, customTypesFilter: ['filter'] }} />\n * ```\n * */\n messageListQueryParams?: MessageListQueryParamsType;\n /** @deprecated Please use `messageListQueryParams` instead */\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n onPressReplyMessageInThread: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n\n onPressReplyMessageInThread?: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
|
|
10
|
+
var _useContext = require("../../../hooks/useContext");
|
|
11
|
+
var _moduleContext = require("../module/moduleContext");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
const GroupChannelThreadHeader = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
onPressLeft,
|
|
17
|
+
onPressSubtitle
|
|
18
|
+
} = _ref;
|
|
19
|
+
const {
|
|
20
|
+
headerTitle,
|
|
21
|
+
channel
|
|
22
|
+
} = (0, _react.useContext)(_moduleContext.GroupChannelThreadContexts.Fragment);
|
|
23
|
+
const {
|
|
24
|
+
HeaderComponent
|
|
25
|
+
} = (0, _uikitReactNativeFoundation.useHeaderStyle)();
|
|
26
|
+
const {
|
|
27
|
+
STRINGS
|
|
28
|
+
} = (0, _useContext.useLocalization)();
|
|
29
|
+
const {
|
|
30
|
+
select,
|
|
31
|
+
colors,
|
|
32
|
+
palette
|
|
33
|
+
} = (0, _uikitReactNativeFoundation.useUIKitTheme)();
|
|
34
|
+
const {
|
|
35
|
+
currentUser
|
|
36
|
+
} = (0, _useContext.useSendbirdChat)();
|
|
37
|
+
const renderSubtitle = () => {
|
|
38
|
+
if (!currentUser) return null;
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
40
|
+
onPress: onPressSubtitle,
|
|
41
|
+
caption2: true,
|
|
42
|
+
style: styles.subtitle,
|
|
43
|
+
color: select({
|
|
44
|
+
light: palette.primary300,
|
|
45
|
+
dark: palette.primary200
|
|
46
|
+
}),
|
|
47
|
+
numberOfLines: 1
|
|
48
|
+
}, STRINGS.GROUP_CHANNEL_THREAD.HEADER_SUBTITLE(currentUser.userId, channel));
|
|
49
|
+
};
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(HeaderComponent, {
|
|
51
|
+
clearTitleMargin: true,
|
|
52
|
+
title: /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
53
|
+
style: styles.titleContainer
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
55
|
+
style: {
|
|
56
|
+
flexShrink: 1
|
|
57
|
+
}
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
59
|
+
h2: true,
|
|
60
|
+
color: colors.onBackground01,
|
|
61
|
+
numberOfLines: 1
|
|
62
|
+
}, headerTitle), renderSubtitle())),
|
|
63
|
+
left: /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
|
|
64
|
+
icon: 'arrow-left',
|
|
65
|
+
size: 24
|
|
66
|
+
}),
|
|
67
|
+
onPressLeft: onPressLeft
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
|
|
71
|
+
titleContainer: {
|
|
72
|
+
maxWidth: '100%',
|
|
73
|
+
flexDirection: 'row',
|
|
74
|
+
width: '100%'
|
|
75
|
+
},
|
|
76
|
+
subtitle: {
|
|
77
|
+
marginTop: 2
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
var _default = GroupChannelThreadHeader;
|
|
81
|
+
exports.default = _default;
|
|
82
|
+
//# sourceMappingURL=GroupChannelThreadHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_useContext","_moduleContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelThreadHeader","_ref","onPressLeft","onPressSubtitle","headerTitle","channel","useContext","GroupChannelThreadContexts","Fragment","HeaderComponent","useHeaderStyle","STRINGS","useLocalization","select","colors","palette","useUIKitTheme","currentUser","useSendbirdChat","renderSubtitle","createElement","Text","onPress","caption2","style","styles","subtitle","color","light","primary300","dark","primary200","numberOfLines","GROUP_CHANNEL_THREAD","HEADER_SUBTITLE","userId","clearTitleMargin","title","View","titleContainer","flexShrink","h2","onBackground01","left","Icon","icon","size","createStyleSheet","maxWidth","flexDirection","width","marginTop","_default","exports"],"sources":["GroupChannelThreadHeader.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useHeaderStyle, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\n\nconst GroupChannelThreadHeader = ({ onPressLeft, onPressSubtitle }: GroupChannelThreadProps['Header']) => {\n const { headerTitle, channel } = useContext(GroupChannelThreadContexts.Fragment);\n const { HeaderComponent } = useHeaderStyle();\n const { STRINGS } = useLocalization();\n const { select, colors, palette } = useUIKitTheme();\n const { currentUser } = useSendbirdChat();\n\n const renderSubtitle = () => {\n if (!currentUser) return null;\n\n return (\n <Text\n onPress={onPressSubtitle}\n caption2\n style={styles.subtitle}\n color={select({ light: palette.primary300, dark: palette.primary200 })}\n numberOfLines={1}\n >\n {STRINGS.GROUP_CHANNEL_THREAD.HEADER_SUBTITLE(currentUser.userId, channel)}\n </Text>\n );\n };\n\n return (\n <HeaderComponent\n clearTitleMargin\n title={\n <View style={styles.titleContainer}>\n <View style={{ flexShrink: 1 }}>\n <Text h2 color={colors.onBackground01} numberOfLines={1}>\n {headerTitle}\n </Text>\n {renderSubtitle()}\n </View>\n </View>\n }\n left={<Icon icon={'arrow-left'} size={24} />}\n onPressLeft={onPressLeft}\n />\n );\n};\n\nconst styles = createStyleSheet({\n titleContainer: {\n maxWidth: '100%',\n flexDirection: 'row',\n width: '100%',\n },\n subtitle: {\n marginTop: 2,\n },\n});\n\nexport default GroupChannelThreadHeader;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
9
|
+
var _ChannelInput = _interopRequireDefault(require("../../../components/ChannelInput"));
|
|
10
|
+
var _moduleContext = require("../module/moduleContext");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
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); }
|
|
15
|
+
const GroupChannelThreadInput = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
inputDisabled,
|
|
18
|
+
...props
|
|
19
|
+
} = _ref;
|
|
20
|
+
const {
|
|
21
|
+
channel,
|
|
22
|
+
keyboardAvoidOffset = 0,
|
|
23
|
+
messageToEdit,
|
|
24
|
+
setMessageToEdit,
|
|
25
|
+
parentMessage
|
|
26
|
+
} = (0, _react.useContext)(_moduleContext.GroupChannelThreadContexts.Fragment);
|
|
27
|
+
const chatAvailableState = (0, _uikitUtils.getGroupChannelChatAvailableState)(channel);
|
|
28
|
+
return /*#__PURE__*/_react.default.createElement(_ChannelInput.default, _extends({
|
|
29
|
+
channel: channel,
|
|
30
|
+
messageToEdit: messageToEdit,
|
|
31
|
+
setMessageToEdit: setMessageToEdit,
|
|
32
|
+
messageForThread: parentMessage,
|
|
33
|
+
keyboardAvoidOffset: keyboardAvoidOffset,
|
|
34
|
+
inputMuted: chatAvailableState.muted,
|
|
35
|
+
inputFrozen: chatAvailableState.frozen,
|
|
36
|
+
inputDisabled: inputDisabled ?? chatAvailableState.disabled,
|
|
37
|
+
MessageToReplyPreview: () => {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}, props));
|
|
41
|
+
};
|
|
42
|
+
var _default = /*#__PURE__*/_react.default.memo(GroupChannelThreadInput);
|
|
43
|
+
exports.default = _default;
|
|
44
|
+
//# sourceMappingURL=GroupChannelThreadInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitUtils","_ChannelInput","_interopRequireDefault","_moduleContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","GroupChannelThreadInput","_ref","inputDisabled","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","parentMessage","useContext","GroupChannelThreadContexts","Fragment","chatAvailableState","getGroupChannelChatAvailableState","createElement","messageForThread","inputMuted","muted","inputFrozen","frozen","disabled","MessageToReplyPreview","_default","React","memo","exports"],"sources":["GroupChannelThreadInput.tsx"],"sourcesContent":["import React, { useContext } from 'react';\n\nimport { getGroupChannelChatAvailableState } from '@sendbird/uikit-utils';\n\nimport ChannelInput from '../../../components/ChannelInput';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\n\nconst GroupChannelThreadInput = ({ inputDisabled, ...props }: GroupChannelThreadProps['Input']) => {\n const {\n channel,\n keyboardAvoidOffset = 0,\n messageToEdit,\n setMessageToEdit,\n parentMessage,\n } = useContext(GroupChannelThreadContexts.Fragment);\n\n const chatAvailableState = getGroupChannelChatAvailableState(channel);\n\n return (\n <ChannelInput\n channel={channel}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n messageForThread={parentMessage}\n keyboardAvoidOffset={keyboardAvoidOffset}\n inputMuted={chatAvailableState.muted}\n inputFrozen={chatAvailableState.frozen}\n inputDisabled={inputDisabled ?? chatAvailableState.disabled}\n MessageToReplyPreview={() => {\n return null;\n }}\n {...props}\n />\n );\n};\n\nexport default React.memo(GroupChannelThreadInput);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
|
|
9
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
10
|
+
var _ChannelThreadMessageList = _interopRequireDefault(require("../../../components/ChannelThreadMessageList"));
|
|
11
|
+
var _useContext = require("../../../hooks/useContext");
|
|
12
|
+
var _moduleContext = require("../module/moduleContext");
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
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); }
|
|
17
|
+
const GroupChannelThreadMessageList = props => {
|
|
18
|
+
const {
|
|
19
|
+
sdk
|
|
20
|
+
} = (0, _useContext.useSendbirdChat)();
|
|
21
|
+
const {
|
|
22
|
+
setMessageToEdit
|
|
23
|
+
} = (0, _react.useContext)(_moduleContext.GroupChannelThreadContexts.Fragment);
|
|
24
|
+
const {
|
|
25
|
+
subscribe
|
|
26
|
+
} = (0, _react.useContext)(_moduleContext.GroupChannelThreadContexts.PubSub);
|
|
27
|
+
const {
|
|
28
|
+
flatListRef,
|
|
29
|
+
lazyScrollToBottom,
|
|
30
|
+
lazyScrollToIndex
|
|
31
|
+
} = (0, _react.useContext)(_moduleContext.GroupChannelThreadContexts.MessageList);
|
|
32
|
+
const id = (0, _uikitUtils.useUniqHandlerId)('GroupChannelThreadMessageList');
|
|
33
|
+
const ignorePropReached = (0, _react.useRef)(false);
|
|
34
|
+
const _onTopReached = () => {
|
|
35
|
+
if (!ignorePropReached.current) {
|
|
36
|
+
props.onTopReached();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const _onBottomReached = () => {
|
|
40
|
+
if (!ignorePropReached.current) {
|
|
41
|
+
props.onBottomReached();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const scrollToBottom = (0, _uikitUtils.useFreshCallback)(async function () {
|
|
45
|
+
let animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
46
|
+
if (props.hasNext()) {
|
|
47
|
+
props.onScrolledAwayFromBottom(false);
|
|
48
|
+
await props.onResetMessageList();
|
|
49
|
+
props.onScrolledAwayFromBottom(false);
|
|
50
|
+
lazyScrollToBottom({
|
|
51
|
+
animated
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
lazyScrollToBottom({
|
|
55
|
+
animated
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
(0, _react.useLayoutEffect)(() => {
|
|
60
|
+
if (props.startingPoint) {
|
|
61
|
+
const foundMessageIndex = props.messages.findIndex(it => it.createdAt === props.startingPoint);
|
|
62
|
+
const isIncludedInList = foundMessageIndex > -1;
|
|
63
|
+
if (isIncludedInList) {
|
|
64
|
+
ignorePropReached.current = true;
|
|
65
|
+
const timeout = 300;
|
|
66
|
+
lazyScrollToIndex({
|
|
67
|
+
index: foundMessageIndex,
|
|
68
|
+
animated: true,
|
|
69
|
+
timeout: timeout
|
|
70
|
+
});
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
ignorePropReached.current = false;
|
|
73
|
+
}, timeout + 50);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, [props.startingPoint]);
|
|
77
|
+
(0, _uikitChatHooks.useChannelHandler)(sdk, id, {
|
|
78
|
+
onReactionUpdated(channel, event) {
|
|
79
|
+
if ((0, _uikitUtils.isDifferentChannel)(channel, props.channel)) return;
|
|
80
|
+
const recentMessage = props.messages[0];
|
|
81
|
+
const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;
|
|
82
|
+
const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();
|
|
83
|
+
if (isRecentMessage && scrollReachedBottomAndCanScroll) {
|
|
84
|
+
lazyScrollToBottom({
|
|
85
|
+
animated: true,
|
|
86
|
+
timeout: 250
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, _react.useEffect)(() => {
|
|
92
|
+
return subscribe(_ref => {
|
|
93
|
+
let {
|
|
94
|
+
type
|
|
95
|
+
} = _ref;
|
|
96
|
+
switch (type) {
|
|
97
|
+
case 'TYPING_BUBBLE_RENDERED':
|
|
98
|
+
case 'MESSAGES_RECEIVED':
|
|
99
|
+
{
|
|
100
|
+
if (!props.scrolledAwayFromBottom) {
|
|
101
|
+
scrollToBottom(true);
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case 'MESSAGE_SENT_SUCCESS':
|
|
106
|
+
case 'MESSAGE_SENT_PENDING':
|
|
107
|
+
{
|
|
108
|
+
scrollToBottom(false);
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}, [props.scrolledAwayFromBottom]);
|
|
114
|
+
return /*#__PURE__*/_react.default.createElement(_ChannelThreadMessageList.default, _extends({}, props, {
|
|
115
|
+
ref: flatListRef,
|
|
116
|
+
onTopReached: _onTopReached,
|
|
117
|
+
onBottomReached: _onBottomReached,
|
|
118
|
+
onEditMessage: setMessageToEdit,
|
|
119
|
+
onPressNewMessagesButton: scrollToBottom,
|
|
120
|
+
onPressScrollToBottomButton: scrollToBottom,
|
|
121
|
+
renderNewMessagesButton: null,
|
|
122
|
+
renderScrollToBottomButton: null
|
|
123
|
+
}));
|
|
124
|
+
};
|
|
125
|
+
var _default = /*#__PURE__*/_react.default.memo(GroupChannelThreadMessageList);
|
|
126
|
+
exports.default = _default;
|
|
127
|
+
//# sourceMappingURL=GroupChannelThreadMessageList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitChatHooks","_uikitUtils","_ChannelThreadMessageList","_interopRequireDefault","_useContext","_moduleContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","GroupChannelThreadMessageList","props","sdk","useSendbirdChat","setMessageToEdit","useContext","GroupChannelThreadContexts","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","MessageList","id","useUniqHandlerId","ignorePropReached","useRef","_onTopReached","current","onTopReached","_onBottomReached","onBottomReached","scrollToBottom","useFreshCallback","animated","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","useLayoutEffect","startingPoint","foundMessageIndex","messages","findIndex","it","createdAt","isIncludedInList","timeout","index","setTimeout","useChannelHandler","onReactionUpdated","channel","event","isDifferentChannel","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","useEffect","_ref","type","createElement","ref","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","renderNewMessagesButton","renderScrollToBottomButton","_default","React","memo","exports"],"sources":["GroupChannelThreadMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelThreadMessageList from '../../../components/ChannelThreadMessageList';\nimport { useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\n\nconst GroupChannelThreadMessageList = (props: GroupChannelThreadProps['MessageList']) => {\n const { sdk } = useSendbirdChat();\n const { setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { subscribe } = useContext(GroupChannelThreadContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex } = useContext(GroupChannelThreadContexts.MessageList);\n\n const id = useUniqHandlerId('GroupChannelThreadMessageList');\n const ignorePropReached = useRef(false);\n\n const _onTopReached = () => {\n if (!ignorePropReached.current) {\n props.onTopReached();\n }\n };\n\n const _onBottomReached = () => {\n if (!ignorePropReached.current) {\n props.onBottomReached();\n }\n };\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList();\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useLayoutEffect(() => {\n if (props.startingPoint) {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === props.startingPoint);\n const isIncludedInList = foundMessageIndex > -1;\n if (isIncludedInList) {\n ignorePropReached.current = true;\n const timeout = 300;\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout: timeout });\n setTimeout(() => {\n ignorePropReached.current = false;\n }, timeout + 50);\n }\n }\n }, [props.startingPoint]);\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n return (\n <ChannelThreadMessageList\n {...props}\n ref={flatListRef}\n onTopReached={_onTopReached}\n onBottomReached={_onBottomReached}\n onEditMessage={setMessageToEdit}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n renderNewMessagesButton={null}\n renderScrollToBottomButton={null}\n />\n );\n};\n\nexport default React.memo(GroupChannelThreadMessageList);\n"],"mappings":"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"}
|