@sendbird/uikit-react-native 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/lib/commonjs/components/ChannelInput/EditInput.js +2 -11
  2. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/SendInput.js +2 -11
  4. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  5. package/lib/commonjs/components/ChannelInput/index.js +30 -3
  6. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelMessageList/index.js +148 -116
  8. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +34 -1
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  11. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +14 -4
  12. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  13. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +1 -0
  14. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  15. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  16. package/lib/commonjs/fragments/createGroupChannelFragment.js +4 -3
  17. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  18. package/lib/commonjs/index.js +4 -0
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/types.js +7 -0
  21. package/lib/commonjs/types.js.map +1 -1
  22. package/lib/commonjs/utils/promise.js +138 -0
  23. package/lib/commonjs/utils/promise.js.map +1 -0
  24. package/lib/commonjs/version.js +1 -1
  25. package/lib/commonjs/version.js.map +1 -1
  26. package/lib/module/components/ChannelInput/EditInput.js +3 -12
  27. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  28. package/lib/module/components/ChannelInput/SendInput.js +3 -12
  29. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  30. package/lib/module/components/ChannelInput/index.js +32 -5
  31. package/lib/module/components/ChannelInput/index.js.map +1 -1
  32. package/lib/module/components/ChannelMessageList/index.js +148 -116
  33. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  34. package/lib/module/components/GroupChannelMessageRenderer/index.js +34 -2
  35. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  36. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +15 -5
  37. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  38. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +1 -0
  39. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  40. package/lib/module/domain/groupChannel/types.js.map +1 -1
  41. package/lib/module/fragments/createGroupChannelFragment.js +4 -3
  42. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  43. package/lib/module/index.js +4 -0
  44. package/lib/module/index.js.map +1 -1
  45. package/lib/module/types.js +5 -1
  46. package/lib/module/types.js.map +1 -1
  47. package/lib/module/utils/promise.js +132 -0
  48. package/lib/module/utils/promise.js.map +1 -0
  49. package/lib/module/version.js +1 -1
  50. package/lib/module/version.js.map +1 -1
  51. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -0
  52. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +3 -0
  53. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -0
  54. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +2 -0
  55. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  56. package/lib/typescript/src/domain/groupChannel/types.d.ts +3 -0
  57. package/lib/typescript/src/types.d.ts +4 -0
  58. package/lib/typescript/src/utils/promise.d.ts +7 -0
  59. package/lib/typescript/src/version.d.ts +1 -1
  60. package/package.json +6 -6
  61. package/src/components/ChannelInput/EditInput.tsx +3 -15
  62. package/src/components/ChannelInput/SendInput.tsx +2 -9
  63. package/src/components/ChannelInput/index.tsx +27 -4
  64. package/src/components/ChannelMessageList/index.tsx +144 -114
  65. package/src/components/GroupChannelMessageRenderer/index.tsx +34 -2
  66. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +14 -3
  67. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +1 -0
  68. package/src/domain/groupChannel/types.ts +4 -0
  69. package/src/fragments/createGroupChannelFragment.tsx +11 -3
  70. package/src/index.ts +5 -1
  71. package/src/types.ts +5 -0
  72. package/src/utils/promise.ts +139 -0
  73. package/src/version.ts +1 -1
