@sendbird/uikit-react-native 3.2.0 → 3.4.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 (116) 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/FileViewer/FileViewerContent.js +140 -0
  10. package/lib/commonjs/components/FileViewer/FileViewerContent.js.map +1 -0
  11. package/lib/commonjs/components/FileViewer/FileViewerFooter.js +82 -0
  12. package/lib/commonjs/components/FileViewer/FileViewerFooter.js.map +1 -0
  13. package/lib/commonjs/components/FileViewer/FileViewerHeader.js +93 -0
  14. package/lib/commonjs/components/FileViewer/FileViewerHeader.js.map +1 -0
  15. package/lib/commonjs/components/FileViewer/index.js +133 -0
  16. package/lib/commonjs/components/FileViewer/index.js.map +1 -0
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +34 -1
  18. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  19. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  20. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +14 -4
  21. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  22. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +11 -9
  23. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  24. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  25. package/lib/commonjs/domain/messageSearch/component/MessageSearchHeader.js +4 -1
  26. package/lib/commonjs/domain/messageSearch/component/MessageSearchHeader.js.map +1 -1
  27. package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js +4 -2
  28. package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js.map +1 -1
  29. package/lib/commonjs/fragments/createGroupChannelFragment.js +18 -16
  30. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  31. package/lib/commonjs/index.js +4 -0
  32. package/lib/commonjs/index.js.map +1 -1
  33. package/lib/commonjs/types.js +7 -0
  34. package/lib/commonjs/types.js.map +1 -1
  35. package/lib/commonjs/utils/promise.js +138 -0
  36. package/lib/commonjs/utils/promise.js.map +1 -0
  37. package/lib/commonjs/version.js +1 -1
  38. package/lib/commonjs/version.js.map +1 -1
  39. package/lib/module/components/ChannelInput/EditInput.js +3 -12
  40. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  41. package/lib/module/components/ChannelInput/SendInput.js +3 -12
  42. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  43. package/lib/module/components/ChannelInput/index.js +32 -5
  44. package/lib/module/components/ChannelInput/index.js.map +1 -1
  45. package/lib/module/components/ChannelMessageList/index.js +148 -116
  46. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  47. package/lib/module/components/FileViewer/FileViewerContent.js +130 -0
  48. package/lib/module/components/FileViewer/FileViewerContent.js.map +1 -0
  49. package/lib/module/components/FileViewer/FileViewerFooter.js +74 -0
  50. package/lib/module/components/FileViewer/FileViewerFooter.js.map +1 -0
  51. package/lib/module/components/FileViewer/FileViewerHeader.js +85 -0
  52. package/lib/module/components/FileViewer/FileViewerHeader.js.map +1 -0
  53. package/lib/module/components/FileViewer/index.js +123 -0
  54. package/lib/module/components/FileViewer/index.js.map +1 -0
  55. package/lib/module/components/GroupChannelMessageRenderer/index.js +34 -2
  56. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  57. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  58. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +15 -5
  59. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  60. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +11 -9
  61. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  62. package/lib/module/domain/groupChannel/types.js.map +1 -1
  63. package/lib/module/domain/messageSearch/component/MessageSearchHeader.js +4 -1
  64. package/lib/module/domain/messageSearch/component/MessageSearchHeader.js.map +1 -1
  65. package/lib/module/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js +4 -2
  66. package/lib/module/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js.map +1 -1
  67. package/lib/module/fragments/createGroupChannelFragment.js +19 -17
  68. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  69. package/lib/module/index.js +4 -0
  70. package/lib/module/index.js.map +1 -1
  71. package/lib/module/types.js +5 -1
  72. package/lib/module/types.js.map +1 -1
  73. package/lib/module/utils/promise.js +132 -0
  74. package/lib/module/utils/promise.js.map +1 -0
  75. package/lib/module/version.js +1 -1
  76. package/lib/module/version.js.map +1 -1
  77. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -0
  78. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -1
  79. package/lib/typescript/src/components/FileViewer/FileViewerContent.d.ts +13 -0
  80. package/lib/typescript/src/components/FileViewer/FileViewerFooter.d.ts +9 -0
  81. package/lib/typescript/src/components/FileViewer/FileViewerHeader.d.ts +10 -0
  82. package/lib/typescript/src/components/{FileViewer.d.ts → FileViewer/index.d.ts} +5 -1
  83. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -0
  84. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +2 -0
  85. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  86. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +2 -2
  87. package/lib/typescript/src/domain/groupChannel/types.d.ts +5 -2
  88. package/lib/typescript/src/types.d.ts +4 -0
  89. package/lib/typescript/src/utils/promise.d.ts +7 -0
  90. package/lib/typescript/src/version.d.ts +1 -1
  91. package/package.json +8 -7
  92. package/src/components/ChannelInput/EditInput.tsx +3 -15
  93. package/src/components/ChannelInput/SendInput.tsx +2 -9
  94. package/src/components/ChannelInput/index.tsx +27 -4
  95. package/src/components/ChannelMessageList/index.tsx +145 -115
  96. package/src/components/FileViewer/FileViewerContent.tsx +141 -0
  97. package/src/components/FileViewer/FileViewerFooter.tsx +73 -0
  98. package/src/components/FileViewer/FileViewerHeader.tsx +86 -0
  99. package/src/components/FileViewer/index.tsx +139 -0
  100. package/src/components/GroupChannelMessageRenderer/index.tsx +34 -2
  101. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +3 -2
  102. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +14 -3
  103. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +8 -6
  104. package/src/domain/groupChannel/types.ts +6 -2
  105. package/src/domain/messageSearch/component/MessageSearchHeader.tsx +4 -1
  106. package/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.tsx +4 -2
  107. package/src/fragments/createGroupChannelFragment.tsx +25 -15
  108. package/src/index.ts +5 -1
  109. package/src/types.ts +5 -0
  110. package/src/utils/promise.ts +139 -0
  111. package/src/version.ts +1 -1
  112. package/lib/commonjs/components/FileViewer.js +0 -300
  113. package/lib/commonjs/components/FileViewer.js.map +0 -1
  114. package/lib/module/components/FileViewer.js +0 -291
  115. package/lib/module/components/FileViewer.js.map +0 -1
  116. package/src/components/FileViewer.tsx +0 -288
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","Pressable","View","useSafeAreaInsets","useChannelHandler","Icon","Image","createStyleSheet","useUIKitTheme","useUniqHandlerId","UNKNOWN_USER_ID","useReaction","useSendbirdChat","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","updateReactionFocusedItem","openReactionList","colors","handlerId","left","right","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","default","createElement","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","reacted","onPress","deleteReaction","addReaction","_ref3","pressed","button","backgroundColor","selected","background","enabled","source","uri","emoji","_ref4","icon","onBackground03","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n });\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,EAAEC,IAAI,QAAQ,cAAc;AAC9C,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,IAAI,EAAEC,KAAK,EAAEC,gBAAgB,EAAEC,aAAa,QAAQ,yCAAyC;AACtG,SAAmDC,gBAAgB,QAAQ,uBAAuB;AAElG,SAASC,eAAe,QAAQ,iBAAiB;AACjD,SAASC,WAAW,EAAEC,eAAe,QAAQ,wBAAwB;AAOrE,MAAMC,wBAAwB,GAAGC,IAAA,IAA0C;EAAA,IAAzC;IAAEC,OAAO;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAAH,IAAA;EACpE,MAAM;IAAEI,YAAY;IAAEC,WAAW;IAAEC;EAAI,CAAC,GAAGR,eAAe,EAAE;EAC5D,MAAM;IAAES,yBAAyB;IAAEC;EAAiB,CAAC,GAAGX,WAAW,EAAE;EACrE,MAAM;IAAEY;EAAO,CAAC,GAAGf,aAAa,EAAE;EAClC,MAAMgB,SAAS,GAAGf,gBAAgB,CAAC,0BAA0B,CAAC;EAC9D,MAAM;IAAEgB,IAAI;IAAEC;EAAM,CAAC,GAAGvB,iBAAiB,EAAE;EAE3CC,iBAAiB,CAACgB,GAAG,EAAEI,SAAS,EAAE;IAChC,MAAMG,iBAAiBA,CAACC,YAAY,EAAEC,KAAK,EAAE;MAC3C,IAAI,CAAAZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEa,GAAG,MAAKF,YAAY,CAACE,GAAG,IAAID,KAAK,CAACE,SAAS,MAAKf,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEe,SAAS,GAAE;QAC/E,MAAMC,GAAG,GAAG,MAAMZ,GAAG,CAACJ,OAAO,CAACiB,UAAU,CAAC;UACvCC,gBAAgB,EAAE,IAAI;UACtBH,SAAS,EAAEf,OAAO,CAACe,SAAS;UAC5BI,UAAU,EAAEnB,OAAO,CAACmB,UAAU;UAC9BC,WAAW,EAAEpB,OAAO,CAACoB;QACvB,CAAC,CAAC;QACF,IAAIJ,GAAG,EAAEX,yBAAyB,CAAC;UAAEL,OAAO,EAAEgB;QAAI,CAAC,CAAC;MACtD;IACF;EACF,CAAC,CAAC;EAEF,MAAMK,QAAQ,GAAGnB,YAAY,CAACoB,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;EAClD,MAAMC,KAAK,GAAGjB,MAAM,CAACkB,EAAE,CAACC,QAAQ,CAACC,OAAO;EAExC,oBACE3C,KAAA,CAAA4C,aAAA,CAAC1C,IAAI;IAAC2C,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;MAAEC,WAAW,EAAEtB,KAAK;MAAEuB,UAAU,EAAExB;IAAK,CAAC;EAAE,GACvEY,QAAQ,CAACa,GAAG,CAACC,KAAA,IAAkB;IAAA,IAAAC,kBAAA,EAAAC,qBAAA;IAAA,IAAjB;MAAEC,GAAG;MAAExB;IAAI,CAAC,GAAAqB,KAAA;IACzB,MAAMI,eAAe,GAAG,CAAAvC,OAAO,aAAPA,OAAO,wBAAAoC,kBAAA,GAAPpC,OAAO,CAAEwC,SAAS,cAAAJ,kBAAA,wBAAAC,qBAAA,GAAlBD,kBAAA,CAAoBK,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACJ,GAAG,KAAKA,GAAG,CAAC,cAAAD,qBAAA,uBAAhDA,qBAAA,CAAkDM,OAAO,KAAI,EAAE;IACvF,MAAMC,cAAc,GAAGL,eAAe,CAACM,OAAO,CAAC,CAAA1C,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE2C,MAAM,KAAIpD,eAAe,CAAC;IACtF,MAAMqD,OAAO,GAAGH,cAAc,GAAG,CAAC,CAAC;IAEnC,MAAMI,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAID,OAAO,EAAE9C,OAAO,CAACgD,cAAc,CAACjD,OAAO,EAAEsC,GAAG,CAAC,CAAC,KAC7CrC,OAAO,CAACiD,WAAW,CAAClD,OAAO,EAAEsC,GAAG,CAAC;MACtCvC,OAAO,EAAE;IACX,CAAC;IAED,oBACEf,KAAA,CAAA4C,aAAA,CAAC3C,SAAS;MACRqD,GAAG,EAAEA,GAAI;MACTU,OAAO,EAAEA,OAAQ;MACjBnB,KAAK,EAAEsB,KAAA;QAAA,IAAC;UAAEC;QAAQ,CAAC,GAAAD,KAAA;QAAA,OAAK,CACtBrB,MAAM,CAACuB,MAAM,EACb;UAAEC,eAAe,EAAEP,OAAO,IAAIK,OAAO,GAAG5B,KAAK,CAAC+B,QAAQ,CAACC,UAAU,GAAGhC,KAAK,CAACiC,OAAO,CAACD;QAAW,CAAC,CAC/F;MAAA;IAAC,gBAEFxE,KAAA,CAAA4C,aAAA,CAACtC,KAAK;MAACoE,MAAM,EAAE;QAAEC,GAAG,EAAE7C;MAAI,CAAE;MAACe,KAAK,EAAEC,MAAM,CAAC8B;IAAM,EAAG,CAC1C;EAEhB,CAAC,CAAC,eAEF5E,KAAA,CAAA4C,aAAA,CAAC3C,SAAS;IACR+D,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,MAAMjD,OAAO,EAAE;MACfO,gBAAgB,CAAC;QAAEL,OAAO;QAAED;MAAQ,CAAC,CAAC;IACxC,CAAE;IACF6B,KAAK,EAAEgC,KAAA;MAAA,IAAC;QAAET;MAAQ,CAAC,GAAAS,KAAA;MAAA,OAAK,CACtB/B,MAAM,CAACuB,MAAM,EACb;QAAEC,eAAe,EAAEF,OAAO,GAAG5B,KAAK,CAAC+B,QAAQ,CAACC,UAAU,GAAGhC,KAAK,CAACiC,OAAO,CAACD;MAAW,CAAC,CACpF;IAAA;EAAC,gBAEFxE,KAAA,CAAA4C,aAAA,CAACvC,IAAI;IAACyE,IAAI,EAAE,YAAa;IAACjC,KAAK,EAAEC,MAAM,CAAC8B,KAAM;IAACpC,KAAK,EAAEjB,MAAM,CAACwD;EAAe,EAAG,CACrE,CACP;AAEX,CAAC;AAED,MAAMjC,MAAM,GAAGvC,gBAAgB,CAAC;EAC9BwC,SAAS,EAAE;IACTiC,UAAU,EAAE,EAAE;IACdC,aAAa,EAAE,EAAE;IACjBC,iBAAiB,EAAE,EAAE;IACrBC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDf,MAAM,EAAE;IACNgB,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,CAAC;IACVC,YAAY,EAAE;EAChB,CAAC;EACDZ,KAAK,EAAE;IACLS,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,eAAezE,wBAAwB"}
1
+ {"version":3,"names":["React","Pressable","View","useSafeAreaInsets","useChannelHandler","Icon","Image","createStyleSheet","useUIKitTheme","useUniqHandlerId","UNKNOWN_USER_ID","useReaction","useSendbirdChat","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","updateReactionFocusedItem","openReactionList","colors","handlerId","left","right","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","default","createElement","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","reacted","onPress","deleteReaction","addReaction","_ref3","pressed","button","backgroundColor","selected","background","enabled","source","uri","emoji","_ref4","icon","onBackground03","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BaseMessage } from '@sendbird/chat/message';\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = (await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n })) as null | BaseMessage;\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\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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"}
@@ -45,9 +45,11 @@ const GroupChannelMessageList = props => {
45
45
  });
