@sendbird/uikit-react-native 3.10.1 → 3.10.3
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/EditInput.js +5 -3
- package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/SendInput.js +19 -4
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/index.js +16 -4
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +29 -5
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +36 -2
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +3 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/EditInput.js +5 -3
- package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
- package/lib/module/components/ChannelInput/SendInput.js +20 -5
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js +17 -5
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +29 -5
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +36 -2
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +3 -1
- package/lib/module/fragments/createGroupChannelFragment.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 +2 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/types.d.ts +12 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +5 -5
- package/src/components/ChannelInput/EditInput.tsx +2 -0
- package/src/components/ChannelInput/SendInput.tsx +16 -1
- package/src/components/ChannelInput/index.tsx +37 -5
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +25 -4
- package/src/domain/groupChannel/module/moduleContext.tsx +40 -5
- package/src/domain/groupChannel/types.ts +14 -1
- package/src/fragments/createGroupChannelFragment.tsx +2 -0
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_ChannelMessageList","_interopRequireDefault","_constants","_useContext","_moduleContext","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","GroupChannelMessageList","props","toast","useToast","STRINGS","useLocalization","sdk","sbOptions","groupChannelFragmentOptions","useSendbirdChat","setMessageToEdit","setMessageToReply","useContext","GroupChannelContexts","Fragment","groupChannelPubSub","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","onPressReplyMessageInThread","MessageList","isFirstMount","useIsFirstMount","hasSeenNewLineRef","useRef","isNewLineInViewportRef","isNewLineExistInChannelRef","scrolledAwayFromBottomRef","isVisibleUnreadMessageFloating","setIsVisibleUnreadMessageFloating","useState","viewableMessages","hasUserMarkedAsUnreadRef","unreadFirstMessage","setUnreadFirstMessage","undefined","updateHasSeenNewLine","useCallback","hasSeenNewLine","current","_props$onNewLineSeenC","onNewLineSeenChange","updateHasUserMarkedAsUnread","hasUserMarkedAsUnread","_props$onUserMarkedAs","onUserMarkedAsUnreadChange","scrollToMessageWithCreatedAt","useFreshCallback","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","MESSAGE_FOCUS_ANIMATION_DELAY","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","catch","_","onScrolledAwayFromBottom","value","scrollToBottom","hasNext","onResetMessageList","onPressUnreadMessagesFloatingCloseButton","_props$resetNewMessag","resetNewMessages","confirmAndMarkAsRead","url","getPrevNonSilentMessage","prevMessageIndex","prevMessage","silent","findFirstUnreadMessage","isNewLineExistInChannel","uikit","groupChannel","enableMarkAsUnread","find","msg","_props$hasPrevious","isMarkedAsUnreadMessage","myLastRead","prevNonSilentMessage","hasNoPreviousAndNoPrevMessage","hasPrevious","prevMessageIsRead","isMessageUnread","useEffect","foundUnreadFirstMessage","processNewLineVisibility","unreadFirstMsg","_viewableMessages$cur","isNewLineInViewport","some","message","messageId","updateUnreadMessagesFloatingProps","newMessages","markAsUnread","markAsRead","onViewableItemsChanged","info","viewableItems","filter","token","item","map","onPressMarkAsUnreadMessage","unreadMessagesFloatingPropsRef","canAutoMarkAsRead","visible","unreadMessageCount","onPressClose","useGroupChannelHandler","onReactionUpdated","event","isDifferentChannel","recentMessage","isRecentMessage","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","onChannelChanged","subscribe","type","data","lastMessage","updatedMessage","lastMessageUpdated","isMaybeStreaming","hasAiBot","foundFirstUnreadMessage","pubsub","payload","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","searchItem","onPressParentMessage","parentMessage","childMessage","replyType","threadReplySelectType","show","TOAST","FIND_PARENT_MSG_ERROR","canScrollToParent","createElement","ref","onReplyMessage","onReplyInThreadMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","unreadMessagesFloatingProps","_default","exports","React","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import type { ViewToken } from '@react-native/virtualized-lists';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelHandler } from '@sendbird/uikit-tools';\nimport {\n SendbirdMessage,\n SendbirdSendableMessage,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useFreshCallback,\n useIsFirstMount,\n} from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { UnreadMessagesFloatingProps } from '../../../components/UnreadMessagesFloating';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\nimport { GroupChannelFragmentOptionsPubSubContextPayload } from '../../../contexts/SendbirdChatCtx';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelMessageList = (props: GroupChannelProps['MessageList']) => {\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const { sdk, sbOptions, groupChannelFragmentOptions } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex, onPressReplyMessageInThread } = useContext(\n GroupChannelContexts.MessageList,\n );\n\n const isFirstMount = useIsFirstMount();\n\n const hasSeenNewLineRef = useRef(false);\n const isNewLineInViewportRef = useRef(false);\n const isNewLineExistInChannelRef = useRef(false);\n const scrolledAwayFromBottomRef = useRef(false);\n const [isVisibleUnreadMessageFloating, setIsVisibleUnreadMessageFloating] = useState(false);\n const viewableMessages = useRef<SendbirdMessage[]>();\n const hasUserMarkedAsUnreadRef = useRef(false);\n const [unreadFirstMessage, setUnreadFirstMessage] = useState<SendbirdMessage | undefined>(undefined);\n\n const updateHasSeenNewLine = useCallback(\n (hasSeenNewLine: boolean) => {\n if (hasSeenNewLineRef.current !== hasSeenNewLine) {\n hasSeenNewLineRef.current = hasSeenNewLine;\n props.onNewLineSeenChange?.(hasSeenNewLine);\n }\n },\n [props.onNewLineSeenChange],\n );\n\n const updateHasUserMarkedAsUnread = useCallback(\n (hasUserMarkedAsUnread: boolean) => {\n if (hasUserMarkedAsUnreadRef.current !== hasUserMarkedAsUnread) {\n hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;\n props.onUserMarkedAsUnreadChange?.(hasUserMarkedAsUnread);\n }\n },\n [props.onUserMarkedAsUnreadChange],\n );\n\n const scrollToMessageWithCreatedAt = useFreshCallback(\n (createdAt: number, focusAnimated: boolean, timeout: number): boolean => {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === createdAt);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (focusAnimated) {\n setTimeout(() => props.onUpdateSearchItem({ startingPoint: createdAt }), MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout });\n } else {\n if (props.channel.messageOffsetTimestamp <= createdAt) {\n if (focusAnimated) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt).catch((_) => {});\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n scrolledAwayFromBottomRef.current = value;\n props.onScrolledAwayFromBottom(value);\n });\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList().catch((_) => {});\n onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n const onPressUnreadMessagesFloatingCloseButton = useCallback(() => {\n updateHasSeenNewLine(true);\n updateHasUserMarkedAsUnread(false);\n props.resetNewMessages?.();\n confirmAndMarkAsRead([props.channel]);\n }, [updateHasSeenNewLine, updateHasUserMarkedAsUnread, props.channel.url, props.resetNewMessages]);\n\n const getPrevNonSilentMessage = useCallback(\n (messages: SendbirdMessage[], prevMessageIndex: number): SendbirdMessage | null => {\n if (messages.length <= prevMessageIndex) {\n return null;\n }\n\n const prevMessage = messages[prevMessageIndex];\n if (prevMessage) {\n if (prevMessage.silent) {\n return getPrevNonSilentMessage(messages, prevMessageIndex + 1);\n } else {\n return prevMessage;\n }\n }\n return null;\n },\n [],\n );\n\n const findFirstUnreadMessage = useFreshCallback((isNewLineExistInChannel: boolean) => {\n if (!sbOptions.uikit.groupChannel.channel.enableMarkAsUnread || !isNewLineExistInChannel) {\n return;\n }\n\n return props.messages.find((msg, index) => {\n if (msg.silent) {\n return false;\n }\n\n const isMarkedAsUnreadMessage = props.channel.myLastRead === msg.createdAt - 1;\n if (isMarkedAsUnreadMessage) {\n return true;\n }\n\n const prevNonSilentMessage = getPrevNonSilentMessage(props.messages, index + 1);\n const hasNoPreviousAndNoPrevMessage = !props.hasPrevious?.() && prevNonSilentMessage == null;\n const prevMessageIsRead =\n prevNonSilentMessage != null && prevNonSilentMessage.createdAt <= props.channel.myLastRead;\n const isMessageUnread = props.channel.myLastRead < msg.createdAt;\n return (hasNoPreviousAndNoPrevMessage || prevMessageIsRead) && isMessageUnread;\n });\n });\n\n useEffect(() => {\n if (!unreadFirstMessage) {\n const foundUnreadFirstMessage = findFirstUnreadMessage(props.isNewLineExistInChannel ?? false);\n if (foundUnreadFirstMessage) {\n processNewLineVisibility(foundUnreadFirstMessage);\n setUnreadFirstMessage(foundUnreadFirstMessage);\n }\n }\n }, [props.messages, props.channel.myLastRead, sbOptions.uikit.groupChannel.channel.enableMarkAsUnread]);\n\n const processNewLineVisibility = useFreshCallback((unreadFirstMsg: SendbirdMessage | undefined) => {\n const isNewLineInViewport = !!viewableMessages.current?.some(\n (message) => message.messageId === unreadFirstMsg?.messageId,\n );\n\n if (isNewLineInViewportRef.current !== isNewLineInViewport) {\n isNewLineInViewportRef.current = isNewLineInViewport;\n updateUnreadMessagesFloatingProps();\n if (!isNewLineInViewport || hasSeenNewLineRef.current) {\n return;\n }\n\n updateHasSeenNewLine(true);\n if (hasUserMarkedAsUnreadRef.current) {\n return;\n }\n\n if (0 < props.newMessages.length) {\n props.channel.markAsUnread(props.newMessages[0]);\n } else {\n props.channel.markAsRead();\n }\n }\n });\n\n const onViewableItemsChanged = useFreshCallback(\n async (info: { viewableItems: Array<ViewToken<SendbirdMessage>>; changed: Array<ViewToken<SendbirdMessage>> }) => {\n if (!sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n return;\n }\n\n viewableMessages.current = info.viewableItems.filter((token) => token.item).map((token) => token.item);\n processNewLineVisibility(unreadFirstMessage);\n },\n );\n\n const onPressMarkAsUnreadMessage = useCallback(\n async (message: SendbirdMessage) => {\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && message) {\n await props.channel.markAsUnread(message);\n updateHasUserMarkedAsUnread(true);\n }\n },\n [sbOptions.uikit.groupChannel.channel.enableMarkAsUnread, updateHasUserMarkedAsUnread],\n );\n\n useEffect(() => {\n isNewLineExistInChannelRef.current = !!props.isNewLineExistInChannel && !!viewableMessages.current;\n }, [props.isNewLineExistInChannel, viewableMessages.current]);\n\n const unreadMessagesFloatingPropsRef = useRef<UnreadMessagesFloatingProps>();\n const updateUnreadMessagesFloatingProps = useFreshCallback(() => {\n const canAutoMarkAsRead =\n !scrolledAwayFromBottomRef.current &&\n !hasUserMarkedAsUnreadRef.current &&\n (hasSeenNewLineRef.current || !isNewLineExistInChannelRef.current);\n\n unreadMessagesFloatingPropsRef.current = {\n visible:\n sbOptions.uikit.groupChannel.channel.enableMarkAsUnread &&\n !canAutoMarkAsRead &&\n isNewLineExistInChannelRef.current &&\n 0 < props.channel.unreadMessageCount &&\n !isNewLineInViewportRef.current,\n onPressClose: onPressUnreadMessagesFloatingCloseButton,\n unreadMessageCount: props.channel.unreadMessageCount,\n };\n if (isVisibleUnreadMessageFloating !== unreadMessagesFloatingPropsRef.current.visible) {\n setIsVisibleUnreadMessageFloating(unreadMessagesFloatingPropsRef.current.visible);\n }\n });\n\n useEffect(() => {\n updateUnreadMessagesFloatingProps();\n }, [\n isNewLineExistInChannelRef.current,\n props.channel.unreadMessageCount,\n sbOptions.uikit.groupChannel.channel.enableMarkAsUnread,\n ]);\n\n useGroupChannelHandler(sdk, {\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 onChannelChanged(channel) {\n if (isDifferentChannel(channel, props.channel)) return;\n },\n });\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\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 'MESSAGES_UPDATED': {\n const lastMessage = props.channel.lastMessage;\n const [updatedMessage] = data.messages;\n\n const lastMessageUpdated =\n updatedMessage && lastMessage && lastMessage.messageId === updatedMessage.messageId;\n\n const isMaybeStreaming = props.channel.hasAiBot && lastMessageUpdated;\n\n if (isMaybeStreaming) {\n scrollToBottom(false);\n } else if (!props.scrolledAwayFromBottom && lastMessageUpdated) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n case 'ON_MARKED_AS_READ_BY_CURRENT_USER': {\n updateUnreadMessagesFloatingProps();\n break;\n }\n case 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER': {\n isNewLineExistInChannelRef.current = true;\n const foundFirstUnreadMessage = findFirstUnreadMessage(true);\n processNewLineVisibility(foundFirstUnreadMessage);\n setUnreadFirstMessage(foundFirstUnreadMessage);\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n useEffect(() => {\n return groupChannelFragmentOptions.pubsub.subscribe((payload: GroupChannelFragmentOptionsPubSubContextPayload) => {\n switch (payload.type) {\n case 'OVERRIDE_SEARCH_ITEM_STARTING_POINT': {\n scrollToMessageWithCreatedAt(payload.data.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n break;\n }\n }\n });\n }, []);\n\n useEffect(() => {\n // Only trigger once when message list mount with initial props.searchItem\n // - Search screen + searchItem > mount message list\n // - Reset message list + searchItem > re-mount message list\n if (isFirstMount && props.searchItem) {\n scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n }\n }, [isFirstMount]);\n\n const onPressParentMessage = useFreshCallback(\n (parentMessage: SendbirdMessage, childMessage: SendbirdSendableMessage) => {\n if (\n onPressReplyMessageInThread &&\n sbOptions.uikit.groupChannel.channel.replyType === 'thread' &&\n sbOptions.uikit.groupChannel.channel.threadReplySelectType === 'thread'\n ) {\n if (parentMessage.createdAt >= props.channel.messageOffsetTimestamp) {\n onPressReplyMessageInThread(parentMessage as SendbirdSendableMessage, childMessage.createdAt);\n } else {\n toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n } else {\n const canScrollToParent = scrollToMessageWithCreatedAt(parentMessage.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n },\n );\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n onReplyMessage={setMessageToReply}\n onReplyInThreadMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onViewableItemsChanged={onViewableItemsChanged}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n onPressMarkAsUnreadMessage={onPressMarkAsUnreadMessage}\n unreadFirstMessage={unreadFirstMessage}\n unreadMessagesFloatingProps={unreadMessagesFloatingPropsRef.current}\n />\n );\n};\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_ChannelMessageList","_interopRequireDefault","_constants","_useContext","_moduleContext","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","GroupChannelMessageList","props","toast","useToast","STRINGS","useLocalization","sdk","sbOptions","groupChannelFragmentOptions","useSendbirdChat","setMessageToEdit","setMessageToReply","useContext","GroupChannelContexts","Fragment","groupChannelPubSub","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToMessageId","onPressReplyMessageInThread","MessageList","isFirstMount","useIsFirstMount","hasSeenNewLineRef","useRef","isNewLineInViewportRef","isNewLineExistInChannelRef","scrolledAwayFromBottomRef","isVisibleUnreadMessageFloating","setIsVisibleUnreadMessageFloating","useState","viewableMessages","hasUserMarkedAsUnreadRef","unreadFirstMessage","setUnreadFirstMessage","undefined","pendingBottomReachedRef","updateHasSeenNewLine","useCallback","hasSeenNewLine","current","_props$onNewLineSeenC","onNewLineSeenChange","updateHasUserMarkedAsUnread","hasUserMarkedAsUnread","_props$onUserMarkedAs","onUserMarkedAsUnreadChange","scrollToMessageWithCreatedAt","useFreshCallback","createdAt","focusAnimated","timeout","foundMessage","messages","find","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","MESSAGE_FOCUS_ANIMATION_DELAY","timestamp","Date","now","messageId","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","catch","_","onScrolledAwayFromBottom","value","scrollToBottom","hasNext","onResetMessageList","onPressUnreadMessagesFloatingCloseButton","_props$resetNewMessag","resetNewMessages","confirmAndMarkAsRead","url","getPrevNonSilentMessage","prevMessageIndex","prevMessage","silent","findFirstUnreadMessage","isNewLineExistInChannel","uikit","groupChannel","enableMarkAsUnread","msg","index","_props$hasPrevious","isMarkedAsUnreadMessage","myLastRead","prevNonSilentMessage","hasNoPreviousAndNoPrevMessage","hasPrevious","prevMessageIsRead","isMessageUnread","useEffect","foundUnreadFirstMessage","processNewLineVisibility","unreadFirstMsg","_viewableMessages$cur","isNewLineInViewport","some","message","updateUnreadMessagesFloatingProps","newMessages","markAsUnread","markAsRead","onViewableItemsChanged","info","viewableItems","filter","token","item","map","onPressMarkAsUnreadMessage","unreadMessagesFloatingPropsRef","canAutoMarkAsRead","visible","unreadMessageCount","onPressClose","useGroupChannelHandler","onReactionUpdated","event","isDifferentChannel","recentMessage","isRecentMessage","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","onChannelChanged","subscribe","type","data","lastMessage","updatedMessage","lastMessageUpdated","isMaybeStreaming","hasAiBot","foundFirstUnreadMessage","pubsub","payload","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","searchItem","onPressParentMessage","parentMessage","childMessage","replyType","threadReplySelectType","show","TOAST","FIND_PARENT_MSG_ERROR","canScrollToParent","onBottomReached","currentTime","elapsedTime","timeoutThreshold","_props$onBottomReache","_props$onBottomReache2","createElement","ref","onReplyMessage","onReplyInThreadMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","unreadMessagesFloatingProps","_default","exports","React","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import type { ViewToken } from '@react-native/virtualized-lists';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelHandler } from '@sendbird/uikit-tools';\nimport {\n SendbirdMessage,\n SendbirdSendableMessage,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useFreshCallback,\n useIsFirstMount,\n} from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { UnreadMessagesFloatingProps } from '../../../components/UnreadMessagesFloating';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\nimport { GroupChannelFragmentOptionsPubSubContextPayload } from '../../../contexts/SendbirdChatCtx';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelMessageList = (props: GroupChannelProps['MessageList']) => {\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const { sdk, sbOptions, groupChannelFragmentOptions } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToMessageId, onPressReplyMessageInThread } = useContext(\n GroupChannelContexts.MessageList,\n );\n\n const isFirstMount = useIsFirstMount();\n\n const hasSeenNewLineRef = useRef(false);\n const isNewLineInViewportRef = useRef(false);\n const isNewLineExistInChannelRef = useRef(false);\n const scrolledAwayFromBottomRef = useRef(false);\n const [isVisibleUnreadMessageFloating, setIsVisibleUnreadMessageFloating] = useState(false);\n const viewableMessages = useRef<SendbirdMessage[]>();\n const hasUserMarkedAsUnreadRef = useRef(false);\n const [unreadFirstMessage, setUnreadFirstMessage] = useState<SendbirdMessage | undefined>(undefined);\n const pendingBottomReachedRef = useRef<{ timeout: number; timestamp: number } | null>(null);\n\n const updateHasSeenNewLine = useCallback(\n (hasSeenNewLine: boolean) => {\n if (hasSeenNewLineRef.current !== hasSeenNewLine) {\n hasSeenNewLineRef.current = hasSeenNewLine;\n props.onNewLineSeenChange?.(hasSeenNewLine);\n }\n },\n [props.onNewLineSeenChange],\n );\n\n const updateHasUserMarkedAsUnread = useCallback(\n (hasUserMarkedAsUnread: boolean) => {\n if (hasUserMarkedAsUnreadRef.current !== hasUserMarkedAsUnread) {\n hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;\n props.onUserMarkedAsUnreadChange?.(hasUserMarkedAsUnread);\n }\n },\n [props.onUserMarkedAsUnreadChange],\n );\n\n const scrollToMessageWithCreatedAt = useFreshCallback(\n (createdAt: number, focusAnimated: boolean, timeout: number): boolean => {\n const foundMessage = props.messages.find((it) => it.createdAt === createdAt);\n const isIncludedInList = !!foundMessage;\n pendingBottomReachedRef.current = null;\n\n if (isIncludedInList) {\n if (focusAnimated) {\n setTimeout(() => props.onUpdateSearchItem({ startingPoint: createdAt }), MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n pendingBottomReachedRef.current = { timeout, timestamp: Date.now() };\n lazyScrollToMessageId({ messageId: foundMessage.messageId, animated: true, timeout });\n } else {\n if (props.channel.messageOffsetTimestamp <= createdAt) {\n if (focusAnimated) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt).catch((_) => {});\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n scrolledAwayFromBottomRef.current = value;\n props.onScrolledAwayFromBottom(value);\n });\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList().catch((_) => {});\n onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n const onPressUnreadMessagesFloatingCloseButton = useCallback(() => {\n updateHasSeenNewLine(true);\n updateHasUserMarkedAsUnread(false);\n props.resetNewMessages?.();\n confirmAndMarkAsRead([props.channel]);\n }, [updateHasSeenNewLine, updateHasUserMarkedAsUnread, props.channel.url, props.resetNewMessages]);\n\n const getPrevNonSilentMessage = useCallback(\n (messages: SendbirdMessage[], prevMessageIndex: number): SendbirdMessage | null => {\n if (messages.length <= prevMessageIndex) {\n return null;\n }\n\n const prevMessage = messages[prevMessageIndex];\n if (prevMessage) {\n if (prevMessage.silent) {\n return getPrevNonSilentMessage(messages, prevMessageIndex + 1);\n } else {\n return prevMessage;\n }\n }\n return null;\n },\n [],\n );\n\n const findFirstUnreadMessage = useFreshCallback((isNewLineExistInChannel: boolean) => {\n if (!sbOptions.uikit.groupChannel.channel.enableMarkAsUnread || !isNewLineExistInChannel) {\n return;\n }\n\n return props.messages.find((msg, index) => {\n if (msg.silent) {\n return false;\n }\n\n const isMarkedAsUnreadMessage = props.channel.myLastRead === msg.createdAt - 1;\n if (isMarkedAsUnreadMessage) {\n return true;\n }\n\n const prevNonSilentMessage = getPrevNonSilentMessage(props.messages, index + 1);\n const hasNoPreviousAndNoPrevMessage = !props.hasPrevious?.() && prevNonSilentMessage == null;\n const prevMessageIsRead =\n prevNonSilentMessage != null && prevNonSilentMessage.createdAt <= props.channel.myLastRead;\n const isMessageUnread = props.channel.myLastRead < msg.createdAt;\n return (hasNoPreviousAndNoPrevMessage || prevMessageIsRead) && isMessageUnread;\n });\n });\n\n useEffect(() => {\n if (!unreadFirstMessage) {\n const foundUnreadFirstMessage = findFirstUnreadMessage(props.isNewLineExistInChannel ?? false);\n if (foundUnreadFirstMessage) {\n processNewLineVisibility(foundUnreadFirstMessage);\n setUnreadFirstMessage(foundUnreadFirstMessage);\n }\n }\n }, [props.messages, props.channel.myLastRead, sbOptions.uikit.groupChannel.channel.enableMarkAsUnread]);\n\n const processNewLineVisibility = useFreshCallback((unreadFirstMsg: SendbirdMessage | undefined) => {\n const isNewLineInViewport = !!viewableMessages.current?.some(\n (message) => message.messageId === unreadFirstMsg?.messageId,\n );\n\n if (isNewLineInViewportRef.current !== isNewLineInViewport) {\n isNewLineInViewportRef.current = isNewLineInViewport;\n updateUnreadMessagesFloatingProps();\n if (!isNewLineInViewport || hasSeenNewLineRef.current) {\n return;\n }\n\n updateHasSeenNewLine(true);\n if (hasUserMarkedAsUnreadRef.current) {\n return;\n }\n\n if (0 < props.newMessages.length) {\n props.channel.markAsUnread(props.newMessages[0]);\n } else {\n props.channel.markAsRead();\n }\n }\n });\n\n const onViewableItemsChanged = useFreshCallback(\n async (info: { viewableItems: Array<ViewToken<SendbirdMessage>>; changed: Array<ViewToken<SendbirdMessage>> }) => {\n if (!sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n return;\n }\n\n viewableMessages.current = info.viewableItems.filter((token) => token.item).map((token) => token.item);\n processNewLineVisibility(unreadFirstMessage);\n },\n );\n\n const onPressMarkAsUnreadMessage = useCallback(\n async (message: SendbirdMessage) => {\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && message) {\n await props.channel.markAsUnread(message);\n updateHasUserMarkedAsUnread(true);\n }\n },\n [sbOptions.uikit.groupChannel.channel.enableMarkAsUnread, updateHasUserMarkedAsUnread],\n );\n\n useEffect(() => {\n isNewLineExistInChannelRef.current = !!props.isNewLineExistInChannel && !!viewableMessages.current;\n }, [props.isNewLineExistInChannel, viewableMessages.current]);\n\n const unreadMessagesFloatingPropsRef = useRef<UnreadMessagesFloatingProps>();\n const updateUnreadMessagesFloatingProps = useFreshCallback(() => {\n const canAutoMarkAsRead =\n !scrolledAwayFromBottomRef.current &&\n !hasUserMarkedAsUnreadRef.current &&\n (hasSeenNewLineRef.current || !isNewLineExistInChannelRef.current);\n\n unreadMessagesFloatingPropsRef.current = {\n visible:\n sbOptions.uikit.groupChannel.channel.enableMarkAsUnread &&\n !canAutoMarkAsRead &&\n isNewLineExistInChannelRef.current &&\n 0 < props.channel.unreadMessageCount &&\n !isNewLineInViewportRef.current,\n onPressClose: onPressUnreadMessagesFloatingCloseButton,\n unreadMessageCount: props.channel.unreadMessageCount,\n };\n if (isVisibleUnreadMessageFloating !== unreadMessagesFloatingPropsRef.current.visible) {\n setIsVisibleUnreadMessageFloating(unreadMessagesFloatingPropsRef.current.visible);\n }\n });\n\n useEffect(() => {\n updateUnreadMessagesFloatingProps();\n }, [\n isNewLineExistInChannelRef.current,\n props.channel.unreadMessageCount,\n sbOptions.uikit.groupChannel.channel.enableMarkAsUnread,\n ]);\n\n useGroupChannelHandler(sdk, {\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 onChannelChanged(channel) {\n if (isDifferentChannel(channel, props.channel)) return;\n },\n });\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\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 'MESSAGES_UPDATED': {\n const lastMessage = props.channel.lastMessage;\n const [updatedMessage] = data.messages;\n\n const lastMessageUpdated =\n updatedMessage && lastMessage && lastMessage.messageId === updatedMessage.messageId;\n\n const isMaybeStreaming = props.channel.hasAiBot && lastMessageUpdated;\n\n if (isMaybeStreaming) {\n scrollToBottom(false);\n } else if (!props.scrolledAwayFromBottom && lastMessageUpdated) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n case 'ON_MARKED_AS_READ_BY_CURRENT_USER': {\n updateUnreadMessagesFloatingProps();\n break;\n }\n case 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER': {\n isNewLineExistInChannelRef.current = true;\n const foundFirstUnreadMessage = findFirstUnreadMessage(true);\n processNewLineVisibility(foundFirstUnreadMessage);\n setUnreadFirstMessage(foundFirstUnreadMessage);\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n useEffect(() => {\n return groupChannelFragmentOptions.pubsub.subscribe((payload: GroupChannelFragmentOptionsPubSubContextPayload) => {\n switch (payload.type) {\n case 'OVERRIDE_SEARCH_ITEM_STARTING_POINT': {\n scrollToMessageWithCreatedAt(payload.data.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n break;\n }\n }\n });\n }, []);\n\n useEffect(() => {\n // Only trigger once when message list mount with initial props.searchItem\n // - Search screen + searchItem > mount message list\n // - Reset message list + searchItem > re-mount message list\n if (isFirstMount && props.searchItem) {\n scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n }\n }, [isFirstMount]);\n\n const onPressParentMessage = useFreshCallback(\n (parentMessage: SendbirdMessage, childMessage: SendbirdSendableMessage) => {\n if (\n onPressReplyMessageInThread &&\n sbOptions.uikit.groupChannel.channel.replyType === 'thread' &&\n sbOptions.uikit.groupChannel.channel.threadReplySelectType === 'thread'\n ) {\n if (parentMessage.createdAt >= props.channel.messageOffsetTimestamp) {\n onPressReplyMessageInThread(parentMessage as SendbirdSendableMessage, childMessage.createdAt);\n } else {\n toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n } else {\n const canScrollToParent = scrollToMessageWithCreatedAt(parentMessage.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n },\n );\n\n const onBottomReached = useFreshCallback(() => {\n if (props.hasNext()) {\n if (pendingBottomReachedRef.current) {\n const currentTime = Date.now();\n const elapsedTime = currentTime - pendingBottomReachedRef.current.timestamp;\n\n const timeoutThreshold = 500;\n if (elapsedTime >= pendingBottomReachedRef.current.timeout + timeoutThreshold) {\n props.onBottomReached?.();\n pendingBottomReachedRef.current = null;\n }\n } else {\n props.onBottomReached?.();\n }\n }\n });\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n onReplyMessage={setMessageToReply}\n onReplyInThreadMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onViewableItemsChanged={onViewableItemsChanged}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n onPressMarkAsUnreadMessage={onPressMarkAsUnreadMessage}\n onBottomReached={onBottomReached}\n unreadFirstMessage={unreadFirstMessage}\n unreadMessagesFloatingProps={unreadMessagesFloatingPropsRef.current}\n />\n );\n};\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -37,6 +37,9 @@ const GroupChannelContexts = exports.GroupChannelContexts = {
|
|
|
37
37
|
},
|
|
38
38
|
lazyScrollToIndex: () => {
|
|
39
39
|
// noop
|
|
40
|
+
},
|
|
41
|
+
lazyScrollToMessageId: () => {
|
|
42
|
+
// noop
|
|
40
43
|
}
|
|
41
44
|
})
|
|
42
45
|
};
|
|
@@ -66,7 +69,8 @@ const GroupChannelContextsProvider = ({
|
|
|
66
69
|
flatListRef,
|
|
67
70
|
lazyScrollToIndex,
|
|
68
71
|
lazyScrollToBottom,
|
|
69
|
-
scrollToMessage
|
|
72
|
+
scrollToMessage,
|
|
73
|
+
lazyScrollToMessageId
|
|
70
74
|
} = useScrollActions({
|
|
71
75
|
messages,
|
|
72
76
|
onUpdateSearchItem
|
|
@@ -140,6 +144,7 @@ const GroupChannelContextsProvider = ({
|
|
|
140
144
|
scrollToMessage,
|
|
141
145
|
lazyScrollToIndex,
|
|
142
146
|
lazyScrollToBottom,
|
|
147
|
+
lazyScrollToMessageId,
|
|
143
148
|
onPressReplyMessageInThread
|
|
144
149
|
}
|
|
145
150
|
}, children)))));
|
|
@@ -151,6 +156,8 @@ const useScrollActions = params => {
|
|
|
151
156
|
onUpdateSearchItem
|
|
152
157
|
} = params;
|
|
153
158
|
const flatListRef = (0, _react.useRef)(null);
|
|
159
|
+
const messagesRef = (0, _react.useRef)(messages);
|
|
160
|
+
messagesRef.current = messages;
|
|
154
161
|
|
|
155
162
|
// FIXME: Workaround, should run after data has been applied to UI.
|
|
156
163
|
const lazyScrollToBottom = (0, _uikitUtils.useFreshCallback)(params => {
|
|
@@ -182,6 +189,32 @@ const useScrollActions = params => {
|
|
|
182
189
|
});
|
|
183
190
|
}, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
|
|
184
191
|
});
|
|
192
|
+
|
|
193
|
+
// FIXME: Workaround, should run after data has been applied to UI.
|
|
194
|
+
const lazyScrollToMessageId = (0, _uikitUtils.useFreshCallback)(params => {
|
|
195
|
+
if (!flatListRef.current) {
|
|
196
|
+
logFlatListRefWarning();
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
setTimeout(() => {
|
|
200
|
+
var _flatListRef$current3;
|
|
201
|
+
let messageIndex = 0;
|
|
202
|
+
if (params !== null && params !== void 0 && params.messageId) {
|
|
203
|
+
const foundMessageIndex = messagesRef.current.findIndex(it => it.messageId === params.messageId);
|
|
204
|
+
if (foundMessageIndex > -1) {
|
|
205
|
+
messageIndex = foundMessageIndex;
|
|
206
|
+
} else {
|
|
207
|
+
_uikitUtils.Logger.warn('Message with messageId not found:', params.messageId);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
(_flatListRef$current3 = flatListRef.current) === null || _flatListRef$current3 === void 0 || _flatListRef$current3.scrollToIndex({
|
|
212
|
+
index: messageIndex,
|
|
213
|
+
animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false,
|
|
214
|
+
viewPosition: (params === null || params === void 0 ? void 0 : params.viewPosition) ?? 0.5
|
|
215
|
+
});
|
|
216
|
+
}, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
|
|
217
|
+
});
|
|
185
218
|
const scrollToMessage = (0, _uikitUtils.useFreshCallback)((messageId, options) => {
|
|
186
219
|
if (!flatListRef.current) {
|
|
187
220
|
logFlatListRefWarning();
|
|
@@ -210,7 +243,8 @@ const useScrollActions = params => {
|
|
|
210
243
|
flatListRef,
|
|
211
244
|
lazyScrollToIndex,
|
|
212
245
|
lazyScrollToBottom,
|
|
213
|
-
scrollToMessage
|
|
246
|
+
scrollToMessage,
|
|
247
|
+
lazyScrollToMessageId
|
|
214
248
|
};
|
|
215
249
|
};
|
|
216
250
|
const logFlatListRefWarning = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitTools","_uikitUtils","_ProviderLayout","_interopRequireDefault","_constants","_useContext","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","GroupChannelContexts","exports","Fragment","createContext","headerTitle","channel","setMessageToEdit","NOOP","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","GroupChannelContextsProvider","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","onPressReplyMessageInThread","Error","STRINGS","useLocalization","currentUser","sdk","sbOptions","useSendbirdChat","setTypingUsers","useState","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","onPressMessageToReply","parentMessage","uikit","groupChannel","replyType","Number","MAX_SAFE_INTEGER","useGroupChannelHandler","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 { useGroupChannelHandler } from '@sendbird/uikit-tools';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\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 { 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 useGroupChannelHandler(sdk, {\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,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAcA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAA6E,SAAAI,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAKtE,MAAMW,oBAA8C,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EAC5DE,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,CAA6C,CAAC;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,CAA4B;AAC9B,CAAC;AAEM,MAAMC,4BAA4D,GAAGA,CAAC;EAC3EC,QAAQ;EACRhB,OAAO;EACPiB,qBAAqB;EACrBC,mBAAmB,GAAG,CAAC;EACvBC,kBAAkB;EAClBC,QAAQ;EACRC,kBAAkB;EAClBC;AACF,CAAC,KAAK;EACJ,IAAI,CAACtB,OAAO,EAAE,MAAM,IAAIuB,KAAK,CAAC,oDAAoD,CAAC;EAEnF,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EACrC,MAAM;IAAEC,WAAW;IAAEC,GAAG;IAAEC;EAAU,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EAEzD,MAAM,CAACxB,WAAW,EAAEyB,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAiB,EAAE,CAAC;EAClE,MAAM,CAACC,aAAa,EAAE/B,gBAAgB,CAAC,GAAG,IAAA8B,eAAQ,EAA4C,CAAC;EAC/F,MAAM,CAACE,cAAc,EAAE9B,iBAAiB,CAAC,GAAG,IAAA4B,eAAQ,EAA4C,CAAC;EAEjG,MAAM;IAAErB,WAAW;IAAEI,iBAAiB;IAAED,kBAAkB;IAAED;EAAgB,CAAC,GAAGsB,gBAAgB,CAAC;IAC/Fd,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,MAAMc,eAAe,GAAGA,CAACC,IAA+B,EAAEC,OAAmD,KAAK;IAChH,IAAID,IAAI,KAAK,MAAM,IAAI,CAACC,OAAO,EAAE;MAC/BpC,gBAAgB,CAACqC,SAAS,CAAC;MAC3BnC,iBAAiB,CAACmC,SAAS,CAAC;MAC5B;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,MAAM,EAAE;MAC1BnC,gBAAgB,CAACoC,OAAO,CAAC;MACzBlC,iBAAiB,CAACmC,SAAS,CAAC;MAC5B;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,OAAO,EAAE;MAC3BnC,gBAAgB,CAACqC,SAAS,CAAC;MAC3BnC,iBAAiB,CAACkC,OAAO,CAAC;MAC1B;IACF;EACF,CAAC;EAED,MAAME,qBAAqB,GAAIC,aAAyD,IAAK;IAC3F,IAAIZ,SAAS,CAACa,KAAK,CAACC,YAAY,CAAC1C,OAAO,CAAC2C,SAAS,KAAK,QAAQ,IAAIH,aAAa,EAAE;MAChFlB,2BAA2B,aAA3BA,2BAA2B,eAA3BA,2BAA2B,CAAGkB,aAAa,EAAEI,MAAM,CAACC,gBAAgB,CAAC;IACvE,CAAC,MAAM,IAAIjB,SAAS,CAACa,KAAK,CAACC,YAAY,CAAC1C,OAAO,CAAC2C,SAAS,KAAK,aAAa,EAAE;MAC3ER,eAAe,CAAC,OAAO,EAAEK,aAAa,CAAC;IACzC;EACF,CAAC;EAED,IAAAM,kCAAsB,EAACnB,GAAG,EAAE;IAC1BoB,gBAAgBA,CAACC,CAAC,EAAEC,SAAS,EAAE;MAC7B,IAAI,CAAAhB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgB,SAAS,MAAKA,SAAS,EAAE;QAC3C9C,iBAAiB,CAACmC,SAAS,CAAC;MAC9B;IACF,CAAC;IACDY,eAAeA,CAACC,aAAa,EAAE;MAC7B,IAAIA,aAAa,CAACC,GAAG,KAAKpD,OAAO,CAACoD,GAAG,EAAE;QACrC,IAAID,aAAa,CAACE,cAAc,CAAC,CAAC,IAAI,IAAAC,6CAAiC,EAACtD,OAAO,CAAC,CAACuD,MAAM,EAAE;UACvFpD,iBAAiB,CAACmC,SAAS,CAAC;QAC9B;MACF;IACF,CAAC;IACDkB,WAAWA,CAACC,YAAY,EAAEC,IAAI,EAAE;MAAA,IAAAC,gBAAA;MAC9B,IAAIF,YAAY,CAACL,GAAG,KAAKpD,OAAO,CAACoD,GAAG,IAAIM,IAAI,CAACE,MAAM,OAAAD,gBAAA,GAAKhC,GAAG,CAACD,WAAW,cAAAiC,gBAAA,uBAAfA,gBAAA,CAAiBC,MAAM,GAAE;QAC/EzD,iBAAiB,CAACmC,SAAS,CAAC;MAC9B;IACF,CAAC;IACDuB,qBAAqBA,CAACC,YAAY,EAAE;MAClC,IAAI,IAAAC,8BAAkB,EAAC/D,OAAO,EAAE8D,YAAY,CAAC,EAAE;MAC/C,IAAI,CAAC7C,qBAAqB,EAAE;MAC5Ba,cAAc,CAACgC,YAAY,CAACE,cAAc,CAAC,CAAC,CAAC;IAC/C;EACF,CAAC,CAAC;EAEF,oBACElG,MAAA,CAAAW,OAAA,CAAAwF,aAAA,CAAC9F,eAAA,CAAAM,OAAc,qBACbX,MAAA,CAAAW,OAAA,CAAAwF,aAAA,CAACtE,oBAAoB,CAACE,QAAQ,CAACqE,QAAQ;IACrCC,KAAK,EAAE;MACLpE,WAAW,EAAEyB,OAAO,CAAC4C,aAAa,CAACC,YAAY,CAAC,CAAA3C,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEkC,MAAM,KAAI,EAAE,EAAE5D,OAAO,CAAC;MACnFA,OAAO;MACPkB,mBAAmB;MACnBc,aAAa;MACb/B,gBAAgB,EAAE,IAAAqE,kBAAW,EAAEjC,OAAO,IAAKF,eAAe,CAAC,MAAM,EAAEE,OAAO,CAAC,EAAE,EAAE,CAAC;MAChFJ,cAAc;MACd9B,iBAAiB,EAAE,IAAAmE,kBAAW,EAAEjC,OAAO,IAAKE,qBAAqB,CAACF,OAAO,CAAC,EAAE,EAAE;IAChF;EAAE,gBAEFvE,MAAA,CAAAW,OAAA,CAAAwF,aAAA,CAACtE,oBAAoB,CAACW,MAAM,CAAC4D,QAAQ;IAACC,KAAK,EAAEhD;EAAmB,gBAC9DrD,MAAA,CAAAW,OAAA,CAAAwF,aAAA,CAACtE,oBAAoB,CAACS,eAAe,CAAC8D,QAAQ;IAACC,KAAK,EAAE;MAAE9D;IAAY;EAAE,gBACpEvC,MAAA,CAAAW,OAAA,CAAAwF,aAAA,CAACtE,oBAAoB,CAACc,WAAW,CAACyD,QAAQ;IACxCC,KAAK,EAAE;MACLzD,WAAW;MACXE,eAAe;MACfE,iBAAiB;MACjBD,kBAAkB;MAClBS;IACF;EAAE,GAEDN,QACwC,CACE,CACX,CACA,CAC1B,CAAC;AAErB,CAAC;AAACpB,OAAA,CAAAmB,4BAAA,GAAAA,4BAAA;AAGF,MAAMmB,gBAAgB,GAAIqC,MAA8E,IAAK;EAC3G,MAAM;IAAEnD,QAAQ;IAAEC;EAAmB,CAAC,GAAGkD,MAAM;EAC/C,MAAM7D,WAAW,GAAG,IAAA8D,aAAM,EAA4B,IAAI,CAAC;;EAE3D;EACA,MAAM3D,kBAAkB,GAAG,IAAA4D,4BAAgB,EAAgDF,MAAM,IAAK;IACpG,IAAI,CAAC7D,WAAW,CAACC,OAAO,EAAE;MACxB+D,qBAAqB,CAAC,CAAC;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAC,oBAAA;MACf,CAAAA,oBAAA,GAAAlE,WAAW,CAACC,OAAO,cAAAiE,oBAAA,eAAnBA,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,MAAMlE,iBAAiB,GAAG,IAAA2D,4BAAgB,EAAgDF,MAAM,IAAK;IACnG,IAAI,CAAC7D,WAAW,CAACC,OAAO,EAAE;MACxB+D,qBAAqB,CAAC,CAAC;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAM,qBAAA;MACf,CAAAA,qBAAA,GAAAvE,WAAW,CAACC,OAAO,cAAAsE,qBAAA,eAAnBA,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,MAAMpE,eAAe,GAAG,IAAA6D,4BAAgB,EAA6C,CAACxB,SAAS,EAAEoC,OAAO,KAAK;IAC3G,IAAI,CAAC3E,WAAW,CAACC,OAAO,EAAE;MACxB+D,qBAAqB,CAAC,CAAC;MACvB,OAAO,KAAK;IACd;IAEA,MAAMY,iBAAiB,GAAGlE,QAAQ,CAACmE,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,MAAMtD,kBAAkB,CAAC;UAAEsE,aAAa,EAAEvE,QAAQ,CAACkE,iBAAiB,CAAC,CAACM;QAAU,CAAC,CAAC,EAClFC,wCACF,CAAC;MACH;MACA/E,iBAAiB,CAAC;QAChBqE,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;IACL1E,WAAW;IACXI,iBAAiB;IACjBD,kBAAkB;IAClBD;EACF,CAAC;AACH,CAAC;AAED,MAAM8D,qBAAqB,GAAGA,CAAA,KAAM;EAClCoB,kBAAM,CAACC,IAAI,CACT,kFAAkF,GAChF,uDACJ,CAAC;AACH,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitTools","_uikitUtils","_ProviderLayout","_interopRequireDefault","_constants","_useContext","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","GroupChannelContexts","exports","Fragment","createContext","headerTitle","channel","setMessageToEdit","NOOP","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","lazyScrollToMessageId","GroupChannelContextsProvider","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","onPressReplyMessageInThread","Error","STRINGS","useLocalization","currentUser","sdk","sbOptions","useSendbirdChat","setTypingUsers","useState","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","onPressMessageToReply","parentMessage","uikit","groupChannel","replyType","Number","MAX_SAFE_INTEGER","useGroupChannelHandler","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","messagesRef","useFreshCallback","logFlatListRefWarning","setTimeout","_flatListRef$current","scrollToOffset","offset","animated","timeout","_flatListRef$current2","scrollToIndex","index","viewPosition","_flatListRef$current3","messageIndex","foundMessageIndex","findIndex","it","Logger","warn","options","isIncludedInList","focusAnimated","startingPoint","createdAt","MESSAGE_FOCUS_ANIMATION_DELAY"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport { useGroupChannelHandler } from '@sendbird/uikit-tools';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\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 lazyScrollToMessageId: () => {\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 { 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, lazyScrollToMessageId } =\n 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 useGroupChannelHandler(sdk, {\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 lazyScrollToMessageId,\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 const messagesRef = useRef(messages);\n messagesRef.current = messages;\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToBottom']>((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 // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToMessageId = useFreshCallback<MessageListContextValue['lazyScrollToMessageId']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n let messageIndex = 0;\n if (params?.messageId) {\n const foundMessageIndex = messagesRef.current.findIndex((it) => it.messageId === params.messageId);\n if (foundMessageIndex > -1) {\n messageIndex = foundMessageIndex;\n } else {\n Logger.warn('Message with messageId not found:', params.messageId);\n return;\n }\n }\n\n flatListRef.current?.scrollToIndex({\n index: messageIndex,\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 lazyScrollToMessageId,\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,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAcA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAA6E,SAAAI,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAKtE,MAAMW,oBAA8C,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EAC5DE,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,CAA6C,CAAC;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,CACD;IACDC,qBAAqB,EAAEA,CAAA,KAAM;MAC3B;IAAA;EAEJ,CAA4B;AAC9B,CAAC;AAEM,MAAMC,4BAA4D,GAAGA,CAAC;EAC3EC,QAAQ;EACRjB,OAAO;EACPkB,qBAAqB;EACrBC,mBAAmB,GAAG,CAAC;EACvBC,kBAAkB;EAClBC,QAAQ;EACRC,kBAAkB;EAClBC;AACF,CAAC,KAAK;EACJ,IAAI,CAACvB,OAAO,EAAE,MAAM,IAAIwB,KAAK,CAAC,oDAAoD,CAAC;EAEnF,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EACrC,MAAM;IAAEC,WAAW;IAAEC,GAAG;IAAEC;EAAU,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EAEzD,MAAM,CAACzB,WAAW,EAAE0B,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAiB,EAAE,CAAC;EAClE,MAAM,CAACC,aAAa,EAAEhC,gBAAgB,CAAC,GAAG,IAAA+B,eAAQ,EAA4C,CAAC;EAC/F,MAAM,CAACE,cAAc,EAAE/B,iBAAiB,CAAC,GAAG,IAAA6B,eAAQ,EAA4C,CAAC;EAEjG,MAAM;IAAEtB,WAAW;IAAEI,iBAAiB;IAAED,kBAAkB;IAAED,eAAe;IAAEG;EAAsB,CAAC,GAClGoB,gBAAgB,CAAC;IACfd,QAAQ;IACRC;EACF,CAAC,CAAC;EAEJ,MAAMc,eAAe,GAAGA,CAACC,IAA+B,EAAEC,OAAmD,KAAK;IAChH,IAAID,IAAI,KAAK,MAAM,IAAI,CAACC,OAAO,EAAE;MAC/BrC,gBAAgB,CAACsC,SAAS,CAAC;MAC3BpC,iBAAiB,CAACoC,SAAS,CAAC;MAC5B;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,MAAM,EAAE;MAC1BpC,gBAAgB,CAACqC,OAAO,CAAC;MACzBnC,iBAAiB,CAACoC,SAAS,CAAC;MAC5B;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,OAAO,EAAE;MAC3BpC,gBAAgB,CAACsC,SAAS,CAAC;MAC3BpC,iBAAiB,CAACmC,OAAO,CAAC;MAC1B;IACF;EACF,CAAC;EAED,MAAME,qBAAqB,GAAIC,aAAyD,IAAK;IAC3F,IAAIZ,SAAS,CAACa,KAAK,CAACC,YAAY,CAAC3C,OAAO,CAAC4C,SAAS,KAAK,QAAQ,IAAIH,aAAa,EAAE;MAChFlB,2BAA2B,aAA3BA,2BAA2B,eAA3BA,2BAA2B,CAAGkB,aAAa,EAAEI,MAAM,CAACC,gBAAgB,CAAC;IACvE,CAAC,MAAM,IAAIjB,SAAS,CAACa,KAAK,CAACC,YAAY,CAAC3C,OAAO,CAAC4C,SAAS,KAAK,aAAa,EAAE;MAC3ER,eAAe,CAAC,OAAO,EAAEK,aAAa,CAAC;IACzC;EACF,CAAC;EAED,IAAAM,kCAAsB,EAACnB,GAAG,EAAE;IAC1BoB,gBAAgBA,CAACC,CAAC,EAAEC,SAAS,EAAE;MAC7B,IAAI,CAAAhB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgB,SAAS,MAAKA,SAAS,EAAE;QAC3C/C,iBAAiB,CAACoC,SAAS,CAAC;MAC9B;IACF,CAAC;IACDY,eAAeA,CAACC,aAAa,EAAE;MAC7B,IAAIA,aAAa,CAACC,GAAG,KAAKrD,OAAO,CAACqD,GAAG,EAAE;QACrC,IAAID,aAAa,CAACE,cAAc,CAAC,CAAC,IAAI,IAAAC,6CAAiC,EAACvD,OAAO,CAAC,CAACwD,MAAM,EAAE;UACvFrD,iBAAiB,CAACoC,SAAS,CAAC;QAC9B;MACF;IACF,CAAC;IACDkB,WAAWA,CAACC,YAAY,EAAEC,IAAI,EAAE;MAAA,IAAAC,gBAAA;MAC9B,IAAIF,YAAY,CAACL,GAAG,KAAKrD,OAAO,CAACqD,GAAG,IAAIM,IAAI,CAACE,MAAM,OAAAD,gBAAA,GAAKhC,GAAG,CAACD,WAAW,cAAAiC,gBAAA,uBAAfA,gBAAA,CAAiBC,MAAM,GAAE;QAC/E1D,iBAAiB,CAACoC,SAAS,CAAC;MAC9B;IACF,CAAC;IACDuB,qBAAqBA,CAACC,YAAY,EAAE;MAClC,IAAI,IAAAC,8BAAkB,EAAChE,OAAO,EAAE+D,YAAY,CAAC,EAAE;MAC/C,IAAI,CAAC7C,qBAAqB,EAAE;MAC5Ba,cAAc,CAACgC,YAAY,CAACE,cAAc,CAAC,CAAC,CAAC;IAC/C;EACF,CAAC,CAAC;EAEF,oBACEnG,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAAC/F,eAAA,CAAAM,OAAc,qBACbX,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACvE,oBAAoB,CAACE,QAAQ,CAACsE,QAAQ;IACrCC,KAAK,EAAE;MACLrE,WAAW,EAAE0B,OAAO,CAAC4C,aAAa,CAACC,YAAY,CAAC,CAAA3C,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEkC,MAAM,KAAI,EAAE,EAAE7D,OAAO,CAAC;MACnFA,OAAO;MACPmB,mBAAmB;MACnBc,aAAa;MACbhC,gBAAgB,EAAE,IAAAsE,kBAAW,EAAEjC,OAAO,IAAKF,eAAe,CAAC,MAAM,EAAEE,OAAO,CAAC,EAAE,EAAE,CAAC;MAChFJ,cAAc;MACd/B,iBAAiB,EAAE,IAAAoE,kBAAW,EAAEjC,OAAO,IAAKE,qBAAqB,CAACF,OAAO,CAAC,EAAE,EAAE;IAChF;EAAE,gBAEFxE,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACvE,oBAAoB,CAACW,MAAM,CAAC6D,QAAQ;IAACC,KAAK,EAAEhD;EAAmB,gBAC9DtD,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACvE,oBAAoB,CAACS,eAAe,CAAC+D,QAAQ;IAACC,KAAK,EAAE;MAAE/D;IAAY;EAAE,gBACpEvC,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACvE,oBAAoB,CAACc,WAAW,CAAC0D,QAAQ;IACxCC,KAAK,EAAE;MACL1D,WAAW;MACXE,eAAe;MACfE,iBAAiB;MACjBD,kBAAkB;MAClBE,qBAAqB;MACrBQ;IACF;EAAE,GAEDN,QACwC,CACE,CACX,CACA,CAC1B,CAAC;AAErB,CAAC;AAACrB,OAAA,CAAAoB,4BAAA,GAAAA,4BAAA;AAGF,MAAMmB,gBAAgB,GAAIqC,MAA8E,IAAK;EAC3G,MAAM;IAAEnD,QAAQ;IAAEC;EAAmB,CAAC,GAAGkD,MAAM;EAC/C,MAAM9D,WAAW,GAAG,IAAA+D,aAAM,EAA4B,IAAI,CAAC;EAC3D,MAAMC,WAAW,GAAG,IAAAD,aAAM,EAACpD,QAAQ,CAAC;EACpCqD,WAAW,CAAC/D,OAAO,GAAGU,QAAQ;;EAE9B;EACA,MAAMR,kBAAkB,GAAG,IAAA8D,4BAAgB,EAAiDH,MAAM,IAAK;IACrG,IAAI,CAAC9D,WAAW,CAACC,OAAO,EAAE;MACxBiE,qBAAqB,CAAC,CAAC;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAC,oBAAA;MACf,CAAAA,oBAAA,GAAApE,WAAW,CAACC,OAAO,cAAAmE,oBAAA,eAAnBA,oBAAA,CAAqBC,cAAc,CAAC;QAAEC,MAAM,EAAE,CAAC;QAAEC,QAAQ,EAAE,CAAAT,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAES,QAAQ,KAAI;MAAM,CAAC,CAAC;IACzF,CAAC,EAAE,CAAAT,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEU,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;;EAEF;EACA,MAAMpE,iBAAiB,GAAG,IAAA6D,4BAAgB,EAAgDH,MAAM,IAAK;IACnG,IAAI,CAAC9D,WAAW,CAACC,OAAO,EAAE;MACxBiE,qBAAqB,CAAC,CAAC;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAM,qBAAA;MACf,CAAAA,qBAAA,GAAAzE,WAAW,CAACC,OAAO,cAAAwE,qBAAA,eAAnBA,qBAAA,CAAqBC,aAAa,CAAC;QACjCC,KAAK,EAAE,CAAAb,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEa,KAAK,KAAI,CAAC;QACzBJ,QAAQ,EAAE,CAAAT,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAES,QAAQ,KAAI,KAAK;QACnCK,YAAY,EAAE,CAAAd,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEc,YAAY,KAAI;MACxC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAAd,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEU,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;;EAEF;EACA,MAAMnE,qBAAqB,GAAG,IAAA4D,4BAAgB,EAAoDH,MAAM,IAAK;IAC3G,IAAI,CAAC9D,WAAW,CAACC,OAAO,EAAE;MACxBiE,qBAAqB,CAAC,CAAC;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MAAA,IAAAU,qBAAA;MACf,IAAIC,YAAY,GAAG,CAAC;MACpB,IAAIhB,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEtB,SAAS,EAAE;QACrB,MAAMuC,iBAAiB,GAAGf,WAAW,CAAC/D,OAAO,CAAC+E,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACzC,SAAS,KAAKsB,MAAM,CAACtB,SAAS,CAAC;QAClG,IAAIuC,iBAAiB,GAAG,CAAC,CAAC,EAAE;UAC1BD,YAAY,GAAGC,iBAAiB;QAClC,CAAC,MAAM;UACLG,kBAAM,CAACC,IAAI,CAAC,mCAAmC,EAAErB,MAAM,CAACtB,SAAS,CAAC;UAClE;QACF;MACF;MAEA,CAAAqC,qBAAA,GAAA7E,WAAW,CAACC,OAAO,cAAA4E,qBAAA,eAAnBA,qBAAA,CAAqBH,aAAa,CAAC;QACjCC,KAAK,EAAEG,YAAY;QACnBP,QAAQ,EAAE,CAAAT,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAES,QAAQ,KAAI,KAAK;QACnCK,YAAY,EAAE,CAAAd,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEc,YAAY,KAAI;MACxC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAAd,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEU,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;EAEF,MAAMtE,eAAe,GAAG,IAAA+D,4BAAgB,EAA6C,CAACzB,SAAS,EAAE4C,OAAO,KAAK;IAC3G,IAAI,CAACpF,WAAW,CAACC,OAAO,EAAE;MACxBiE,qBAAqB,CAAC,CAAC;MACvB,OAAO,KAAK;IACd;IAEA,MAAMa,iBAAiB,GAAGpE,QAAQ,CAACqE,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACzC,SAAS,KAAKA,SAAS,CAAC;IAChF,MAAM6C,gBAAgB,GAAGN,iBAAiB,GAAG,CAAC,CAAC;IAE/C,IAAIM,gBAAgB,EAAE;MACpB,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,aAAa,EAAE;QAC1BnB,UAAU,CACR,MAAMvD,kBAAkB,CAAC;UAAE2E,aAAa,EAAE5E,QAAQ,CAACoE,iBAAiB,CAAC,CAACS;QAAU,CAAC,CAAC,EAClFC,wCACF,CAAC;MACH;MACArF,iBAAiB,CAAC;QAChBuE,KAAK,EAAEI,iBAAiB;QACxBR,QAAQ,EAAE,IAAI;QACdC,OAAO,EAAE,CAAC;QACVI,YAAY,EAAEQ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAER;MACzB,CAAC,CAAC;MACF,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF,CAAC,CAAC;EAEF,OAAO;IACL5E,WAAW;IACXI,iBAAiB;IACjBD,kBAAkB;IAClBD,eAAe;IACfG;EACF,CAAC;AACH,CAAC;AAED,MAAM6D,qBAAqB,GAAGA,CAAA,KAAM;EAClCgB,kBAAM,CAACC,IAAI,CACT,kFAAkF,GAChF,uDACJ,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -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 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 renderUnreadMessagesFloating?: GroupChannelProps['MessageList']['renderUnreadMessagesFloating'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListComponent?: GroupChannelProps['MessageList']['flatListComponent'];\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 | 'renderUnreadMessagesFloating'\n | 'flatListComponent'\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 hasPrevious?: () => boolean;\n resetNewMessages?: () => void;\n isNewLineExistInChannel?: boolean;\n onNewLineSeenChange?: (hasSeenNewLine: boolean) => void;\n onUserMarkedAsUnreadChange?: (hasUserMarkedAsUnread: boolean) => 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 | {\n type: 'ON_MARKED_AS_READ_BY_CURRENT_USER';\n data?: undefined;\n }\n | {\n type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER';\n data?: undefined;\n };\n"],"mappings":"","ignoreList":[]}
|
|
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 renderUnreadMessagesFloating?: GroupChannelProps['MessageList']['renderUnreadMessagesFloating'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListComponent?: GroupChannelProps['MessageList']['flatListComponent'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n partialTextInputProps?: GroupChannelProps['Input']['partialTextInputProps'];\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 | 'renderUnreadMessagesFloating'\n | 'flatListComponent'\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 hasPrevious?: () => boolean;\n resetNewMessages?: () => void;\n isNewLineExistInChannel?: boolean;\n onNewLineSeenChange?: (hasSeenNewLine: boolean) => void;\n onUserMarkedAsUnreadChange?: (hasUserMarkedAsUnread: boolean) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton'\n | 'partialTextInputProps',\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 * Call the FlatList function asynchronously to scroll to a message by messageId lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToMessageId: (params?: {\n messageId?: 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 | {\n type: 'ON_MARKED_AS_READ_BY_CURRENT_USER';\n data?: undefined;\n }\n | {\n type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER';\n data?: undefined;\n };\n"],"mappings":"","ignoreList":[]}
|
|
@@ -46,6 +46,7 @@ const createGroupChannelFragment = initModule => {
|
|
|
46
46
|
flatListComponent,
|
|
47
47
|
flatListProps,
|
|
48
48
|
messageListQueryParams,
|
|
49
|
+
partialTextInputProps,
|
|
49
50
|
collectionCreator
|
|
50
51
|
}) => {
|
|
51
52
|
const {
|
|
@@ -308,7 +309,8 @@ const createGroupChannelFragment = initModule => {
|
|
|
308
309
|
onPressSendUserMessage: onPressSendUserMessage,
|
|
309
310
|
onPressSendFileMessage: onPressSendFileMessage,
|
|
310
311
|
onPressUpdateUserMessage: onPressUpdateUserMessage,
|
|
311
|
-
onPressUpdateFileMessage: onPressUpdateFileMessage
|
|
312
|
+
onPressUpdateFileMessage: onPressUpdateFileMessage,
|
|
313
|
+
partialTextInputProps: partialTextInputProps
|
|
312
314
|
})));
|
|
313
315
|
};
|
|
314
316
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_groupChannel","_message","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_GroupChannelMessageRenderer","_NewMessagesButton","_interopRequireDefault","_ScrollToBottomButton","_StatusComposition","_UnreadMessagesFloating","_createGroupChannelModule","_useContext","_pubsub","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","searchItem","renderUnreadMessagesFloating","props","createElement","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","messageComparator","flatListComponent","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","voiceMessageStatusManager","useSendbirdChat","toast","useToast","STRINGS","useLocalization","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","isNewLineExistInChannel","setIsNewLineExistInChannel","hasSeenNewLineRef","useRef","hasUserMarkedAsUnreadRef","useEffect","_channel$lastMessage","myLastRead","lastMessage","createdAt","Number","MIN_SAFE_INTEGER","url","onNewLineSeenChange","useFreshCallback","hasSeenNewLine","current","onUserMarkedAsUnreadChange","hasUserMarkedAsUnread","markAsRead","channels","enableMarkAsUnread","confirmAndMarkAsRead","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","hasPrevious","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","shouldCountNewMessages","onMessagesReceived","publish","type","data","onMessagesUpdated","onChannelUpdated","_","ctx","source","GroupChannelEventSource","EVENT_CHANNEL_READ","userIds","includes","userId","EVENT_CHANNEL_UNREAD","onCurrentUserBanned","getCollectionCreator","startingPoint","onBlurFragment","reset","catch","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","clear","renderItem","content","Box","isFirstItem","GroupChannelTypingIndicatorBubble","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","getReadableFileSize","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter","MessageFilter","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n type GroupChannel,\n GroupChannelEventSource,\n MessageCollection,\n MessageFilter,\n} 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 UnreadMessagesFloating from '../components/UnreadMessagesFloating';\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 renderUnreadMessagesFloating = (props) => <UnreadMessagesFloating {...props} />,\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 flatListComponent,\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 [isNewLineExistInChannel, setIsNewLineExistInChannel] = useState(false);\n const hasSeenNewLineRef = useRef(false);\n const hasUserMarkedAsUnreadRef = useRef(false);\n\n useEffect(() => {\n setIsNewLineExistInChannel(channel.myLastRead < (channel.lastMessage?.createdAt ?? Number.MIN_SAFE_INTEGER));\n }, [channel.url]);\n\n const onNewLineSeenChange = useFreshCallback((hasSeenNewLine: boolean) => {\n hasSeenNewLineRef.current = hasSeenNewLine;\n });\n\n const onUserMarkedAsUnreadChange = useFreshCallback((hasUserMarkedAsUnread: boolean) => {\n hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;\n });\n\n const markAsRead = useFreshCallback((channels: GroupChannel[]) => {\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n if (\n !scrolledAwayFromBottom &&\n !hasUserMarkedAsUnreadRef.current &&\n (hasSeenNewLineRef.current || !isNewLineExistInChannel)\n ) {\n confirmAndMarkAsRead(channels, true);\n }\n } else {\n confirmAndMarkAsRead(channels);\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n hasPrevious,\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 onChannelUpdated(_, ctx) {\n if (ctx?.source === GroupChannelEventSource.EVENT_CHANNEL_READ) {\n if (ctx.userIds.includes(currentUser?.userId ?? '')) {\n groupChannelPubSub.publish({ type: 'ON_MARKED_AS_READ_BY_CURRENT_USER' });\n }\n } else if (ctx?.source === GroupChannelEventSource.EVENT_CHANNEL_UNREAD) {\n if (ctx.userIds.includes(currentUser?.userId ?? '')) {\n setIsNewLineExistInChannel(true);\n groupChannelPubSub.publish({ type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER' });\n }\n }\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: markAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = async () => {\n await playerService.reset().catch(() => {});\n await recorderService.reset().catch(() => {});\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 const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n voiceMessageStatusManager.clear();\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)}`;\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) {\n resetNewMessages();\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n if (!hasUserMarkedAsUnreadRef.current && (hasSeenNewLineRef.current || !isNewLineExistInChannel)) {\n confirmAndMarkAsRead([channel]);\n }\n }\n }\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 hasPrevious={hasPrevious}\n resetNewMessages={resetNewMessages}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n renderUnreadMessagesFloating={renderUnreadMessagesFloating}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListComponent={flatListComponent}\n flatListProps={memoizedFlatListProps}\n isNewLineExistInChannel={isNewLineExistInChannel}\n onNewLineSeenChange={onNewLineSeenChange}\n onUserMarkedAsUnreadChange={onUserMarkedAsUnreadChange}\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_groupChannel","_message","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_GroupChannelMessageRenderer","_NewMessagesButton","_interopRequireDefault","_ScrollToBottomButton","_StatusComposition","_UnreadMessagesFloating","_createGroupChannelModule","_useContext","_pubsub","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","searchItem","renderUnreadMessagesFloating","props","createElement","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","messageComparator","flatListComponent","flatListProps","messageListQueryParams","partialTextInputProps","collectionCreator","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","voiceMessageStatusManager","useSendbirdChat","toast","useToast","STRINGS","useLocalization","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","isNewLineExistInChannel","setIsNewLineExistInChannel","hasSeenNewLineRef","useRef","hasUserMarkedAsUnreadRef","useEffect","_channel$lastMessage","myLastRead","lastMessage","createdAt","Number","MIN_SAFE_INTEGER","url","onNewLineSeenChange","useFreshCallback","hasSeenNewLine","current","onUserMarkedAsUnreadChange","hasUserMarkedAsUnread","markAsRead","channels","enableMarkAsUnread","confirmAndMarkAsRead","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","hasPrevious","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","shouldCountNewMessages","onMessagesReceived","publish","type","data","onMessagesUpdated","onChannelUpdated","_","ctx","source","GroupChannelEventSource","EVENT_CHANNEL_READ","userIds","includes","userId","EVENT_CHANNEL_UNREAD","onCurrentUserBanned","getCollectionCreator","startingPoint","onBlurFragment","reset","catch","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","clear","renderItem","content","Box","isFirstItem","GroupChannelTypingIndicatorBubble","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","getReadableFileSize","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter","MessageFilter","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n type GroupChannel,\n GroupChannelEventSource,\n MessageCollection,\n MessageFilter,\n} 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 UnreadMessagesFloating from '../components/UnreadMessagesFloating';\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 renderUnreadMessagesFloating = (props) => <UnreadMessagesFloating {...props} />,\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 flatListComponent,\n flatListProps,\n messageListQueryParams,\n partialTextInputProps,\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 [isNewLineExistInChannel, setIsNewLineExistInChannel] = useState(false);\n const hasSeenNewLineRef = useRef(false);\n const hasUserMarkedAsUnreadRef = useRef(false);\n\n useEffect(() => {\n setIsNewLineExistInChannel(channel.myLastRead < (channel.lastMessage?.createdAt ?? Number.MIN_SAFE_INTEGER));\n }, [channel.url]);\n\n const onNewLineSeenChange = useFreshCallback((hasSeenNewLine: boolean) => {\n hasSeenNewLineRef.current = hasSeenNewLine;\n });\n\n const onUserMarkedAsUnreadChange = useFreshCallback((hasUserMarkedAsUnread: boolean) => {\n hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;\n });\n\n const markAsRead = useFreshCallback((channels: GroupChannel[]) => {\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n if (\n !scrolledAwayFromBottom &&\n !hasUserMarkedAsUnreadRef.current &&\n (hasSeenNewLineRef.current || !isNewLineExistInChannel)\n ) {\n confirmAndMarkAsRead(channels, true);\n }\n } else {\n confirmAndMarkAsRead(channels);\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n hasPrevious,\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 onChannelUpdated(_, ctx) {\n if (ctx?.source === GroupChannelEventSource.EVENT_CHANNEL_READ) {\n if (ctx.userIds.includes(currentUser?.userId ?? '')) {\n groupChannelPubSub.publish({ type: 'ON_MARKED_AS_READ_BY_CURRENT_USER' });\n }\n } else if (ctx?.source === GroupChannelEventSource.EVENT_CHANNEL_UNREAD) {\n if (ctx.userIds.includes(currentUser?.userId ?? '')) {\n setIsNewLineExistInChannel(true);\n groupChannelPubSub.publish({ type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER' });\n }\n }\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: markAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = async () => {\n await playerService.reset().catch(() => {});\n await recorderService.reset().catch(() => {});\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 const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n voiceMessageStatusManager.clear();\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)}`;\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) {\n resetNewMessages();\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n if (!hasUserMarkedAsUnreadRef.current && (hasSeenNewLineRef.current || !isNewLineExistInChannel)) {\n confirmAndMarkAsRead([channel]);\n }\n }\n }\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 hasPrevious={hasPrevious}\n resetNewMessages={resetNewMessages}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n renderUnreadMessagesFloating={renderUnreadMessagesFloating}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListComponent={flatListComponent}\n flatListProps={memoizedFlatListProps}\n isNewLineExistInChannel={isNewLineExistInChannel}\n onNewLineSeenChange={onNewLineSeenChange}\n onUserMarkedAsUnreadChange={onUserMarkedAsUnreadChange}\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 partialTextInputProps={partialTextInputProps}\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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","ignoreList":[]}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.10.
|
|
1
|
+
{"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.10.3';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,QAAQ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACVH,OAAO","ignoreList":[]}
|