@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.
Files changed (64) hide show
  1. package/lib/commonjs/components/ChannelInput/index.js +13 -2
  2. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  3. package/lib/commonjs/components/ChannelMessageList/index.js +57 -9
  4. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  5. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +53 -0
  6. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
  7. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +5 -0
  8. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  9. package/lib/commonjs/components/UnreadMessagesFloating.js +77 -0
  10. package/lib/commonjs/components/UnreadMessagesFloating.js.map +1 -0
  11. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +156 -7
  12. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  13. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  14. package/lib/commonjs/fragments/createGroupChannelFragment.js +57 -3
  15. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  16. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  17. package/lib/commonjs/localization/createBaseStringSet.js +16 -2
  18. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  19. package/lib/commonjs/version.js +1 -1
  20. package/lib/commonjs/version.js.map +1 -1
  21. package/lib/module/components/ChannelInput/index.js +13 -2
  22. package/lib/module/components/ChannelInput/index.js.map +1 -1
  23. package/lib/module/components/ChannelMessageList/index.js +57 -9
  24. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  25. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +46 -0
  26. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
  27. package/lib/module/components/GroupChannelMessageRenderer/index.js +5 -0
  28. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  29. package/lib/module/components/UnreadMessagesFloating.js +70 -0
  30. package/lib/module/components/UnreadMessagesFloating.js.map +1 -0
  31. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +158 -9
  32. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  33. package/lib/module/domain/groupChannel/types.js.map +1 -1
  34. package/lib/module/fragments/createGroupChannelFragment.js +59 -5
  35. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  36. package/lib/module/localization/StringSet.type.js.map +1 -1
  37. package/lib/module/localization/createBaseStringSet.js +16 -2
  38. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  39. package/lib/module/version.js +1 -1
  40. package/lib/module/version.js.map +1 -1
  41. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +8 -1
  42. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.d.ts +6 -0
  43. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +1 -0
  44. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
  45. package/lib/typescript/src/components/UnreadMessagesFloating.d.ts +8 -0
  46. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  47. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +6 -1
  48. package/lib/typescript/src/domain/groupChannel/types.d.ts +13 -1
  49. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  50. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  51. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  52. package/lib/typescript/src/version.d.ts +1 -1
  53. package/package.json +8 -7
  54. package/src/components/ChannelInput/index.tsx +17 -6
  55. package/src/components/ChannelMessageList/index.tsx +71 -5
  56. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.tsx +45 -0
  57. package/src/components/GroupChannelMessageRenderer/index.tsx +5 -0
  58. package/src/components/UnreadMessagesFloating.tsx +60 -0
  59. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +204 -5
  60. package/src/domain/groupChannel/types.ts +15 -0
  61. package/src/fragments/createGroupChannelFragment.tsx +67 -4
  62. package/src/localization/StringSet.type.ts +3 -0
  63. package/src/localization/createBaseStringSet.ts +16 -4
  64. 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
- props.onScrolledAwayFromBottom(false);
98
+ onScrolledAwayFromBottom(false);
75
99
  await props.onResetMessageList().catch(_ => {});
76
- props.onScrolledAwayFromBottom(false);
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":[]}