@sendbird/uikit-react-native 3.7.0 → 3.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/ChannelMessageList/index.js +2 -3
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChannelThreadMessageList/index.js +2 -3
- package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +2 -2
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +2 -2
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +2 -2
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +10 -2
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/SBUHandlersCtx.js +25 -0
- package/lib/commonjs/contexts/SBUHandlersCtx.js.map +1 -0
- package/lib/commonjs/contexts/SendbirdChatCtx.js +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +2 -3
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
- package/lib/commonjs/hooks/useContext.js +8 -1
- package/lib/commonjs/hooks/useContext.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +3 -4
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChannelThreadMessageList/index.js +3 -4
- package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/index.js +3 -3
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/OpenChannelMessageRenderer/index.js +3 -3
- package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/ThreadParentMessageRenderer/index.js +3 -3
- package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +10 -2
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/SBUHandlersCtx.js +16 -0
- package/lib/module/contexts/SBUHandlersCtx.js.map +1 -0
- package/lib/module/contexts/SendbirdChatCtx.js +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +3 -4
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
- package/lib/module/hooks/useContext.js +6 -0
- package/lib/module/hooks/useContext.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +3 -1
- package/lib/typescript/src/contexts/SBUHandlersCtx.d.ts +21 -0
- package/lib/typescript/src/hooks/useContext.d.ts +1 -0
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +5 -5
- package/src/components/ChannelMessageList/index.tsx +9 -4
- package/src/components/ChannelThreadMessageList/index.tsx +9 -4
- package/src/components/GroupChannelMessageRenderer/index.tsx +3 -3
- package/src/components/OpenChannelMessageRenderer/index.tsx +3 -3
- package/src/components/ThreadParentMessageRenderer/index.tsx +3 -3
- package/src/containers/SendbirdUIKitContainer.tsx +89 -77
- package/src/contexts/SBUHandlersCtx.tsx +27 -0
- package/src/contexts/SendbirdChatCtx.tsx +1 -1
- package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +3 -4
- package/src/hooks/useContext.ts +7 -0
- package/src/version.ts +1 -1
package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_ThreadParentMessageRenderer","_interopRequireDefault","_useContext","_SBUUtils","_moduleContext","_ReactionAddons","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelThreadParentMessageInfo","props","_parentMessage$sender","_parentMessage$thread","channel","parentMessage","setMessageToEdit","useContext","GroupChannelThreadContexts","Fragment","STRINGS","useLocalization","colors","useUIKitTheme","sbOptions","useSendbirdChat","nickName","sender","nickname","LABELS","USER_NO_NAME","messageTimestamp","GROUP_CHANNEL_THREAD","PARENT_MESSAGE_TIME","replyCountText","REPLY_COUNT","threadInfo","replyCount","createMessagePressActions","useCreateMessagePressActions","currentUserId","onDeleteMessage","onPressMediaMessage","onEditMessage","onPress","onLongPress","bottomSheetItem","message","renderMessageInfoAndMenu","_parentMessage$sender2","createElement","View","style","styles","infoAndMenuContainer","Avatar","size","uri","profileUrl","userNickAndTimeContainer","Text","h2","color","onBackground01","numberOfLines","userNickname","caption2","onBackground03","messageTime","TouchableOpacity","activeOpacity","undefined","Icon","icon","onBackground02","renderReplyCount","replyContainer","caption3","replyText","Divider","renderReactionAddons","configs","uikitWithAppInfo","groupChannel","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","reactionButtonContainer","ReactionAddons","Message","reactionAddonType","messageProps","container","messageContainer","createStyleSheet","flexDirection","height","padding","paddingBottom","flex","marginLeft","marginBottom","marginTop","contextMenuButton","width","justifyContent","paddingHorizontal","paddingVertical","paddingLeft","_ref","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","onDeleteFailure","error","show","TOAST","DELETE_MSG_ERROR","Logger","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","SBUUtils","openURL","alertForMessageDelete","title","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref2","sheetItems","menu","copy","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","HeaderComponent","isGroupChannel","_ref3","onClose","BottomSheet","_default","React","memo","exports"],"sources":["GroupChannelThreadParentMessageInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Avatar,\n BottomSheetItem,\n Divider,\n Icon,\n Text,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderReaction,\n toMegabyte,\n} from '@sendbird/uikit-utils';\n\nimport ThreadParentMessageRenderer, {\n ThreadParentMessageRendererProps,\n} from '../../../components/ThreadParentMessageRenderer';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\nimport { ReactionAddons } from './../../../components/ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\n\nconst GroupChannelThreadParentMessageInfo = (props: GroupChannelThreadProps['ParentMessageInfo']) => {\n const { channel, parentMessage, setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { sbOptions } = useSendbirdChat();\n\n const nickName = parentMessage.sender?.nickname || STRINGS.LABELS.USER_NO_NAME;\n const messageTimestamp = STRINGS.GROUP_CHANNEL_THREAD.PARENT_MESSAGE_TIME(parentMessage);\n const replyCountText = STRINGS.GROUP_CHANNEL_THREAD.REPLY_COUNT(parentMessage.threadInfo?.replyCount || 0);\n const createMessagePressActions = useCreateMessagePressActions({\n channel: props.channel,\n currentUserId: props.currentUserId,\n onDeleteMessage: props.onDeleteMessage,\n onPressMediaMessage: props.onPressMediaMessage,\n onEditMessage: setMessageToEdit,\n });\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: parentMessage });\n\n const renderMessageInfoAndMenu = () => {\n return (\n <View style={styles.infoAndMenuContainer}>\n <Avatar size={34} uri={parentMessage.sender?.profileUrl} />\n <View style={styles.userNickAndTimeContainer}>\n <Text h2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>\n {nickName}\n </Text>\n <Text caption2 color={colors.onBackground03} style={styles.messageTime}>\n {messageTimestamp}\n </Text>\n </View>\n <TouchableOpacity activeOpacity={0.7} onPress={bottomSheetItem ? onLongPress : undefined}>\n <Icon icon={'more'} color={colors.onBackground02} />\n </TouchableOpacity>\n </View>\n );\n };\n\n const renderReplyCount = (replyCountText: string) => {\n if (replyCountText) {\n return (\n <View style={styles.replyContainer}>\n <Text caption3 color={colors.onBackground03} style={styles.replyText}>\n {replyCountText}\n </Text>\n <Divider />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const renderReactionAddons = () => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions)) {\n return (\n <View style={styles.reactionButtonContainer}>\n <ReactionAddons.Message\n channel={props.channel}\n message={parentMessage}\n reactionAddonType={'thread_parent_message'}\n />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n parentMessage,\n onPress,\n onLongPress,\n };\n\n return (\n <View>\n <View style={styles.container}>{renderMessageInfoAndMenu()}</View>\n <View style={styles.messageContainer}>\n <ThreadParentMessageRenderer {...messageProps}></ThreadParentMessageRenderer>\n </View>\n {renderReactionAddons()}\n <Divider />\n {renderReplyCount(replyCountText)}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n },\n infoAndMenuContainer: {\n flexDirection: 'row',\n height: 50,\n padding: 16,\n paddingBottom: 0,\n },\n userNickAndTimeContainer: {\n flexDirection: 'column',\n flex: 1,\n marginLeft: 8,\n },\n userNickname: {\n marginBottom: 2,\n },\n messageTime: {\n marginTop: 2,\n },\n contextMenuButton: {\n width: 34,\n height: 34,\n justifyContent: 'flex-end',\n },\n messageContainer: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n reactionButtonContainer: {\n paddingLeft: 16,\n marginBottom: 16,\n },\n replyContainer: {\n flexDirection: 'column',\n },\n replyText: {\n justifyContent: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n});\n\nconst useCreateMessagePressActions = ({\n channel,\n currentUserId,\n onDeleteMessage,\n onPressMediaMessage,\n onEditMessage,\n}: Pick<\n GroupChannelThreadProps['ParentMessageInfo'],\n 'channel' | 'currentUserId' | 'onDeleteMessage' | 'onPressMediaMessage'\n> & { onEditMessage: (message: HandleableMessage) => void }): CreateMessagePressActions => {\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage?.(message), getAvailableUriFromFileMessage(message));\n } else {\n SBUUtils.openURL(message.url);\n }\n }\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage?.(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage?.(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n if (message.isFileMessage()) {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n } else {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n };\n};\n\nexport default React.memo(GroupChannelThreadParentMessageInfo);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_ThreadParentMessageRenderer","_interopRequireDefault","_useContext","_moduleContext","_ReactionAddons","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelThreadParentMessageInfo","props","_parentMessage$sender","_parentMessage$thread","channel","parentMessage","setMessageToEdit","useContext","GroupChannelThreadContexts","Fragment","STRINGS","useLocalization","colors","useUIKitTheme","sbOptions","useSendbirdChat","nickName","sender","nickname","LABELS","USER_NO_NAME","messageTimestamp","GROUP_CHANNEL_THREAD","PARENT_MESSAGE_TIME","replyCountText","REPLY_COUNT","threadInfo","replyCount","createMessagePressActions","useCreateMessagePressActions","currentUserId","onDeleteMessage","onPressMediaMessage","onEditMessage","onPress","onLongPress","bottomSheetItem","message","renderMessageInfoAndMenu","_parentMessage$sender2","createElement","View","style","styles","infoAndMenuContainer","Avatar","size","uri","profileUrl","userNickAndTimeContainer","Text","h2","color","onBackground01","numberOfLines","userNickname","caption2","onBackground03","messageTime","TouchableOpacity","activeOpacity","undefined","Icon","icon","onBackground02","renderReplyCount","replyContainer","caption3","replyText","Divider","renderReactionAddons","configs","uikitWithAppInfo","groupChannel","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","reactionButtonContainer","ReactionAddons","Message","reactionAddonType","messageProps","container","messageContainer","createStyleSheet","flexDirection","height","padding","paddingBottom","flex","marginLeft","marginBottom","marginTop","contextMenuButton","width","justifyContent","paddingHorizontal","paddingVertical","paddingLeft","_ref","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","onDeleteFailure","error","show","TOAST","DELETE_MSG_ERROR","Logger","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","onOpenFileURL","alertForMessageDelete","title","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref2","sheetItems","menu","copy","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","HeaderComponent","isGroupChannel","_ref3","onClose","BottomSheet","_default","React","memo","exports"],"sources":["GroupChannelThreadParentMessageInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Avatar,\n BottomSheetItem,\n Divider,\n Icon,\n Text,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderReaction,\n toMegabyte,\n} from '@sendbird/uikit-utils';\n\nimport ThreadParentMessageRenderer, {\n ThreadParentMessageRendererProps,\n} from '../../../components/ThreadParentMessageRenderer';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\nimport { ReactionAddons } from './../../../components/ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\n\nconst GroupChannelThreadParentMessageInfo = (props: GroupChannelThreadProps['ParentMessageInfo']) => {\n const { channel, parentMessage, setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { sbOptions } = useSendbirdChat();\n\n const nickName = parentMessage.sender?.nickname || STRINGS.LABELS.USER_NO_NAME;\n const messageTimestamp = STRINGS.GROUP_CHANNEL_THREAD.PARENT_MESSAGE_TIME(parentMessage);\n const replyCountText = STRINGS.GROUP_CHANNEL_THREAD.REPLY_COUNT(parentMessage.threadInfo?.replyCount || 0);\n const createMessagePressActions = useCreateMessagePressActions({\n channel: props.channel,\n currentUserId: props.currentUserId,\n onDeleteMessage: props.onDeleteMessage,\n onPressMediaMessage: props.onPressMediaMessage,\n onEditMessage: setMessageToEdit,\n });\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: parentMessage });\n\n const renderMessageInfoAndMenu = () => {\n return (\n <View style={styles.infoAndMenuContainer}>\n <Avatar size={34} uri={parentMessage.sender?.profileUrl} />\n <View style={styles.userNickAndTimeContainer}>\n <Text h2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>\n {nickName}\n </Text>\n <Text caption2 color={colors.onBackground03} style={styles.messageTime}>\n {messageTimestamp}\n </Text>\n </View>\n <TouchableOpacity activeOpacity={0.7} onPress={bottomSheetItem ? onLongPress : undefined}>\n <Icon icon={'more'} color={colors.onBackground02} />\n </TouchableOpacity>\n </View>\n );\n };\n\n const renderReplyCount = (replyCountText: string) => {\n if (replyCountText) {\n return (\n <View style={styles.replyContainer}>\n <Text caption3 color={colors.onBackground03} style={styles.replyText}>\n {replyCountText}\n </Text>\n <Divider />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const renderReactionAddons = () => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions)) {\n return (\n <View style={styles.reactionButtonContainer}>\n <ReactionAddons.Message\n channel={props.channel}\n message={parentMessage}\n reactionAddonType={'thread_parent_message'}\n />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n parentMessage,\n onPress,\n onLongPress,\n };\n\n return (\n <View>\n <View style={styles.container}>{renderMessageInfoAndMenu()}</View>\n <View style={styles.messageContainer}>\n <ThreadParentMessageRenderer {...messageProps}></ThreadParentMessageRenderer>\n </View>\n {renderReactionAddons()}\n <Divider />\n {renderReplyCount(replyCountText)}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n },\n infoAndMenuContainer: {\n flexDirection: 'row',\n height: 50,\n padding: 16,\n paddingBottom: 0,\n },\n userNickAndTimeContainer: {\n flexDirection: 'column',\n flex: 1,\n marginLeft: 8,\n },\n userNickname: {\n marginBottom: 2,\n },\n messageTime: {\n marginTop: 2,\n },\n contextMenuButton: {\n width: 34,\n height: 34,\n justifyContent: 'flex-end',\n },\n messageContainer: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n reactionButtonContainer: {\n paddingLeft: 16,\n marginBottom: 16,\n },\n replyContainer: {\n flexDirection: 'column',\n },\n replyText: {\n justifyContent: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n});\n\nconst useCreateMessagePressActions = ({\n channel,\n currentUserId,\n onDeleteMessage,\n onPressMediaMessage,\n onEditMessage,\n}: Pick<\n GroupChannelThreadProps['ParentMessageInfo'],\n 'channel' | 'currentUserId' | 'onDeleteMessage' | 'onPressMediaMessage'\n> & { onEditMessage: (message: HandleableMessage) => void }): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage?.(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage?.(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage?.(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n if (message.isFileMessage()) {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n } else {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n };\n};\n\nexport default React.memo(GroupChannelThreadParentMessageInfo);\n"],"mappings":"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"}
|
|
@@ -3,13 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.useUserProfile = exports.useSendbirdChat = exports.useReaction = exports.usePlatformService = exports.useLocalization = void 0;
|
|
6
|
+
exports.useUserProfile = exports.useSendbirdChat = exports.useSBUHandlers = exports.useReaction = exports.usePlatformService = exports.useLocalization = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _LocalizationCtx = require("../contexts/LocalizationCtx");
|
|
9
9
|
var _PlatformServiceCtx = require("../contexts/PlatformServiceCtx");
|
|
10
10
|
var _ReactionCtx = require("../contexts/ReactionCtx");
|
|
11
|
+
var _SBUHandlersCtx = require("../contexts/SBUHandlersCtx");
|
|
11
12
|
var _SendbirdChatCtx = require("../contexts/SendbirdChatCtx");
|
|
12
13
|
var _UserProfileCtx = require("../contexts/UserProfileCtx");
|
|
14
|
+
const useSBUHandlers = () => {
|
|
15
|
+
const value = (0, _react.useContext)(_SBUHandlersCtx.SBUHandlersContext);
|
|
16
|
+
if (!value) throw new Error('SBUHandlersContext is not provided');
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
exports.useSBUHandlers = useSBUHandlers;
|
|
13
20
|
const useLocalization = () => {
|
|
14
21
|
const value = (0, _react.useContext)(_LocalizationCtx.LocalizationContext);
|
|
15
22
|
if (!value) throw new Error('LocalizationContext is not provided');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_LocalizationCtx","_PlatformServiceCtx","_ReactionCtx","_SendbirdChatCtx","_UserProfileCtx","
|
|
1
|
+
{"version":3,"names":["_react","require","_LocalizationCtx","_PlatformServiceCtx","_ReactionCtx","_SBUHandlersCtx","_SendbirdChatCtx","_UserProfileCtx","useSBUHandlers","value","useContext","SBUHandlersContext","Error","exports","useLocalization","LocalizationContext","usePlatformService","PlatformServiceContext","useSendbirdChat","SendbirdChatContext","useUserProfile","UserProfileContext","useReaction","ReactionContext"],"sources":["useContext.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport { LocalizationContext } from '../contexts/LocalizationCtx';\nimport { PlatformServiceContext } from '../contexts/PlatformServiceCtx';\nimport { ReactionContext } from '../contexts/ReactionCtx';\nimport { SBUHandlersContext } from '../contexts/SBUHandlersCtx';\nimport { SendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { UserProfileContext } from '../contexts/UserProfileCtx';\n\nexport const useSBUHandlers = () => {\n const value = useContext(SBUHandlersContext);\n if (!value) throw new Error('SBUHandlersContext is not provided');\n return value;\n};\n\nexport const useLocalization = () => {\n const value = useContext(LocalizationContext);\n if (!value) throw new Error('LocalizationContext is not provided');\n return value;\n};\n\nexport const usePlatformService = () => {\n const value = useContext(PlatformServiceContext);\n if (!value) throw new Error('PlatformServiceContext is not provided');\n return value;\n};\n\nexport const useSendbirdChat = () => {\n const value = useContext(SendbirdChatContext);\n if (!value) throw new Error('SendbirdChatContext is not provided');\n return value;\n};\n\nexport const useUserProfile = () => {\n const value = useContext(UserProfileContext);\n if (!value) throw new Error('UserProfileContext is not provided');\n return value;\n};\n\nexport const useReaction = () => {\n const value = useContext(ReactionContext);\n if (!value) throw new Error('ReactionContext is not provided');\n return value;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AAEO,MAAMO,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,KAAK,GAAG,IAAAC,iBAAU,EAACC,kCAAkB,CAAC;EAC5C,IAAI,CAACF,KAAK,EAAE,MAAM,IAAIG,KAAK,CAAC,oCAAoC,CAAC;EACjE,OAAOH,KAAK;AACd,CAAC;AAACI,OAAA,CAAAL,cAAA,GAAAA,cAAA;AAEK,MAAMM,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAML,KAAK,GAAG,IAAAC,iBAAU,EAACK,oCAAmB,CAAC;EAC7C,IAAI,CAACN,KAAK,EAAE,MAAM,IAAIG,KAAK,CAAC,qCAAqC,CAAC;EAClE,OAAOH,KAAK;AACd,CAAC;AAACI,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,MAAME,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAMP,KAAK,GAAG,IAAAC,iBAAU,EAACO,0CAAsB,CAAC;EAChD,IAAI,CAACR,KAAK,EAAE,MAAM,IAAIG,KAAK,CAAC,wCAAwC,CAAC;EACrE,OAAOH,KAAK;AACd,CAAC;AAACI,OAAA,CAAAG,kBAAA,GAAAA,kBAAA;AAEK,MAAME,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMT,KAAK,GAAG,IAAAC,iBAAU,EAACS,oCAAmB,CAAC;EAC7C,IAAI,CAACV,KAAK,EAAE,MAAM,IAAIG,KAAK,CAAC,qCAAqC,CAAC;EAClE,OAAOH,KAAK;AACd,CAAC;AAACI,OAAA,CAAAK,eAAA,GAAAA,eAAA;AAEK,MAAME,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMX,KAAK,GAAG,IAAAC,iBAAU,EAACW,kCAAkB,CAAC;EAC5C,IAAI,CAACZ,KAAK,EAAE,MAAM,IAAIG,KAAK,CAAC,oCAAoC,CAAC;EACjE,OAAOH,KAAK;AACd,CAAC;AAACI,OAAA,CAAAO,cAAA,GAAAA,cAAA;AAEK,MAAME,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAMb,KAAK,GAAG,IAAAC,iBAAU,EAACa,4BAAe,CAAC;EACzC,IAAI,CAACd,KAAK,EAAE,MAAM,IAAIG,KAAK,CAAC,iCAAiC,CAAC;EAC9D,OAAOH,KAAK;AACd,CAAC;AAACI,OAAA,CAAAS,WAAA,GAAAA,WAAA"}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.7.
|
|
1
|
+
{"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.7.2';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,OAAO;AAAC,IAAAC,QAAA,GACTD,OAAO;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -4,8 +4,7 @@ import { View } from 'react-native';
|
|
|
4
4
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
5
5
|
import { ChannelFrozenBanner, createStyleSheet, useAlert, useBottomSheet, useToast, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
6
6
|
import { Logger, getAvailableUriFromFileMessage, getFileExtension, getFileType, isMyMessage, isVoiceMessage, messageKeyExtractor, shouldRenderReaction, toMegabyte, useFreshCallback } from '@sendbird/uikit-utils';
|
|
7
|
-
import { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';
|
|
8
|
-
import SBUUtils from '../../libs/SBUUtils';
|
|
7
|
+
import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat, useUserProfile } from '../../hooks/useContext';
|
|
9
8
|
import ChatFlatList from '../ChatFlatList';
|
|
10
9
|
import { ReactionAddons } from '../ReactionAddons';
|
|
11
10
|
const ChannelMessageList = (_ref, ref) => {
|
|
@@ -134,6 +133,7 @@ const useCreateMessagePressActions = _ref3 => {
|
|
|
134
133
|
onDeleteMessage,
|
|
135
134
|
onPressMediaMessage
|
|
136
135
|
} = _ref3;
|
|
136
|
+
const handlers = useSBUHandlers();
|
|
137
137
|
const {
|
|
138
138
|
colors
|
|
139
139
|
} = useUIKitTheme();
|
|
@@ -191,9 +191,8 @@ const useCreateMessagePressActions = _ref3 => {
|
|
|
191
191
|
const fileType = getFileType(message.type || getFileExtension(message.name));
|
|
192
192
|
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
193
193
|
onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));
|
|
194
|
-
} else {
|
|
195
|
-
SBUUtils.openURL(message.url);
|
|
196
194
|
}
|
|
195
|
+
handlers.onOpenFileURL(message.url);
|
|
197
196
|
}
|
|
198
197
|
};
|
|
199
198
|
const openSheetForFailedMessage = message => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","useSafeAreaInsets","ChannelFrozenBanner","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","messageKeyExtractor","shouldRenderReaction","toMegabyte","useFreshCallback","useLocalization","usePlatformService","useSendbirdChat","useUserProfile","SBUUtils","ChatFlatList","ReactionAddons","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onReplyInThreadMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","colors","show","left","right","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","style","flex","backgroundColor","background","isFrozen","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","_extends","data","keyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","length","scrollButton","_ref3","toast","openSheet","alert","clipboardService","fileService","sbOptions","onResendFailure","error","TOAST","RESEND_MSG_ERROR","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","includes","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","default","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","replyInThread","CHANNEL_MESSAGE_THREAD","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","configs","uikitWithAppInfo","HeaderComponent","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","BottomSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","forwardRef"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onReplyInThreadMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage, childMessage: HandleableMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onReplyInThreadMessage?: ChannelMessageListProps<T>['onReplyInThreadMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n hideParentMessage?: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onReplyInThreadMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n } else {\n SBUUtils.openURL(message.url);\n }\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n reply: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'reply' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(message),\n }),\n replyInThread: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'thread' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_THREAD,\n onPress: () => onReplyInThreadMessage?.(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAe,OAAO;AAClC,SAAkDC,IAAI,QAAQ,cAAc;AAC5E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAEEC,mBAAmB,EACnBC,gBAAgB,EAChBC,QAAQ,EACRC,cAAc,EACdC,QAAQ,EACRC,aAAa,QACR,yCAAyC;AAChD,SACEC,MAAM,EAMNC,8BAA8B,EAC9BC,gBAAgB,EAChBC,WAAW,EACXC,WAAW,EACXC,cAAc,EACdC,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAU,EACVC,gBAAgB,QACX,uBAAuB;AAG9B,SAASC,eAAe,EAAEC,kBAAkB,EAAEC,eAAe,EAAEC,cAAc,QAAQ,wBAAwB;AAC7G,OAAOC,QAAQ,MAAM,qBAAqB;AAC1C,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,SAASC,cAAc,QAAQ,mBAAmB;AAwDlD,MAAMC,kBAAkB,GAAGA,CAAAC,IAAA,EA2BzBC,GAAkD,KAC/C;EAAA,IA3BH;IACEC,UAAU;IACVC,OAAO;IACPC,OAAO;IACPC,aAAa;IACbC,cAAc;IACdC,sBAAsB;IACtBC,eAAe;IACfC,qBAAqB;IACrBC,mBAAmB;IACnBC,oBAAoB;IACpBC,aAAa;IACbC,uBAAuB;IACvBC,0BAA0B;IAC1BC,aAAa;IACbC,QAAQ;IACRC,WAAW;IACXC,qBAAqB;IACrBC,wBAAwB;IACxBC,sBAAsB;IACtBC,eAAe;IACfC,YAAY;IACZC,aAAa;IACbC,wBAAwB;IACxBC;EAC0B,CAAC,GAAAzB,IAAA;EAG7B,MAAM;IAAE0B;EAAQ,CAAC,GAAGlC,eAAe,EAAE;EACrC,MAAM;IAAEmC;EAAO,CAAC,GAAG9C,aAAa,EAAE;EAClC,MAAM;IAAE+C;EAAK,CAAC,GAAGjC,cAAc,EAAE;EACjC,MAAM;IAAEkC,IAAI;IAAEC;EAAM,CAAC,GAAGvD,iBAAiB,EAAE;EAC3C,MAAMwD,yBAAyB,GAAGC,4BAA4B,CAAC;IAC7D5B,OAAO;IACPQ,aAAa;IACbP,aAAa;IACbC,cAAc;IACdC,sBAAsB;IACtBC,eAAe;IACfC,qBAAqB;IACrBC;EACF,CAAC,CAAC;EAEF,MAAMuB,cAAc,GAAG;IAAEC,WAAW,EAAEL,IAAI;IAAEM,YAAY,EAAEL;EAAM,CAAC;EAEjE,MAAMM,UAA2C,GAAG7C,gBAAgB,CAAC8C,KAAA,IAAqB;IAAA,IAApB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,KAAA;IACnF,MAAM;MAAEG,OAAO;MAAEC,WAAW;MAAEC;IAAgB,CAAC,GAAGX,yBAAyB,CAAC;MAAEY,OAAO,EAAEL;IAAK,CAAC,CAAC;IAC9F,OAAOvB,aAAa,CAAC;MACnB4B,OAAO,EAAEL,IAAI;MACbM,WAAW,EAAE5B,QAAQ,CAACuB,KAAK,GAAG,CAAC,CAAC;MAChCM,WAAW,EAAE7B,QAAQ,CAACuB,KAAK,GAAG,CAAC,CAAC;MAChCC,OAAO;MACPC,WAAW;MACX9B,oBAAoB;MACpBJ,sBAAsB;MACtBuC,iBAAiB,EAAElB,IAAI;MACvBV,qBAAqB;MACrBd,OAAO;MACPQ,aAAa;MACbmC,OAAO,EAAE,CAAC,CAAA7C,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE8C,aAAa,KAAI,CAAC,CAAC,MAAMV,IAAI,CAACW,SAAS;MAC7DP,eAAe;MACfQ,WAAW,EAAEX,KAAK,KAAK;IACzB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,oBACElE,KAAA,CAAA8E,aAAA,CAAC7E,IAAI;IAAC8E,KAAK,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,eAAe,EAAE3B,MAAM,CAAC4B;IAAW,CAAC,EAAEtB,cAAc;EAAE,GAC5E7B,OAAO,CAACoD,QAAQ,iBACfnF,KAAA,CAAA8E,aAAA,CAAC3E,mBAAmB;IAAC4E,KAAK,EAAEK,MAAM,CAACC,YAAa;IAACC,IAAI,EAAEjC,OAAO,CAACkC,MAAM,CAACC;EAA4B,EACnG,eACDxF,KAAA,CAAA8E,aAAA,CAACtD,YAAY,EAAAiE,QAAA,KACPvC,aAAa;IACjBD,YAAY,EAAEA,YAAa;IAC3BD,eAAe,EAAEA,eAAgB;IACjCF,wBAAwB,EAAEA,wBAAyB;IACnDlB,GAAG,EAAEA,GAAI;IACT8D,IAAI,EAAE/C,QAAS;IACfoB,UAAU,EAAEA,UAAW;IACvB4B,YAAY,EAAE5E,mBAAoB;IAClC6E,qBAAqB,EAAE;IACrB;IACA7D,OAAO,CAACoD,QAAQ,IAAIC,MAAM,CAACS,iBAAiB,EAC5C3C,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE0C,qBAAqB;EACpC,GACF,EACDpD,uBAAuB,iBACtBxC,KAAA,CAAA8E,aAAA,CAAC7E,IAAI;IAAC8E,KAAK,EAAE,CAACK,MAAM,CAACU,YAAY,EAAElC,cAAc;EAAE,GAChDpB,uBAAuB,CAAC;IACvBuD,OAAO,EAAEnD,WAAW,CAACoD,MAAM,GAAG,CAAC,KAAKlE,OAAO,EAAE,IAAIiB,sBAAsB,CAAC;IACxEoB,OAAO,EAAEA,CAAA,KAAMhB,wBAAwB,EAAE;IACzCP;EACF,CAAC,CAAC,CAEL,EACAH,0BAA0B,iBACzBzC,KAAA,CAAA8E,aAAA,CAAC7E,IAAI;IAAC8E,KAAK,EAAE,CAACK,MAAM,CAACa,YAAY,EAAErC,cAAc;EAAE,GAChDnB,0BAA0B,CAAC;IAC1BsD,OAAO,EAAEjE,OAAO,EAAE,IAAIiB,sBAAsB;IAC5CoB,OAAO,EAAEA,CAAA,KAAMf,2BAA2B;EAC5C,CAAC,CAAC,CAEL,CACI;AAEX,CAAC;AAED,MAAMO,4BAA4B,GAAGuC,KAAA,IAmBJ;EAAA,IAnB2D;IAC1FnE,OAAO;IACPQ,aAAa;IACbH,qBAAqB;IACrBJ,aAAa;IACbC,cAAc;IACdC,sBAAsB;IACtBC,eAAe;IACfE;EAWF,CAAC,GAAA6D,KAAA;EACC,MAAM;IAAE5C;EAAO,CAAC,GAAG9C,aAAa,EAAE;EAClC,MAAM;IAAE6C;EAAQ,CAAC,GAAGlC,eAAe,EAAE;EACrC,MAAMgF,KAAK,GAAG5F,QAAQ,EAAE;EACxB,MAAM;IAAE6F;EAAU,CAAC,GAAG9F,cAAc,EAAE;EACtC,MAAM;IAAE+F;EAAM,CAAC,GAAGhG,QAAQ,EAAE;EAC5B,MAAM;IAAEiG,gBAAgB;IAAEC;EAAY,CAAC,GAAGnF,kBAAkB,EAAE;EAC9D,MAAM;IAAEoF;EAAU,CAAC,GAAGnF,eAAe,EAAE;EAEvC,MAAMoF,eAAe,GAAIC,KAAY,IAAK;IACxCP,KAAK,CAAC5C,IAAI,CAACF,OAAO,CAACsD,KAAK,CAACC,gBAAgB,EAAE,OAAO,CAAC;IACnDnG,MAAM,CAACiG,KAAK,CAACrD,OAAO,CAACsD,KAAK,CAACC,gBAAgB,EAAEF,KAAK,CAAC;EACrD,CAAC;EAED,MAAMG,eAAe,GAAIH,KAAY,IAAK;IACxCP,KAAK,CAAC5C,IAAI,CAACF,OAAO,CAACsD,KAAK,CAACG,gBAAgB,EAAE,OAAO,CAAC;IACnDrG,MAAM,CAACiG,KAAK,CAACrD,OAAO,CAACsD,KAAK,CAACG,gBAAgB,EAAEJ,KAAK,CAAC;EACrD,CAAC;EAED,MAAMK,UAAU,GAAIzC,OAA0B,IAAK;IACjD,IAAIA,OAAO,CAAC0C,aAAa,EAAE,EAAE;MAC3BV,gBAAgB,CAACW,SAAS,CAAC3C,OAAO,CAACA,OAAO,IAAI,EAAE,CAAC;MACjD6B,KAAK,CAAC5C,IAAI,CAACF,OAAO,CAACsD,KAAK,CAACO,OAAO,EAAE,SAAS,CAAC;IAC9C;EACF,CAAC;EAED,MAAMC,cAAc,GAAI7C,OAA0B,IAAK;IACrD,IAAIA,OAAO,CAAC8C,aAAa,EAAE,EAAE;MAC3B,IAAInG,UAAU,CAACqD,OAAO,CAAC+C,IAAI,CAAC,GAAG,CAAC,EAAE;QAChClB,KAAK,CAAC5C,IAAI,CAACF,OAAO,CAACsD,KAAK,CAACW,cAAc,EAAE,SAAS,CAAC;MACrD;MAEAf,WAAW,CACRgB,IAAI,CAAC;QAAEC,OAAO,EAAElD,OAAO,CAACmD,GAAG;QAAEC,QAAQ,EAAEpD,OAAO,CAACqD,IAAI;QAAEC,QAAQ,EAAEtD,OAAO,CAACuD;MAAK,CAAC,CAAC,CAC9EC,IAAI,CAAEC,QAAQ,IAAK;QAClB5B,KAAK,CAAC5C,IAAI,CAACF,OAAO,CAACsD,KAAK,CAACqB,WAAW,EAAE,SAAS,CAAC;QAChDvH,MAAM,CAACwH,GAAG,CAAC,eAAe,EAAEF,QAAQ,CAAC;MACvC,CAAC,CAAC,CACDG,KAAK,CAAEC,GAAG,IAAK;QACdhC,KAAK,CAAC5C,IAAI,CAACF,OAAO,CAACsD,KAAK,CAACyB,cAAc,EAAE,OAAO,CAAC;QACjD3H,MAAM,CAACwH,GAAG,CAAC,mBAAmB,EAAEE,GAAG,CAAC;MACtC,CAAC,CAAC;IACN;EACF,CAAC;EAED,MAAME,UAAU,GAAI/D,OAA0B,IAAK;IACjD,IAAIA,OAAO,CAAC8C,aAAa,EAAE,EAAE;MAC3B,MAAMQ,QAAQ,GAAGhH,WAAW,CAAC0D,OAAO,CAACuD,IAAI,IAAIlH,gBAAgB,CAAC2D,OAAO,CAACqD,IAAI,CAAC,CAAC;MAC5E,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAACW,QAAQ,CAACV,QAAQ,CAAC,EAAE;QAClDvF,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGiC,OAAO,EAAE,MAAMnC,eAAe,CAACmC,OAAO,CAAC,EAAE5D,8BAA8B,CAAC4D,OAAO,CAAC,CAAC;MACzG,CAAC,MAAM;QACL/C,QAAQ,CAACgH,OAAO,CAACjE,OAAO,CAACmD,GAAG,CAAC;MAC/B;IACF;EACF,CAAC;EAED,MAAMe,yBAAyB,GAAIlE,OAA0B,IAAK;IAChE8B,SAAS,CAAC;MACRqC,UAAU,EAAE,CACV;QACEC,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACoD,4BAA4B;QAClDxE,OAAO,EAAEA,CAAA,KAAM/B,qBAAqB,CAACkC,OAAO,CAAC,CAAC4D,KAAK,CAACzB,eAAe;MACrE,CAAC,EACD;QACEiC,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACqD,6BAA6B;QACnDC,UAAU,EAAEvF,MAAM,CAACwF,EAAE,CAACC,MAAM,CAACC,OAAO,CAACC,IAAI,CAACC,WAAW;QACrD/E,OAAO,EAAEA,CAAA,KAAMgF,qBAAqB,CAAC7E,OAAO;MAC9C,CAAC;IAEL,CAAC,CAAC;EACJ,CAAC;EAED,MAAM6E,qBAAqB,GAAI7E,OAA0B,IAAK;IAC5D+B,KAAK,CAAC;MACJqC,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAAC6D,oCAAoC;MAC1DC,OAAO,EAAE,CACP;QAAE/D,IAAI,EAAEjC,OAAO,CAACkC,MAAM,CAAC+D;MAAsC,CAAC,EAC9D;QACEhE,IAAI,EAAEjC,OAAO,CAACkC,MAAM,CAACgE,iCAAiC;QACtDxE,KAAK,EAAE,aAAa;QACpBZ,OAAO,EAAEA,CAAA,KAAM;UACbhC,eAAe,CAACmC,OAAO,CAAC,CAAC4D,KAAK,CAACrB,eAAe,CAAC;QACjD;MACF,CAAC;IAEL,CAAC,CAAC;EACJ,CAAC;EAED,OAAO2C,KAAA,IAAiB;IAAA,IAAhB;MAAElF;IAAQ,CAAC,GAAAkF,KAAA;IACjB,IAAI,CAAClF,OAAO,CAAC0C,aAAa,EAAE,IAAI,CAAC1C,OAAO,CAAC8C,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IAEnE,MAAMqB,UAAyC,GAAG,EAAE;IACpD,MAAMgB,IAAI,GAAG;MACXC,IAAI,EAAGpF,OAA0B,KAAM;QACrCqF,IAAI,EAAE,MAAe;QACrBjB,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACqE,oBAAoB;QAC1CzF,OAAO,EAAEA,CAAA,KAAM4C,UAAU,CAACzC,OAAO;MACnC,CAAC,CAAC;MACFuF,IAAI,EAAGvF,OAA0B,KAAM;QACrCqF,IAAI,EAAE,MAAe;QACrBjB,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACuE,oBAAoB;QAC1C3F,OAAO,EAAEA,CAAA,KAAMnC,aAAa,CAACsC,OAAO;MACtC,CAAC,CAAC;MACFyF,MAAM,EAAGzF,OAA0B,KAAM;QACvC0F,QAAQ,EAAE1F,OAAO,CAAC2F,UAAU,GAAG3F,OAAO,CAAC2F,UAAU,CAACC,UAAU,GAAG,CAAC,GAAGC,SAAS;QAC5ER,IAAI,EAAE,QAAiB;QACvBjB,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAAC6E,sBAAsB;QAC5CjG,OAAO,EAAEA,CAAA,KAAMgF,qBAAqB,CAAC7E,OAAO;MAC9C,CAAC,CAAC;MACF+F,KAAK,EAAG/F,OAA0B,KAAM;QACtC0F,QAAQ,EAAEM,OAAO,CAAChG,OAAO,CAACiG,eAAe,CAAC;QAC1CZ,IAAI,EAAE,OAAgB;QACtBjB,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACiF,qBAAqB;QAC3CrG,OAAO,EAAEA,CAAA,KAAMlC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGqC,OAAO;MACzC,CAAC,CAAC;MACFmG,aAAa,EAAGnG,OAA0B,KAAM;QAC9C0F,QAAQ,EAAEM,OAAO,CAAChG,OAAO,CAACiG,eAAe,CAAC;QAC1CZ,IAAI,EAAE,QAAiB;QACvBjB,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACmF,sBAAsB;QAC5CvG,OAAO,EAAEA,CAAA,KAAMjC,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,CAAGoC,OAAO;MACjD,CAAC,CAAC;MACFqG,QAAQ,EAAGrG,OAA0B,KAAM;QACzCqF,IAAI,EAAE,UAAmB;QACzBjB,KAAK,EAAErF,OAAO,CAACkC,MAAM,CAACqF,oBAAoB;QAC1CzG,OAAO,EAAEA,CAAA,KAAMgD,cAAc,CAAC7C,OAAO;MACvC,CAAC;IACH,CAAC;IAED,IAAIA,OAAO,CAAC0C,aAAa,EAAE,EAAE;MAC3ByB,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACC,IAAI,CAACpF,OAAO,CAAC,CAAC;MACnC,IAAI,CAACvC,OAAO,CAAC+I,WAAW,EAAE;QACxB,IAAIjK,WAAW,CAACyD,OAAO,EAAE/B,aAAa,CAAC,IAAI+B,OAAO,CAACyG,aAAa,KAAK,WAAW,EAAE;UAChFtC,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACI,IAAI,CAACvF,OAAO,CAAC,CAAC;UACnCmE,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACM,MAAM,CAACzF,OAAO,CAAC,CAAC;QACvC;QACA,IAAIvC,OAAO,CAACiJ,cAAc,EAAE,EAAE;UAC5B,IAAIxE,SAAS,CAACyE,KAAK,CAACC,YAAY,CAACnJ,OAAO,CAACoJ,SAAS,KAAK,QAAQ,IAAIjJ,sBAAsB,KAAKiI,SAAS,EAAE;YACvG1B,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACgB,aAAa,CAACnG,OAAO,CAAC,CAAC;UAC9C,CAAC,MAAM,IAAIkC,SAAS,CAACyE,KAAK,CAACC,YAAY,CAACnJ,OAAO,CAACoJ,SAAS,KAAK,aAAa,EAAE;YAC3E1C,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACY,KAAK,CAAC/F,OAAO,CAAC,CAAC;UACtC;QACF;MACF;IACF;IAEA,IAAIA,OAAO,CAAC8C,aAAa,EAAE,EAAE;MAC3B,IAAI,CAACtG,cAAc,CAACwD,OAAO,CAAC,EAAE;QAC5BmE,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACkB,QAAQ,CAACrG,OAAO,CAAC,CAAC;MACzC;MACA,IAAI,CAACvC,OAAO,CAAC+I,WAAW,EAAE;QACxB,IAAIjK,WAAW,CAACyD,OAAO,EAAE/B,aAAa,CAAC,IAAI+B,OAAO,CAACyG,aAAa,KAAK,WAAW,EAAE;UAChFtC,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACM,MAAM,CAACzF,OAAO,CAAC,CAAC;QACvC;QACA,IAAIvC,OAAO,CAACiJ,cAAc,EAAE,EAAE;UAC5B,IAAIxE,SAAS,CAACyE,KAAK,CAACC,YAAY,CAACnJ,OAAO,CAACoJ,SAAS,KAAK,QAAQ,IAAIjJ,sBAAsB,KAAKiI,SAAS,EAAE;YACvG1B,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACgB,aAAa,CAACnG,OAAO,CAAC,CAAC;UAC9C,CAAC,MAAM,IAAIkC,SAAS,CAACyE,KAAK,CAACC,YAAY,CAACnJ,OAAO,CAACoJ,SAAS,KAAK,aAAa,EAAE;YAC3E1C,UAAU,CAACoC,IAAI,CAACpB,IAAI,CAACY,KAAK,CAAC/F,OAAO,CAAC,CAAC;UACtC;QACF;MACF;IACF;IAEA,MAAM8G,OAAO,GAAG5E,SAAS,CAAC6E,gBAAgB,CAACH,YAAY,CAACnJ,OAAO;IAC/D,MAAMsC,eAAgC,GAAG;MACvCoE,UAAU;MACV6C,eAAe,EAAEtK,oBAAoB,CACnCe,OAAO,EACPA,OAAO,CAACiJ,cAAc,EAAE,KAAKjJ,OAAO,CAACwJ,OAAO,GAAGH,OAAO,CAACI,yBAAyB,GAAGJ,OAAO,CAACK,eAAe,CAAC,CAC5G,GACGC,KAAA;QAAA,IAAC;UAAEC;QAAQ,CAAC,GAAAD,KAAA;QAAA,oBAAK1L,KAAA,CAAA8E,aAAA,CAACrD,cAAc,CAACmK,WAAW;UAACtH,OAAO,EAAEA,OAAQ;UAACvC,OAAO,EAAEA,OAAQ;UAAC4J,OAAO,EAAEA;QAAQ,EAAG;MAAA,IACrGxB;IACN,CAAC;IAED,QAAQ,IAAI;MACV,KAAK7F,OAAO,CAACyG,aAAa,KAAK,SAAS;QAAE;UACxC,OAAO;YACL5G,OAAO,EAAEgG,SAAS;YAClB/F,WAAW,EAAE+F,SAAS;YACtB9F,eAAe,EAAE8F;UACnB,CAAC;QACH;MAEA,KAAK7F,OAAO,CAACyG,aAAa,KAAK,QAAQ;QAAE;UACvC,OAAO;YACL5G,OAAO,EAAEA,CAAA,KAAM/B,qBAAqB,CAACkC,OAAO,CAAC,CAAC4D,KAAK,CAACzB,eAAe,CAAC;YACpErC,WAAW,EAAEA,CAAA,KAAMoE,yBAAyB,CAAClE,OAAO,CAAC;YACrDD;UACF,CAAC;QACH;MAEA,KAAKC,OAAO,CAAC8C,aAAa,EAAE;QAAE;UAC5B,OAAO;YACLjD,OAAO,EAAEA,CAAA,KAAMkE,UAAU,CAAC/D,OAAO,CAAC;YAClCF,WAAW,EAAEA,CAAA,KAAMgC,SAAS,CAAC/B,eAAe,CAAC;YAC7CA;UACF,CAAC;QACH;MAEA;QAAS;UACP,OAAO;YACLF,OAAO,EAAEgG,SAAS;YAClB/F,WAAW,EAAEA,CAAA,KAAMgC,SAAS,CAAC/B,eAAe,CAAC;YAC7CA;UACF,CAAC;QACH;IAAC;EAEL,CAAC;AACH,CAAC;AAED,MAAMe,MAAM,GAAGhF,gBAAgB,CAAC;EAC9BiF,YAAY,EAAE;IACZwG,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,GAAG;IACXC,GAAG,EAAE,CAAC;IACNvI,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDoC,iBAAiB,EAAE;IACjBmG,aAAa,EAAE;EACjB,CAAC;EACDlG,YAAY,EAAE;IACZ+F,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,GAAG;IACXG,MAAM,EAAE,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACDjG,YAAY,EAAE;IACZ4F,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,GAAG;IACXG,MAAM,EAAE,EAAE;IACVxI,KAAK,EAAE;EACT;AACF,CAAC,CAAC;;AAEF;AACA,4BAAezD,KAAK,CAACmM,UAAU,CAACzK,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"names":["React","View","useSafeAreaInsets","ChannelFrozenBanner","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","messageKeyExtractor","shouldRenderReaction","toMegabyte","useFreshCallback","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","useUserProfile","ChatFlatList","ReactionAddons","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onReplyInThreadMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","colors","show","left","right","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","style","flex","backgroundColor","background","isFrozen","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","_extends","data","keyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","length","scrollButton","_ref3","handlers","toast","openSheet","alert","clipboardService","fileService","sbOptions","onResendFailure","error","TOAST","RESEND_MSG_ERROR","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","includes","onOpenFileURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","default","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","replyInThread","CHANNEL_MESSAGE_THREAD","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","configs","uikitWithAppInfo","HeaderComponent","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","BottomSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","forwardRef"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onReplyInThreadMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage, childMessage: HandleableMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onReplyInThreadMessage?: ChannelMessageListProps<T>['onReplyInThreadMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n hideParentMessage?: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onReplyInThreadMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n reply: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'reply' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(message),\n }),\n replyInThread: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'thread' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_THREAD,\n onPress: () => onReplyInThreadMessage?.(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import { View } from 'react-native';
|
|
|
4
4
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
5
5
|
import { ChannelFrozenBanner, createStyleSheet, useAlert, useBottomSheet, useToast, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
6
6
|
import { Logger, getAvailableUriFromFileMessage, getFileExtension, getFileType, isMyMessage, isVoiceMessage, messageKeyExtractor, shouldRenderReaction, toMegabyte, useFreshCallback } from '@sendbird/uikit-utils';
|
|
7
|
-
import { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';
|
|
8
|
-
import SBUUtils from '../../libs/SBUUtils';
|
|
7
|
+
import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat, useUserProfile } from '../../hooks/useContext';
|
|
9
8
|
import { ReactionAddons } from '../ReactionAddons';
|
|
10
9
|
import ThreadChatFlatList from '../ThreadChatFlatList';
|
|
11
10
|
const ChannelThreadMessageList = (_ref, ref) => {
|
|
@@ -125,6 +124,7 @@ const useCreateMessagePressActions = _ref3 => {
|
|
|
125
124
|
onDeleteMessage,
|
|
126
125
|
onPressMediaMessage
|
|
127
126
|
} = _ref3;
|
|
127
|
+
const handlers = useSBUHandlers();
|
|
128
128
|
const {
|
|
129
129
|
colors
|
|
130
130
|
} = useUIKitTheme();
|
|
@@ -182,9 +182,8 @@ const useCreateMessagePressActions = _ref3 => {
|
|
|
182
182
|
const fileType = getFileType(message.type || getFileExtension(message.name));
|
|
183
183
|
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
184
184
|
onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));
|
|
185
|
-
} else {
|
|
186
|
-
SBUUtils.openURL(message.url);
|
|
187
185
|
}
|
|
186
|
+
handlers.onOpenFileURL(message.url);
|
|
188
187
|
}
|
|
189
188
|
};
|
|
190
189
|
const openSheetForFailedMessage = message => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","useSafeAreaInsets","ChannelFrozenBanner","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","messageKeyExtractor","shouldRenderReaction","toMegabyte","useFreshCallback","useLocalization","usePlatformService","useSendbirdChat","useUserProfile","SBUUtils","ReactionAddons","ThreadChatFlatList","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","colors","show","left","right","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","style","flex","backgroundColor","background","isFrozen","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","_extends","data","keyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","length","scrollButton","_ref3","toast","openSheet","alert","clipboardService","fileService","sbOptions","onResendFailure","error","TOAST","RESEND_MSG_ERROR","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","includes","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","default","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","sendingStatus","configs","uikitWithAppInfo","groupChannel","HeaderComponent","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","BottomSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","forwardRef"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n } else {\n SBUUtils.openURL(message.url);\n }\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","View","useSafeAreaInsets","ChannelFrozenBanner","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","messageKeyExtractor","shouldRenderReaction","toMegabyte","useFreshCallback","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","useUserProfile","ReactionAddons","ThreadChatFlatList","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","colors","show","left","right","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","style","flex","backgroundColor","background","isFrozen","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","_extends","data","keyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","length","scrollButton","_ref3","handlers","toast","openSheet","alert","clipboardService","fileService","sbOptions","onResendFailure","error","TOAST","RESEND_MSG_ERROR","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","includes","onOpenFileURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","default","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","sendingStatus","configs","uikitWithAppInfo","groupChannel","HeaderComponent","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","BottomSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","forwardRef"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import { Box, GroupChannelMessage, Text, TypingIndicatorBubble, useUIKitTheme }
|
|
|
4
4
|
import { calcMessageGrouping, getMessageType, isMyMessage, isVoiceMessage, shouldRenderParentMessage, shouldRenderReaction, useIIFE } from '@sendbird/uikit-utils';
|
|
5
5
|
import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
|
|
6
6
|
import { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';
|
|
7
|
-
import { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';
|
|
8
|
-
import SBUUtils from '../../libs/SBUUtils';
|
|
7
|
+
import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';
|
|
9
8
|
import { TypingIndicatorType } from '../../types';
|
|
10
9
|
import { ReactionAddons } from '../ReactionAddons';
|
|
11
10
|
import GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';
|
|
@@ -28,6 +27,7 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
28
27
|
nextMessage,
|
|
29
28
|
hideParentMessage
|
|
30
29
|
} = _ref;
|
|
30
|
+
const handlers = useSBUHandlers();
|
|
31
31
|
const playerUnsubscribes = useRef([]);
|
|
32
32
|
const {
|
|
33
33
|
palette
|
|
@@ -83,7 +83,7 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
83
83
|
variant,
|
|
84
84
|
onPress,
|
|
85
85
|
onLongPress,
|
|
86
|
-
onPressURL: url =>
|
|
86
|
+
onPressURL: url => handlers.onOpenURL(url),
|
|
87
87
|
onPressAvatar: () => {
|
|
88
88
|
if ('sender' in message) onShowUserProfile === null || onShowUserProfile === void 0 ? void 0 : onShowUserProfile(message.sender);
|
|
89
89
|
},
|