@sendbird/uikit-react-native 3.7.3 → 3.7.5
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/README.md +5 -4
- package/lib/commonjs/components/ChannelInput/SendInput.js +2 -1
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +33 -23
- package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/index.js +11 -5
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +6 -1
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChannelThreadMessageList/index.js +6 -1
- package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -1
- package/lib/commonjs/components/FileViewer/FileViewerContent.js +1 -1
- package/lib/commonjs/components/FileViewer/FileViewerContent.js.map +1 -1
- package/lib/commonjs/components/FileViewer/FileViewerFooter.js +1 -0
- package/lib/commonjs/components/FileViewer/FileViewerFooter.js.map +1 -1
- package/lib/commonjs/components/FileViewer/FileViewerHeader.js +1 -0
- package/lib/commonjs/components/FileViewer/FileViewerHeader.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +9 -3
- package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
- package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +9 -3
- package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +1 -1
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +0 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/PlatformServiceCtx.js +2 -1
- package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
- package/lib/commonjs/contexts/SBUHandlersCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +17 -3
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +16 -2
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +3 -2
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +3 -2
- package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -1
- package/lib/commonjs/hooks/useConnection.js +2 -2
- package/lib/commonjs/hooks/useConnection.js.map +1 -1
- package/lib/commonjs/hooks/usePushTokenRegistration.js +24 -6
- package/lib/commonjs/hooks/usePushTokenRegistration.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js +2 -2
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/platform/createPlayerService.expo.js +8 -2
- package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -1
- package/lib/commonjs/platform/createPlayerService.native.js +12 -7
- package/lib/commonjs/platform/createPlayerService.native.js.map +1 -1
- package/lib/commonjs/platform/createRecorderService.native.js +8 -2
- package/lib/commonjs/platform/createRecorderService.native.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 +2 -1
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/VoiceMessageInput.js +34 -24
- package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js +12 -6
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +6 -1
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChannelThreadMessageList/index.js +6 -1
- package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -1
- package/lib/module/components/FileViewer/FileViewerContent.js +1 -1
- package/lib/module/components/FileViewer/FileViewerContent.js.map +1 -1
- package/lib/module/components/FileViewer/FileViewerFooter.js +1 -0
- package/lib/module/components/FileViewer/FileViewerFooter.js.map +1 -1
- package/lib/module/components/FileViewer/FileViewerHeader.js +1 -0
- package/lib/module/components/FileViewer/FileViewerHeader.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/index.js +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +10 -4
- package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
- package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +9 -3
- package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
- package/lib/module/components/ThreadParentMessageRenderer/index.js +1 -1
- package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +0 -1
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/PlatformServiceCtx.js +2 -1
- package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
- package/lib/module/contexts/SBUHandlersCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +17 -3
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +16 -2
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +3 -2
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelThreadFragment.js +3 -2
- package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -1
- package/lib/module/hooks/useConnection.js +2 -2
- package/lib/module/hooks/useConnection.js.map +1 -1
- package/lib/module/hooks/usePushTokenRegistration.js +24 -6
- package/lib/module/hooks/usePushTokenRegistration.js.map +1 -1
- package/lib/module/platform/createFileService.native.js +2 -2
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/platform/createPlayerService.expo.js +9 -3
- package/lib/module/platform/createPlayerService.expo.js.map +1 -1
- package/lib/module/platform/createPlayerService.native.js +13 -8
- package/lib/module/platform/createPlayerService.native.js.map +1 -1
- package/lib/module/platform/createRecorderService.native.js +9 -3
- package/lib/module/platform/createRecorderService.native.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
- package/lib/typescript/src/contexts/SBUHandlersCtx.d.ts +1 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +6 -6
- package/src/components/ChannelInput/SendInput.tsx +2 -1
- package/src/components/ChannelInput/VoiceMessageInput.tsx +40 -24
- package/src/components/ChannelInput/index.tsx +16 -6
- package/src/components/ChannelMessageList/index.tsx +5 -1
- package/src/components/ChannelThreadMessageList/index.tsx +5 -1
- package/src/components/FileViewer/FileViewerContent.tsx +1 -1
- package/src/components/FileViewer/FileViewerFooter.tsx +1 -0
- package/src/components/FileViewer/FileViewerHeader.tsx +1 -0
- package/src/components/GroupChannelMessageRenderer/index.tsx +1 -1
- package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +13 -5
- package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +11 -4
- package/src/components/ThreadParentMessageRenderer/index.tsx +1 -1
- package/src/containers/SendbirdUIKitContainer.tsx +0 -1
- package/src/contexts/PlatformServiceCtx.tsx +2 -1
- package/src/contexts/SBUHandlersCtx.tsx +1 -1
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +19 -3
- package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +8 -4
- package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +17 -2
- package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +7 -3
- package/src/fragments/createGroupChannelFragment.tsx +3 -2
- package/src/fragments/createGroupChannelThreadFragment.tsx +3 -2
- package/src/hooks/useConnection.ts +8 -2
- package/src/hooks/usePushTokenRegistration.ts +24 -6
- package/src/platform/createFileService.native.ts +2 -6
- package/src/platform/createPlayerService.expo.tsx +9 -3
- package/src/platform/createPlayerService.native.tsx +15 -8
- package/src/platform/createRecorderService.native.tsx +9 -3
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_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","onReplyInThreadMessage","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","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","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","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","onOpenFileURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","replyInThread","CHANNEL_MESSAGE_THREAD","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","isVoiceMessage","configs","uikitWithAppInfo","HeaderComponent","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","_ref5","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 isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onReplyInThreadMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage, childMessage: HandleableMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onReplyInThreadMessage?: ChannelMessageListProps<T>['onReplyInThreadMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n hideParentMessage?: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onReplyInThreadMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n reply: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'reply' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(message),\n }),\n replyInThread: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'thread' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_THREAD,\n onPress: () => onReplyInThreadMessage?.(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}
|
|
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","onReplyInThreadMessage","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","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","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","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","_handlers$onOpenFileU","getAvailableUriFromFileMessage","onOpenFileURL","openFile","SBUUtils","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","replyInThread","CHANNEL_MESSAGE_THREAD","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","isVoiceMessage","configs","uikitWithAppInfo","HeaderComponent","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","_ref5","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 isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onReplyInThreadMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage, childMessage: HandleableMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onReplyInThreadMessage?: ChannelMessageListProps<T>['onReplyInThreadMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n hideParentMessage?: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onReplyInThreadMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const 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 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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"}
|
|
@@ -10,6 +10,7 @@ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
|
10
10
|
var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
|
|
11
11
|
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
12
12
|
var _useContext = require("../../hooks/useContext");
|
|
13
|
+
var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
|
|
13
14
|
var _ReactionAddons = require("../ReactionAddons");
|
|
14
15
|
var _ThreadChatFlatList = _interopRequireDefault(require("../ThreadChatFlatList"));
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -188,9 +189,13 @@ const useCreateMessagePressActions = _ref3 => {
|
|
|
188
189
|
if (message.isFileMessage()) {
|
|
189
190
|
const fileType = (0, _uikitUtils.getFileType)(message.type || (0, _uikitUtils.getFileExtension)(message.name));
|
|
190
191
|
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
192
|
+
var _handlers$onOpenFileU;
|
|
191
193
|
onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), (0, _uikitUtils.getAvailableUriFromFileMessage)(message));
|
|
194
|
+
(_handlers$onOpenFileU = handlers.onOpenFileURL) === null || _handlers$onOpenFileU === void 0 ? void 0 : _handlers$onOpenFileU.call(handlers, message.url);
|
|
195
|
+
} else {
|
|
196
|
+
const openFile = handlers.onOpenFileURL ?? _SBUUtils.default.openURL;
|
|
197
|
+
openFile(message.url);
|
|
192
198
|
}
|
|
193
|
-
handlers.onOpenFileURL(message.url);
|
|
194
199
|
}
|
|
195
200
|
};
|
|
196
201
|
const openSheetForFailedMessage = message => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_ReactionAddons","_ThreadChatFlatList","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","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","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","onOpenFileURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","configs","uikitWithAppInfo","groupChannel","HeaderComponent","shouldRenderReaction","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","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 isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ReactionAddons","_ThreadChatFlatList","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","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","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","_handlers$onOpenFileU","getAvailableUriFromFileMessage","onOpenFileURL","openFile","SBUUtils","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","configs","uikitWithAppInfo","groupChannel","HeaderComponent","shouldRenderReaction","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","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 isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const 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 download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeZoomableView","require","_react","_interopRequireWildcard","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_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","FileViewerContent","_ref","type","src","topInset","bottomInset","maxZoom","minZoom","onPress","loading","setLoading","useState","defaultHeight","useHeaderStyle","mediaService","usePlatformService","palette","useUIKitTheme","uri","onLoadEnd","mediaViewer","useIIFE","createElement","ZoomableImageView","style","StyleSheet","absoluteFill","resizeMode","zoomProps","onTouchEnd","VideoComponent","top","bottom","onLoad","Box","styles","container","LoadingSpinner","position","size","color","primary300","_ref2","props","width","height","useWindowDimensions","imageSize","useRef","contentSizeProps","setContentSizeProps","contentWidth","contentHeight","useLayoutEffect","SBUUtils","safeRun","image","current","getImageSize","viewRatio","imageRatio","fitDirection","ratio","actualSize","ReactNativeZoomableView","visualTouchFeedbackEnabled","initialZoom","Image","createStyleSheet","zIndex","flex","alignItems","justifyContent","_default","exports"],"sources":["FileViewerContent.tsx"],"sourcesContent":["import { ReactNativeZoomableView, ReactNativeZoomableViewProps } from '@openspacelabs/react-native-zoomable-view';\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport { ImageProps, ImageStyle, ImageURISource, StyleProp, StyleSheet, useWindowDimensions } from 'react-native';\n\nimport {\n Box,\n Image,\n LoadingSpinner,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { FileType, useIIFE } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\n\ntype Props = {\n type: FileType;\n src: string;\n topInset?: number;\n bottomInset?: number;\n maxZoom?: number;\n minZoom?: number;\n onPress?: () => void;\n};\nconst FileViewerContent = ({ type, src, topInset = 0, bottomInset = 0, maxZoom = 4, minZoom = 1, onPress }: Props) => {\n const [loading, setLoading] = useState(true);\n\n const { defaultHeight } = useHeaderStyle();\n const { mediaService } = usePlatformService();\n const { palette } = useUIKitTheme();\n\n const source = { uri: src };\n const onLoadEnd = () => setLoading(false);\n const mediaViewer = useIIFE(() => {\n switch (type) {\n case 'image': {\n return (\n <ZoomableImageView\n source={source}\n style={StyleSheet.absoluteFill}\n resizeMode={'contain'}\n onLoadEnd={onLoadEnd}\n zoomProps={{\n minZoom,\n maxZoom,\n onTouchEnd: onPress,\n }}\n />\n );\n }\n\n case 'video':\n case 'audio': {\n return (\n <mediaService.VideoComponent\n source={source}\n style={[StyleSheet.absoluteFill, { top: topInset, bottom: defaultHeight + bottomInset }]}\n resizeMode={'contain'}\n onLoad={onLoadEnd}\n />\n );\n }\n\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box style={styles.container}>\n {mediaViewer}\n {loading && <LoadingSpinner style={{ position: 'absolute' }} size={40} color={palette.primary300} />}\n </Box>\n );\n};\n\nconst ZoomableImageView = ({\n zoomProps,\n ...props\n}: {\n source: ImageURISource;\n style: StyleProp<ImageStyle>;\n resizeMode: ImageProps['resizeMode'];\n onLoadEnd: () => void;\n zoomProps?: ReactNativeZoomableViewProps;\n}) => {\n const { width, height } = useWindowDimensions();\n\n const imageSize = useRef<{ width: number; height: number }>();\n const [contentSizeProps, setContentSizeProps] = useState<ReactNativeZoomableViewProps>({\n contentWidth: width,\n contentHeight: height,\n });\n\n useLayoutEffect(() => {\n SBUUtils.safeRun(async () => {\n if (props.source.uri) {\n const image = imageSize.current ?? (await SBUUtils.getImageSize(props.source.uri));\n imageSize.current = image;\n\n const viewRatio = width / height;\n const imageRatio = image.width / image.height;\n\n const fitDirection = viewRatio > imageRatio ? 'height' : 'width';\n const ratio = fitDirection === 'height' ? height / image.height : width / image.width;\n const actualSize = { width: image.width * ratio, height: image.height * ratio };\n\n setContentSizeProps({\n contentWidth: actualSize.width,\n contentHeight: actualSize.height,\n });\n }\n });\n }, [props.source.uri, width, height]);\n\n return (\n <ReactNativeZoomableView\n visualTouchFeedbackEnabled={false}\n style={{ width, height }}\n initialZoom={1}\n {...contentSizeProps}\n {...zoomProps}\n >\n <Image {...props} />\n </ReactNativeZoomableView>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n zIndex: -1,\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default FileViewerContent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_reactNativeZoomableView","require","_react","_interopRequireWildcard","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_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","FileViewerContent","_ref","type","src","topInset","bottomInset","maxZoom","minZoom","onPress","loading","setLoading","useState","defaultHeight","useHeaderStyle","mediaService","usePlatformService","palette","useUIKitTheme","uri","onLoadEnd","mediaViewer","useIIFE","createElement","ZoomableImageView","style","StyleSheet","absoluteFill","resizeMode","zoomProps","onTouchEnd","VideoComponent","top","bottom","onLoad","Box","styles","container","LoadingSpinner","position","size","color","primary300","_ref2","props","width","height","useWindowDimensions","imageSize","useRef","contentSizeProps","setContentSizeProps","contentWidth","contentHeight","useLayoutEffect","SBUUtils","safeRun","image","current","getImageSize","viewRatio","imageRatio","fitDirection","ratio","actualSize","ReactNativeZoomableView","visualTouchFeedbackEnabled","initialZoom","Image","createStyleSheet","zIndex","flex","alignItems","justifyContent","_default","exports"],"sources":["FileViewerContent.tsx"],"sourcesContent":["import { ReactNativeZoomableView, ReactNativeZoomableViewProps } from '@openspacelabs/react-native-zoomable-view';\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport { ImageProps, ImageStyle, ImageURISource, StyleProp, StyleSheet, useWindowDimensions } from 'react-native';\n\nimport {\n Box,\n Image,\n LoadingSpinner,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { FileType, useIIFE } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\n\ntype Props = {\n type: FileType;\n src: string;\n topInset?: number;\n bottomInset?: number;\n maxZoom?: number;\n minZoom?: number;\n onPress?: () => void;\n};\nconst FileViewerContent = ({ type, src, topInset = 0, bottomInset = 0, maxZoom = 4, minZoom = 1, onPress }: Props) => {\n const [loading, setLoading] = useState(true);\n\n const { defaultHeight } = useHeaderStyle();\n const { mediaService } = usePlatformService();\n const { palette } = useUIKitTheme();\n\n const source = { uri: src };\n const onLoadEnd = () => setLoading(false);\n const mediaViewer = useIIFE(() => {\n switch (type) {\n case 'image': {\n return (\n <ZoomableImageView\n source={source}\n style={StyleSheet.absoluteFill}\n resizeMode={'contain'}\n onLoadEnd={onLoadEnd}\n zoomProps={{\n minZoom,\n maxZoom,\n onTouchEnd: onPress,\n }}\n />\n );\n }\n\n case 'video':\n case 'audio': {\n return (\n <mediaService.VideoComponent\n source={source}\n style={[StyleSheet.absoluteFill, { top: topInset, bottom: defaultHeight + bottomInset }]}\n resizeMode={'contain'}\n onLoad={onLoadEnd}\n />\n );\n }\n\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box style={styles.container}>\n {mediaViewer}\n {loading && <LoadingSpinner style={{ position: 'absolute' }} size={40} color={palette.primary300} />}\n </Box>\n );\n};\n\nconst ZoomableImageView = ({\n zoomProps,\n ...props\n}: {\n source: ImageURISource;\n style: StyleProp<ImageStyle>;\n resizeMode: ImageProps['resizeMode'];\n onLoadEnd: () => void;\n zoomProps?: ReactNativeZoomableViewProps;\n}) => {\n const { width, height } = useWindowDimensions();\n\n const imageSize = useRef<{ width: number; height: number }>();\n const [contentSizeProps, setContentSizeProps] = useState<ReactNativeZoomableViewProps>({\n contentWidth: width,\n contentHeight: height,\n });\n\n useLayoutEffect(() => {\n SBUUtils.safeRun(async () => {\n if (props.source.uri) {\n const image = imageSize.current ?? (await SBUUtils.getImageSize(props.source.uri));\n imageSize.current = image;\n\n const viewRatio = width / height;\n const imageRatio = image.width / image.height;\n\n const fitDirection = viewRatio > imageRatio ? 'height' : 'width';\n const ratio = fitDirection === 'height' ? height / image.height : width / image.width;\n const actualSize = { width: image.width * ratio, height: image.height * ratio };\n\n setContentSizeProps({\n contentWidth: actualSize.width,\n contentHeight: actualSize.height,\n });\n }\n });\n }, [props.source.uri, width, height]);\n\n return (\n <ReactNativeZoomableView\n visualTouchFeedbackEnabled={false}\n style={{ width, height }}\n initialZoom={1}\n {...contentSizeProps}\n {...zoomProps}\n >\n <Image {...props} />\n </ReactNativeZoomableView>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n zIndex: 0,\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default FileViewerContent;\n"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEA,IAAAI,2BAAA,GAAAJ,OAAA;AAQA,IAAAK,WAAA,GAAAL,OAAA;AAEA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,SAAA,GAAAC,sBAAA,CAAAR,OAAA;AAA2C,SAAAQ,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAX,wBAAAO,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,SAAA,IAAAA,QAAA,GAAAT,MAAA,CAAAU,MAAA,GAAAV,MAAA,CAAAU,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAV,GAAA,IAAAa,MAAA,QAAAhB,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAb,GAAA,KAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,gBAAAS,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAH,SAAA;AAW3C,MAAMI,iBAAiB,GAAGC,IAAA,IAA4F;EAAA,IAA3F;IAAEC,IAAI;IAAEC,GAAG;IAAEC,QAAQ,GAAG,CAAC;IAAEC,WAAW,GAAG,CAAC;IAAEC,OAAO,GAAG,CAAC;IAAEC,OAAO,GAAG,CAAC;IAAEC;EAAe,CAAC,GAAAP,IAAA;EAC/G,MAAM,CAACQ,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAC,IAAI,CAAC;EAE5C,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,0CAAc,GAAE;EAC1C,MAAM;IAAEC;EAAa,CAAC,GAAG,IAAAC,8BAAkB,GAAE;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAEnC,MAAMnB,MAAM,GAAG;IAAEoB,GAAG,EAAEf;EAAI,CAAC;EAC3B,MAAMgB,SAAS,GAAGA,CAAA,KAAMT,UAAU,CAAC,KAAK,CAAC;EACzC,MAAMU,WAAW,GAAG,IAAAC,mBAAO,EAAC,MAAM;IAChC,QAAQnB,IAAI;MACV,KAAK,OAAO;QAAE;UACZ,oBACEzC,MAAA,CAAAU,OAAA,CAAAmD,aAAA,CAACC,iBAAiB;YAChBzB,MAAM,EAAEA,MAAO;YACf0B,KAAK,EAAEC,uBAAU,CAACC,YAAa;YAC/BC,UAAU,EAAE,SAAU;YACtBR,SAAS,EAAEA,SAAU;YACrBS,SAAS,EAAE;cACTrB,OAAO;cACPD,OAAO;cACPuB,UAAU,EAAErB;YACd;UAAE,EACF;QAEN;MAEA,KAAK,OAAO;MACZ,KAAK,OAAO;QAAE;UACZ,oBACE/C,MAAA,CAAAU,OAAA,CAAAmD,aAAA,CAACR,YAAY,CAACgB,cAAc;YAC1BhC,MAAM,EAAEA,MAAO;YACf0B,KAAK,EAAE,CAACC,uBAAU,CAACC,YAAY,EAAE;cAAEK,GAAG,EAAE3B,QAAQ;cAAE4B,MAAM,EAAEpB,aAAa,GAAGP;YAAY,CAAC,CAAE;YACzFsB,UAAU,EAAE,SAAU;YACtBM,MAAM,EAAEd;UAAU,EAClB;QAEN;MAEA;QAAS;UACP,OAAO,IAAI;QACb;IAAC;EAEL,CAAC,CAAC;EAEF,oBACE1D,MAAA,CAAAU,OAAA,CAAAmD,aAAA,CAAC1D,2BAAA,CAAAsE,GAAG;IAACV,KAAK,EAAEW,MAAM,CAACC;EAAU,GAC1BhB,WAAW,EACXX,OAAO,iBAAIhD,MAAA,CAAAU,OAAA,CAAAmD,aAAA,CAAC1D,2BAAA,CAAAyE,cAAc;IAACb,KAAK,EAAE;MAAEc,QAAQ,EAAE;IAAW,CAAE;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAExB,OAAO,CAACyB;EAAW,EAAG,CAChG;AAEV,CAAC;AAED,MAAMlB,iBAAiB,GAAGmB,KAAA,IASpB;EAAA,IATqB;IACzBd,SAAS;IACT,GAAGe;EAOL,CAAC,GAAAD,KAAA;EACC,MAAM;IAAEE,KAAK;IAAEC;EAAO,CAAC,GAAG,IAAAC,gCAAmB,GAAE;EAE/C,MAAMC,SAAS,GAAG,IAAAC,aAAM,GAAqC;EAC7D,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAAvC,eAAQ,EAA+B;IACrFwC,YAAY,EAAEP,KAAK;IACnBQ,aAAa,EAAEP;EACjB,CAAC,CAAC;EAEF,IAAAQ,sBAAe,EAAC,MAAM;IACpBC,iBAAQ,CAACC,OAAO,CAAC,YAAY;MAC3B,IAAIZ,KAAK,CAAC7C,MAAM,CAACoB,GAAG,EAAE;QACpB,MAAMsC,KAAK,GAAGT,SAAS,CAACU,OAAO,KAAK,MAAMH,iBAAQ,CAACI,YAAY,CAACf,KAAK,CAAC7C,MAAM,CAACoB,GAAG,CAAC,CAAC;QAClF6B,SAAS,CAACU,OAAO,GAAGD,KAAK;QAEzB,MAAMG,SAAS,GAAGf,KAAK,GAAGC,MAAM;QAChC,MAAMe,UAAU,GAAGJ,KAAK,CAACZ,KAAK,GAAGY,KAAK,CAACX,MAAM;QAE7C,MAAMgB,YAAY,GAAGF,SAAS,GAAGC,UAAU,GAAG,QAAQ,GAAG,OAAO;QAChE,MAAME,KAAK,GAAGD,YAAY,KAAK,QAAQ,GAAGhB,MAAM,GAAGW,KAAK,CAACX,MAAM,GAAGD,KAAK,GAAGY,KAAK,CAACZ,KAAK;QACrF,MAAMmB,UAAU,GAAG;UAAEnB,KAAK,EAAEY,KAAK,CAACZ,KAAK,GAAGkB,KAAK;UAAEjB,MAAM,EAAEW,KAAK,CAACX,MAAM,GAAGiB;QAAM,CAAC;QAE/EZ,mBAAmB,CAAC;UAClBC,YAAY,EAAEY,UAAU,CAACnB,KAAK;UAC9BQ,aAAa,EAAEW,UAAU,CAAClB;QAC5B,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACF,KAAK,CAAC7C,MAAM,CAACoB,GAAG,EAAE0B,KAAK,EAAEC,MAAM,CAAC,CAAC;EAErC,oBACEpF,MAAA,CAAAU,OAAA,CAAAmD,aAAA,CAAC/D,wBAAA,CAAAyG,uBAAuB,EAAAzE,QAAA;IACtB0E,0BAA0B,EAAE,KAAM;IAClCzC,KAAK,EAAE;MAAEoB,KAAK;MAAEC;IAAO,CAAE;IACzBqB,WAAW,EAAE;EAAE,GACXjB,gBAAgB,EAChBrB,SAAS,gBAEbnE,MAAA,CAAAU,OAAA,CAAAmD,aAAA,CAAC1D,2BAAA,CAAAuG,KAAK,EAAKxB,KAAK,CAAI,CACI;AAE9B,CAAC;AAED,MAAMR,MAAM,GAAG,IAAAiC,4CAAgB,EAAC;EAC9BhC,SAAS,EAAE;IACTiC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAEYzE,iBAAiB;AAAA0E,OAAA,CAAAvG,OAAA,GAAAsG,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","obj","__esModule","default","FileViewerFooter","_ref","bottomInset","deleteShown","onPressDelete","onPressDownload","palette","useUIKitTheme","defaultHeight","useHeaderStyle","left","right","useSafeAreaInsets","createElement","Box","style","styles","container","paddingLeft","paddingHorizontal","paddingRight","paddingBottom","height","backgroundColor","overlay01","PressBox","activeOpacity","onPress","buttonContainer","Icon","icon","size","color","onBackgroundDark01","titleContainer","disabled","createStyleSheet","position","bottom","flexDirection","alignItems","justifyContent","width","flex","_default","exports"],"sources":["FileViewerFooter.tsx"],"sourcesContent":["import React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Box,\n Icon,\n PressBox,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\n\ntype Props = {\n bottomInset: number;\n deleteShown: boolean;\n onPressDelete: () => void;\n onPressDownload: () => void;\n};\n\nconst FileViewerFooter = ({ bottomInset, deleteShown, onPressDelete, onPressDownload }: Props) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <Box\n style={[\n styles.container,\n {\n paddingLeft: styles.container.paddingHorizontal + left,\n paddingRight: styles.container.paddingHorizontal + right,\n paddingBottom: bottomInset,\n height: defaultHeight + bottomInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <PressBox activeOpacity={0.75} onPress={onPressDownload} style={styles.buttonContainer}>\n <Icon icon={'download'} size={24} color={palette.onBackgroundDark01} />\n </PressBox>\n <Box style={styles.titleContainer} />\n <PressBox activeOpacity={0.75} onPress={onPressDelete} style={styles.buttonContainer} disabled={!deleteShown}>\n {deleteShown && <Icon icon={'delete'} size={24} color={palette.onBackgroundDark01} />}\n </PressBox>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n buttonContainer: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default FileViewerFooter;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AAEA,IAAAE,2BAAA,GAAAF,OAAA;AAOiD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASjD,MAAMG,gBAAgB,GAAGC,IAAA,IAAyE;EAAA,IAAxE;IAAEC,WAAW;IAAEC,WAAW;IAAEC,aAAa;IAAEC;EAAuB,CAAC,GAAAJ,IAAA;EAC3F,MAAM;IAAEK;EAAQ,CAAC,GAAG,IAAAC,yCAAa,GAAE;EACnC,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,0CAAc,GAAE;EAC1C,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;EAE3C,oBACEpB,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAkB,GAAG;IACFC,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,WAAW,EAAEF,MAAM,CAACC,SAAS,CAACE,iBAAiB,GAAGT,IAAI;MACtDU,YAAY,EAAEJ,MAAM,CAACC,SAAS,CAACE,iBAAiB,GAAGR,KAAK;MACxDU,aAAa,EAAEnB,WAAW;MAC1BoB,MAAM,EAAEd,aAAa,GAAGN,WAAW;MACnCqB,eAAe,EAAEjB,OAAO,CAACkB;IAC3B,CAAC;EACD,gBAEFhC,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAA6B,QAAQ;IAACC,aAAa,EAAE,IAAK;IAACC,OAAO,EAAEtB,eAAgB;IAACU,KAAK,EAAEC,MAAM,CAACY;EAAgB,gBACrFpC,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAiC,IAAI;IAACC,IAAI,EAAE,UAAW;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAE1B,OAAO,CAAC2B;EAAmB,EAAG,CAC9D,eACXzC,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAkB,GAAG;IAACC,KAAK,EAAEC,MAAM,CAACkB;EAAe,EAAG,eACrC1C,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAA6B,QAAQ;IAACC,aAAa,EAAE,IAAK;IAACC,OAAO,EAAEvB,aAAc;IAACW,KAAK,EAAEC,MAAM,CAACY,eAAgB;IAACO,QAAQ,EAAE,CAAChC;EAAY,GAC1GA,WAAW,iBAAIX,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAiC,IAAI;IAACC,IAAI,EAAE,QAAS;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAE1B,OAAO,CAAC2B;EAAmB,EAAG,CAC5E,CACP;AAEV,CAAC;AAED,MAAMjB,MAAM,GAAG,IAAAoB,4CAAgB,EAAC;EAC9BnB,SAAS,EAAE;IACToB,QAAQ,EAAE,UAAU;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","obj","__esModule","default","FileViewerFooter","_ref","bottomInset","deleteShown","onPressDelete","onPressDownload","palette","useUIKitTheme","defaultHeight","useHeaderStyle","left","right","useSafeAreaInsets","createElement","Box","style","styles","container","paddingLeft","paddingHorizontal","paddingRight","paddingBottom","height","backgroundColor","overlay01","PressBox","activeOpacity","onPress","buttonContainer","Icon","icon","size","color","onBackgroundDark01","titleContainer","disabled","createStyleSheet","zIndex","position","bottom","flexDirection","alignItems","justifyContent","width","flex","_default","exports"],"sources":["FileViewerFooter.tsx"],"sourcesContent":["import React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Box,\n Icon,\n PressBox,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\n\ntype Props = {\n bottomInset: number;\n deleteShown: boolean;\n onPressDelete: () => void;\n onPressDownload: () => void;\n};\n\nconst FileViewerFooter = ({ bottomInset, deleteShown, onPressDelete, onPressDownload }: Props) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <Box\n style={[\n styles.container,\n {\n paddingLeft: styles.container.paddingHorizontal + left,\n paddingRight: styles.container.paddingHorizontal + right,\n paddingBottom: bottomInset,\n height: defaultHeight + bottomInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <PressBox activeOpacity={0.75} onPress={onPressDownload} style={styles.buttonContainer}>\n <Icon icon={'download'} size={24} color={palette.onBackgroundDark01} />\n </PressBox>\n <Box style={styles.titleContainer} />\n <PressBox activeOpacity={0.75} onPress={onPressDelete} style={styles.buttonContainer} disabled={!deleteShown}>\n {deleteShown && <Icon icon={'delete'} size={24} color={palette.onBackgroundDark01} />}\n </PressBox>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n zIndex: 1,\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n buttonContainer: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default FileViewerFooter;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AAEA,IAAAE,2BAAA,GAAAF,OAAA;AAOiD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASjD,MAAMG,gBAAgB,GAAGC,IAAA,IAAyE;EAAA,IAAxE;IAAEC,WAAW;IAAEC,WAAW;IAAEC,aAAa;IAAEC;EAAuB,CAAC,GAAAJ,IAAA;EAC3F,MAAM;IAAEK;EAAQ,CAAC,GAAG,IAAAC,yCAAa,GAAE;EACnC,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,0CAAc,GAAE;EAC1C,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;EAE3C,oBACEpB,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAkB,GAAG;IACFC,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,WAAW,EAAEF,MAAM,CAACC,SAAS,CAACE,iBAAiB,GAAGT,IAAI;MACtDU,YAAY,EAAEJ,MAAM,CAACC,SAAS,CAACE,iBAAiB,GAAGR,KAAK;MACxDU,aAAa,EAAEnB,WAAW;MAC1BoB,MAAM,EAAEd,aAAa,GAAGN,WAAW;MACnCqB,eAAe,EAAEjB,OAAO,CAACkB;IAC3B,CAAC;EACD,gBAEFhC,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAA6B,QAAQ;IAACC,aAAa,EAAE,IAAK;IAACC,OAAO,EAAEtB,eAAgB;IAACU,KAAK,EAAEC,MAAM,CAACY;EAAgB,gBACrFpC,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAiC,IAAI;IAACC,IAAI,EAAE,UAAW;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAE1B,OAAO,CAAC2B;EAAmB,EAAG,CAC9D,eACXzC,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAkB,GAAG;IAACC,KAAK,EAAEC,MAAM,CAACkB;EAAe,EAAG,eACrC1C,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAA6B,QAAQ;IAACC,aAAa,EAAE,IAAK;IAACC,OAAO,EAAEvB,aAAc;IAACW,KAAK,EAAEC,MAAM,CAACY,eAAgB;IAACO,QAAQ,EAAE,CAAChC;EAAY,GAC1GA,WAAW,iBAAIX,MAAA,CAAAO,OAAA,CAAAc,aAAA,CAACjB,2BAAA,CAAAiC,IAAI;IAACC,IAAI,EAAE,QAAS;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAE1B,OAAO,CAAC2B;EAAmB,EAAG,CAC5E,CACP;AAEV,CAAC;AAED,MAAMjB,MAAM,GAAG,IAAAoB,4CAAgB,EAAC;EAC9BnB,SAAS,EAAE;IACToB,MAAM,EAAE,CAAC;IACTC,QAAQ,EAAE,UAAU;IACpB5B,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACR4B,MAAM,EAAE,CAAC;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBvB,iBAAiB,EAAE;EACrB,CAAC;EACDS,eAAe,EAAE;IACfe,KAAK,EAAE,EAAE;IACTrB,MAAM,EAAE,EAAE;IACVmB,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDR,cAAc,EAAE;IACdU,IAAI,EAAE,CAAC;IACPH,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;AAAC,IAAAG,QAAA,GAEY7C,gBAAgB;AAAA8C,OAAA,CAAA/C,OAAA,GAAA8C,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","obj","__esModule","default","FileViewerHeader","_ref","headerShown","topInset","onClose","subtitle","title","palette","useUIKitTheme","defaultHeight","useHeaderStyle","left","right","useSafeAreaInsets","createElement","Box","style","styles","container","paddingLeft","paddingHorizontal","paddingRight","paddingTop","height","backgroundColor","overlay01","PressBox","activeOpacity","onPress","buttonContainer","Icon","icon","size","color","onBackgroundDark01","titleContainer","Text","h2","numberOfLines","truncate","mode","maxLen","caption2","createStyleSheet","top","position","flexDirection","alignItems","justifyContent","width","flex","marginBottom","_default","exports"],"sources":["FileViewerHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { truncate } from '@sendbird/uikit-utils';\n\ntype Props = {\n headerShown?: boolean;\n topInset: number;\n onClose: () => void;\n title: string;\n subtitle: string;\n};\n\nconst FileViewerHeader = ({ headerShown = true, topInset, onClose, subtitle, title }: Props) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n if (!headerShown) return null;\n\n return (\n <Box\n style={[\n styles.container,\n {\n paddingLeft: styles.container.paddingHorizontal + left,\n paddingRight: styles.container.paddingHorizontal + right,\n paddingTop: topInset,\n height: defaultHeight + topInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <PressBox activeOpacity={0.75} onPress={onClose} style={styles.buttonContainer}>\n <Icon icon={'close'} size={24} color={palette.onBackgroundDark01} />\n </PressBox>\n <Box style={styles.titleContainer}>\n <Text h2 color={palette.onBackgroundDark01} style={styles.title} numberOfLines={1}>\n {truncate(title, { mode: 'mid', maxLen: 18 })}\n </Text>\n <Text caption2 color={palette.onBackgroundDark01} numberOfLines={1}>\n {subtitle}\n </Text>\n </Box>\n <Box style={styles.buttonContainer} />\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n top: 0,\n left: 0,\n right: 0,\n position: 'absolute',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n buttonContainer: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n marginBottom: 2,\n },\n});\n\nexport default FileViewerHeader;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AAEA,IAAAE,2BAAA,GAAAF,OAAA;AASA,IAAAG,WAAA,GAAAH,OAAA;AAAiD,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAUjD,MAAMG,gBAAgB,GAAGC,IAAA,IAAuE;EAAA,IAAtE;IAAEC,WAAW,GAAG,IAAI;IAAEC,QAAQ;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAa,CAAC,GAAAL,IAAA;EACzF,MAAM;IAAEM;EAAQ,CAAC,GAAG,IAAAC,yCAAa,GAAE;EACnC,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,0CAAc,GAAE;EAC1C,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;EAE3C,IAAI,CAACX,WAAW,EAAE,OAAO,IAAI;EAE7B,oBACEX,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAAoB,GAAG;IACFC,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,WAAW,EAAEF,MAAM,CAACC,SAAS,CAACE,iBAAiB,GAAGT,IAAI;MACtDU,YAAY,EAAEJ,MAAM,CAACC,SAAS,CAACE,iBAAiB,GAAGR,KAAK;MACxDU,UAAU,EAAEnB,QAAQ;MACpBoB,MAAM,EAAEd,aAAa,GAAGN,QAAQ;MAChCqB,eAAe,EAAEjB,OAAO,CAACkB;IAC3B,CAAC;EACD,gBAEFlC,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAA+B,QAAQ;IAACC,aAAa,EAAE,IAAK;IAACC,OAAO,EAAExB,OAAQ;IAACY,KAAK,EAAEC,MAAM,CAACY;EAAgB,gBAC7EtC,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAAmC,IAAI;IAACC,IAAI,EAAE,OAAQ;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAE1B,OAAO,CAAC2B;EAAmB,EAAG,CAC3D,eACX3C,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAAoB,GAAG;IAACC,KAAK,EAAEC,MAAM,CAACkB;EAAe,gBAChC5C,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAAyC,IAAI;IAACC,EAAE;IAACJ,KAAK,EAAE1B,OAAO,CAAC2B,kBAAmB;IAAClB,KAAK,EAAEC,MAAM,CAACX,KAAM;IAACgC,aAAa,EAAE;EAAE,GAC/E,IAAAC,oBAAQ,EAACjC,KAAK,EAAE;IAAEkC,IAAI,EAAE,KAAK;IAAEC,MAAM,EAAE;EAAG,CAAC,CAAC,CACxC,eACPlD,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAAyC,IAAI;IAACM,QAAQ;IAACT,KAAK,EAAE1B,OAAO,CAAC2B,kBAAmB;IAACI,aAAa,EAAE;EAAE,GAChEjC,QAAQ,CACJ,CACH,eACNd,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,2BAAA,CAAAoB,GAAG;IAACC,KAAK,EAAEC,MAAM,CAACY;EAAgB,EAAG,CAClC;AAEV,CAAC;AAED,MAAMZ,MAAM,GAAG,IAAA0B,4CAAgB,EAAC;EAC9BzB,SAAS,EAAE;IACT0B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","obj","__esModule","default","FileViewerHeader","_ref","headerShown","topInset","onClose","subtitle","title","palette","useUIKitTheme","defaultHeight","useHeaderStyle","left","right","useSafeAreaInsets","createElement","Box","style","styles","container","paddingLeft","paddingHorizontal","paddingRight","paddingTop","height","backgroundColor","overlay01","PressBox","activeOpacity","onPress","buttonContainer","Icon","icon","size","color","onBackgroundDark01","titleContainer","Text","h2","numberOfLines","truncate","mode","maxLen","caption2","createStyleSheet","zIndex","top","position","flexDirection","alignItems","justifyContent","width","flex","marginBottom","_default","exports"],"sources":["FileViewerHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { truncate } from '@sendbird/uikit-utils';\n\ntype Props = {\n headerShown?: boolean;\n topInset: number;\n onClose: () => void;\n title: string;\n subtitle: string;\n};\n\nconst FileViewerHeader = ({ headerShown = true, topInset, onClose, subtitle, title }: Props) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n if (!headerShown) return null;\n\n return (\n <Box\n style={[\n styles.container,\n {\n paddingLeft: styles.container.paddingHorizontal + left,\n paddingRight: styles.container.paddingHorizontal + right,\n paddingTop: topInset,\n height: defaultHeight + topInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <PressBox activeOpacity={0.75} onPress={onClose} style={styles.buttonContainer}>\n <Icon icon={'close'} size={24} color={palette.onBackgroundDark01} />\n </PressBox>\n <Box style={styles.titleContainer}>\n <Text h2 color={palette.onBackgroundDark01} style={styles.title} numberOfLines={1}>\n {truncate(title, { mode: 'mid', maxLen: 18 })}\n </Text>\n <Text caption2 color={palette.onBackgroundDark01} numberOfLines={1}>\n {subtitle}\n </Text>\n </Box>\n <Box style={styles.buttonContainer} />\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n zIndex: 1,\n top: 0,\n left: 0,\n right: 0,\n position: 'absolute',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n buttonContainer: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n marginBottom: 2,\n },\n});\n\nexport default FileViewerHeader;\n"],"mappings":"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"}
|
|
@@ -287,7 +287,7 @@ const GroupChannelMessageRenderer = _ref => {
|
|
|
287
287
|
onUnsubscribeStatus: voiceMessageStatusManager.unsubscribe,
|
|
288
288
|
onUnmount: () => {
|
|
289
289
|
if ((0, _uikitUtils.isVoiceMessage)(message) && playerService.uri === message.url) {
|
|
290
|
-
resetPlayer();
|
|
290
|
+
resetPlayer().catch(_ => {});
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
293
|
}, messageProps));
|