@sendbird/uikit-react-native 3.0.4 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/ChannelInput/SendInput.js +151 -19
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/index.js +5 -13
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +34 -20
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChatFlatList/index.js +1 -1
- package/lib/commonjs/components/ChatFlatList/index.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +4 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +191 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +12 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/MessageSearchResultItem.js +2 -8
- package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +8 -7
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js +3 -9
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +43 -9
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js +5 -0
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +5 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +47 -10
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +38 -3
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/openChannel/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +19 -0
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/hooks/useConnection.js +2 -1
- package/lib/commonjs/hooks/useConnection.js.map +1 -1
- package/lib/commonjs/hooks/useMentionSuggestion.js +1 -1
- package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/commonjs/hooks/useMentionTextInput.js +4 -3
- package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -1
- package/lib/commonjs/libs/MentionManager.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +29 -0
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
- package/lib/commonjs/platform/createMediaService.native.js +1 -1
- package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
- package/lib/commonjs/platform/types.js.map +1 -1
- package/lib/commonjs/utils/pubsub.js +3 -1
- package/lib/commonjs/utils/pubsub.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/SendInput.js +153 -21
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js +6 -14
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +34 -20
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChatFlatList/index.js +1 -1
- package/lib/module/components/ChatFlatList/index.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +4 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +182 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js +13 -2
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/MessageSearchResultItem.js +3 -9
- package/lib/module/components/MessageSearchResultItem.js.map +1 -1
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +8 -7
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js +4 -10
- package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +43 -9
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js +6 -1
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput.js +5 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +50 -13
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +39 -4
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/openChannel/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +19 -0
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/hooks/useConnection.js +2 -1
- package/lib/module/hooks/useConnection.js.map +1 -1
- package/lib/module/hooks/useMentionSuggestion.js +1 -1
- package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/module/hooks/useMentionTextInput.js +4 -3
- package/lib/module/hooks/useMentionTextInput.js.map +1 -1
- package/lib/module/libs/MentionManager.js.map +1 -1
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +30 -1
- package/lib/module/localization/createBaseStringSet.js.map +1 -1
- package/lib/module/platform/createMediaService.native.js +1 -1
- package/lib/module/platform/createMediaService.native.js.map +1 -1
- package/lib/module/platform/types.js.map +1 -1
- package/lib/module/utils/pubsub.js +3 -1
- package/lib/module/utils/pubsub.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -0
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +9 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +1 -0
- package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +4 -2
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannel/types.d.ts +6 -2
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
- package/lib/typescript/src/domain/openChannel/types.d.ts +1 -2
- package/lib/typescript/src/libs/MentionManager.d.ts +1 -4
- package/lib/typescript/src/localization/StringSet.type.d.ts +7 -1
- package/lib/typescript/src/platform/types.d.ts +10 -11
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +6 -6
- package/src/components/ChannelInput/SendInput.tsx +184 -51
- package/src/components/ChannelInput/index.tsx +11 -15
- package/src/components/ChannelMessageList/index.tsx +45 -27
- package/src/components/ChatFlatList/index.tsx +1 -1
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.tsx +5 -1
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +177 -0
- package/src/components/GroupChannelMessageRenderer/index.tsx +16 -1
- package/src/components/MessageSearchResultItem.tsx +3 -5
- package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +6 -7
- package/src/containers/GroupChannelPreviewContainer.tsx +6 -7
- package/src/containers/SendbirdUIKitContainer.tsx +40 -10
- package/src/contexts/SendbirdChatCtx.tsx +7 -1
- package/src/domain/groupChannel/component/GroupChannelInput.tsx +5 -1
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +46 -13
- package/src/domain/groupChannel/module/moduleContext.tsx +38 -3
- package/src/domain/groupChannel/types.ts +8 -2
- package/src/domain/openChannel/types.ts +1 -2
- package/src/fragments/createGroupChannelFragment.tsx +15 -0
- package/src/hooks/useConnection.ts +1 -1
- package/src/hooks/useMentionSuggestion.ts +2 -1
- package/src/hooks/useMentionTextInput.ts +2 -2
- package/src/libs/MentionManager.tsx +1 -8
- package/src/localization/StringSet.type.ts +11 -0
- package/src/localization/createBaseStringSet.ts +30 -0
- package/src/platform/createMediaService.native.tsx +1 -1
- package/src/platform/types.ts +9 -9
- package/src/utils/pubsub.ts +3 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","handleFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","catch","TOAST","RESEND_MSG_ERROR","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","CHANNEL_MESSAGE_COPY","setString","COPY_OK","isEphemeral","isMyMessage","sendingStatus","CHANNEL_MESSAGE_EDIT","CHANNEL_MESSAGE_DELETE","CHANNEL_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","getFileType","getFileExtension","getAvailableUriFromFileMessage","SBUUtils","openURL","HeaderComponent","shouldRenderReaction","uikitWithAppInfo","groupChannel","enableReactions","_ref4","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"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 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 type { CommonComponent } from '../../types';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\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 onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<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?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n }) => React.ReactElement | null;\n renderNewMessagesButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n newMessages: SendbirdMessage[];\n }>;\n renderScrollToBottomButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n }>;\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 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 }: 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 getMessagePressActions = useGetMessagePressActions({\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 } = getMessagePressActions(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 });\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 useGetMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>) => {\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 handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => {\n onResendFailedMessage(message).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n },\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error'));\n },\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: PressActions = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n\n if (!channel.isEphemeral) {\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push(\n {\n icon: 'edit',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(msg),\n },\n {\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n },\n );\n }\n }\n }\n\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.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 if (!channel.isEphemeral) {\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push({\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n }\n\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => SBUUtils.openURL(msg.url);\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions,\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\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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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onFailureToReSend","error","TOAST","RESEND_MSG_ERROR","Logger","handleFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","catch","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","CHANNEL_MESSAGE_COPY","setString","COPY_OK","CHANNEL_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","DOWNLOAD_OK","log","err","DOWNLOAD_ERROR","isEphemeral","isMyMessage","sendingStatus","CHANNEL_MESSAGE_EDIT","disabled","threadInfo","replyCount","CHANNEL_MESSAGE_DELETE","isGroupChannel","uikit","groupChannel","replyType","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","getFileType","getFileExtension","getAvailableUriFromFileMessage","SBUUtils","openURL","HeaderComponent","shouldRenderReaction","uikitWithAppInfo","enableReactions","_ref4","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"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 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 type { CommonComponent } from '../../types';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\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 onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage) => 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 onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n }) => React.ReactElement | null;\n renderNewMessagesButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n newMessages: SendbirdMessage[];\n }>;\n renderScrollToBottomButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n }>;\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 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 getMessagePressActions = useGetMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\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 } = getMessagePressActions(item);\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\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 useGetMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>) => {\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 onFailureToReSend = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => {\n onResendFailedMessage(message).catch(onFailureToReSend);\n },\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error'));\n },\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: PressActions = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n }\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.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 if (!channel.isEphemeral) {\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'edit',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(msg),\n });\n }\n sheetItems.push({\n disabled: msg.threadInfo ? msg.threadInfo.replyCount > 0 : undefined,\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push({\n disabled: Boolean(msg.parentMessageId),\n icon: 'reply',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(msg),\n });\n }\n }\n\n if (msg.isFileMessage()) {\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => SBUUtils.openURL(msg.url);\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions,\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(onFailureToReSend);\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\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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"}
|
|
@@ -14,7 +14,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
14
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
15
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
16
16
|
let ANDROID_BUG_ALERT_SHOWED = _reactNative.Platform.OS !== 'android';
|
|
17
|
-
const BOTTOM_DETECT_THRESHOLD =
|
|
17
|
+
const BOTTOM_DETECT_THRESHOLD = 50;
|
|
18
18
|
const UNREACHABLE_THRESHOLD = Number.MIN_SAFE_INTEGER;
|
|
19
19
|
// FIXME: Inverted FlatList performance issue on Android {@link https://github.com/facebook/react-native/issues/30034}
|
|
20
20
|
const ChatFlatList = /*#__PURE__*/(0, _react.forwardRef)(function ChatFlatList(_ref, ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_FlatListInternal","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ANDROID_BUG_ALERT_SHOWED","Platform","OS","BOTTOM_DETECT_THRESHOLD","UNREACHABLE_THRESHOLD","Number","MIN_SAFE_INTEGER","ChatFlatList","forwardRef","_ref","ref","_props$data","onTopReached","onBottomReached","onScrolledAwayFromBottom","onScroll","props","select","useUIKitTheme","contentOffsetY","useRef","_onScroll","useFreshCallback","event","contentOffset","nativeEvent","prevOffsetY","current","currOffsetY","y","__DEV__","console","warn","createElement","bounces","removeClippedSubviews","keyboardDismissMode","keyboardShouldPersistTaps","indicatorStyle","light","dark","inverted","Boolean","data","onEndReached","onScrollToIndexFailed","NOOP","onStartReached","scrollEventThrottle","keyExtractor","getMessageUniqId","style","flex","StyleSheet","flatten","maintainVisibleContentPosition","minIndexForVisible","autoscrollToTopThreshold","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { FlatListProps, Platform, FlatList as RNFlatList, StyleSheet } from 'react-native';\n\nimport { useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { NOOP, SendbirdMessage, getMessageUniqId, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport FlatListInternal from './FlatListInternal';\n\nlet ANDROID_BUG_ALERT_SHOWED = Platform.OS !== 'android';\nconst BOTTOM_DETECT_THRESHOLD =
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_FlatListInternal","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ANDROID_BUG_ALERT_SHOWED","Platform","OS","BOTTOM_DETECT_THRESHOLD","UNREACHABLE_THRESHOLD","Number","MIN_SAFE_INTEGER","ChatFlatList","forwardRef","_ref","ref","_props$data","onTopReached","onBottomReached","onScrolledAwayFromBottom","onScroll","props","select","useUIKitTheme","contentOffsetY","useRef","_onScroll","useFreshCallback","event","contentOffset","nativeEvent","prevOffsetY","current","currOffsetY","y","__DEV__","console","warn","createElement","bounces","removeClippedSubviews","keyboardDismissMode","keyboardShouldPersistTaps","indicatorStyle","light","dark","inverted","Boolean","data","onEndReached","onScrollToIndexFailed","NOOP","onStartReached","scrollEventThrottle","keyExtractor","getMessageUniqId","style","flex","StyleSheet","flatten","maintainVisibleContentPosition","minIndexForVisible","autoscrollToTopThreshold","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { FlatListProps, Platform, FlatList as RNFlatList, StyleSheet } from 'react-native';\n\nimport { useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { NOOP, SendbirdMessage, getMessageUniqId, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport FlatListInternal from './FlatListInternal';\n\nlet ANDROID_BUG_ALERT_SHOWED = Platform.OS !== 'android';\nconst BOTTOM_DETECT_THRESHOLD = 50;\nconst UNREACHABLE_THRESHOLD = Number.MIN_SAFE_INTEGER;\n\ntype Props = Omit<FlatListProps<SendbirdMessage>, 'onEndReached'> & {\n onBottomReached: () => void;\n onTopReached: () => void;\n onScrolledAwayFromBottom: (value: boolean) => void;\n};\n// FIXME: Inverted FlatList performance issue on Android {@link https://github.com/facebook/react-native/issues/30034}\nconst ChatFlatList = forwardRef<RNFlatList, Props>(function ChatFlatList(\n { onTopReached, onBottomReached, onScrolledAwayFromBottom, onScroll, ...props },\n ref,\n) {\n const { select } = useUIKitTheme();\n const contentOffsetY = useRef(0);\n\n const _onScroll = useFreshCallback<NonNullable<Props['onScroll']>>((event) => {\n onScroll?.(event);\n\n const { contentOffset } = event.nativeEvent;\n\n const prevOffsetY = contentOffsetY.current;\n const currOffsetY = contentOffset.y;\n\n if (BOTTOM_DETECT_THRESHOLD < prevOffsetY && currOffsetY <= BOTTOM_DETECT_THRESHOLD) {\n onScrolledAwayFromBottom(false);\n } else if (BOTTOM_DETECT_THRESHOLD < currOffsetY && prevOffsetY <= BOTTOM_DETECT_THRESHOLD) {\n onScrolledAwayFromBottom(true);\n }\n\n contentOffsetY.current = contentOffset.y;\n });\n\n if (__DEV__ && !ANDROID_BUG_ALERT_SHOWED) {\n ANDROID_BUG_ALERT_SHOWED = true;\n // eslint-disable-next-line no-console\n console.warn(\n 'UIKit Warning: The inverted FlatList has a performance issue on Android. Maybe this is a bug.\\n' +\n 'Please refer to the link: https://github.com/facebook/react-native/issues/30034',\n );\n }\n\n return (\n <FlatListInternal\n bounces={false}\n removeClippedSubviews\n keyboardDismissMode={'on-drag'}\n keyboardShouldPersistTaps={'handled'}\n indicatorStyle={select({ light: 'black', dark: 'white' })}\n {...props}\n // FIXME: inverted list of ListEmptyComponent is reversed {@link https://github.com/facebook/react-native/issues/21196#issuecomment-836937743}\n inverted={Boolean(props.data?.length)}\n ref={ref}\n onEndReached={onTopReached}\n onScrollToIndexFailed={NOOP}\n onStartReached={onBottomReached}\n scrollEventThrottle={16}\n onScroll={_onScroll}\n keyExtractor={getMessageUniqId}\n style={{ flex: 1, ...StyleSheet.flatten(props.style) }}\n maintainVisibleContentPosition={{ minIndexForVisible: 0, autoscrollToTopThreshold: UNREACHABLE_THRESHOLD }}\n />\n );\n});\n\nexport default ChatFlatList;\n"],"mappings":"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"}
|
package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js
CHANGED
|
@@ -6,13 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
9
10
|
var _constants = require("../../constants");
|
|
10
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
13
|
const GroupChannelMessageFocusAnimation = props => {
|
|
14
|
+
const isFirstMount = (0, _uikitUtils.useIsFirstMount)();
|
|
13
15
|
const translateY = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
|
|
14
16
|
(0, _react.useEffect)(() => {
|
|
15
17
|
if (props.focused) {
|
|
18
|
+
const delay = _constants.MESSAGE_FOCUS_ANIMATION_DELAY + (isFirstMount ? _constants.MESSAGE_SEARCH_SAFE_SCROLL_DELAY : 0);
|
|
16
19
|
setTimeout(() => {
|
|
17
20
|
_reactNative.Animated.sequence([{
|
|
18
21
|
toValue: -10,
|
|
@@ -31,7 +34,7 @@ const GroupChannelMessageFocusAnimation = props => {
|
|
|
31
34
|
useNativeDriver: true,
|
|
32
35
|
easing: _reactNative.Easing.inOut(_reactNative.Easing.ease)
|
|
33
36
|
}))).start();
|
|
34
|
-
},
|
|
37
|
+
}, delay);
|
|
35
38
|
}
|
|
36
39
|
}, [props.focused]);
|
|
37
40
|
return /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
|
package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_constants","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageFocusAnimation","props","translateY","useRef","Animated","Value","current","useEffect","focused","setTimeout","sequence","toValue","duration","map","value","timing","useNativeDriver","easing","Easing","inOut","ease","start","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitUtils","_constants","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageFocusAnimation","props","isFirstMount","useIsFirstMount","translateY","useRef","Animated","Value","current","useEffect","focused","delay","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","setTimeout","sequence","toValue","duration","map","value","timing","useNativeDriver","easing","Easing","inOut","ease","start","createElement","View","style","transform","children","_default","exports"],"sources":["GroupChannelMessageFocusAnimation.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Easing } from 'react-native';\n\nimport { useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../constants';\n\nconst GroupChannelMessageFocusAnimation = (props: React.PropsWithChildren<{ focused: boolean }>) => {\n const isFirstMount = useIsFirstMount();\n const translateY = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n if (props.focused) {\n const delay = MESSAGE_FOCUS_ANIMATION_DELAY + (isFirstMount ? MESSAGE_SEARCH_SAFE_SCROLL_DELAY : 0);\n setTimeout(() => {\n Animated.sequence(\n [\n { toValue: -10, duration: 500 },\n { toValue: 0, duration: 100 },\n { toValue: -10, duration: 200 },\n { toValue: 0, duration: 100 },\n ].map((value) =>\n Animated.timing(translateY, { ...value, useNativeDriver: true, easing: Easing.inOut(Easing.ease) }),\n ),\n ).start();\n }, delay);\n }\n }, [props.focused]);\n\n return <Animated.View style={{ transform: [{ translateY }] }}>{props.children}</Animated.View>;\n};\n\nexport default GroupChannelMessageFocusAnimation;\n"],"mappings":"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"}
|
package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
|
|
9
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
10
|
+
var _moduleContext = require("../../domain/groupChannel/module/moduleContext");
|
|
11
|
+
var _useContext = require("../../hooks/useContext");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
const GroupChannelMessageParentMessage = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
variant,
|
|
17
|
+
message,
|
|
18
|
+
childMessage,
|
|
19
|
+
onPress
|
|
20
|
+
} = _ref;
|
|
21
|
+
const {
|
|
22
|
+
currentUser
|
|
23
|
+
} = (0, _useContext.useSendbirdChat)();
|
|
24
|
+
const groupChannelPubSub = (0, _react.useContext)(_moduleContext.GroupChannelContexts.PubSub);
|
|
25
|
+
const {
|
|
26
|
+
select,
|
|
27
|
+
colors,
|
|
28
|
+
palette
|
|
29
|
+
} = (0, _uikitReactNativeFoundation.useUIKitTheme)();
|
|
30
|
+
const {
|
|
31
|
+
STRINGS
|
|
32
|
+
} = (0, _useContext.useLocalization)();
|
|
33
|
+
const {
|
|
34
|
+
mediaService
|
|
35
|
+
} = (0, _useContext.usePlatformService)();
|
|
36
|
+
const [parentMessage, setParentMessage] = (0, _react.useState)(() => message);
|
|
37
|
+
const type = (0, _uikitUtils.getMessageType)(parentMessage);
|
|
38
|
+
(0, _react.useEffect)(() => {
|
|
39
|
+
return groupChannelPubSub.subscribe(_ref2 => {
|
|
40
|
+
let {
|
|
41
|
+
type,
|
|
42
|
+
data
|
|
43
|
+
} = _ref2;
|
|
44
|
+
if (type === 'MESSAGES_UPDATED') {
|
|
45
|
+
const updatedParent = data.messages.find(it => {
|
|
46
|
+
return it.messageId === parentMessage.messageId;
|
|
47
|
+
});
|
|
48
|
+
if (updatedParent) setParentMessage(updatedParent);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}, []);
|
|
52
|
+
const renderFileMessageAsVideoThumbnail = url => {
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.VideoThumbnail, {
|
|
54
|
+
style: styles.image,
|
|
55
|
+
iconSize: 18,
|
|
56
|
+
source: url,
|
|
57
|
+
fetchThumbnailFromVideoSource: uri => mediaService.getVideoThumbnail({
|
|
58
|
+
url: uri,
|
|
59
|
+
timeMills: 1000
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const renderFileMessageAsPreview = url => {
|
|
64
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ImageWithPlaceholder, {
|
|
65
|
+
style: styles.image,
|
|
66
|
+
source: {
|
|
67
|
+
uri: url
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const renderFileMessageAsDownloadable = name => {
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
|
|
73
|
+
style: styles.bubbleContainer,
|
|
74
|
+
backgroundColor: select({
|
|
75
|
+
light: palette.background100,
|
|
76
|
+
dark: palette.background400
|
|
77
|
+
})
|
|
78
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
|
|
79
|
+
icon: (0, _uikitUtils.getFileIconFromMessageType)(type),
|
|
80
|
+
size: 16,
|
|
81
|
+
color: colors.onBackground03,
|
|
82
|
+
containerStyle: styles.fileIcon
|
|
83
|
+
}), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
84
|
+
body3: true,
|
|
85
|
+
color: colors.onBackground03,
|
|
86
|
+
numberOfLines: 1,
|
|
87
|
+
ellipsizeMode: 'middle'
|
|
88
|
+
}, (0, _uikitUtils.truncate)(name, {
|
|
89
|
+
mode: 'mid',
|
|
90
|
+
maxLen: 20
|
|
91
|
+
})));
|
|
92
|
+
};
|
|
93
|
+
const parentMessageComponent = (0, _uikitUtils.useIIFE)(() => {
|
|
94
|
+
switch (type) {
|
|
95
|
+
case 'user':
|
|
96
|
+
case 'user.opengraph':
|
|
97
|
+
{
|
|
98
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
|
|
99
|
+
style: styles.bubbleContainer,
|
|
100
|
+
backgroundColor: select({
|
|
101
|
+
light: palette.background100,
|
|
102
|
+
dark: palette.background400
|
|
103
|
+
})
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
105
|
+
body3: true,
|
|
106
|
+
color: colors.onBackground03,
|
|
107
|
+
suppressHighlighting: true,
|
|
108
|
+
numberOfLines: 2,
|
|
109
|
+
ellipsizeMode: 'tail'
|
|
110
|
+
}, parentMessage.message));
|
|
111
|
+
}
|
|
112
|
+
case 'file':
|
|
113
|
+
case 'file.audio':
|
|
114
|
+
{
|
|
115
|
+
return renderFileMessageAsDownloadable(parentMessage.name);
|
|
116
|
+
}
|
|
117
|
+
case 'file.video':
|
|
118
|
+
{
|
|
119
|
+
return renderFileMessageAsVideoThumbnail((0, _uikitUtils.getThumbnailUriFromFileMessage)(parentMessage));
|
|
120
|
+
}
|
|
121
|
+
case 'file.image':
|
|
122
|
+
{
|
|
123
|
+
return renderFileMessageAsPreview((0, _uikitUtils.getThumbnailUriFromFileMessage)(parentMessage));
|
|
124
|
+
}
|
|
125
|
+
default:
|
|
126
|
+
{
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
|
|
132
|
+
alignItems: variant === 'outgoing' ? 'flex-end' : 'flex-start',
|
|
133
|
+
paddingLeft: variant === 'outgoing' ? 0 : 12,
|
|
134
|
+
paddingRight: variant === 'outgoing' ? 12 : 0
|
|
135
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
|
|
136
|
+
onPress: () => onPress === null || onPress === void 0 ? void 0 : onPress(parentMessage),
|
|
137
|
+
style: styles.senderLabel
|
|
138
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
|
|
139
|
+
icon: 'reply-filled',
|
|
140
|
+
size: 13,
|
|
141
|
+
color: colors.onBackground03,
|
|
142
|
+
containerStyle: {
|
|
143
|
+
marginRight: 4
|
|
144
|
+
}
|
|
145
|
+
}), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
|
|
146
|
+
caption1: true,
|
|
147
|
+
color: colors.onBackground03
|
|
148
|
+
}, STRINGS.LABELS.REPLY_FROM_SENDER_TO_RECEIVER(childMessage, parentMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)))), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
|
|
149
|
+
flexDirection: 'row',
|
|
150
|
+
justifyContent: variant === 'outgoing' ? 'flex-end' : 'flex-start',
|
|
151
|
+
style: styles.messageContainer
|
|
152
|
+
}, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
|
|
153
|
+
onPress: () => onPress === null || onPress === void 0 ? void 0 : onPress(parentMessage)
|
|
154
|
+
}, parentMessageComponent)));
|
|
155
|
+
};
|
|
156
|
+
const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
|
|
157
|
+
messageContainer: {
|
|
158
|
+
opacity: 0.5,
|
|
159
|
+
marginTop: 4,
|
|
160
|
+
marginBottom: -6
|
|
161
|
+
},
|
|
162
|
+
bubbleContainer: {
|
|
163
|
+
maxWidth: 220,
|
|
164
|
+
overflow: 'hidden',
|
|
165
|
+
flexDirection: 'row',
|
|
166
|
+
alignItems: 'center',
|
|
167
|
+
borderRadius: 16,
|
|
168
|
+
paddingHorizontal: 12,
|
|
169
|
+
paddingBottom: 12,
|
|
170
|
+
paddingTop: 6
|
|
171
|
+
},
|
|
172
|
+
image: {
|
|
173
|
+
width: 156,
|
|
174
|
+
height: 104,
|
|
175
|
+
borderRadius: 16,
|
|
176
|
+
overflow: 'hidden'
|
|
177
|
+
},
|
|
178
|
+
fileIcon: {
|
|
179
|
+
width: 16,
|
|
180
|
+
height: 16,
|
|
181
|
+
borderRadius: 10,
|
|
182
|
+
marginRight: 4,
|
|
183
|
+
marginTop: 2
|
|
184
|
+
},
|
|
185
|
+
senderLabel: {
|
|
186
|
+
flexDirection: 'row'
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
var _default = GroupChannelMessageParentMessage;
|
|
190
|
+
exports.default = _default;
|
|
191
|
+
//# sourceMappingURL=GroupChannelMessageParentMessage.js.map
|
package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_moduleContext","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageParentMessage","_ref","variant","message","childMessage","onPress","currentUser","useSendbirdChat","groupChannelPubSub","useContext","GroupChannelContexts","PubSub","select","colors","palette","useUIKitTheme","STRINGS","useLocalization","mediaService","usePlatformService","parentMessage","setParentMessage","useState","type","getMessageType","useEffect","subscribe","_ref2","data","updatedParent","messages","find","it","messageId","renderFileMessageAsVideoThumbnail","url","createElement","VideoThumbnail","style","styles","image","iconSize","source","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","renderFileMessageAsPreview","ImageWithPlaceholder","renderFileMessageAsDownloadable","name","Box","bubbleContainer","backgroundColor","light","background100","dark","background400","Icon","icon","getFileIconFromMessageType","size","color","onBackground03","containerStyle","fileIcon","Text","body3","numberOfLines","ellipsizeMode","truncate","mode","maxLen","parentMessageComponent","useIIFE","suppressHighlighting","getThumbnailUriFromFileMessage","alignItems","paddingLeft","paddingRight","PressBox","senderLabel","marginRight","caption1","LABELS","REPLY_FROM_SENDER_TO_RECEIVER","userId","flexDirection","justifyContent","messageContainer","createStyleSheet","opacity","marginTop","marginBottom","maxWidth","overflow","borderRadius","paddingHorizontal","paddingBottom","paddingTop","width","height","_default","exports"],"sources":["GroupChannelMessageParentMessage.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\n\nimport {\n Box,\n Icon,\n ImageWithPlaceholder,\n PressBox,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n truncate,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n variant: 'outgoing' | 'incoming';\n message: SendbirdUserMessage | SendbirdFileMessage;\n childMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: (message: SendbirdMessage) => void;\n};\n\nconst GroupChannelMessageParentMessage = ({ variant, message, childMessage, onPress }: Props) => {\n const { currentUser } = useSendbirdChat();\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { select, colors, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n\n const [parentMessage, setParentMessage] = useState(() => message);\n const type = getMessageType(parentMessage);\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\n if (type === 'MESSAGES_UPDATED') {\n const updatedParent = data.messages.find((it): it is SendbirdUserMessage | SendbirdFileMessage => {\n return it.messageId === parentMessage.messageId;\n });\n if (updatedParent) setParentMessage(updatedParent);\n }\n });\n }, []);\n\n const renderFileMessageAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.image}\n iconSize={18}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n const renderFileMessageAsPreview = (url: string) => {\n return <ImageWithPlaceholder style={styles.image} source={{ uri: url }} />;\n };\n const renderFileMessageAsDownloadable = (name: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Icon\n icon={getFileIconFromMessageType(type)}\n size={16}\n color={colors.onBackground03}\n containerStyle={styles.fileIcon}\n />\n <Text body3 color={colors.onBackground03} numberOfLines={1} ellipsizeMode={'middle'}>\n {truncate(name, { mode: 'mid', maxLen: 20 })}\n </Text>\n </Box>\n );\n };\n\n const parentMessageComponent = useIIFE(() => {\n switch (type) {\n case 'user':\n case 'user.opengraph': {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Text body3 color={colors.onBackground03} suppressHighlighting numberOfLines={2} ellipsizeMode={'tail'}>\n {(parentMessage as SendbirdUserMessage).message}\n </Text>\n </Box>\n );\n }\n case 'file':\n case 'file.audio': {\n return renderFileMessageAsDownloadable((parentMessage as SendbirdFileMessage).name);\n }\n case 'file.video': {\n return renderFileMessageAsVideoThumbnail(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.image': {\n return renderFileMessageAsPreview(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box>\n <Box\n alignItems={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n paddingLeft={variant === 'outgoing' ? 0 : 12}\n paddingRight={variant === 'outgoing' ? 12 : 0}\n >\n <PressBox onPress={() => onPress?.(parentMessage)} style={styles.senderLabel}>\n <Icon icon={'reply-filled'} size={13} color={colors.onBackground03} containerStyle={{ marginRight: 4 }} />\n <Text caption1 color={colors.onBackground03}>\n {STRINGS.LABELS.REPLY_FROM_SENDER_TO_RECEIVER(childMessage, parentMessage, currentUser?.userId)}\n </Text>\n </PressBox>\n </Box>\n <Box\n flexDirection={'row'}\n justifyContent={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n style={styles.messageContainer}\n >\n <PressBox onPress={() => onPress?.(parentMessage)}>{parentMessageComponent}</PressBox>\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n messageContainer: {\n opacity: 0.5,\n marginTop: 4,\n marginBottom: -6,\n },\n bubbleContainer: {\n maxWidth: 220,\n overflow: 'hidden',\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 16,\n paddingHorizontal: 12,\n paddingBottom: 12,\n paddingTop: 6,\n },\n image: {\n width: 156,\n height: 104,\n borderRadius: 16,\n overflow: 'hidden',\n },\n fileIcon: {\n width: 16,\n height: 16,\n borderRadius: 10,\n marginRight: 4,\n marginTop: 2,\n },\n senderLabel: {\n flexDirection: 'row',\n },\n});\n\nexport default GroupChannelMessageParentMessage;\n"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ var _ReactionAddons = require("../ReactionAddons");
|
|
|
13
13
|
var _GroupChannelMessageDateSeparator = _interopRequireDefault(require("./GroupChannelMessageDateSeparator"));
|
|
14
14
|
var _GroupChannelMessageFocusAnimation = _interopRequireDefault(require("./GroupChannelMessageFocusAnimation"));
|
|
15
15
|
var _GroupChannelMessageOutgoingStatus = _interopRequireDefault(require("./GroupChannelMessageOutgoingStatus"));
|
|
16
|
+
var _GroupChannelMessageParentMessage = _interopRequireDefault(require("./GroupChannelMessageParentMessage"));
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
18
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
18
19
|
const GroupChannelMessageRenderer = _ref => {
|
|
@@ -21,6 +22,7 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
21
22
|
message,
|
|
22
23
|
onPress,
|
|
23
24
|
onLongPress,
|
|
25
|
+
onPressParentMessage,
|
|
24
26
|
onShowUserProfile,
|
|
25
27
|
enableMessageGrouping,
|
|
26
28
|
focused,
|
|
@@ -54,9 +56,10 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
54
56
|
}
|
|
55
57
|
return null;
|
|
56
58
|
});
|
|
59
|
+
const variant = (0, _uikitUtils.isMyMessage)(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ? 'outgoing' : 'incoming';
|
|
57
60
|
const messageProps = {
|
|
58
61
|
channel,
|
|
59
|
-
variant
|
|
62
|
+
variant,
|
|
60
63
|
onPress,
|
|
61
64
|
onLongPress,
|
|
62
65
|
onPressURL: url => _SBUUtils.default.openURL(url),
|
|
@@ -73,6 +76,12 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
73
76
|
channel: channel,
|
|
74
77
|
message: message
|
|
75
78
|
}) : null,
|
|
79
|
+
parentMessage: (0, _uikitUtils.shouldRenderParentMessage)(message) ? /*#__PURE__*/_react.default.createElement(_GroupChannelMessageParentMessage.default, {
|
|
80
|
+
variant: variant,
|
|
81
|
+
childMessage: message,
|
|
82
|
+
message: message.parentMessage,
|
|
83
|
+
onPress: onPressParentMessage
|
|
84
|
+
}) : null,
|
|
76
85
|
strings: {
|
|
77
86
|
edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,
|
|
78
87
|
senderName: 'sender' in message && message.sender.nickname || STRINGS.LABELS.USER_NO_NAME,
|
|
@@ -183,6 +192,8 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
183
192
|
} else {
|
|
184
193
|
return 16;
|
|
185
194
|
}
|
|
195
|
+
} else if (nextMessage && (0, _uikitUtils.shouldRenderParentMessage)(nextMessage)) {
|
|
196
|
+
return 16;
|
|
186
197
|
} else if (groupWithNext) {
|
|
187
198
|
return 2;
|
|
188
199
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ReactionAddons","_GroupChannelMessageDateSeparator","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","useSendbirdChat","STRINGS","useLocalization","mediaService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","reactionChildren","useIIFE","shouldRenderReaction","uikitWithAppInfo","groupChannel","enableReactions","reactions","createElement","ReactionAddons","Message","messageProps","variant","isMyMessage","userId","onPressURL","url","SBUUtils","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","groupedWithPrev","groupedWithNext","children","sendingStatus","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref2","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","_messageProps$onPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport { Box, GroupChannelMessage, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant: isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming',\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ReactionAddons","_GroupChannelMessageDateSeparator","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","useSendbirdChat","STRINGS","useLocalization","mediaService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","reactionChildren","useIIFE","shouldRenderReaction","uikitWithAppInfo","groupChannel","enableReactions","reactions","createElement","ReactionAddons","Message","variant","isMyMessage","userId","messageProps","onPressURL","url","SBUUtils","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","groupedWithPrev","groupedWithNext","children","sendingStatus","parentMessage","shouldRenderParentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref2","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","_messageProps$onPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport { Box, GroupChannelMessage, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\n <GroupChannelMessageParentMessage\n variant={variant}\n childMessage={message}\n message={message.parentMessage}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
|