@@ -1,10 +1,12 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import React, { useRef } from 'react';
3
- import { Box, GroupChannelMessage, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
2
+ import React, { useContext, useEffect, useRef } from 'react';
3
+ import { Box, GroupChannelMessage, Text, TypingIndicatorBubble, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
4
  import { calcMessageGrouping, getMessageType, isMyMessage, isVoiceMessage, shouldRenderParentMessage, shouldRenderReaction, useIIFE } from '@sendbird/uikit-utils';
5
5
  import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
6
+ import { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';
6
7
  import { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';
7
8
  import SBUUtils from '../../libs/SBUUtils';
9
+ import { TypingIndicatorType } from '../../types';
8
10
  import { ReactionAddons } from '../ReactionAddons';
9
11
  import GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';
10
12
  import GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';
@@ -296,5 +298,35 @@ const GroupChannelMessageRenderer = _ref => {
296
298
  focused: focused
297
299
  }, renderMessage()));
298
300
  };
301
+ export const GroupChannelTypingIndicatorBubble = () => {
302
+ const {
303
+ sbOptions
304
+ } = useSendbirdChat();
305
+ const {
306
+ publish
307
+ } = useContext(GroupChannelContexts.PubSub);
308
+ const {
309
+ typingUsers
310
+ } = useContext(GroupChannelContexts.TypingIndicator);
311
+ const shouldRenderBubble = useIIFE(() => {
312
+ if (typingUsers.length === 0) return false;
313
+ if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;
314
+ if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;
315
+ return true;
316
+ });
317
+ useEffect(() => {
318
+ if (shouldRenderBubble) publish({
319
+ type: 'TYPING_BUBBLE_RENDERED'
320
+ });
321
+ }, [shouldRenderBubble]);
322
+ if (!shouldRenderBubble) return null;
323
+ return /*#__PURE__*/React.createElement(Box, {
324
+ paddingHorizontal: 16,
325
+ marginTop: 4,
326
+ marginBottom: 16
327
+ }, /*#__PURE__*/React.createElement(TypingIndicatorBubble, {
328
+ typingUsers: typingUsers
329
+ }));
330
+ };
299
331
  export default /*#__PURE__*/React.memo(GroupChannelMessageRenderer);
300
332
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","Box","GroupChannelMessage","Text","useUIKitTheme","calcMessageGrouping","getMessageType","isMyMessage","isVoiceMessage","shouldRenderParentMessage","shouldRenderReaction","useIIFE","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","ReactionAddons","GroupChannelMessageDateSeparator","GroupChannelMessageFocusAnimation","GroupChannelMessageOutgoingStatus","GroupChannelMessageParentMessage","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","playerUnsubscribes","palette","sbOptions","currentUser","mentionManager","STRINGS","mediaService","playerService","groupWithPrev","groupWithNext","Boolean","reactionChildren","uikitWithAppInfo","groupChannel","enableReactions","reactions","length","createElement","Message","resetPlayer","current","forEach","unsubscribe","reset","variant","userId","messageProps","onPressURL","url","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","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","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","_extends","key","_messageProps$onPress","call","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","onUnmount","Unknown","messageGap","isAdminMessage","paddingHorizontal","marginBottom","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport { Box, GroupChannelMessage, Text, useUIKitTheme } 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 type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = 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 );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.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 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 variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(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 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 sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\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 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 onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer();\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)) {\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 default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useContext","useEffect","useRef","Box","GroupChannelMessage","Text","TypingIndicatorBubble","useUIKitTheme","calcMessageGrouping","getMessageType","isMyMessage","isVoiceMessage","shouldRenderParentMessage","shouldRenderReaction","useIIFE","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","GroupChannelContexts","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","TypingIndicatorType","ReactionAddons","GroupChannelMessageDateSeparator","GroupChannelMessageFocusAnimation","GroupChannelMessageOutgoingStatus","GroupChannelMessageParentMessage","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","playerUnsubscribes","palette","sbOptions","currentUser","mentionManager","STRINGS","mediaService","playerService","groupWithPrev","groupWithNext","Boolean","reactionChildren","uikitWithAppInfo","groupChannel","enableReactions","reactions","length","createElement","Message","resetPlayer","current","forEach","unsubscribe","reset","variant","userId","messageProps","onPressURL","url","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","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","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","_extends","key","_messageProps$onPress","call","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","onUnmount","Unknown","messageGap","isAdminMessage","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","has","Bubble","type","marginTop","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, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = 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 );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.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 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 variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(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 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 sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\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 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 onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer();\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)) {\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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"}
@@ -2,7 +2,8 @@ import React, { useContext } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import { Header, Icon, createStyleSheet, useHeaderStyle } from '@sendbird/uikit-react-native-foundation';
4
4
  import ChannelCover from '../../../components/ChannelCover';
5
- import { useLocalization } from '../../../hooks/useContext';
5
+ import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
6
+ import { TypingIndicatorType } from '../../../types';
6
7
  import { GroupChannelContexts } from '../module/moduleContext';
7
8
  const GroupChannelHeader = _ref => {
8
9
  let {
@@ -10,6 +11,9 @@ const GroupChannelHeader = _ref => {
10
11
  onPressHeaderLeft,
11
12
  onPressHeaderRight
12
13
  } = _ref;
14
+ const {
15
+ sbOptions
16
+ } = useSendbirdChat();
13
17
  const {
14
18
  headerTitle,
15
19
  channel
@@ -23,7 +27,15 @@ const GroupChannelHeader = _ref => {
23
27
  const {
24
28
  HeaderComponent
25
29
  } = useHeaderStyle();
26
- const subtitle = STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers);
30
+ const renderSubtitle = () => {
31
+ const subtitle = STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers);
32
+ if (!subtitle) return null;
33
+ if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return null;
34
+ if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Text)) return null;
35
+ return /*#__PURE__*/React.createElement(Header.Subtitle, {
36
+ style: styles.subtitle
37
+ }, subtitle);
38
+ };
27
39
  const isHidden = shouldHideRight();
28
40
  return /*#__PURE__*/React.createElement(HeaderComponent, {
29
41
  clearTitleMargin: true,
@@ -39,9 +51,7 @@ const GroupChannelHeader = _ref => {
39
51
  }
40
52
  }, /*#__PURE__*/React.createElement(Header.Title, {
41
53
  h2: true
42
- }, headerTitle), Boolean(subtitle) && subtitle && /*#__PURE__*/React.createElement(Header.Subtitle, {
43
- style: styles.subtitle
44
- }, subtitle))),
54
+ }, headerTitle), renderSubtitle())),
45
55
  left: /*#__PURE__*/React.createElement(Icon, {
46
56
  icon: 'arrow-left'
47
57
  }),
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","View","Header","Icon","createStyleSheet","useHeaderStyle","ChannelCover","useLocalization","GroupChannelContexts","GroupChannelHeader","_ref","shouldHideRight","onPressHeaderLeft","onPressHeaderRight","headerTitle","channel","Fragment","typingUsers","TypingIndicator","STRINGS","HeaderComponent","subtitle","LABELS","TYPING_INDICATOR_TYPINGS","isHidden","createElement","clearTitleMargin","title","style","styles","titleContainer","size","containerStyle","avatarGroup","flexShrink","Title","h2","Boolean","Subtitle","left","icon","onPressLeft","right","onPressRight","undefined","maxWidth","flexDirection","alignItems","marginRight","marginTop"],"sources":["GroupChannelHeader.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Header, Icon, createStyleSheet, useHeaderStyle } from '@sendbird/uikit-react-native-foundation';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelHeader = ({\n shouldHideRight,\n onPressHeaderLeft,\n onPressHeaderRight,\n}: GroupChannelProps['Header']) => {\n const { headerTitle, channel } = useContext(GroupChannelContexts.Fragment);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n const { STRINGS } = useLocalization();\n const { HeaderComponent } = useHeaderStyle();\n const subtitle = STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers);\n\n const isHidden = shouldHideRight();\n\n return (\n <HeaderComponent\n clearTitleMargin\n title={\n <View style={styles.titleContainer}>\n <ChannelCover channel={channel} size={34} containerStyle={styles.avatarGroup} />\n <View style={{ flexShrink: 1 }}>\n <Header.Title h2>{headerTitle}</Header.Title>\n {Boolean(subtitle) && subtitle && <Header.Subtitle style={styles.subtitle}>{subtitle}</Header.Subtitle>}\n </View>\n </View>\n }\n left={<Icon icon={'arrow-left'} />}\n onPressLeft={onPressHeaderLeft}\n right={isHidden ? null : <Icon icon={'info'} />}\n onPressRight={isHidden ? undefined : onPressHeaderRight}\n />\n );\n};\n\nconst styles = createStyleSheet({\n titleContainer: {\n maxWidth: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n },\n avatarGroup: {\n marginRight: 8,\n },\n subtitle: {\n marginTop: 2,\n },\n});\n\nexport default GroupChannelHeader;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,IAAI,QAAQ,cAAc;AAEnC,SAASC,MAAM,EAAEC,IAAI,EAAEC,gBAAgB,EAAEC,cAAc,QAAQ,yCAAyC;AAExG,OAAOC,YAAY,MAAM,kCAAkC;AAC3D,SAASC,eAAe,QAAQ,2BAA2B;AAC3D,SAASC,oBAAoB,QAAQ,yBAAyB;AAG9D,MAAMC,kBAAkB,GAAGC,IAAA,IAIQ;EAAA,IAJP;IAC1BC,eAAe;IACfC,iBAAiB;IACjBC;EAC2B,CAAC,GAAAH,IAAA;EAC5B,MAAM;IAAEI,WAAW;IAAEC;EAAQ,CAAC,GAAGf,UAAU,CAACQ,oBAAoB,CAACQ,QAAQ,CAAC;EAC1E,MAAM;IAAEC;EAAY,CAAC,GAAGjB,UAAU,CAACQ,oBAAoB,CAACU,eAAe,CAAC;EACxE,MAAM;IAAEC;EAAQ,CAAC,GAAGZ,eAAe,EAAE;EACrC,MAAM;IAAEa;EAAgB,CAAC,GAAGf,cAAc,EAAE;EAC5C,MAAMgB,QAAQ,GAAGF,OAAO,CAACG,MAAM,CAACC,wBAAwB,CAACN,WAAW,CAAC;EAErE,MAAMO,QAAQ,GAAGb,eAAe,EAAE;EAElC,oBACEZ,KAAA,CAAA0B,aAAA,CAACL,eAAe;IACdM,gBAAgB;IAChBC,KAAK,eACH5B,KAAA,CAAA0B,aAAA,CAACxB,IAAI;MAAC2B,KAAK,EAAEC,MAAM,CAACC;IAAe,gBACjC/B,KAAA,CAAA0B,aAAA,CAACnB,YAAY;MAACS,OAAO,EAAEA,OAAQ;MAACgB,IAAI,EAAE,EAAG;MAACC,cAAc,EAAEH,MAAM,CAACI;IAAY,EAAG,eAChFlC,KAAA,CAAA0B,aAAA,CAACxB,IAAI;MAAC2B,KAAK,EAAE;QAAEM,UAAU,EAAE;MAAE;IAAE,gBAC7BnC,KAAA,CAAA0B,aAAA,CAACvB,MAAM,CAACiC,KAAK;MAACC,EAAE;IAAA,GAAEtB,WAAW,CAAgB,EAC5CuB,OAAO,CAAChB,QAAQ,CAAC,IAAIA,QAAQ,iBAAItB,KAAA,CAAA0B,aAAA,CAACvB,MAAM,CAACoC,QAAQ;MAACV,KAAK,EAAEC,MAAM,CAACR;IAAS,GAAEA,QAAQ,CAAmB,CAClG,CAEV;IACDkB,IAAI,eAAExC,KAAA,CAAA0B,aAAA,CAACtB,IAAI;MAACqC,IAAI,EAAE;IAAa,EAAI;IACnCC,WAAW,EAAE7B,iBAAkB;IAC/B8B,KAAK,EAAElB,QAAQ,GAAG,IAAI,gBAAGzB,KAAA,CAAA0B,aAAA,CAACtB,IAAI;MAACqC,IAAI,EAAE;IAAO,EAAI;IAChDG,YAAY,EAAEnB,QAAQ,GAAGoB,SAAS,GAAG/B;EAAmB,EACxD;AAEN,CAAC;AAED,MAAMgB,MAAM,GAAGzB,gBAAgB,CAAC;EAC9B0B,cAAc,EAAE;IACde,QAAQ,EAAE,MAAM;IAChBC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDd,WAAW,EAAE;IACXe,WAAW,EAAE;EACf,CAAC;EACD3B,QAAQ,EAAE;IACR4B,SAAS,EAAE;EACb;AACF,CAAC,CAAC;AAEF,eAAexC,kBAAkB"}
1
+ {"version":3,"names":["React","useContext","View","Header","Icon","createStyleSheet","useHeaderStyle","ChannelCover","useLocalization","useSendbirdChat","TypingIndicatorType","GroupChannelContexts","GroupChannelHeader","_ref","shouldHideRight","onPressHeaderLeft","onPressHeaderRight","sbOptions","headerTitle","channel","Fragment","typingUsers","TypingIndicator","STRINGS","HeaderComponent","renderSubtitle","subtitle","LABELS","TYPING_INDICATOR_TYPINGS","uikit","groupChannel","enableTypingIndicator","typingIndicatorTypes","has","Text","createElement","Subtitle","style","styles","isHidden","clearTitleMargin","title","titleContainer","size","containerStyle","avatarGroup","flexShrink","Title","h2","left","icon","onPressLeft","right","onPressRight","undefined","maxWidth","flexDirection","alignItems","marginRight","marginTop"],"sources":["GroupChannelHeader.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Header, Icon, createStyleSheet, useHeaderStyle } from '@sendbird/uikit-react-native-foundation';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { TypingIndicatorType } from '../../../types';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelHeader = ({\n shouldHideRight,\n onPressHeaderLeft,\n onPressHeaderRight,\n}: GroupChannelProps['Header']) => {\n const { sbOptions } = useSendbirdChat();\n const { headerTitle, channel } = useContext(GroupChannelContexts.Fragment);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n const { STRINGS } = useLocalization();\n const { HeaderComponent } = useHeaderStyle();\n\n const renderSubtitle = () => {\n const subtitle = STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers);\n\n if (!subtitle) return null;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return null;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Text)) return null;\n\n return <Header.Subtitle style={styles.subtitle}>{subtitle}</Header.Subtitle>;\n };\n\n const isHidden = shouldHideRight();\n\n return (\n <HeaderComponent\n clearTitleMargin\n title={\n <View style={styles.titleContainer}>\n <ChannelCover channel={channel} size={34} containerStyle={styles.avatarGroup} />\n <View style={{ flexShrink: 1 }}>\n <Header.Title h2>{headerTitle}</Header.Title>\n {renderSubtitle()}\n </View>\n </View>\n }\n left={<Icon icon={'arrow-left'} />}\n onPressLeft={onPressHeaderLeft}\n right={isHidden ? null : <Icon icon={'info'} />}\n onPressRight={isHidden ? undefined : onPressHeaderRight}\n />\n );\n};\n\nconst styles = createStyleSheet({\n titleContainer: {\n maxWidth: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n },\n avatarGroup: {\n marginRight: 8,\n },\n subtitle: {\n marginTop: 2,\n },\n});\n\nexport default GroupChannelHeader;\n"],"mappings":"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"}
@@ -92,6 +92,7 @@ const GroupChannelMessageList = props => {
92
92
  type
93
93
  } = _ref;
