@sendbird/uikit-react-native 3.9.5 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/lib/commonjs/components/ChannelMessageList/index.js +57 -9
  2. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  3. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +53 -0
  4. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
  5. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +5 -0
  6. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  7. package/lib/commonjs/components/UnreadMessagesFloating.js +77 -0
  8. package/lib/commonjs/components/UnreadMessagesFloating.js.map +1 -0
  9. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +156 -7
  10. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  11. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  12. package/lib/commonjs/fragments/createGroupChannelFragment.js +57 -3
  13. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  14. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  15. package/lib/commonjs/localization/createBaseStringSet.js +16 -2
  16. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  17. package/lib/commonjs/version.js +1 -1
  18. package/lib/commonjs/version.js.map +1 -1
  19. package/lib/module/components/ChannelMessageList/index.js +57 -9
  20. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  21. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +46 -0
  22. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
  23. package/lib/module/components/GroupChannelMessageRenderer/index.js +5 -0
  24. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  25. package/lib/module/components/UnreadMessagesFloating.js +70 -0
  26. package/lib/module/components/UnreadMessagesFloating.js.map +1 -0
  27. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +158 -9
  28. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  29. package/lib/module/domain/groupChannel/types.js.map +1 -1
  30. package/lib/module/fragments/createGroupChannelFragment.js +59 -5
  31. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  32. package/lib/module/localization/StringSet.type.js.map +1 -1
  33. package/lib/module/localization/createBaseStringSet.js +16 -2
  34. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  35. package/lib/module/version.js +1 -1
  36. package/lib/module/version.js.map +1 -1
  37. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +8 -1
  38. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.d.ts +6 -0
  39. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +1 -0
  40. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
  41. package/lib/typescript/src/components/UnreadMessagesFloating.d.ts +8 -0
  42. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  43. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +6 -1
  44. package/lib/typescript/src/domain/groupChannel/types.d.ts +13 -1
  45. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  46. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  47. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  48. package/lib/typescript/src/version.d.ts +1 -1
  49. package/package.json +8 -7
  50. package/src/components/ChannelMessageList/index.tsx +71 -5
  51. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.tsx +45 -0
  52. package/src/components/GroupChannelMessageRenderer/index.tsx +5 -0
  53. package/src/components/UnreadMessagesFloating.tsx +60 -0
  54. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +204 -5
  55. package/src/domain/groupChannel/types.ts +15 -0
  56. package/src/fragments/createGroupChannelFragment.tsx +67 -4
  57. package/src/localization/StringSet.type.ts +3 -0
  58. package/src/localization/createBaseStringSet.ts +16 -4
  59. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","ChannelFrozenBanner","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","messageKeyExtractor","shouldRenderReaction","toMegabyte","useFreshCallback","useSafeAreaPadding","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","useUserProfile","SBUUtils","ChatFlatList","ReactionAddons","ChannelMessageList","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onReplyInThreadMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListComponent","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","ref","STRINGS","colors","show","safeAreaLayout","createMessagePressActions","useCreateMessagePressActions","renderItem","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","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","_handlers$onOpenFileU","onOpenFileURL","call","openFile","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","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","onClose","BottomSheet","position","zIndex","top","start","end","paddingBottom","bottom","alignSelf","forwardRef"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\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 useSafeAreaPadding,\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 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 flatListComponent?: React.ComponentType<FlatListProps<SendbirdMessage>>;\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 flatListComponent,\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 safeAreaLayout = useSafeAreaPadding(['left', 'right']);\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\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 flatListComponent={flatListComponent}\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 handlers.onOpenFileURL?.(message.url);\n } else {\n const openFile = handlers.onOpenFileURL ?? SBUUtils.openURL;\n openFile(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 start: 8,\n end: 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 end: 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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","ignoreList":[]}
