@sendbird/uikit-react-native 3.9.6 → 3.10.1
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/index.js +13 -2
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +57 -9
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +53 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +5 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/UnreadMessagesFloating.js +77 -0
- package/lib/commonjs/components/UnreadMessagesFloating.js.map +1 -0
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +156 -7
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +57 -3
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +16 -2
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js +13 -2
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +57 -9
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +46 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js +5 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/UnreadMessagesFloating.js +70 -0
- package/lib/module/components/UnreadMessagesFloating.js.map +1 -0
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +158 -9
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +59 -5
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +16 -2
- package/lib/module/localization/createBaseStringSet.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +8 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.d.ts +6 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +1 -0
- package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
- package/lib/typescript/src/components/UnreadMessagesFloating.d.ts +8 -0
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +6 -1
- package/lib/typescript/src/domain/groupChannel/types.d.ts +13 -1
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
- package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
- package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +8 -7
- package/src/components/ChannelInput/index.tsx +17 -6
- package/src/components/ChannelMessageList/index.tsx +71 -5
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.tsx +45 -0
- package/src/components/GroupChannelMessageRenderer/index.tsx +5 -0
- package/src/components/UnreadMessagesFloating.tsx +60 -0
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +204 -5
- package/src/domain/groupChannel/types.ts +15 -0
- package/src/fragments/createGroupChannelFragment.tsx +67 -4
- package/src/localization/StringSet.type.ts +3 -0
- package/src/localization/createBaseStringSet.ts +16 -4
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_moduleContext","_useContext","_types","_ReactionAddons","_GroupChannelMessageDateSeparator","_interopRequireDefault","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","_GroupChannelMessageReplyInfo","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","GroupChannelMessageRenderer","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","onReplyInThreadMessage","enableMessageGrouping","focused","prevMessage","nextMessage","hideParentMessage","handlers","useSBUHandlers","playerUnsubscribes","useRef","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","voiceMessageStatusManager","useSendbirdChat","STRINGS","useLocalization","mediaService","playerService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","uikit","groupChannel","replyType","shouldRenderParentMessage","variant","isMyMessage","userId","reactionChildren","useIIFE","configs","uikitWithAppInfo","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","reactions","createElement","ReactionAddons","Message","replyInfo","threadInfo","replyCount","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","stopped","setCurrentTime","channelUrl","messageId","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","match","groups","parentProps","index","keyPrefix","_message$mentionedUse","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","key","_messageProps$onPress","suppressHighlighting","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","initialCurrentTime","getCurrentTime","onSubscribeStatus","subscribe","onUnsubscribeStatus","onUnmount","catch","_","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","useContext","GroupChannelContexts","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","TypingIndicatorType","Bubble","useEffect","type","marginTop","TypingIndicatorBubble","exports","_default","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\nimport GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n onReplyInThreadMessage,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n hideParentMessage,\n}) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n sbOptions.uikit.groupChannel.channel.replyType === 'thread',\n shouldRenderParentMessage(message, hideParentMessage),\n );\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const reactionChildren = useIIFE(() => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (\n shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const replyInfo = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType !== 'thread') return null;\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n return <GroupChannelMessageReplyInfo channel={channel} message={message} onPress={onReplyInThreadMessage} />;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => handlers.onOpenURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n voiceMessageStatusManager.setCurrentTime(message.channelUrl, message.messageId, stopped ? 0 : currentTime);\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n replyInfo: replyInfo,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message, hideParentMessage) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate ?? '';\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n suppressHighlighting\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n initialCurrentTime={voiceMessageStatusManager.getCurrentTime(message.channelUrl, message.messageId)}\n onSubscribeStatus={voiceMessageStatusManager.subscribe}\n onUnsubscribeStatus={voiceMessageStatusManager.unsubscribe}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer().catch((_) => {});\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage, hideParentMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_moduleContext","_useContext","_types","_ReactionAddons","_GroupChannelMessageDateSeparator","_interopRequireDefault","_GroupChannelMessageFocusAnimation","_GroupChannelMessageNewLine","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","_GroupChannelMessageReplyInfo","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","GroupChannelMessageRenderer","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","onReplyInThreadMessage","enableMessageGrouping","focused","prevMessage","nextMessage","isFirstUnreadMessage","hideParentMessage","handlers","useSBUHandlers","playerUnsubscribes","useRef","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","voiceMessageStatusManager","useSendbirdChat","STRINGS","useLocalization","mediaService","playerService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","uikit","groupChannel","replyType","shouldRenderParentMessage","variant","isMyMessage","userId","reactionChildren","useIIFE","configs","uikitWithAppInfo","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","reactions","createElement","ReactionAddons","Message","replyInfo","threadInfo","replyCount","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","stopped","setCurrentTime","channelUrl","messageId","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","match","groups","parentProps","index","keyPrefix","_message$mentionedUse","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","key","_messageProps$onPress","suppressHighlighting","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","initialCurrentTime","getCurrentTime","onSubscribeStatus","subscribe","onUnsubscribeStatus","onUnmount","catch","_","Unknown","messageGap","isAdminMessage","shouldRenderNewLine","enableMarkAsUnread","Box","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","useContext","GroupChannelContexts","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","TypingIndicatorType","Bubble","useEffect","type","marginTop","TypingIndicatorBubble","exports","_default","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageNewLine from './GroupChannelMessageNewLine';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\nimport GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n onReplyInThreadMessage,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n isFirstUnreadMessage,\n hideParentMessage,\n}) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n sbOptions.uikit.groupChannel.channel.replyType === 'thread',\n shouldRenderParentMessage(message, hideParentMessage),\n );\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const reactionChildren = useIIFE(() => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (\n shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const replyInfo = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType !== 'thread') return null;\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n return <GroupChannelMessageReplyInfo channel={channel} message={message} onPress={onReplyInThreadMessage} />;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => handlers.onOpenURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n voiceMessageStatusManager.setCurrentTime(message.channelUrl, message.messageId, stopped ? 0 : currentTime);\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n replyInfo: replyInfo,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message, hideParentMessage) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate ?? '';\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n suppressHighlighting\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n initialCurrentTime={voiceMessageStatusManager.getCurrentTime(message.channelUrl, message.messageId)}\n onSubscribeStatus={voiceMessageStatusManager.subscribe}\n onUnsubscribeStatus={voiceMessageStatusManager.unsubscribe}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer().catch((_) => {});\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage, hideParentMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n const shouldRenderNewLine = sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && isFirstUnreadMessage;\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageNewLine shouldRenderNewLine={shouldRenderNewLine} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
|
|
10
|
+
var _useContext = require("../hooks/useContext");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
const UnreadMessagesFloating = ({
|
|
13
|
+
unreadMessageCount,
|
|
14
|
+
visible,
|
|
15
|
+
onPressClose
|
|
16
|
+
}) => {
|
|
17
|
+
const {
|
|
18
|
+
STRINGS
|
|
19
|
+
} = (0, _useContext.useLocalization)();
|
|
20
|
+
const {
|
|
21
|
+
select,
|
|
22
|
+
palette,
|
|
23
|
+
colors
|
|
24
|
+
} = (0, _uikitReactNativeFoundation.useUIKitTheme)();
|
|
25
|
+
if (unreadMessageCount <= 0 || !visible) return null;
|
|
26
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
27
|
+
style: [styles.container, {
|
|
28
|
+
backgroundColor: select({
|
|
29
|
+
dark: palette.background400,
|
|
30
|
+
light: palette.background50
|
|
31
|
+
})
|
|
32
|
+
}]
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
34
|
+
body2: true,
|
|
35
|
+
color: colors.onBackground02
|
|
36
|
+
}, STRINGS.GROUP_CHANNEL.LIST_FLOATING_UNREAD_MSG(unreadMessageCount)), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
37
|
+
onPress: onPressClose,
|
|
38
|
+
style: {
|
|
39
|
+
marginLeft: 4
|
|
40
|
+
},
|
|
41
|
+
hitSlop: {
|
|
42
|
+
top: 12,
|
|
43
|
+
bottom: 12,
|
|
44
|
+
left: 14,
|
|
45
|
+
right: 38
|
|
46
|
+
}
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
|
|
48
|
+
icon: 'close',
|
|
49
|
+
size: 14
|
|
50
|
+
})));
|
|
51
|
+
};
|
|
52
|
+
const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
|
|
53
|
+
container: {
|
|
54
|
+
flexDirection: 'row',
|
|
55
|
+
justifyContent: 'flex-start',
|
|
56
|
+
alignItems: 'center',
|
|
57
|
+
paddingHorizontal: 16,
|
|
58
|
+
paddingVertical: 12,
|
|
59
|
+
borderRadius: 20,
|
|
60
|
+
..._reactNative.Platform.select({
|
|
61
|
+
android: {
|
|
62
|
+
elevation: 3
|
|
63
|
+
},
|
|
64
|
+
ios: {
|
|
65
|
+
shadowColor: 'black',
|
|
66
|
+
shadowRadius: 3,
|
|
67
|
+
shadowOffset: {
|
|
68
|
+
width: 0,
|
|
69
|
+
height: 4
|
|
70
|
+
},
|
|
71
|
+
shadowOpacity: 0.08
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
var _default = exports.default = /*#__PURE__*/_react.default.memo(UnreadMessagesFloating);
|
|
77
|
+
//# sourceMappingURL=UnreadMessagesFloating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_uikitReactNativeFoundation","_useContext","e","__esModule","default","UnreadMessagesFloating","unreadMessageCount","visible","onPressClose","STRINGS","useLocalization","select","palette","colors","useUIKitTheme","createElement","View","style","styles","container","backgroundColor","dark","background400","light","background50","Text","body2","color","onBackground02","GROUP_CHANNEL","LIST_FLOATING_UNREAD_MSG","TouchableOpacity","onPress","marginLeft","hitSlop","top","bottom","left","right","Icon","icon","size","createStyleSheet","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","borderRadius","Platform","android","elevation","ios","shadowColor","shadowRadius","shadowOffset","width","height","shadowOpacity","_default","exports","React","memo"],"sources":["UnreadMessagesFloating.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../hooks/useContext';\n\nexport type UnreadMessagesFloatingProps = {\n unreadMessageCount: number;\n visible: boolean;\n onPressClose: () => void;\n};\nconst UnreadMessagesFloating = ({ unreadMessageCount, visible, onPressClose }: UnreadMessagesFloatingProps) => {\n const { STRINGS } = useLocalization();\n const { select, palette, colors } = useUIKitTheme();\n if (unreadMessageCount <= 0 || !visible) return null;\n return (\n <View\n style={[\n styles.container,\n { backgroundColor: select({ dark: palette.background400, light: palette.background50 }) },\n ]}\n >\n <Text body2 color={colors.onBackground02}>\n {STRINGS.GROUP_CHANNEL.LIST_FLOATING_UNREAD_MSG(unreadMessageCount)}\n </Text>\n <TouchableOpacity\n onPress={onPressClose}\n style={{ marginLeft: 4 }}\n hitSlop={{ top: 12, bottom: 12, left: 14, right: 38 }}\n >\n <Icon icon={'close'} size={14} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n borderRadius: 20,\n ...Platform.select({\n android: {\n elevation: 3,\n },\n ios: {\n shadowColor: 'black',\n shadowRadius: 3,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.08,\n },\n }),\n },\n});\n\nexport default React.memo(UnreadMessagesFloating);\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,2BAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AAAsD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAOtD,MAAMG,sBAAsB,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC,OAAO;EAAEC;AAA0C,CAAC,KAAK;EAC7G,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EACrC,MAAM;IAAEC,MAAM;IAAEC,OAAO;IAAEC;EAAO,CAAC,GAAG,IAAAC,yCAAa,EAAC,CAAC;EACnD,IAAIR,kBAAkB,IAAI,CAAC,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EACpD,oBACEX,MAAA,CAAAQ,OAAA,CAAAW,aAAA,CAAChB,YAAA,CAAAiB,IAAI;IACHC,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAEC,eAAe,EAAET,MAAM,CAAC;QAAEU,IAAI,EAAET,OAAO,CAACU,aAAa;QAAEC,KAAK,EAAEX,OAAO,CAACY;MAAa,CAAC;IAAE,CAAC;EACzF,gBAEF5B,MAAA,CAAAQ,OAAA,CAAAW,aAAA,CAACf,2BAAA,CAAAyB,IAAI;IAACC,KAAK;IAACC,KAAK,EAAEd,MAAM,CAACe;EAAe,GACtCnB,OAAO,CAACoB,aAAa,CAACC,wBAAwB,CAACxB,kBAAkB,CAC9D,CAAC,eACPV,MAAA,CAAAQ,OAAA,CAAAW,aAAA,CAAChB,YAAA,CAAAgC,gBAAgB;IACfC,OAAO,EAAExB,YAAa;IACtBS,KAAK,EAAE;MAAEgB,UAAU,EAAE;IAAE,CAAE;IACzBC,OAAO,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,MAAM,EAAE,EAAE;MAAEC,IAAI,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAG;EAAE,gBAEtD1C,MAAA,CAAAQ,OAAA,CAAAW,aAAA,CAACf,2BAAA,CAAAuC,IAAI;IAACC,IAAI,EAAE,OAAQ;IAACC,IAAI,EAAE;EAAG,CAAE,CAChB,CACd,CAAC;AAEX,CAAC;AAED,MAAMvB,MAAM,GAAG,IAAAwB,4CAAgB,EAAC;EAC9BvB,SAAS,EAAE;IACTwB,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,YAAY;IAC5BC,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,YAAY,EAAE,EAAE;IAChB,GAAGC,qBAAQ,CAACtC,MAAM,CAAC;MACjBuC,OAAO,EAAE;QACPC,SAAS,EAAE;MACb,CAAC;MACDC,GAAG,EAAE;QACHC,WAAW,EAAE,OAAO;QACpBC,YAAY,EAAE,CAAC;QACfC,YAAY,EAAE;UAAEC,KAAK,EAAE,CAAC;UAAEC,MAAM,EAAE;QAAE,CAAC;QACrCC,aAAa,EAAE;MACjB;IACF,CAAC;EACH;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAxD,OAAA,gBAEYyD,cAAK,CAACC,IAAI,CAACzD,sBAAsB,CAAC","ignoreList":[]}
|
|
@@ -30,9 +30,7 @@ const GroupChannelMessageList = props => {
|
|
|
30
30
|
setMessageToEdit,
|
|
31
31
|
setMessageToReply
|
|
32
32
|
} = (0, _react.useContext)(_moduleContext.GroupChannelContexts.Fragment);
|
|
33
|
-
const
|
|
34
|
-
subscribe
|
|
35
|
-
} = (0, _react.useContext)(_moduleContext.GroupChannelContexts.PubSub);
|
|
33
|
+
const groupChannelPubSub = (0, _react.useContext)(_moduleContext.GroupChannelContexts.PubSub);
|
|
36
34
|
const {
|
|
37
35
|
flatListRef,
|
|
38
36
|
lazyScrollToBottom,
|
|
@@ -40,6 +38,28 @@ const GroupChannelMessageList = props => {
|
|
|
40
38
|
onPressReplyMessageInThread
|
|
41
39
|
} = (0, _react.useContext)(_moduleContext.GroupChannelContexts.MessageList);
|
|
42
40
|
const isFirstMount = (0, _uikitUtils.useIsFirstMount)();
|
|
41
|
+
const hasSeenNewLineRef = (0, _react.useRef)(false);
|
|
42
|
+
const isNewLineInViewportRef = (0, _react.useRef)(false);
|
|
43
|
+
const isNewLineExistInChannelRef = (0, _react.useRef)(false);
|
|
44
|
+
const scrolledAwayFromBottomRef = (0, _react.useRef)(false);
|
|
45
|
+
const [isVisibleUnreadMessageFloating, setIsVisibleUnreadMessageFloating] = (0, _react.useState)(false);
|
|
46
|
+
const viewableMessages = (0, _react.useRef)();
|
|
47
|
+
const hasUserMarkedAsUnreadRef = (0, _react.useRef)(false);
|
|
48
|
+
const [unreadFirstMessage, setUnreadFirstMessage] = (0, _react.useState)(undefined);
|
|
49
|
+
const updateHasSeenNewLine = (0, _react.useCallback)(hasSeenNewLine => {
|
|
50
|
+
if (hasSeenNewLineRef.current !== hasSeenNewLine) {
|
|
51
|
+
var _props$onNewLineSeenC;
|
|
52
|
+
hasSeenNewLineRef.current = hasSeenNewLine;
|
|
53
|
+
(_props$onNewLineSeenC = props.onNewLineSeenChange) === null || _props$onNewLineSeenC === void 0 || _props$onNewLineSeenC.call(props, hasSeenNewLine);
|
|
54
|
+
}
|
|
55
|
+
}, [props.onNewLineSeenChange]);
|
|
56
|
+
const updateHasUserMarkedAsUnread = (0, _react.useCallback)(hasUserMarkedAsUnread => {
|
|
57
|
+
if (hasUserMarkedAsUnreadRef.current !== hasUserMarkedAsUnread) {
|
|
58
|
+
var _props$onUserMarkedAs;
|
|
59
|
+
hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;
|
|
60
|
+
(_props$onUserMarkedAs = props.onUserMarkedAsUnreadChange) === null || _props$onUserMarkedAs === void 0 || _props$onUserMarkedAs.call(props, hasUserMarkedAsUnread);
|
|
61
|
+
}
|
|
62
|
+
}, [props.onUserMarkedAsUnreadChange]);
|
|
43
63
|
const scrollToMessageWithCreatedAt = (0, _uikitUtils.useFreshCallback)((createdAt, focusAnimated, timeout) => {
|
|
44
64
|
const foundMessageIndex = props.messages.findIndex(it => it.createdAt === createdAt);
|
|
45
65
|
const isIncludedInList = foundMessageIndex > -1;
|
|
@@ -68,12 +88,16 @@ const GroupChannelMessageList = props => {
|
|
|
68
88
|
}
|
|
69
89
|
return true;
|
|
70
90
|
});
|
|
91
|
+
const onScrolledAwayFromBottom = (0, _uikitUtils.useFreshCallback)(value => {
|
|
92
|
+
scrolledAwayFromBottomRef.current = value;
|
|
93
|
+
props.onScrolledAwayFromBottom(value);
|
|
94
|
+
});
|
|
71
95
|
const scrollToBottom = (0, _uikitUtils.useFreshCallback)(async (animated = false) => {
|
|
72
96
|
if (props.hasNext()) {
|
|
73
97
|
props.onUpdateSearchItem(undefined);
|
|
74
|
-
|
|
98
|
+
onScrolledAwayFromBottom(false);
|
|
75
99
|
await props.onResetMessageList().catch(_ => {});
|
|
76
|
-
|
|
100
|
+
onScrolledAwayFromBottom(false);
|
|
77
101
|
lazyScrollToBottom({
|
|
78
102
|
animated
|
|
79
103
|
});
|
|
@@ -83,6 +107,107 @@ const GroupChannelMessageList = props => {
|
|
|
83
107
|
});
|
|
84
108
|
}
|
|
85
109
|
});
|
|
110
|
+
const onPressUnreadMessagesFloatingCloseButton = (0, _react.useCallback)(() => {
|
|
111
|
+
var _props$resetNewMessag;
|
|
112
|
+
updateHasSeenNewLine(true);
|
|
113
|
+
updateHasUserMarkedAsUnread(false);
|
|
114
|
+
(_props$resetNewMessag = props.resetNewMessages) === null || _props$resetNewMessag === void 0 || _props$resetNewMessag.call(props);
|
|
115
|
+
(0, _uikitUtils.confirmAndMarkAsRead)([props.channel]);
|
|
116
|
+
}, [updateHasSeenNewLine, updateHasUserMarkedAsUnread, props.channel.url, props.resetNewMessages]);
|
|
117
|
+
const getPrevNonSilentMessage = (0, _react.useCallback)((messages, prevMessageIndex) => {
|
|
118
|
+
if (messages.length <= prevMessageIndex) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const prevMessage = messages[prevMessageIndex];
|
|
122
|
+
if (prevMessage) {
|
|
123
|
+
if (prevMessage.silent) {
|
|
124
|
+
return getPrevNonSilentMessage(messages, prevMessageIndex + 1);
|
|
125
|
+
} else {
|
|
126
|
+
return prevMessage;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}, []);
|
|
131
|
+
const findFirstUnreadMessage = (0, _uikitUtils.useFreshCallback)(isNewLineExistInChannel => {
|
|
132
|
+
if (!sbOptions.uikit.groupChannel.channel.enableMarkAsUnread || !isNewLineExistInChannel) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
return props.messages.find((msg, index) => {
|
|
136
|
+
var _props$hasPrevious;
|
|
137
|
+
if (msg.silent) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
const isMarkedAsUnreadMessage = props.channel.myLastRead === msg.createdAt - 1;
|
|
141
|
+
if (isMarkedAsUnreadMessage) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
const prevNonSilentMessage = getPrevNonSilentMessage(props.messages, index + 1);
|
|
145
|
+
const hasNoPreviousAndNoPrevMessage = !((_props$hasPrevious = props.hasPrevious) !== null && _props$hasPrevious !== void 0 && _props$hasPrevious.call(props)) && prevNonSilentMessage == null;
|
|
146
|
+
const prevMessageIsRead = prevNonSilentMessage != null && prevNonSilentMessage.createdAt <= props.channel.myLastRead;
|
|
147
|
+
const isMessageUnread = props.channel.myLastRead < msg.createdAt;
|
|
148
|
+
return (hasNoPreviousAndNoPrevMessage || prevMessageIsRead) && isMessageUnread;
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
(0, _react.useEffect)(() => {
|
|
152
|
+
if (!unreadFirstMessage) {
|
|
153
|
+
const foundUnreadFirstMessage = findFirstUnreadMessage(props.isNewLineExistInChannel ?? false);
|
|
154
|
+
if (foundUnreadFirstMessage) {
|
|
155
|
+
processNewLineVisibility(foundUnreadFirstMessage);
|
|
156
|
+
setUnreadFirstMessage(foundUnreadFirstMessage);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}, [props.messages, props.channel.myLastRead, sbOptions.uikit.groupChannel.channel.enableMarkAsUnread]);
|
|
160
|
+
const processNewLineVisibility = (0, _uikitUtils.useFreshCallback)(unreadFirstMsg => {
|
|
161
|
+
var _viewableMessages$cur;
|
|
162
|
+
const isNewLineInViewport = !!((_viewableMessages$cur = viewableMessages.current) !== null && _viewableMessages$cur !== void 0 && _viewableMessages$cur.some(message => message.messageId === (unreadFirstMsg === null || unreadFirstMsg === void 0 ? void 0 : unreadFirstMsg.messageId)));
|
|
163
|
+
if (isNewLineInViewportRef.current !== isNewLineInViewport) {
|
|
164
|
+
isNewLineInViewportRef.current = isNewLineInViewport;
|
|
165
|
+
updateUnreadMessagesFloatingProps();
|
|
166
|
+
if (!isNewLineInViewport || hasSeenNewLineRef.current) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
updateHasSeenNewLine(true);
|
|
170
|
+
if (hasUserMarkedAsUnreadRef.current) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (0 < props.newMessages.length) {
|
|
174
|
+
props.channel.markAsUnread(props.newMessages[0]);
|
|
175
|
+
} else {
|
|
176
|
+
props.channel.markAsRead();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
const onViewableItemsChanged = (0, _uikitUtils.useFreshCallback)(async info => {
|
|
181
|
+
if (!sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
viewableMessages.current = info.viewableItems.filter(token => token.item).map(token => token.item);
|
|
185
|
+
processNewLineVisibility(unreadFirstMessage);
|
|
186
|
+
});
|
|
187
|
+
const onPressMarkAsUnreadMessage = (0, _react.useCallback)(async message => {
|
|
188
|
+
if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && message) {
|
|
189
|
+
await props.channel.markAsUnread(message);
|
|
190
|
+
updateHasUserMarkedAsUnread(true);
|
|
191
|
+
}
|
|
192
|
+
}, [sbOptions.uikit.groupChannel.channel.enableMarkAsUnread, updateHasUserMarkedAsUnread]);
|
|
193
|
+
(0, _react.useEffect)(() => {
|
|
194
|
+
isNewLineExistInChannelRef.current = !!props.isNewLineExistInChannel && !!viewableMessages.current;
|
|
195
|
+
}, [props.isNewLineExistInChannel, viewableMessages.current]);
|
|
196
|
+
const unreadMessagesFloatingPropsRef = (0, _react.useRef)();
|
|
197
|
+
const updateUnreadMessagesFloatingProps = (0, _uikitUtils.useFreshCallback)(() => {
|
|
198
|
+
const canAutoMarkAsRead = !scrolledAwayFromBottomRef.current && !hasUserMarkedAsUnreadRef.current && (hasSeenNewLineRef.current || !isNewLineExistInChannelRef.current);
|
|
199
|
+
unreadMessagesFloatingPropsRef.current = {
|
|
200
|
+
visible: sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && !canAutoMarkAsRead && isNewLineExistInChannelRef.current && 0 < props.channel.unreadMessageCount && !isNewLineInViewportRef.current,
|
|
201
|
+
onPressClose: onPressUnreadMessagesFloatingCloseButton,
|
|
202
|
+
unreadMessageCount: props.channel.unreadMessageCount
|
|
203
|
+
};
|
|
204
|
+
if (isVisibleUnreadMessageFloating !== unreadMessagesFloatingPropsRef.current.visible) {
|
|
205
|
+
setIsVisibleUnreadMessageFloating(unreadMessagesFloatingPropsRef.current.visible);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
(0, _react.useEffect)(() => {
|
|
209
|
+
updateUnreadMessagesFloatingProps();
|
|
210
|
+
}, [isNewLineExistInChannelRef.current, props.channel.unreadMessageCount, sbOptions.uikit.groupChannel.channel.enableMarkAsUnread]);
|
|
86
211
|
(0, _uikitTools.useGroupChannelHandler)(sdk, {
|
|
87
212
|
onReactionUpdated(channel, event) {
|
|
88
213
|
if ((0, _uikitUtils.isDifferentChannel)(channel, props.channel)) return;
|
|
@@ -95,10 +220,13 @@ const GroupChannelMessageList = props => {
|
|
|
95
220
|
timeout: 250
|
|
96
221
|
});
|
|
97
222
|
}
|
|
223
|
+
},
|
|
224
|
+
onChannelChanged(channel) {
|
|
225
|
+
if ((0, _uikitUtils.isDifferentChannel)(channel, props.channel)) return;
|
|
98
226
|
}
|
|
99
227
|
});
|
|
100
228
|
(0, _react.useEffect)(() => {
|
|
101
|
-
return subscribe(({
|
|
229
|
+
return groupChannelPubSub.subscribe(({
|
|
102
230
|
type,
|
|
103
231
|
data
|
|
104
232
|
}) => {
|
|
@@ -130,6 +258,22 @@ const GroupChannelMessageList = props => {
|
|
|
130
258
|
scrollToBottom(false);
|
|
131
259
|
break;
|
|
132
260
|
}
|
|
261
|
+
case 'ON_MARKED_AS_READ_BY_CURRENT_USER':
|
|
262
|
+
{
|
|
263
|
+
updateUnreadMessagesFloatingProps();
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
case 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER':
|
|
267
|
+
{
|
|
268
|
+
isNewLineExistInChannelRef.current = true;
|
|
269
|
+
const foundFirstUnreadMessage = findFirstUnreadMessage(true);
|
|
270
|
+
processNewLineVisibility(foundFirstUnreadMessage);
|
|
271
|
+
setUnreadFirstMessage(foundFirstUnreadMessage);
|
|
272
|
+
if (!props.scrolledAwayFromBottom) {
|
|
273
|
+
scrollToBottom(true);
|
|
274
|
+
}
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
133
277
|
}
|
|
134
278
|
});
|
|
135
279
|
}, [props.scrolledAwayFromBottom]);
|
|
@@ -166,12 +310,17 @@ const GroupChannelMessageList = props => {
|
|
|
166
310
|
});
|
|
167
311
|
return /*#__PURE__*/_react.default.createElement(_ChannelMessageList.default, _extends({}, props, {
|
|
168
312
|
ref: flatListRef,
|
|
313
|
+
onScrolledAwayFromBottom: onScrolledAwayFromBottom,
|
|
169
314
|
onReplyMessage: setMessageToReply,
|
|
170
315
|
onReplyInThreadMessage: setMessageToReply,
|
|
171
316
|
onEditMessage: setMessageToEdit,
|
|
317
|
+
onViewableItemsChanged: onViewableItemsChanged,
|
|
172
318
|
onPressParentMessage: onPressParentMessage,
|
|
173
319
|
onPressNewMessagesButton: scrollToBottom,
|
|
174
|
-
onPressScrollToBottomButton: scrollToBottom
|
|
320
|
+
onPressScrollToBottomButton: scrollToBottom,
|
|
321
|
+
onPressMarkAsUnreadMessage: onPressMarkAsUnreadMessage,
|
|
322
|
+
unreadFirstMessage: unreadFirstMessage,
|
|
323
|
+
unreadMessagesFloatingProps: unreadMessagesFloatingPropsRef.current
|
|
175
324
|
}));
|
|
176
325
|
};
|
|
177
326
|
var _default = exports.default = /*#__PURE__*/_react.default.memo(GroupChannelMessageList);
|
|
@@ -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","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","onPressReplyMessageInThread","MessageList","isFirstMount","useIsFirstMount","scrollToMessageWithCreatedAt","useFreshCallback","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","MESSAGE_FOCUS_ANIMATION_DELAY","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","catch","_","scrollToBottom","hasNext","undefined","onScrolledAwayFromBottom","onResetMessageList","useGroupChannelHandler","onReactionUpdated","event","isDifferentChannel","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","useEffect","type","data","lastMessage","updatedMessage","lastMessageUpdated","isMaybeStreaming","hasAiBot","pubsub","payload","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","searchItem","onPressParentMessage","parentMessage","childMessage","uikit","groupChannel","replyType","threadReplySelectType","show","TOAST","FIND_PARENT_MSG_ERROR","canScrollToParent","createElement","ref","onReplyMessage","onReplyInThreadMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","_default","exports","React","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelHandler } from '@sendbird/uikit-tools';\nimport {\n SendbirdMessage,\n SendbirdSendableMessage,\n isDifferentChannel,\n useFreshCallback,\n useIsFirstMount,\n} from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\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 { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex, onPressReplyMessageInThread } = useContext(\n GroupChannelContexts.MessageList,\n );\n\n const isFirstMount = useIsFirstMount();\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 scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList().catch((_) => {});\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\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 });\n\n useEffect(() => {\n return 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 }\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 onReplyMessage={setMessageToReply}\n onReplyInThreadMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\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","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":[]}
|