94
94
  switch (type) {
95
+ case 'TYPING_BUBBLE_RENDERED':
95
96
  case 'MESSAGES_RECEIVED':
96
97
  {
97
98
  if (!props.scrolledAwayFromBottom) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useEffect","useChannelHandler","useToast","isDifferentChannel","useFreshCallback","useIsFirstMount","useUniqHandlerId","ChannelMessageList","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","GroupChannelMessageList","props","toast","STRINGS","sdk","setMessageToEdit","setMessageToReply","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","MessageList","id","isFirstMount","scrollToMessageWithCreatedAt","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","scrollToBottom","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","onReactionUpdated","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","searchItem","onPressParentMessage","message","canScrollToParent","show","TOAST","FIND_PARENT_MSG_ERROR","createElement","_extends","ref","onReplyMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useFreshCallback, useIsFirstMount, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\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 } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex } = useContext(GroupChannelContexts.MessageList);\n\n const id = useUniqHandlerId('GroupChannelMessageList');\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) props.onUpdateSearchItem({ startingPoint: createdAt });\n props.onResetMessageListWithStartingPoint(createdAt);\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback((animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n props.onResetMessageList(() => {\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n 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((message: SendbirdMessage) => {\n const canScrollToParent = scrollToMessageWithCreatedAt(message.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n });\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onReplyMessage={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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"}
1
+ {"version":3,"names":["React","useContext","useEffect","useChannelHandler","useToast","isDifferentChannel","useFreshCallback","useIsFirstMount","useUniqHandlerId","ChannelMessageList","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","GroupChannelMessageList","props","toast","STRINGS","sdk","setMessageToEdit","setMessageToReply","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","MessageList","id","isFirstMount","scrollToMessageWithCreatedAt","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","scrollToBottom","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","onReactionUpdated","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","searchItem","onPressParentMessage","message","canScrollToParent","show","TOAST","FIND_PARENT_MSG_ERROR","createElement","_extends","ref","onReplyMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useFreshCallback, useIsFirstMount, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\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 } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex } = useContext(GroupChannelContexts.MessageList);\n\n const id = useUniqHandlerId('GroupChannelMessageList');\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) props.onUpdateSearchItem({ startingPoint: createdAt });\n props.onResetMessageListWithStartingPoint(createdAt);\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback((animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n props.onResetMessageList(() => {\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n 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((message: SendbirdMessage) => {\n const canScrollToParent = scrollToMessageWithCreatedAt(message.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n });\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onReplyMessage={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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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: (callback?: () => void) => void;\n onResetMessageListWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: Pick<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = CommonComponent<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n };\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: (callback?: () => void) => void;\n onResetMessageListWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: Pick<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = CommonComponent<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { ReplyType } from '@sendbird/chat/message';
3
3
  import { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';
4
+ import { Box } from '@sendbird/uikit-react-native-foundation';
4
5
  import { NOOP, PASS, messageComparator, useFreshCallback, useIIFE, useRefTracker } from '@sendbird/uikit-utils';
5
- import GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';
6
+ import GroupChannelMessageRenderer, { GroupChannelTypingIndicatorBubble } from '../components/GroupChannelMessageRenderer';
6
7
  import NewMessagesButton from '../components/NewMessagesButton';
7
8
  import ScrollToBottomButton from '../components/ScrollToBottomButton';
8
9
  import StatusComposition from '../components/StatusComposition';
@@ -111,8 +112,8 @@ const createGroupChannelFragment = initModule => {
111
112
  };
112
113
  }, []);
113
114
  const renderItem = useFreshCallback(props => {
114
- if (renderMessage) return renderMessage(props);
115
- return /*#__PURE__*/React.createElement(GroupChannelMessageRenderer, props);
115
+ const content = renderMessage ? renderMessage(props) : /*#__PURE__*/React.createElement(GroupChannelMessageRenderer, props);
116
+ return /*#__PURE__*/React.createElement(Box, null, content, props.isFirstItem && !hasNext() && /*#__PURE__*/React.createElement(GroupChannelTypingIndicatorBubble, null));
116
117
  });
117
118
  const memoizedFlatListProps = useMemo(() => ({
118
119
  ListEmptyComponent: /*#__PURE__*/React.createElement(GroupChannelModule.StatusEmpty, null),
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","ReplyType","useGroupChannelMessages","NOOP","PASS","messageComparator","useFreshCallback","useIIFE","useRefTracker","GroupChannelMessageRenderer","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","usePlatformService","useSendbirdChat","pubsub","createGroupChannelFragment","initModule","GroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","collectionCreator","sortComparator","flatListProps","playerService","recorderService","sdk","currentUser","sbOptions","internalSearchItem","setInternalSearchItem","navigateFromMessageSearch","Boolean","groupChannelPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","replyType","uikit","groupChannel","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","next","prev","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","userId","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","startingPoint","enableCollectionWithoutLocalCache","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","renderItem","memoizedFlatListProps","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","callback","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ReplyType } from '@sendbird/chat/message';\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport {\n NOOP,\n PASS,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n next,\n prev,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n collectionCreator,\n sortComparator,\n onChannelDeleted,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n enableCollectionWithoutLocalCache: true,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n if (renderMessage) return renderMessage(props);\n return <GroupChannelMessageRenderer {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback((callback?: () => void) => {\n resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback((startingPoint: number, callback?: () => void) => {\n resetWithStartingPoint(startingPoint, callback);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={prev}\n onBottomReached={next}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","ReplyType","useGroupChannelMessages","Box","NOOP","PASS","messageComparator","useFreshCallback","useIIFE","useRefTracker","GroupChannelMessageRenderer","GroupChannelTypingIndicatorBubble","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","usePlatformService","useSendbirdChat","pubsub","createGroupChannelFragment","initModule","GroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","collectionCreator","sortComparator","flatListProps","playerService","recorderService","sdk","currentUser","sbOptions","internalSearchItem","setInternalSearchItem","navigateFromMessageSearch","Boolean","groupChannelPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","replyType","uikit","groupChannel","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","next","prev","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","userId","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","startingPoint","enableCollectionWithoutLocalCache","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","renderItem","content","isFirstItem","memoizedFlatListProps","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","callback","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ReplyType } from '@sendbird/chat/message';\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport { Box } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n PASS,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n next,\n prev,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n collectionCreator,\n sortComparator,\n onChannelDeleted,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n enableCollectionWithoutLocalCache: true,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback((callback?: () => void) => {\n resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback((startingPoint: number, callback?: () => void) => {\n resetWithStartingPoint(startingPoint, callback);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={prev}\n onBottomReached={next}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Platform } from 'react-native';
2
2
  import { Logger } from '@sendbird/uikit-utils';
3
+ import { PromisePolyfill } from './utils/promise';
3
4
 
4
5
  /** Components **/
5
6
  export { default as ChannelInput } from './components/ChannelInput';
@@ -120,4 +121,7 @@ export { default as SBUUtils } from './libs/SBUUtils';
120
121
  export * from './types';
121
122
  Logger.setLogLevel(__DEV__ ? 'warn' : 'none');
122
123
  Logger.setTitle(`[UIKIT_${Platform.OS}]`);
124
+
125
+ // NOTE: In Hermes, not all implementations of Promise are included
126
+ PromisePolyfill.apply();
123
127
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","Logger","default","ChannelInput","ChannelMessageList","GroupChannelMessageRenderer","OpenChannelMessageRenderer","ReactionAddons","ReactionBottomSheets","ChannelCover","ChatFlatList","FileViewer","MessageSearchResultItem","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","createGroupChannelModerationFragment","createGroupChannelOperatorsFragment","createGroupChannelRegisterOperatorFragment","createGroupChannelMutedMembersFragment","createGroupChannelBannedUsersFragment","createGroupChannelNotificationsFragment","createMessageSearchFragment","createOpenChannelFragment","createOpenChannelParticipantsFragment","createOpenChannelSettingsFragment","createOpenChannelListFragment","createOpenChannelCreateFragment","createOpenChannelModerationFragment","createOpenChannelBannedUsersFragment","createOpenChannelMutedParticipantsFragment","createOpenChannelOperatorsFragment","createOpenChannelRegisterOperatorFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","UserProfileContext","UserProfileProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","createBaseStringSet","StringSetEn","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createNativePlayerService","createNativeRecorderService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","createExpoPlayerService","createExpoRecorderService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","SBUUtils","setLogLevel","__DEV__","setTitle","OS"],"sources":["index.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\n/** Components **/\nexport { default as ChannelInput } from './components/ChannelInput';\nexport { default as ChannelMessageList } from './components/ChannelMessageList';\nexport { default as GroupChannelMessageRenderer } from './components/GroupChannelMessageRenderer';\nexport { default as OpenChannelMessageRenderer } from './components/OpenChannelMessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as MessageSearchResultItem } from './components/MessageSearchResultItem';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments - group channels **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\nexport { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';\n\n/** Fragments - open channels **/\nexport { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';\nexport { default as createOpenChannelParticipantsFragment } from './fragments/createOpenChannelParticipantsFragment';\nexport { default as createOpenChannelSettingsFragment } from './fragments/createOpenChannelSettingsFragment';\nexport { default as createOpenChannelListFragment } from './fragments/createOpenChannelListFragment';\nexport { default as createOpenChannelCreateFragment } from './fragments/createOpenChannelCreateFragment';\nexport { default as createOpenChannelModerationFragment } from './fragments/createOpenChannelModerationFragment';\nexport { default as createOpenChannelBannedUsersFragment } from './fragments/createOpenChannelBannedUsersFragment';\nexport { default as createOpenChannelMutedParticipantsFragment } from './fragments/createOpenChannelMutedParticipantsFragment';\nexport { default as createOpenChannelOperatorsFragment } from './fragments/createOpenChannelOperatorsFragment';\nexport { default as createOpenChannelRegisterOperatorFragment } from './fragments/createOpenChannelRegisterOperatorFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { createBaseStringSet } from './localization/createBaseStringSet';\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport * from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createNativePlayerService } from './platform/createPlayerService.native';\nexport { default as createNativeRecorderService } from './platform/createRecorderService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\nexport { default as createExpoPlayerService } from './platform/createPlayerService.expo';\nexport { default as createExpoRecorderService } from './platform/createRecorderService.expo';\nexport * from './platform/types';\n\n/** Feature - shared **/\nexport * from './domain/userList';\nexport * from './domain/userList/types';\n\n/** Feature - group channels **/\nexport * from './domain/groupChannel';\nexport * from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport * from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport * from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport * from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\n\nexport * from './domain/messageSearch/types';\n\n/** Feature - open channels **/\nexport * from './domain/openChannel';\nexport * from './domain/openChannel/types';\n\nexport * from './domain/openChannelSettings';\nexport * from './domain/openChannelSettings/types';\n\nexport * from './domain/openChannelList';\nexport * from './domain/openChannelList/types';\n\nexport * from './domain/openChannelCreate';\nexport * from './domain/openChannelCreate/types';\n\nexport * from './domain/openChannelModeration';\nexport * from './domain/openChannelModeration/types';\n\nexport * from './domain/openChannelBannedUsers';\nexport * from './domain/openChannelBannedUsers/types';\n\nexport * from './domain/openChannelMutedParticipants';\nexport * from './domain/openChannelMutedParticipants/types';\n\nexport * from './domain/openChannelOperators';\nexport * from './domain/openChannelOperators/types';\n\nexport * from './domain/openChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\nexport { default as SBUUtils } from './libs/SBUUtils';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","Logger","PromisePolyfill","default","ChannelInput","ChannelMessageList","GroupChannelMessageRenderer","OpenChannelMessageRenderer","ReactionAddons","ReactionBottomSheets","ChannelCover","ChatFlatList","FileViewer","MessageSearchResultItem","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","createGroupChannelModerationFragment","createGroupChannelOperatorsFragment","createGroupChannelRegisterOperatorFragment","createGroupChannelMutedMembersFragment","createGroupChannelBannedUsersFragment","createGroupChannelNotificationsFragment","createMessageSearchFragment","createOpenChannelFragment","createOpenChannelParticipantsFragment","createOpenChannelSettingsFragment","createOpenChannelListFragment","createOpenChannelCreateFragment","createOpenChannelModerationFragment","createOpenChannelBannedUsersFragment","createOpenChannelMutedParticipantsFragment","createOpenChannelOperatorsFragment","createOpenChannelRegisterOperatorFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","UserProfileContext","UserProfileProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","createBaseStringSet","StringSetEn","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createNativePlayerService","createNativeRecorderService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","createExpoPlayerService","createExpoRecorderService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","SBUUtils","setLogLevel","__DEV__","setTitle","OS","apply"],"sources":["index.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport { PromisePolyfill } from './utils/promise';\n\n/** Components **/\nexport { default as ChannelInput } from './components/ChannelInput';\nexport { default as ChannelMessageList } from './components/ChannelMessageList';\nexport { default as GroupChannelMessageRenderer } from './components/GroupChannelMessageRenderer';\nexport { default as OpenChannelMessageRenderer } from './components/OpenChannelMessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as MessageSearchResultItem } from './components/MessageSearchResultItem';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments - group channels **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\nexport { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';\n\n/** Fragments - open channels **/\nexport { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';\nexport { default as createOpenChannelParticipantsFragment } from './fragments/createOpenChannelParticipantsFragment';\nexport { default as createOpenChannelSettingsFragment } from './fragments/createOpenChannelSettingsFragment';\nexport { default as createOpenChannelListFragment } from './fragments/createOpenChannelListFragment';\nexport { default as createOpenChannelCreateFragment } from './fragments/createOpenChannelCreateFragment';\nexport { default as createOpenChannelModerationFragment } from './fragments/createOpenChannelModerationFragment';\nexport { default as createOpenChannelBannedUsersFragment } from './fragments/createOpenChannelBannedUsersFragment';\nexport { default as createOpenChannelMutedParticipantsFragment } from './fragments/createOpenChannelMutedParticipantsFragment';\nexport { default as createOpenChannelOperatorsFragment } from './fragments/createOpenChannelOperatorsFragment';\nexport { default as createOpenChannelRegisterOperatorFragment } from './fragments/createOpenChannelRegisterOperatorFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { createBaseStringSet } from './localization/createBaseStringSet';\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport * from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createNativePlayerService } from './platform/createPlayerService.native';\nexport { default as createNativeRecorderService } from './platform/createRecorderService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\nexport { default as createExpoPlayerService } from './platform/createPlayerService.expo';\nexport { default as createExpoRecorderService } from './platform/createRecorderService.expo';\nexport * from './platform/types';\n\n/** Feature - shared **/\nexport * from './domain/userList';\nexport * from './domain/userList/types';\n\n/** Feature - group channels **/\nexport * from './domain/groupChannel';\nexport * from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport * from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport * from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport * from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\n\nexport * from './domain/messageSearch/types';\n\n/** Feature - open channels **/\nexport * from './domain/openChannel';\nexport * from './domain/openChannel/types';\n\nexport * from './domain/openChannelSettings';\nexport * from './domain/openChannelSettings/types';\n\nexport * from './domain/openChannelList';\nexport * from './domain/openChannelList/types';\n\nexport * from './domain/openChannelCreate';\nexport * from './domain/openChannelCreate/types';\n\nexport * from './domain/openChannelModeration';\nexport * from './domain/openChannelModeration/types';\n\nexport * from './domain/openChannelBannedUsers';\nexport * from './domain/openChannelBannedUsers/types';\n\nexport * from './domain/openChannelMutedParticipants';\nexport * from './domain/openChannelMutedParticipants/types';\n\nexport * from './domain/openChannelOperators';\nexport * from './domain/openChannelOperators/types';\n\nexport * from './domain/openChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\nexport { default as SBUUtils } from './libs/SBUUtils';\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n\n// NOTE: In Hermes, not all implementations of Promise are included\nPromisePolyfill.apply();\n"],"mappings":"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"}
@@ -1,2 +1,6 @@
1
- export {};
1
+ export let TypingIndicatorType = /*#__PURE__*/function (TypingIndicatorType) {
2
+ TypingIndicatorType["Text"] = "text";
3
+ TypingIndicatorType["Bubble"] = "bubble";
4
+ return TypingIndicatorType;
5
+ }({});
2
6
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ErrorInfo, ReactNode } from 'react';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nexport type KeyValuePairGet = [string, string | null];\nexport type KeyValuePairSet = [string, string];\nexport interface LocalCacheStorage {\n getAllKeys(): Promise<readonly string[] | string[]>;\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n\n multiSet?(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;\n multiGet?(keys: string[]): Promise<readonly KeyValuePairGet[] | KeyValuePairGet[]>;\n multiRemove?(keys: string[]): Promise<void>;\n}\n\nexport type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };\n\nexport type CommonComponent<P = {}> = (props: P & { children?: ReactNode }) => null | ReactNode;\n\nexport type MentionedUser = {\n range: Range;\n user: SendbirdUser;\n};\n\nexport type Range = {\n start: number;\n end: number;\n};\n"],"mappings":""}
1
+ {"version":3,"names":["TypingIndicatorType"],"sources":["types.ts"],"sourcesContent":["import type { ErrorInfo, ReactNode } from 'react';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nexport type KeyValuePairGet = [string, string | null];\nexport type KeyValuePairSet = [string, string];\nexport interface LocalCacheStorage {\n getAllKeys(): Promise<readonly string[] | string[]>;\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n\n multiSet?(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;\n multiGet?(keys: string[]): Promise<readonly KeyValuePairGet[] | KeyValuePairGet[]>;\n multiRemove?(keys: string[]): Promise<void>;\n}\n\nexport type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };\n\nexport type CommonComponent<P = {}> = (props: P & { children?: ReactNode }) => null | ReactNode;\n\nexport type MentionedUser = {\n range: Range;\n user: SendbirdUser;\n};\n\nexport type Range = {\n start: number;\n end: number;\n};\n\nexport enum TypingIndicatorType {\n Text = 'text',\n Bubble = 'bubble',\n}\n"],"mappings":"AA+BA,WAAYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA"}