46
46
  } else {
47
47
  if (props.channel.messageOffsetTimestamp <= createdAt) {
48
- if (focusAnimated) props.onUpdateSearchItem({
49
- startingPoint: createdAt
50
- });
48
+ if (focusAnimated) {
49
+ props.onUpdateSearchItem({
50
+ startingPoint: createdAt
51
+ });
52
+ }
51
53
  props.onResetMessageListWithStartingPoint(createdAt);
52
54
  } else {
53
55
  return false;
@@ -55,16 +57,15 @@ const GroupChannelMessageList = props => {
55
57
  }
56
58
  return true;
57
59
  });
58
- const scrollToBottom = useFreshCallback(function () {
60
+ const scrollToBottom = useFreshCallback(async function () {
59
61
  let animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
60
62
  if (props.hasNext()) {
61
63
  props.onUpdateSearchItem(undefined);
62
64
  props.onScrolledAwayFromBottom(false);
63
- props.onResetMessageList(() => {
64
- props.onScrolledAwayFromBottom(false);
65
- lazyScrollToBottom({
66
- animated
67
- });
65
+ await props.onResetMessageList();
66
+ props.onScrolledAwayFromBottom(false);
67
+ lazyScrollToBottom({
68
+ animated
68
69
  });
69
70
  } else {
70
71
  lazyScrollToBottom({
@@ -92,6 +93,7 @@ const GroupChannelMessageList = props => {
92
93
  type
93
94
  } = _ref;
94
95
  switch (type) {
96
+ case 'TYPING_BUBBLE_RENDERED':
95
97
  case 'MESSAGES_RECEIVED':
96
98
  {
97
99
  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":";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,QAAQ,OAAO;AAEpD,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,QAAQ,QAAQ,yCAAyC;AAElE,SAASC,kBAAkB,EAAEC,gBAAgB,EAAEC,eAAe,EAAEC,gBAAgB,QAAQ,uBAAuB;AAE/G,OAAOC,kBAAkB,MAAM,wCAAwC;AACvE,SAASC,6BAA6B,EAAEC,gCAAgC,QAAQ,oBAAoB;AACpG,SAASC,eAAe,EAAEC,eAAe,QAAQ,2BAA2B;AAC5E,SAASC,oBAAoB,QAAQ,yBAAyB;AAG9D,MAAMC,uBAAuB,GAAIC,KAAuC,IAAK;EAC3E,MAAMC,KAAK,GAAGb,QAAQ,EAAE;EACxB,MAAM;IAAEc;EAAQ,CAAC,GAAGN,eAAe,EAAE;EACrC,MAAM;IAAEO;EAAI,CAAC,GAAGN,eAAe,EAAE;EACjC,MAAM;IAAEO,gBAAgB;IAAEC;EAAkB,CAAC,GAAGpB,UAAU,CAACa,oBAAoB,CAACQ,QAAQ,CAAC;EACzF,MAAM;IAAEC;EAAU,CAAC,GAAGtB,UAAU,CAACa,oBAAoB,CAACU,MAAM,CAAC;EAC7D,MAAM;IAAEC,WAAW;IAAEC,kBAAkB;IAAEC;EAAkB,CAAC,GAAG1B,UAAU,CAACa,oBAAoB,CAACc,WAAW,CAAC;EAE3G,MAAMC,EAAE,GAAGrB,gBAAgB,CAAC,yBAAyB,CAAC;EACtD,MAAMsB,YAAY,GAAGvB,eAAe,EAAE;EAEtC,MAAMwB,4BAA4B,GAAGzB,gBAAgB,CACnD,CAAC0B,SAAiB,EAAEC,aAAsB,EAAEC,OAAe,KAAc;IACvE,MAAMC,iBAAiB,GAAGnB,KAAK,CAACoB,QAAQ,CAACC,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACN,SAAS,KAAKA,SAAS,CAAC;IACtF,MAAMO,gBAAgB,GAAGJ,iBAAiB,GAAG,CAAC,CAAC;IAE/C,IAAII,gBAAgB,EAAE;MACpB,IAAIN,aAAa,EAAE;QACjBO,UAAU,CAAC,MAAMxB,KAAK,CAACyB,kBAAkB,CAAC;UAAEC,aAAa,EAAEV;QAAU,CAAC,CAAC,EAAEtB,6BAA6B,CAAC;MACzG;MACAiB,iBAAiB,CAAC;QAAEgB,KAAK,EAAER,iBAAiB;QAAES,QAAQ,EAAE,IAAI;QAAEV;MAAQ,CAAC,CAAC;IAC1E,CAAC,MAAM;MACL,IAAIlB,KAAK,CAAC6B,OAAO,CAACC,sBAAsB,IAAId,SAAS,EAAE;QACrD,IAAIC,aAAa,EAAEjB,KAAK,CAACyB,kBAAkB,CAAC;UAAEC,aAAa,EAAEV;QAAU,CAAC,CAAC;QACzEhB,KAAK,CAAC+B,mCAAmC,CAACf,SAAS,CAAC;MACtD,CAAC,MAAM;QACL,OAAO,KAAK;MACd;IACF;IACA,OAAO,IAAI;EACb,CAAC,CACF;EAED,MAAMgB,cAAc,GAAG1C,gBAAgB,CAAC,YAAsB;IAAA,IAArBsC,QAAQ,GAAAK,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IACvD,IAAIjC,KAAK,CAACoC,OAAO,EAAE,EAAE;MACnBpC,KAAK,CAACyB,kBAAkB,CAACU,SAAS,CAAC;MACnCnC,KAAK,CAACqC,wBAAwB,CAAC,KAAK,CAAC;MAErCrC,KAAK,CAACsC,kBAAkB,CAAC,MAAM;QAC7BtC,KAAK,CAACqC,wBAAwB,CAAC,KAAK,CAAC;QACrC3B,kBAAkB,CAAC;UAAEkB;QAAS,CAAC,CAAC;MAClC,CAAC,CAAC;IACJ,CAAC,MAAM;MACLlB,kBAAkB,CAAC;QAAEkB;MAAS,CAAC,CAAC;IAClC;EACF,CAAC,CAAC;EAEFzC,iBAAiB,CAACgB,GAAG,EAAEU,EAAE,EAAE;IACzB0B,iBAAiBA,CAACV,OAAO,EAAEW,KAAK,EAAE;MAChC,IAAInD,kBAAkB,CAACwC,OAAO,EAAE7B,KAAK,CAAC6B,OAAO,CAAC,EAAE;MAChD,MAAMY,aAAa,GAAGzC,KAAK,CAACoB,QAAQ,CAAC,CAAC,CAAC;MACvC,MAAMsB,eAAe,GAAGD,aAAa,IAAIA,aAAa,CAACE,SAAS,KAAKH,KAAK,CAACG,SAAS;MACpF,MAAMC,+BAA+B,GAAG,CAAC5C,KAAK,CAAC6C,sBAAsB,IAAI,CAAC7C,KAAK,CAACoC,OAAO,EAAE;MACzF,IAAIM,eAAe,IAAIE,+BAA+B,EAAE;QACtDlC,kBAAkB,CAAC;UAAEkB,QAAQ,EAAE,IAAI;UAAEV,OAAO,EAAE;QAAI,CAAC,CAAC;MACtD;IACF;EACF,CAAC,CAAC;EAEFhC,SAAS,CAAC,MAAM;IACd,OAAOqB,SAAS,CAACuC,IAAA,IAAc;MAAA,IAAb;QAAEC;MAAK,CAAC,GAAAD,IAAA;MACxB,QAAQC,IAAI;QACV,KAAK,mBAAmB;UAAE;YACxB,IAAI,CAAC/C,KAAK,CAAC6C,sBAAsB,EAAE;cACjCb,cAAc,CAAC,IAAI,CAAC;YACtB;YACA;UACF;QACA,KAAK,sBAAsB;QAC3B,KAAK,sBAAsB;UAAE;YAC3BA,cAAc,CAAC,KAAK,CAAC;YACrB;UACF;MAAC;IAEL,CAAC,CAAC;EACJ,CAAC,EAAE,CAAChC,KAAK,CAAC6C,sBAAsB,CAAC,CAAC;EAElC3D,SAAS,CAAC,MAAM;IACd;IACA;IACA;IACA,IAAI4B,YAAY,IAAId,KAAK,CAACgD,UAAU,EAAE;MACpCjC,4BAA4B,CAACf,KAAK,CAACgD,UAAU,CAACtB,aAAa,EAAE,KAAK,EAAE/B,gCAAgC,CAAC;IACvG;EACF,CAAC,EAAE,CAACmB,YAAY,CAAC,CAAC;EAElB,MAAMmC,oBAAoB,GAAG3D,gBAAgB,CAAE4D,OAAwB,IAAK;IAC1E,MAAMC,iBAAiB,GAAGpC,4BAA4B,CAACmC,OAAO,CAAClC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,IAAI,CAACmC,iBAAiB,EAAElD,KAAK,CAACmD,IAAI,CAAClD,OAAO,CAACmD,KAAK,CAACC,qBAAqB,EAAE,OAAO,CAAC;EAClF,CAAC,CAAC;EAEF,oBACEtE,KAAA,CAAAuE,aAAA,CAAC9D,kBAAkB,EAAA+D,QAAA,KACbxD,KAAK;IACTyD,GAAG,EAAEhD,WAAY;IACjBiD,cAAc,EAAErD,iBAAkB;IAClCsD,aAAa,EAAEvD,gBAAiB;IAChC6C,oBAAoB,EAAEA,oBAAqB;IAC3CW,wBAAwB,EAAE5B,cAAe;IACzC6B,2BAA2B,EAAE7B;EAAe,GAC5C;AAEN,CAAC;AAED,4BAAehD,KAAK,CAAC8E,IAAI,CAAC/D,uBAAuB,CAAC"}
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) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt);\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList();\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\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: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: 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":""}
@@ -89,7 +89,10 @@ const styles = createStyleSheet({
89
89
  flex: 1,
90
90
  height: '100%',
91
91
  fontSize: 14,
92
- padding: 0
92
+ paddingLeft: 0,
93
+ paddingTop: 0,
94
+ paddingBottom: 0,
95
+ paddingRight: 0
93
96
  }
94
97
  });
95
98
  export default MessageSearchHeader;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","Platform","TextInput","Box","Icon","PressBox","Text","createStyleSheet","useHeaderStyle","useUIKitTheme","useLocalization","MessageSearchHeader","_ref","keyword","onChangeKeyword","onPressHeaderLeft","onPressHeaderRight","HeaderComponent","colors","STRINGS","inputRef","inputColor","ui","input","default","active","searchEnabled","length","setTimeout","_inputRef$current","current","focus","select","ios","createElement","clearTitleMargin","title","flex","height","alignItems","backgroundColor","background","borderRadius","paddingHorizontal","flexDirection","size","icon","color","onBackground03","containerStyle","styles","searchIcon","disableFullscreenUI","enablesReturnKeyAutomatically","ref","returnKeyType","onSubmitEditing","selectionColor","primary","placeholder","MESSAGE_SEARCH","HEADER_INPUT_PLACEHOLDER","placeholderTextColor","style","text","value","onChangeText","onPress","clearIcon","left","onPressLeft","right","button","onBackground04","HEADER_RIGHT","onPressRight","undefined","marginRight","marginLeft","fontSize","padding"],"sources":["MessageSearchHeader.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport {\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { MessageSearchProps } from '../types';\n\nconst MessageSearchHeader = ({\n keyword,\n onChangeKeyword,\n onPressHeaderLeft,\n onPressHeaderRight,\n}: MessageSearchProps['Header']) => {\n const { HeaderComponent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n\n const inputRef = useRef<TextInput>(null);\n const inputColor = colors.ui.input.default.active;\n const searchEnabled = keyword.length > 0;\n\n useEffect(() => {\n setTimeout(() => {\n inputRef.current?.focus();\n }, Platform.select({ ios: 500, default: 0 }));\n }, []);\n\n return (\n <HeaderComponent\n clearTitleMargin\n title={\n <Box\n flex={1}\n height={36}\n alignItems={'center'}\n backgroundColor={inputColor.background}\n borderRadius={24}\n paddingHorizontal={10}\n flexDirection={'row'}\n >\n <Icon size={24} icon={'search'} color={colors.onBackground03} containerStyle={styles.searchIcon} />\n <TextInput\n disableFullscreenUI\n enablesReturnKeyAutomatically\n ref={inputRef}\n returnKeyType={'search'}\n onSubmitEditing={() => onPressHeaderRight()}\n selectionColor={colors.primary}\n placeholder={STRINGS.MESSAGE_SEARCH.HEADER_INPUT_PLACEHOLDER}\n placeholderTextColor={inputColor.placeholder}\n style={[styles.input, { color: inputColor.text }]}\n value={keyword}\n onChangeText={onChangeKeyword}\n />\n {searchEnabled && (\n <PressBox onPress={() => onChangeKeyword('')}>\n <Icon size={18} icon={'remove'} color={colors.onBackground03} containerStyle={styles.clearIcon} />\n </PressBox>\n )}\n </Box>\n }\n left={<Icon icon={'arrow-left'} />}\n onPressLeft={onPressHeaderLeft}\n right={\n <Text button color={searchEnabled ? colors.primary : colors.onBackground04}>\n {STRINGS.MESSAGE_SEARCH.HEADER_RIGHT}\n </Text>\n }\n onPressRight={searchEnabled ? onPressHeaderRight : undefined}\n />\n );\n};\n\nconst styles = createStyleSheet({\n searchIcon: {\n marginRight: 8,\n },\n clearIcon: {\n marginLeft: 8,\n },\n input: {\n flex: 1,\n height: '100%',\n fontSize: 14,\n padding: 0,\n },\n});\n\nexport default MessageSearchHeader;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","Platform","TextInput","Box","Icon","PressBox","Text","createStyleSheet","useHeaderStyle","useUIKitTheme","useLocalization","MessageSearchHeader","_ref","keyword","onChangeKeyword","onPressHeaderLeft","onPressHeaderRight","HeaderComponent","colors","STRINGS","inputRef","inputColor","ui","input","default","active","searchEnabled","length","setTimeout","_inputRef$current","current","focus","select","ios","createElement","clearTitleMargin","title","flex","height","alignItems","backgroundColor","background","borderRadius","paddingHorizontal","flexDirection","size","icon","color","onBackground03","containerStyle","styles","searchIcon","disableFullscreenUI","enablesReturnKeyAutomatically","ref","returnKeyType","onSubmitEditing","selectionColor","primary","placeholder","MESSAGE_SEARCH","HEADER_INPUT_PLACEHOLDER","placeholderTextColor","style","text","value","onChangeText","onPress","clearIcon","left","onPressLeft","right","button","onBackground04","HEADER_RIGHT","onPressRight","undefined","marginRight","marginLeft","fontSize","paddingLeft","paddingTop","paddingBottom","paddingRight"],"sources":["MessageSearchHeader.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport {\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { MessageSearchProps } from '../types';\n\nconst MessageSearchHeader = ({\n keyword,\n onChangeKeyword,\n onPressHeaderLeft,\n onPressHeaderRight,\n}: MessageSearchProps['Header']) => {\n const { HeaderComponent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n\n const inputRef = useRef<TextInput>(null);\n const inputColor = colors.ui.input.default.active;\n const searchEnabled = keyword.length > 0;\n\n useEffect(() => {\n setTimeout(() => {\n inputRef.current?.focus();\n }, Platform.select({ ios: 500, default: 0 }));\n }, []);\n\n return (\n <HeaderComponent\n clearTitleMargin\n title={\n <Box\n flex={1}\n height={36}\n alignItems={'center'}\n backgroundColor={inputColor.background}\n borderRadius={24}\n paddingHorizontal={10}\n flexDirection={'row'}\n >\n <Icon size={24} icon={'search'} color={colors.onBackground03} containerStyle={styles.searchIcon} />\n <TextInput\n disableFullscreenUI\n enablesReturnKeyAutomatically\n ref={inputRef}\n returnKeyType={'search'}\n onSubmitEditing={() => onPressHeaderRight()}\n selectionColor={colors.primary}\n placeholder={STRINGS.MESSAGE_SEARCH.HEADER_INPUT_PLACEHOLDER}\n placeholderTextColor={inputColor.placeholder}\n style={[styles.input, { color: inputColor.text }]}\n value={keyword}\n onChangeText={onChangeKeyword}\n />\n {searchEnabled && (\n <PressBox onPress={() => onChangeKeyword('')}>\n <Icon size={18} icon={'remove'} color={colors.onBackground03} containerStyle={styles.clearIcon} />\n </PressBox>\n )}\n </Box>\n }\n left={<Icon icon={'arrow-left'} />}\n onPressLeft={onPressHeaderLeft}\n right={\n <Text button color={searchEnabled ? colors.primary : colors.onBackground04}>\n {STRINGS.MESSAGE_SEARCH.HEADER_RIGHT}\n </Text>\n }\n onPressRight={searchEnabled ? onPressHeaderRight : undefined}\n />\n );\n};\n\nconst styles = createStyleSheet({\n searchIcon: {\n marginRight: 8,\n },\n clearIcon: {\n marginLeft: 8,\n },\n input: {\n flex: 1,\n height: '100%',\n fontSize: 14,\n paddingLeft: 0,\n paddingTop: 0,\n paddingBottom: 0,\n paddingRight: 0,\n },\n});\n\nexport default MessageSearchHeader;\n"],"mappings":"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"}
@@ -134,8 +134,10 @@ const styles = createStyleSheet({
134
134
  },
135
135
  input: {
136
136
  flex: 1,
137
- paddingVertical: 0,
138
- paddingHorizontal: 0
137
+ paddingLeft: 0,
138
+ paddingRight: 0,
139
+ paddingTop: 0,
140
+ paddingBottom: 0
139
141
  },
140
142
  removeButtonContainer: {
141
143
  alignItems: 'flex-end',
@@ -1 +1 @@
1
- {"version":3,"names":["React","Avatar","Box","PressBox","TextInput","createStyleSheet","useBottomSheet","useToast","useUIKitTheme","Icon","ifThenOr","useSafeAreaPadding","useLocalization","usePlatformService","SBUError","SBUUtils","OpenChannelCreateProfileInput","_ref","channelName","channelCoverFile","onChangeChannelName","onChangeChannelCoverFile","toast","openSheet","palette","colors","typography","safeArea","STRINGS","fileService","onPressPhotoButton","sheetItems","title","OPEN_CHANNEL_CREATE","DIALOG_IMAGE_MENU_CAMERA","onPress","mediaFile","openCamera","mediaType","onOpenFailure","error","code","CODE","ERR_PERMISSIONS_DENIED","alert","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","LABELS","PERMISSION_CAMERA","PERMISSION_APP_NAME","buttons","text","ALERT_PERMISSIONS_OK","openSettings","show","TOAST","OPEN_CAMERA_ERROR","DIALOG_IMAGE_MENU_PHOTO_LIBRARY","mediaFiles","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","unshift","DIALOG_IMAGE_MENU_REMOVE","titleColor","undefined","createElement","flexDirection","paddingVertical","paddingLeft","paddingRight","style","styles","coverButton","activeOpacity","Boolean","size","uri","icon","borderBottomColor","onBackground04","inputContainer","placeholder","PLACEHOLDER","subtitle1","input","backgroundColor","transparent","value","onChangeText","length","removeButtonContainer","color","onBackground03","marginRight","flex","alignItems","borderBottomWidth","paddingHorizontal","justifyContent","marginLeft"],"sources":["OpenChannelCreateProfileInput.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Avatar,\n BottomSheetItem,\n Box,\n PressBox,\n TextInput,\n createStyleSheet,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport Icon from '@sendbird/uikit-react-native-foundation/src/components/Icon';\nimport { ifThenOr, useSafeAreaPadding } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../hooks/useContext';\nimport SBUError from '../../../libs/SBUError';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { OpenChannelCreateProps } from '../types';\n\nconst OpenChannelCreateProfileInput = ({\n channelName,\n channelCoverFile,\n onChangeChannelName,\n onChangeChannelCoverFile,\n}: OpenChannelCreateProps['ProfileInput']) => {\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { palette, colors, typography } = useUIKitTheme();\n const safeArea = useSafeAreaPadding(['left', 'right']);\n\n const { STRINGS } = useLocalization();\n const { fileService } = usePlatformService();\n\n const onPressPhotoButton = () => {\n const sheetItems: BottomSheetItem['sheetItems'] = [\n {\n title: STRINGS.OPEN_CHANNEL_CREATE.DIALOG_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) onChangeChannelCoverFile(mediaFile);\n },\n },\n {\n title: STRINGS.OPEN_CHANNEL_CREATE.DIALOG_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const mediaFiles = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n if (mediaFiles?.[0]) onChangeChannelCoverFile(mediaFiles[0]);\n },\n },\n ];\n\n if (channelCoverFile) {\n sheetItems.unshift({\n title: STRINGS.OPEN_CHANNEL_CREATE.DIALOG_IMAGE_MENU_REMOVE,\n titleColor: colors.error,\n onPress: () => {\n onChangeChannelCoverFile(undefined);\n },\n });\n }\n\n openSheet({ sheetItems });\n };\n\n return (\n <Box\n flexDirection={'row'}\n paddingVertical={16}\n paddingLeft={16 + safeArea.paddingLeft}\n paddingRight={16 + safeArea.paddingRight}\n >\n <PressBox onPress={onPressPhotoButton} style={styles.coverButton} activeOpacity={0.8}>\n {ifThenOr(\n Boolean(channelCoverFile),\n <Avatar size={72} uri={channelCoverFile?.uri} />,\n <Avatar.Icon size={72} icon={'camera'} />,\n )}\n </PressBox>\n <Box borderBottomColor={colors.onBackground04} style={styles.inputContainer}>\n <TextInput\n placeholder={STRINGS.OPEN_CHANNEL_CREATE.PLACEHOLDER}\n style={[typography.subtitle1, styles.input, { backgroundColor: palette.transparent }]}\n value={channelName}\n onChangeText={onChangeChannelName}\n />\n\n {channelName.length > 0 && (\n <PressBox onPress={() => onChangeChannelName('')} style={styles.removeButtonContainer}>\n <Icon color={colors.onBackground03} size={22} icon={'remove'} />\n </PressBox>\n )}\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n coverButton: {\n marginRight: 20,\n },\n inputContainer: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n paddingHorizontal: 0,\n },\n removeButtonContainer: {\n alignItems: 'flex-end',\n justifyContent: 'center',\n marginLeft: 8,\n },\n});\n\nexport default OpenChannelCreateProfileInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Avatar","Box","PressBox","TextInput","createStyleSheet","useBottomSheet","useToast","useUIKitTheme","Icon","ifThenOr","useSafeAreaPadding","useLocalization","usePlatformService","SBUError","SBUUtils","OpenChannelCreateProfileInput","_ref","channelName","channelCoverFile","onChangeChannelName","onChangeChannelCoverFile","toast","openSheet","palette","colors","typography","safeArea","STRINGS","fileService","onPressPhotoButton","sheetItems","title","OPEN_CHANNEL_CREATE","DIALOG_IMAGE_MENU_CAMERA","onPress","mediaFile","openCamera","mediaType","onOpenFailure","error","code","CODE","ERR_PERMISSIONS_DENIED","alert","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","LABELS","PERMISSION_CAMERA","PERMISSION_APP_NAME","buttons","text","ALERT_PERMISSIONS_OK","openSettings","show","TOAST","OPEN_CAMERA_ERROR","DIALOG_IMAGE_MENU_PHOTO_LIBRARY","mediaFiles","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","unshift","DIALOG_IMAGE_MENU_REMOVE","titleColor","undefined","createElement","flexDirection","paddingVertical","paddingLeft","paddingRight","style","styles","coverButton","activeOpacity","Boolean","size","uri","icon","borderBottomColor","onBackground04","inputContainer","placeholder","PLACEHOLDER","subtitle1","input","backgroundColor","transparent","value","onChangeText","length","removeButtonContainer","color","onBackground03","marginRight","flex","alignItems","borderBottomWidth","paddingTop","paddingBottom","justifyContent","marginLeft"],"sources":["OpenChannelCreateProfileInput.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Avatar,\n BottomSheetItem,\n Box,\n PressBox,\n TextInput,\n createStyleSheet,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport Icon from '@sendbird/uikit-react-native-foundation/src/components/Icon';\nimport { ifThenOr, useSafeAreaPadding } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../hooks/useContext';\nimport SBUError from '../../../libs/SBUError';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { OpenChannelCreateProps } from '../types';\n\nconst OpenChannelCreateProfileInput = ({\n channelName,\n channelCoverFile,\n onChangeChannelName,\n onChangeChannelCoverFile,\n}: OpenChannelCreateProps['ProfileInput']) => {\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { palette, colors, typography } = useUIKitTheme();\n const safeArea = useSafeAreaPadding(['left', 'right']);\n\n const { STRINGS } = useLocalization();\n const { fileService } = usePlatformService();\n\n const onPressPhotoButton = () => {\n const sheetItems: BottomSheetItem['sheetItems'] = [\n {\n title: STRINGS.OPEN_CHANNEL_CREATE.DIALOG_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) onChangeChannelCoverFile(mediaFile);\n },\n },\n {\n title: STRINGS.OPEN_CHANNEL_CREATE.DIALOG_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const mediaFiles = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n if (mediaFiles?.[0]) onChangeChannelCoverFile(mediaFiles[0]);\n },\n },\n ];\n\n if (channelCoverFile) {\n sheetItems.unshift({\n title: STRINGS.OPEN_CHANNEL_CREATE.DIALOG_IMAGE_MENU_REMOVE,\n titleColor: colors.error,\n onPress: () => {\n onChangeChannelCoverFile(undefined);\n },\n });\n }\n\n openSheet({ sheetItems });\n };\n\n return (\n <Box\n flexDirection={'row'}\n paddingVertical={16}\n paddingLeft={16 + safeArea.paddingLeft}\n paddingRight={16 + safeArea.paddingRight}\n >\n <PressBox onPress={onPressPhotoButton} style={styles.coverButton} activeOpacity={0.8}>\n {ifThenOr(\n Boolean(channelCoverFile),\n <Avatar size={72} uri={channelCoverFile?.uri} />,\n <Avatar.Icon size={72} icon={'camera'} />,\n )}\n </PressBox>\n <Box borderBottomColor={colors.onBackground04} style={styles.inputContainer}>\n <TextInput\n placeholder={STRINGS.OPEN_CHANNEL_CREATE.PLACEHOLDER}\n style={[typography.subtitle1, styles.input, { backgroundColor: palette.transparent }]}\n value={channelName}\n onChangeText={onChangeChannelName}\n />\n\n {channelName.length > 0 && (\n <PressBox onPress={() => onChangeChannelName('')} style={styles.removeButtonContainer}>\n <Icon color={colors.onBackground03} size={22} icon={'remove'} />\n </PressBox>\n )}\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n coverButton: {\n marginRight: 20,\n },\n inputContainer: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n },\n input: {\n flex: 1,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n paddingBottom: 0,\n },\n removeButtonContainer: {\n alignItems: 'flex-end',\n justifyContent: 'center',\n marginLeft: 8,\n },\n});\n\nexport default OpenChannelCreateProfileInput;\n"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { ReplyType } from '@sendbird/chat/message';
3
- import { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';
4
- import { NOOP, PASS, messageComparator, useFreshCallback, useIIFE, useRefTracker } from '@sendbird/uikit-utils';
5
- import GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';
3
+ import { Box } from '@sendbird/uikit-react-native-foundation';
4
+ import { useGroupChannelMessages } from '@sendbird/uikit-tools';
5
+ import { NOOP, PASS, confirmAndMarkAsRead, messageComparator, useFreshCallback, useIIFE, useRefTracker } from '@sendbird/uikit-utils';
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';
@@ -55,8 +56,8 @@ const createGroupChannelFragment = initModule => {
55
56
  messages,
56
57
  newMessages,
57
58
  resetNewMessages,
58
- next,
59
- prev,
59
+ loadNext,
60
+ loadPrevious,
60
61
  hasNext,
61
62
  sendFileMessage,
62
63
  sendUserMessage,
@@ -65,7 +66,7 @@ const createGroupChannelFragment = initModule => {
65
66
  resendMessage,
66
67
  deleteMessage,
67
68
  resetWithStartingPoint
68
- } = useGroupChannelMessages(sdk, channel, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId, {
69
+ } = useGroupChannelMessages(sdk, channel, {
69
70
  shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,
70
71
  onMessagesReceived(messages) {
71
72
  groupChannelPubSub.publish({
@@ -83,12 +84,13 @@ const createGroupChannelFragment = initModule => {
83
84
  }
84
85
  });
85
86
  },
87
+ onChannelDeleted,
88
+ onCurrentUserBanned: onChannelDeleted,
86
89
  collectionCreator,
87
90
  sortComparator,
88
- onChannelDeleted,
91
+ markAsRead: confirmAndMarkAsRead,
89
92
  replyType,
90
- startingPoint: internalSearchItem === null || internalSearchItem === void 0 ? void 0 : internalSearchItem.startingPoint,
91
- enableCollectionWithoutLocalCache: true
93
+ startingPoint: internalSearchItem === null || internalSearchItem === void 0 ? void 0 : internalSearchItem.startingPoint
92
94
  });
93
95
  const onBlurFragment = () => {
94
96
  return Promise.allSettled([playerService.reset(), recorderService.reset()]);
@@ -111,8 +113,8 @@ const createGroupChannelFragment = initModule => {
111
113
  };
112
114
  }, []);
113
115
  const renderItem = useFreshCallback(props => {
114
- if (renderMessage) return renderMessage(props);
115
- return /*#__PURE__*/React.createElement(GroupChannelMessageRenderer, props);
116
+ const content = renderMessage ? renderMessage(props) : /*#__PURE__*/React.createElement(GroupChannelMessageRenderer, props);
117
+ return /*#__PURE__*/React.createElement(Box, null, content, props.isFirstItem && !hasNext() && /*#__PURE__*/React.createElement(GroupChannelTypingIndicatorBubble, null));
116
118
  });
117
119
  const memoizedFlatListProps = useMemo(() => ({
118
120
  ListEmptyComponent: /*#__PURE__*/React.createElement(GroupChannelModule.StatusEmpty, null),
@@ -121,11 +123,11 @@ const createGroupChannelFragment = initModule => {
121
123
  },
122
124
  ...flatListProps
123
125
  }), [flatListProps]);
124
- const onResetMessageList = useCallback(callback => {
125
- resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);
126
+ const onResetMessageList = useCallback(async () => {
127
+ return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);
126
128
  }, []);
127
- const onResetMessageListWithStartingPoint = useCallback((startingPoint, callback) => {
128
- resetWithStartingPoint(startingPoint, callback);
129
+ const onResetMessageListWithStartingPoint = useCallback(async startingPoint => {
130
+ return await resetWithStartingPoint(startingPoint);
129
131
  }, []);
130
132
 
131
133
  // Changing the search item will trigger the focus animation on messages.
@@ -197,8 +199,8 @@ const createGroupChannelFragment = initModule => {
197
199
  renderMessage: renderItem,
198
200
  messages: messages,
199
201
  newMessages: newMessages,
200
- onTopReached: prev,
201
- onBottomReached: next,
202
+ onTopReached: loadPrevious,
203
+ onBottomReached: loadNext,
202
204
  hasNext: hasNext,
203
205
  scrolledAwayFromBottom: scrolledAwayFromBottom,
204
206
  onScrolledAwayFromBottom: onScrolledAwayFromBottom,