1
+ {"version":3,"names":["React","View","ChannelFrozenBanner","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","messageKeyExtractor","shouldRenderReaction","toMegabyte","useFreshCallback","useSafeAreaPadding","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","useUserProfile","SBUUtils","ChatFlatList","ReactionAddons","ChannelMessageList","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onReplyInThreadMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","onPressMarkAsUnreadMessage","currentUserId","renderUnreadMessagesFloating","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","unreadFirstMessage","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListComponent","flatListProps","onViewableItemsChanged","onPressNewMessagesButton","onPressScrollToBottomButton","unreadMessagesFloatingProps","ref","STRINGS","colors","show","safeAreaLayout","createMessagePressActions","useCreateMessagePressActions","renderItem","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","isFirstUnreadMessage","messageId","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","style","flex","backgroundColor","background","isFrozen","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","unreadMsgFloatingWhenFrozen","unreadMsgFloating","visible","onPressClose","unreadMessageCount","_extends","data","keyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","length","scrollButton","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","_handlers$onOpenFileU","onOpenFileURL","call","openFile","openURL","onMarkAsUnread","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","menu","copy","icon","CHANNEL_MESSAGE_COPY","markAsUnread","CHANNEL_MESSAGE_MARK_AS_UNREAD","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","isMyMsg","isGroupChannel","uikit","groupChannel","enableMarkAsUnread","replyType","configs","uikitWithAppInfo","HeaderComponent","isSuper","enableReactionsSupergroup","enableReactions","onClose","BottomSheet","position","zIndex","top","start","end","paddingBottom","alignSelf","bottom","forwardRef"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\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 useSafeAreaPadding,\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 SBUUtils from '../../libs/SBUUtils';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\nimport { UnreadMessagesFloatingProps } from '../UnreadMessagesFloating';\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 unreadFirstMessage?: 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 onPressMarkAsUnreadMessage?: (message: HandleableMessage) => 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 isFirstUnreadMessage?: 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 renderUnreadMessagesFloating?: null | ((props: UnreadMessagesFloatingProps) => React.ReactElement | null);\n unreadMessagesFloatingProps?: UnreadMessagesFloatingProps;\n flatListComponent?: React.ComponentType<FlatListProps<SendbirdMessage>>;\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n onViewableItemsChanged?: FlatListProps<SendbirdMessage>['onViewableItemsChanged'];\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 onPressMarkAsUnreadMessage,\n currentUserId,\n renderUnreadMessagesFloating,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n unreadFirstMessage,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListComponent,\n flatListProps,\n onViewableItemsChanged,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n unreadMessagesFloatingProps,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const safeAreaLayout = useSafeAreaPadding(['left', 'right']);\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressMarkAsUnreadMessage,\n });\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 isFirstUnreadMessage: unreadFirstMessage?.messageId === item.messageId,\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 {renderUnreadMessagesFloating && (\n <View\n style={[channel.isFrozen ? styles.unreadMsgFloatingWhenFrozen : styles.unreadMsgFloating, safeAreaLayout]}\n >\n {renderUnreadMessagesFloating({\n visible: unreadMessagesFloatingProps?.visible ?? false,\n onPressClose: () => unreadMessagesFloatingProps?.onPressClose(),\n unreadMessageCount: unreadMessagesFloatingProps?.unreadMessageCount ?? 0,\n })}\n </View>\n )}\n <ChatFlatList\n flatListComponent={flatListComponent}\n {...flatListProps}\n onViewableItemsChanged={onViewableItemsChanged}\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 onPressMarkAsUnreadMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n | 'onPressMarkAsUnreadMessage'\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 handlers.onOpenFileURL?.(message.url);\n } else {\n const openFile = handlers.onOpenFileURL ?? SBUUtils.openURL;\n openFile(message.url);\n }\n }\n };\n\n const onMarkAsUnread = (message: HandleableMessage) => {\n onPressMarkAsUnreadMessage?.(message);\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 markAsUnread: (message: HandleableMessage) => ({\n icon: 'mark-as-unread' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_MARK_AS_UNREAD,\n onPress: () => onMarkAsUnread(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 (message.sendingStatus === 'succeeded') {\n const isMyMsg = isMyMessage(message, currentUserId);\n if (isMyMsg) {\n sheetItems.push(menu.edit(message));\n }\n\n if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n sheetItems.push(menu.markAsUnread(message));\n }\n\n if (isMyMsg) {\n sheetItems.push(menu.delete(message));\n }\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 (message.sendingStatus === 'succeeded') {\n if (channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n sheetItems.push(menu.markAsUnread(message));\n }\n\n if (isMyMessage(message, currentUserId)) {\n sheetItems.push(menu.delete(message));\n }\n }\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 start: 8,\n end: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n unreadMsgFloating: {\n position: 'absolute',\n zIndex: 999,\n top: 12,\n alignSelf: 'center',\n },\n unreadMsgFloatingWhenFrozen: {\n position: 'absolute',\n zIndex: 999,\n top: 40,\n alignSelf: 'center',\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 end: 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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","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { Box, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { useLocalization } from '../../hooks/useContext';
5
+ const GroupChannelMessageNewLine = ({
6
+ shouldRenderNewLine
7
+ }) => {
8
+ if (!shouldRenderNewLine) return null;
9
+ const {
10
+ STRINGS
11
+ } = useLocalization();
12
+ const {
13
+ colors
14
+ } = useUIKitTheme();
15
+ return /*#__PURE__*/React.createElement(View, {
16
+ style: styles.container
17
+ }, /*#__PURE__*/React.createElement(Box, {
18
+ backgroundColor: colors.primary,
19
+ style: styles.line
20
+ }), /*#__PURE__*/React.createElement(Text, {
21
+ caption3: true,
22
+ numberOfLines: 1,
23
+ color: colors.primary,
24
+ style: styles.label
25
+ }, STRINGS.GROUP_CHANNEL.LIST_NEW_LINE), /*#__PURE__*/React.createElement(Box, {
26
+ backgroundColor: colors.primary,
27
+ style: styles.line
28
+ }));
29
+ };
30
+ const styles = StyleSheet.create({
31
+ container: {
32
+ width: '100%',
33
+ flexDirection: 'row',
34
+ alignItems: 'center',
35
+ marginBottom: 16
36
+ },
37
+ line: {
38
+ flex: 1,
39
+ height: 1
40
+ },
41
+ label: {
42
+ marginHorizontal: 4
43
+ }
44
+ });
45
+ export default /*#__PURE__*/React.memo(GroupChannelMessageNewLine);
46
+ //# sourceMappingURL=GroupChannelMessageNewLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","View","Box","Text","useUIKitTheme","useLocalization","GroupChannelMessageNewLine","shouldRenderNewLine","STRINGS","colors","createElement","style","styles","container","backgroundColor","primary","line","caption3","numberOfLines","color","label","GROUP_CHANNEL","LIST_NEW_LINE","create","width","flexDirection","alignItems","marginBottom","flex","height","marginHorizontal","memo"],"sources":["GroupChannelMessageNewLine.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Box, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n shouldRenderNewLine?: boolean;\n};\n\nconst GroupChannelMessageNewLine = ({ shouldRenderNewLine }: Props) => {\n if (!shouldRenderNewLine) return null;\n\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n return (\n <View style={styles.container}>\n <Box backgroundColor={colors.primary} style={styles.line} />\n <Text caption3 numberOfLines={1} color={colors.primary} style={styles.label}>\n {STRINGS.GROUP_CHANNEL.LIST_NEW_LINE}\n </Text>\n <Box backgroundColor={colors.primary} style={styles.line} />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: 16,\n },\n line: {\n flex: 1,\n height: 1,\n },\n label: {\n marginHorizontal: 4,\n },\n});\n\nexport default React.memo(GroupChannelMessageNewLine);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,GAAG,EAAEC,IAAI,EAAEC,aAAa,QAAQ,yCAAyC;AAElF,SAASC,eAAe,QAAQ,wBAAwB;AAMxD,MAAMC,0BAA0B,GAAGA,CAAC;EAAEC;AAA2B,CAAC,KAAK;EACrE,IAAI,CAACA,mBAAmB,EAAE,OAAO,IAAI;EAErC,MAAM;IAAEC;EAAQ,CAAC,GAAGH,eAAe,CAAC,CAAC;EACrC,MAAM;IAAEI;EAAO,CAAC,GAAGL,aAAa,CAAC,CAAC;EAElC,oBACEL,KAAA,CAAAW,aAAA,CAACT,IAAI;IAACU,KAAK,EAAEC,MAAM,CAACC;EAAU,gBAC5Bd,KAAA,CAAAW,aAAA,CAACR,GAAG;IAACY,eAAe,EAAEL,MAAM,CAACM,OAAQ;IAACJ,KAAK,EAAEC,MAAM,CAACI;EAAK,CAAE,CAAC,eAC5DjB,KAAA,CAAAW,aAAA,CAACP,IAAI;IAACc,QAAQ;IAACC,aAAa,EAAE,CAAE;IAACC,KAAK,EAAEV,MAAM,CAACM,OAAQ;IAACJ,KAAK,EAAEC,MAAM,CAACQ;EAAM,GACzEZ,OAAO,CAACa,aAAa,CAACC,aACnB,CAAC,eACPvB,KAAA,CAAAW,aAAA,CAACR,GAAG;IAACY,eAAe,EAAEL,MAAM,CAACM,OAAQ;IAACJ,KAAK,EAAEC,MAAM,CAACI;EAAK,CAAE,CACvD,CAAC;AAEX,CAAC;AAED,MAAMJ,MAAM,GAAGZ,UAAU,CAACuB,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,KAAK,EAAE,MAAM;IACbC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE;EAChB,CAAC;EACDX,IAAI,EAAE;IACJY,IAAI,EAAE,CAAC;IACPC,MAAM,EAAE;EACV,CAAC;EACDT,KAAK,EAAE;IACLU,gBAAgB,EAAE;EACpB;AACF,CAAC,CAAC;AAEF,4BAAe/B,KAAK,CAACgC,IAAI,CAACzB,0BAA0B,CAAC","ignoreList":[]}
@@ -9,6 +9,7 @@ import { TypingIndicatorType } from '../../types';
9
9
  import { ReactionAddons } from '../ReactionAddons';
10
10
  import GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';
11
11
  import GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';
12
+ import GroupChannelMessageNewLine from './GroupChannelMessageNewLine';
12
13
  import GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';
13
14
  import GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';
14
15
  import GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';
@@ -24,6 +25,7 @@ const GroupChannelMessageRenderer = ({
24
25
  focused,
25
26
  prevMessage,
26
27
  nextMessage,
28
+ isFirstUnreadMessage,
27
29
  hideParentMessage
28
30
  }) => {
29
31
  const handlers = useSBUHandlers();
@@ -305,12 +307,15 @@ const GroupChannelMessageRenderer = ({
305
307
  return 16;
306
308
  }
307
309
  });
310
+ const shouldRenderNewLine = sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && isFirstUnreadMessage;
308
311
  return /*#__PURE__*/React.createElement(Box, {
309
312
  paddingHorizontal: 16,
310
313
  marginBottom: messageGap
311
314
  }, /*#__PURE__*/React.createElement(GroupChannelMessageDateSeparator, {
312
315
  message: message,
313
316
  prevMessage: prevMessage
317
+ }), /*#__PURE__*/React.createElement(GroupChannelMessageNewLine, {
318
+ shouldRenderNewLine: shouldRenderNewLine
314
319
  }), /*#__PURE__*/React.createElement(GroupChannelMessageFocusAnimation, {
315
320
  focused: focused
316
321
  }, renderMessage()));
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useEffect","useRef","Box","GroupChannelMessage","Text","TypingIndicatorBubble","useUIKitTheme","calcMessageGrouping","getMessageType","isMyMessage","isVoiceMessage","shouldRenderParentMessage","shouldRenderReaction","useIIFE","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","GroupChannelContexts","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","TypingIndicatorType","ReactionAddons","GroupChannelMessageDateSeparator","GroupChannelMessageFocusAnimation","GroupChannelMessageOutgoingStatus","GroupChannelMessageParentMessage","GroupChannelMessageReplyInfo","GroupChannelMessageRenderer","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","onReplyInThreadMessage","enableMessageGrouping","focused","prevMessage","nextMessage","hideParentMessage","handlers","playerUnsubscribes","palette","sbOptions","currentUser","mentionManager","voiceMessageStatusManager","STRINGS","mediaService","playerService","groupWithPrev","groupWithNext","Boolean","uikit","groupChannel","replyType","variant","userId","reactionChildren","configs","uikitWithAppInfo","isSuper","enableReactionsSupergroup","enableReactions","reactions","length","createElement","Message","replyInfo","threadInfo","replyCount","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","stopped","setCurrentTime","channelUrl","messageId","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","match","groups","parentProps","index","keyPrefix","_message$mentionedUse","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","_extends","key","_messageProps$onPress","call","suppressHighlighting","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","initialCurrentTime","getCurrentTime","onSubscribeStatus","subscribe","onUnsubscribeStatus","onUnmount","catch","_","Unknown","messageGap","isAdminMessage","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","has","Bubble","type","marginTop","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\nimport GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n onReplyInThreadMessage,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n hideParentMessage,\n}) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n sbOptions.uikit.groupChannel.channel.replyType === 'thread',\n shouldRenderParentMessage(message, hideParentMessage),\n );\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const reactionChildren = useIIFE(() => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (\n shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const replyInfo = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType !== 'thread') return null;\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n return <GroupChannelMessageReplyInfo channel={channel} message={message} onPress={onReplyInThreadMessage} />;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => handlers.onOpenURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n voiceMessageStatusManager.setCurrentTime(message.channelUrl, message.messageId, stopped ? 0 : currentTime);\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n replyInfo: replyInfo,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message, hideParentMessage) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate ?? '';\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n suppressHighlighting\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n initialCurrentTime={voiceMessageStatusManager.getCurrentTime(message.channelUrl, message.messageId)}\n onSubscribeStatus={voiceMessageStatusManager.subscribe}\n onUnsubscribeStatus={voiceMessageStatusManager.unsubscribe}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer().catch((_) => {});\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage, hideParentMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useContext","useEffect","useRef","Box","GroupChannelMessage","Text","TypingIndicatorBubble","useUIKitTheme","calcMessageGrouping","getMessageType","isMyMessage","isVoiceMessage","shouldRenderParentMessage","shouldRenderReaction","useIIFE","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","GroupChannelContexts","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","TypingIndicatorType","ReactionAddons","GroupChannelMessageDateSeparator","GroupChannelMessageFocusAnimation","GroupChannelMessageNewLine","GroupChannelMessageOutgoingStatus","GroupChannelMessageParentMessage","GroupChannelMessageReplyInfo","GroupChannelMessageRenderer","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","onReplyInThreadMessage","enableMessageGrouping","focused","prevMessage","nextMessage","isFirstUnreadMessage","hideParentMessage","handlers","playerUnsubscribes","palette","sbOptions","currentUser","mentionManager","voiceMessageStatusManager","STRINGS","mediaService","playerService","groupWithPrev","groupWithNext","Boolean","uikit","groupChannel","replyType","variant","userId","reactionChildren","configs","uikitWithAppInfo","isSuper","enableReactionsSupergroup","enableReactions","reactions","length","createElement","Message","replyInfo","threadInfo","replyCount","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","stopped","setCurrentTime","channelUrl","messageId","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","match","groups","parentProps","index","keyPrefix","_message$mentionedUse","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","_extends","key","_messageProps$onPress","call","suppressHighlighting","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","initialCurrentTime","getCurrentTime","onSubscribeStatus","subscribe","onUnsubscribeStatus","onUnmount","catch","_","Unknown","messageGap","isAdminMessage","shouldRenderNewLine","enableMarkAsUnread","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","has","Bubble","type","marginTop","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageNewLine from './GroupChannelMessageNewLine';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\nimport GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n onReplyInThreadMessage,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n isFirstUnreadMessage,\n hideParentMessage,\n}) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n sbOptions.uikit.groupChannel.channel.replyType === 'thread',\n shouldRenderParentMessage(message, hideParentMessage),\n );\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const reactionChildren = useIIFE(() => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (\n shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const replyInfo = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType !== 'thread') return null;\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n return <GroupChannelMessageReplyInfo channel={channel} message={message} onPress={onReplyInThreadMessage} />;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => handlers.onOpenURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n voiceMessageStatusManager.setCurrentTime(message.channelUrl, message.messageId, stopped ? 0 : currentTime);\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n replyInfo: replyInfo,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message, hideParentMessage) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate ?? '';\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n suppressHighlighting\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n initialCurrentTime={voiceMessageStatusManager.getCurrentTime(message.channelUrl, message.messageId)}\n onSubscribeStatus={voiceMessageStatusManager.subscribe}\n onUnsubscribeStatus={voiceMessageStatusManager.unsubscribe}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer().catch((_) => {});\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage, hideParentMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n const shouldRenderNewLine = sbOptions.uikit.groupChannel.channel.enableMarkAsUnread && isFirstUnreadMessage;\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageNewLine shouldRenderNewLine={shouldRenderNewLine} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+ import { Platform, TouchableOpacity, View } from 'react-native';
3
+ import { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { useLocalization } from '../hooks/useContext';
5
+ const UnreadMessagesFloating = ({
6
+ unreadMessageCount,
7
+ visible,
8
+ onPressClose
9
+ }) => {
10
+ const {
11
+ STRINGS
12
+ } = useLocalization();
13
+ const {
14
+ select,
15
+ palette,
16
+ colors
17
+ } = useUIKitTheme();
18
+ if (unreadMessageCount <= 0 || !visible) return null;
19
+ return /*#__PURE__*/React.createElement(View, {
20
+ style: [styles.container, {
21
+ backgroundColor: select({
22
+ dark: palette.background400,
23
+ light: palette.background50
24
+ })
25
+ }]
26
+ }, /*#__PURE__*/React.createElement(Text, {
27
+ body2: true,
28
+ color: colors.onBackground02
29
+ }, STRINGS.GROUP_CHANNEL.LIST_FLOATING_UNREAD_MSG(unreadMessageCount)), /*#__PURE__*/React.createElement(TouchableOpacity, {
30
+ onPress: onPressClose,
31
+ style: {
32
+ marginLeft: 4
33
+ },
34
+ hitSlop: {
35
+ top: 12,
36
+ bottom: 12,
37
+ left: 14,
38
+ right: 38
39
+ }
40
+ }, /*#__PURE__*/React.createElement(Icon, {
41
+ icon: 'close',
42
+ size: 14
43
+ })));
44
+ };
45
+ const styles = createStyleSheet({
46
+ container: {
47
+ flexDirection: 'row',
48
+ justifyContent: 'flex-start',
49
+ alignItems: 'center',
50
+ paddingHorizontal: 16,
51
+ paddingVertical: 12,
52
+ borderRadius: 20,
53
+ ...Platform.select({
54
+ android: {
55
+ elevation: 3
56
+ },
57
+ ios: {
58
+ shadowColor: 'black',
59
+ shadowRadius: 3,
60
+ shadowOffset: {
61
+ width: 0,
62
+ height: 4
63
+ },
64
+ shadowOpacity: 0.08
65
+ }
66
+ })
67
+ }
68
+ });
69
+ export default /*#__PURE__*/React.memo(UnreadMessagesFloating);
70
+ //# sourceMappingURL=UnreadMessagesFloating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Platform","TouchableOpacity","View","Icon","Text","createStyleSheet","useUIKitTheme","useLocalization","UnreadMessagesFloating","unreadMessageCount","visible","onPressClose","STRINGS","select","palette","colors","createElement","style","styles","container","backgroundColor","dark","background400","light","background50","body2","color","onBackground02","GROUP_CHANNEL","LIST_FLOATING_UNREAD_MSG","onPress","marginLeft","hitSlop","top","bottom","left","right","icon","size","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","borderRadius","android","elevation","ios","shadowColor","shadowRadius","shadowOffset","width","height","shadowOpacity","memo"],"sources":["UnreadMessagesFloating.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../hooks/useContext';\n\nexport type UnreadMessagesFloatingProps = {\n unreadMessageCount: number;\n visible: boolean;\n onPressClose: () => void;\n};\nconst UnreadMessagesFloating = ({ unreadMessageCount, visible, onPressClose }: UnreadMessagesFloatingProps) => {\n const { STRINGS } = useLocalization();\n const { select, palette, colors } = useUIKitTheme();\n if (unreadMessageCount <= 0 || !visible) return null;\n return (\n <View\n style={[\n styles.container,\n { backgroundColor: select({ dark: palette.background400, light: palette.background50 }) },\n ]}\n >\n <Text body2 color={colors.onBackground02}>\n {STRINGS.GROUP_CHANNEL.LIST_FLOATING_UNREAD_MSG(unreadMessageCount)}\n </Text>\n <TouchableOpacity\n onPress={onPressClose}\n style={{ marginLeft: 4 }}\n hitSlop={{ top: 12, bottom: 12, left: 14, right: 38 }}\n >\n <Icon icon={'close'} size={14} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n borderRadius: 20,\n ...Platform.select({\n android: {\n elevation: 3,\n },\n ios: {\n shadowColor: 'black',\n shadowRadius: 3,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.08,\n },\n }),\n },\n});\n\nexport default React.memo(UnreadMessagesFloating);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AAE/D,SAASC,IAAI,EAAEC,IAAI,EAAEC,gBAAgB,EAAEC,aAAa,QAAQ,yCAAyC;AAErG,SAASC,eAAe,QAAQ,qBAAqB;AAOrD,MAAMC,sBAAsB,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC,OAAO;EAAEC;AAA0C,CAAC,KAAK;EAC7G,MAAM;IAAEC;EAAQ,CAAC,GAAGL,eAAe,CAAC,CAAC;EACrC,MAAM;IAAEM,MAAM;IAAEC,OAAO;IAAEC;EAAO,CAAC,GAAGT,aAAa,CAAC,CAAC;EACnD,IAAIG,kBAAkB,IAAI,CAAC,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EACpD,oBACEX,KAAA,CAAAiB,aAAA,CAACd,IAAI;IACHe,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAEC,eAAe,EAAEP,MAAM,CAAC;QAAEQ,IAAI,EAAEP,OAAO,CAACQ,aAAa;QAAEC,KAAK,EAAET,OAAO,CAACU;MAAa,CAAC;IAAE,CAAC;EACzF,gBAEFzB,KAAA,CAAAiB,aAAA,CAACZ,IAAI;IAACqB,KAAK;IAACC,KAAK,EAAEX,MAAM,CAACY;EAAe,GACtCf,OAAO,CAACgB,aAAa,CAACC,wBAAwB,CAACpB,kBAAkB,CAC9D,CAAC,eACPV,KAAA,CAAAiB,aAAA,CAACf,gBAAgB;IACf6B,OAAO,EAAEnB,YAAa;IACtBM,KAAK,EAAE;MAAEc,UAAU,EAAE;IAAE,CAAE;IACzBC,OAAO,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,MAAM,EAAE,EAAE;MAAEC,IAAI,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAG;EAAE,gBAEtDrC,KAAA,CAAAiB,aAAA,CAACb,IAAI;IAACkC,IAAI,EAAE,OAAQ;IAACC,IAAI,EAAE;EAAG,CAAE,CAChB,CACd,CAAC;AAEX,CAAC;AAED,MAAMpB,MAAM,GAAGb,gBAAgB,CAAC;EAC9Bc,SAAS,EAAE;IACToB,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,YAAY;IAC5BC,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,YAAY,EAAE,EAAE;IAChB,GAAG5C,QAAQ,CAACa,MAAM,CAAC;MACjBgC,OAAO,EAAE;QACPC,SAAS,EAAE;MACb,CAAC;MACDC,GAAG,EAAE;QACHC,WAAW,EAAE,OAAO;QACpBC,YAAY,EAAE,CAAC;QACfC,YAAY,EAAE;UAAEC,KAAK,EAAE,CAAC;UAAEC,MAAM,EAAE;QAAE,CAAC;QACrCC,aAAa,EAAE;MACjB;IACF,CAAC;EACH;AACF,CAAC,CAAC;AAEF,4BAAetD,KAAK,CAACuD,IAAI,CAAC9C,sBAAsB,CAAC","ignoreList":[]}