@sendbird/uikit-react-native 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/lib/commonjs/components/FileViewer.js +3 -10
  2. package/lib/commonjs/components/FileViewer.js.map +1 -1
  3. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +20 -56
  4. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  5. package/lib/commonjs/{components → containers}/GroupChannelPreviewContainer.js +30 -53
  6. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -0
  7. package/lib/commonjs/{InternalErrorBoundary.js → containers/InternalErrorBoundaryContainer.js} +5 -5
  8. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -0
  9. package/lib/commonjs/{SendbirdUIKitContainer.js → containers/SendbirdUIKitContainer.js} +10 -10
  10. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -0
  11. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  12. package/lib/commonjs/fragments/createGroupChannelFragment.js +1 -1
  13. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  14. package/lib/commonjs/fragments/createGroupChannelListFragment.js +5 -5
  15. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  16. package/lib/commonjs/index.js +1 -1
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/{InternalLocalCacheStorage.js → libs/InternalLocalCacheStorage.js} +0 -0
  19. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -0
  20. package/lib/commonjs/version.js +1 -1
  21. package/lib/commonjs/version.js.map +1 -1
  22. package/lib/module/components/FileViewer.js +4 -8
  23. package/lib/module/components/FileViewer.js.map +1 -1
  24. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +17 -51
  25. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  26. package/lib/module/{components → containers}/GroupChannelPreviewContainer.js +28 -51
  27. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -0
  28. package/lib/module/{InternalErrorBoundary.js → containers/InternalErrorBoundaryContainer.js} +5 -5
  29. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -0
  30. package/lib/module/{SendbirdUIKitContainer.js → containers/SendbirdUIKitContainer.js} +10 -10
  31. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -0
  32. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  33. package/lib/module/fragments/createGroupChannelFragment.js +1 -1
  34. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  35. package/lib/module/fragments/createGroupChannelListFragment.js +5 -5
  36. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  37. package/lib/module/index.js +1 -1
  38. package/lib/module/index.js.map +1 -1
  39. package/lib/module/{InternalLocalCacheStorage.js → libs/InternalLocalCacheStorage.js} +0 -0
  40. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -0
  41. package/lib/module/version.js +1 -1
  42. package/lib/module/version.js.map +1 -1
  43. package/lib/typescript/src/{components → containers}/GroupChannelPreviewContainer.d.ts +0 -0
  44. package/lib/typescript/src/{InternalErrorBoundary.d.ts → containers/InternalErrorBoundaryContainer.d.ts} +3 -3
  45. package/lib/typescript/src/{SendbirdUIKitContainer.d.ts → containers/SendbirdUIKitContainer.d.ts} +4 -4
  46. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  47. package/lib/typescript/src/index.d.ts +1 -1
  48. package/lib/typescript/src/{InternalLocalCacheStorage.d.ts → libs/InternalLocalCacheStorage.d.ts} +2 -2
  49. package/lib/typescript/src/version.d.ts +1 -1
  50. package/package.json +5 -5
  51. package/src/components/FileViewer.tsx +7 -8
  52. package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +13 -46
  53. package/src/{components → containers}/GroupChannelPreviewContainer.tsx +20 -37
  54. package/src/{InternalErrorBoundary.tsx → containers/InternalErrorBoundaryContainer.tsx} +4 -4
  55. package/src/{SendbirdUIKitContainer.tsx → containers/SendbirdUIKitContainer.tsx} +13 -13
  56. package/src/domain/groupChannelList/types.ts +2 -2
  57. package/src/fragments/createGroupChannelFragment.tsx +1 -1
  58. package/src/fragments/createGroupChannelListFragment.tsx +5 -5
  59. package/src/index.ts +1 -1
  60. package/src/{InternalLocalCacheStorage.ts → libs/InternalLocalCacheStorage.ts} +1 -1
  61. package/src/version.ts +1 -1
  62. package/lib/commonjs/InternalErrorBoundary.js.map +0 -1
  63. package/lib/commonjs/InternalLocalCacheStorage.js.map +0 -1
  64. package/lib/commonjs/SendbirdUIKitContainer.js.map +0 -1
  65. package/lib/commonjs/components/GroupChannelPreviewContainer.js.map +0 -1
  66. package/lib/commonjs/components/SBUPressable.js +0 -45
  67. package/lib/commonjs/components/SBUPressable.js.map +0 -1
  68. package/lib/module/InternalErrorBoundary.js.map +0 -1
  69. package/lib/module/InternalLocalCacheStorage.js.map +0 -1
  70. package/lib/module/SendbirdUIKitContainer.js.map +0 -1
  71. package/lib/module/components/GroupChannelPreviewContainer.js.map +0 -1
  72. package/lib/module/components/SBUPressable.js +0 -33
  73. package/lib/module/components/SBUPressable.js.map +0 -1
  74. package/lib/typescript/src/components/SBUPressable.d.ts +0 -18
  75. package/src/components/SBUPressable.tsx +0 -40
@@ -17,10 +17,6 @@ var _uikitUtils = require("@sendbird/uikit-utils");
17
17
 
18
18
  var _useContext = require("../hooks/useContext");
19
19
 
20
- var _SBUPressable = _interopRequireDefault(require("./SBUPressable"));
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
21
 
26
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -215,8 +211,7 @@ const FileViewerHeader = _ref2 => {
215
211
  height: defaultHeight + topInset,
216
212
  backgroundColor: palette.overlay01
217
213
  }]
218
- }, /*#__PURE__*/_react.default.createElement(_SBUPressable.default, {
219
- as: 'TouchableOpacity',
214
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
220
215
  onPress: onClose,
221
216
  style: styles.barButton
222
217
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
@@ -263,8 +258,7 @@ const FileViewerFooter = _ref3 => {
263
258
  height: defaultHeight + bottomInset,
264
259
  backgroundColor: palette.overlay01
265
260
  }]
266
- }, /*#__PURE__*/_react.default.createElement(_SBUPressable.default, {
267
- as: 'TouchableOpacity',
261
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
268
262
  onPress: onPressDownload,
269
263
  style: styles.barButton
270
264
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
@@ -273,8 +267,7 @@ const FileViewerFooter = _ref3 => {
273
267
  color: palette.onBackgroundDark01
274
268
  })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
275
269
  style: styles.barTitleContainer
276
- }), /*#__PURE__*/_react.default.createElement(_SBUPressable.default, {
277
- as: 'TouchableOpacity',
270
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
278
271
  onPress: onPressDelete,
279
272
  style: styles.barButton,
280
273
  disabled: !deleteShown
@@ -1 +1 @@
1
- {"version":3,"names":["FileViewer","headerShown","deleteMessage","headerTopInset","fileMessage","onPressDownload","onPressDelete","onClose","loading","setLoading","useState","bottom","useSafeAreaInsets","currentUser","useSendbirdChat","palette","useUIKitTheme","topInset","statusBarTranslucent","defaultHeight","useHeaderStyle","STRINGS","useLocalization","fileService","mediaService","usePlatformService","toast","useToast","alert","useAlert","basicTopInset","canDelete","isMyMessage","userId","fileType","getFileType","type","getFileExtension","url","useEffect","VideoComponent","fileViewer","useIIFE","uri","StyleSheet","absoluteFill","top","_onPressDelete","title","GROUP_CHANNEL","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_DELETE_CONFIRM_OK","style","onPress","then","catch","show","TOAST","DELETE_MSG_ERROR","_onPressDownload","toMegabyte","size","DOWNLOAD_START","save","fileUrl","fileName","name","response","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","flex","backgroundColor","background700","alignItems","justifyContent","position","primary300","FILE_VIEWER","TITLE","SUBTITLE","FileViewerHeader","subtitle","left","right","styles","headerContainer","paddingLeft","paddingHorizontal","paddingRight","paddingTop","height","overlay01","barButton","onBackgroundDark01","barTitleContainer","headerTitle","FileViewerFooter","bottomInset","deleteShown","footerContainer","paddingBottom","createStyleSheet","flexDirection","width","marginBottom"],"sources":["FileViewer.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StatusBar, StyleSheet, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Icon,\n Image,\n LoadingSpinner,\n Text,\n createStyleSheet,\n useAlert,\n useHeaderStyle,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { Logger, getFileExtension, getFileType, isMyMessage, toMegabyte, useIIFE } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport SBUPressable from './SBUPressable';\n\ntype Props = {\n fileMessage: SendbirdFileMessage;\n deleteMessage: () => Promise<void>;\n\n onClose: () => void;\n onPressDownload?: (message: SendbirdFileMessage) => void;\n onPressDelete?: (message: SendbirdFileMessage) => void;\n\n headerShown?: boolean;\n headerTopInset?: number;\n};\nconst FileViewer = ({\n headerShown = true,\n deleteMessage,\n headerTopInset,\n fileMessage,\n onPressDownload,\n onPressDelete,\n onClose,\n}: Props) => {\n const [loading, setLoading] = useState(true);\n\n const { bottom } = useSafeAreaInsets();\n\n const { currentUser } = useSendbirdChat();\n const { palette } = useUIKitTheme();\n const { topInset, statusBarTranslucent, defaultHeight } = useHeaderStyle();\n const { STRINGS } = useLocalization();\n const { fileService, mediaService } = usePlatformService();\n const toast = useToast();\n const { alert } = useAlert();\n\n const basicTopInset = statusBarTranslucent ? topInset : 0;\n const canDelete = isMyMessage(fileMessage, currentUser?.userId);\n const fileType = getFileType(fileMessage.type || getFileExtension(fileMessage.url));\n\n useEffect(() => {\n if (!mediaService?.VideoComponent || fileType === 'file') {\n onClose();\n }\n }, [mediaService]);\n\n const fileViewer = useIIFE(() => {\n switch (fileType) {\n case 'image': {\n return (\n <Image\n source={{ uri: fileMessage.url }}\n style={StyleSheet.absoluteFill}\n resizeMode={'contain'}\n onLoadEnd={() => setLoading(false)}\n />\n );\n }\n\n case 'video':\n case 'audio': {\n if (!mediaService?.VideoComponent) return null;\n return (\n <mediaService.VideoComponent\n source={{ uri: fileMessage.url }}\n style={[StyleSheet.absoluteFill, { top: basicTopInset + defaultHeight, bottom: defaultHeight + bottom }]}\n resizeMode={'contain'}\n onLoad={() => setLoading(false)}\n />\n );\n }\n\n default: {\n return null;\n }\n }\n });\n\n const _onPressDelete = () => {\n if (!canDelete) return;\n\n if (onPressDelete) {\n onPressDelete(fileMessage);\n } else {\n alert({\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n deleteMessage()\n .then(() => {\n onClose();\n })\n .catch(() => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n });\n },\n },\n ],\n });\n }\n };\n\n const _onPressDownload = () => {\n if (onPressDownload) {\n onPressDownload(fileMessage);\n } else {\n if (toMegabyte(fileMessage.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: fileMessage.url, fileName: fileMessage.name, fileType: fileMessage.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 return (\n <View style={{ flex: 1, backgroundColor: palette.background700 }}>\n <StatusBar barStyle={'light-content'} animated />\n <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>\n {fileViewer}\n {loading && <LoadingSpinner style={{ position: 'absolute' }} size={40} color={palette.primary300} />}\n </View>\n {headerShown && (\n <FileViewerHeader\n title={STRINGS.FILE_VIEWER.TITLE(fileMessage)}\n subtitle={STRINGS.FILE_VIEWER.SUBTITLE(fileMessage)}\n topInset={headerTopInset ?? basicTopInset}\n onClose={onClose}\n />\n )}\n <FileViewerFooter\n bottomInset={bottom}\n deleteShown={canDelete}\n onPressDelete={_onPressDelete}\n onPressDownload={_onPressDownload}\n />\n </View>\n );\n};\n\ntype HeaderProps = {\n topInset: number;\n onClose: () => void;\n title: string;\n subtitle: string;\n};\nconst FileViewerHeader = ({ topInset, onClose, subtitle, title }: HeaderProps) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <View\n style={[\n styles.headerContainer,\n {\n paddingLeft: styles.headerContainer.paddingHorizontal + left,\n paddingRight: styles.headerContainer.paddingHorizontal + right,\n },\n { paddingTop: topInset, height: defaultHeight + topInset, backgroundColor: palette.overlay01 },\n ]}\n >\n <SBUPressable as={'TouchableOpacity'} onPress={onClose} style={styles.barButton}>\n <Icon icon={'close'} size={24} color={palette.onBackgroundDark01} />\n </SBUPressable>\n <View style={styles.barTitleContainer}>\n <Text h2 color={palette.onBackgroundDark01} style={styles.headerTitle}>\n {title}\n </Text>\n <Text caption2 color={palette.onBackgroundDark01}>\n {subtitle}\n </Text>\n </View>\n <View style={styles.barButton} />\n </View>\n );\n};\n\ntype FooterProps = {\n bottomInset: number;\n deleteShown: boolean;\n onPressDelete: () => void;\n onPressDownload: () => void;\n};\nconst FileViewerFooter = ({ bottomInset, deleteShown, onPressDelete, onPressDownload }: FooterProps) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <View\n style={[\n styles.footerContainer,\n {\n paddingLeft: styles.headerContainer.paddingHorizontal + left,\n paddingRight: styles.headerContainer.paddingHorizontal + right,\n },\n {\n paddingBottom: bottomInset,\n height: defaultHeight + bottomInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <SBUPressable as={'TouchableOpacity'} onPress={onPressDownload} style={styles.barButton}>\n <Icon icon={'download'} size={24} color={palette.onBackgroundDark01} />\n </SBUPressable>\n <View style={styles.barTitleContainer} />\n <SBUPressable as={'TouchableOpacity'} onPress={onPressDelete} style={styles.barButton} disabled={!deleteShown}>\n {deleteShown && <Icon icon={'delete'} size={24} color={palette.onBackgroundDark01} />}\n </SBUPressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n headerContainer: {\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 barButton: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n barTitleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n headerTitle: {\n marginBottom: 2,\n },\n footerContainer: {\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});\n\nexport default FileViewer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["FileViewer","headerShown","deleteMessage","headerTopInset","fileMessage","onPressDownload","onPressDelete","onClose","loading","setLoading","useState","bottom","useSafeAreaInsets","currentUser","useSendbirdChat","palette","useUIKitTheme","topInset","statusBarTranslucent","defaultHeight","useHeaderStyle","STRINGS","useLocalization","fileService","mediaService","usePlatformService","toast","useToast","alert","useAlert","basicTopInset","canDelete","isMyMessage","userId","fileType","getFileType","type","getFileExtension","url","useEffect","VideoComponent","fileViewer","useIIFE","uri","StyleSheet","absoluteFill","top","_onPressDelete","title","GROUP_CHANNEL","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_DELETE_CONFIRM_OK","style","onPress","then","catch","show","TOAST","DELETE_MSG_ERROR","_onPressDownload","toMegabyte","size","DOWNLOAD_START","save","fileUrl","fileName","name","response","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","flex","backgroundColor","background700","alignItems","justifyContent","position","primary300","FILE_VIEWER","TITLE","SUBTITLE","FileViewerHeader","subtitle","left","right","styles","headerContainer","paddingLeft","paddingHorizontal","paddingRight","paddingTop","height","overlay01","barButton","onBackgroundDark01","barTitleContainer","headerTitle","FileViewerFooter","bottomInset","deleteShown","footerContainer","paddingBottom","createStyleSheet","flexDirection","width","marginBottom"],"sources":["FileViewer.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StatusBar, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Icon,\n Image,\n LoadingSpinner,\n Text,\n createStyleSheet,\n useAlert,\n useHeaderStyle,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { Logger, getFileExtension, getFileType, isMyMessage, toMegabyte, useIIFE } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n fileMessage: SendbirdFileMessage;\n deleteMessage: () => Promise<void>;\n\n onClose: () => void;\n onPressDownload?: (message: SendbirdFileMessage) => void;\n onPressDelete?: (message: SendbirdFileMessage) => void;\n\n headerShown?: boolean;\n headerTopInset?: number;\n};\nconst FileViewer = ({\n headerShown = true,\n deleteMessage,\n headerTopInset,\n fileMessage,\n onPressDownload,\n onPressDelete,\n onClose,\n}: Props) => {\n const [loading, setLoading] = useState(true);\n\n const { bottom } = useSafeAreaInsets();\n\n const { currentUser } = useSendbirdChat();\n const { palette } = useUIKitTheme();\n const { topInset, statusBarTranslucent, defaultHeight } = useHeaderStyle();\n const { STRINGS } = useLocalization();\n const { fileService, mediaService } = usePlatformService();\n const toast = useToast();\n const { alert } = useAlert();\n\n const basicTopInset = statusBarTranslucent ? topInset : 0;\n const canDelete = isMyMessage(fileMessage, currentUser?.userId);\n const fileType = getFileType(fileMessage.type || getFileExtension(fileMessage.url));\n\n useEffect(() => {\n if (!mediaService?.VideoComponent || fileType === 'file') {\n onClose();\n }\n }, [mediaService]);\n\n const fileViewer = useIIFE(() => {\n switch (fileType) {\n case 'image': {\n return (\n <Image\n source={{ uri: fileMessage.url }}\n style={StyleSheet.absoluteFill}\n resizeMode={'contain'}\n onLoadEnd={() => setLoading(false)}\n />\n );\n }\n\n case 'video':\n case 'audio': {\n if (!mediaService?.VideoComponent) return null;\n return (\n <mediaService.VideoComponent\n source={{ uri: fileMessage.url }}\n style={[StyleSheet.absoluteFill, { top: basicTopInset + defaultHeight, bottom: defaultHeight + bottom }]}\n resizeMode={'contain'}\n onLoad={() => setLoading(false)}\n />\n );\n }\n\n default: {\n return null;\n }\n }\n });\n\n const _onPressDelete = () => {\n if (!canDelete) return;\n\n if (onPressDelete) {\n onPressDelete(fileMessage);\n } else {\n alert({\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n deleteMessage()\n .then(() => {\n onClose();\n })\n .catch(() => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n });\n },\n },\n ],\n });\n }\n };\n\n const _onPressDownload = () => {\n if (onPressDownload) {\n onPressDownload(fileMessage);\n } else {\n if (toMegabyte(fileMessage.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: fileMessage.url, fileName: fileMessage.name, fileType: fileMessage.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 return (\n <View style={{ flex: 1, backgroundColor: palette.background700 }}>\n <StatusBar barStyle={'light-content'} animated />\n <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>\n {fileViewer}\n {loading && <LoadingSpinner style={{ position: 'absolute' }} size={40} color={palette.primary300} />}\n </View>\n {headerShown && (\n <FileViewerHeader\n title={STRINGS.FILE_VIEWER.TITLE(fileMessage)}\n subtitle={STRINGS.FILE_VIEWER.SUBTITLE(fileMessage)}\n topInset={headerTopInset ?? basicTopInset}\n onClose={onClose}\n />\n )}\n <FileViewerFooter\n bottomInset={bottom}\n deleteShown={canDelete}\n onPressDelete={_onPressDelete}\n onPressDownload={_onPressDownload}\n />\n </View>\n );\n};\n\ntype HeaderProps = {\n topInset: number;\n onClose: () => void;\n title: string;\n subtitle: string;\n};\nconst FileViewerHeader = ({ topInset, onClose, subtitle, title }: HeaderProps) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <View\n style={[\n styles.headerContainer,\n {\n paddingLeft: styles.headerContainer.paddingHorizontal + left,\n paddingRight: styles.headerContainer.paddingHorizontal + right,\n },\n { paddingTop: topInset, height: defaultHeight + topInset, backgroundColor: palette.overlay01 },\n ]}\n >\n <TouchableOpacity onPress={onClose} style={styles.barButton}>\n <Icon icon={'close'} size={24} color={palette.onBackgroundDark01} />\n </TouchableOpacity>\n <View style={styles.barTitleContainer}>\n <Text h2 color={palette.onBackgroundDark01} style={styles.headerTitle}>\n {title}\n </Text>\n <Text caption2 color={palette.onBackgroundDark01}>\n {subtitle}\n </Text>\n </View>\n <View style={styles.barButton} />\n </View>\n );\n};\n\ntype FooterProps = {\n bottomInset: number;\n deleteShown: boolean;\n onPressDelete: () => void;\n onPressDownload: () => void;\n};\nconst FileViewerFooter = ({ bottomInset, deleteShown, onPressDelete, onPressDownload }: FooterProps) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <View\n style={[\n styles.footerContainer,\n {\n paddingLeft: styles.headerContainer.paddingHorizontal + left,\n paddingRight: styles.headerContainer.paddingHorizontal + right,\n },\n {\n paddingBottom: bottomInset,\n height: defaultHeight + bottomInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <TouchableOpacity onPress={onPressDownload} style={styles.barButton}>\n <Icon icon={'download'} size={24} color={palette.onBackgroundDark01} />\n </TouchableOpacity>\n <View style={styles.barTitleContainer} />\n <TouchableOpacity onPress={onPressDelete} style={styles.barButton} disabled={!deleteShown}>\n {deleteShown && <Icon icon={'delete'} size={24} color={palette.onBackgroundDark01} />}\n </TouchableOpacity>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n headerContainer: {\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 barButton: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n barTitleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n headerTitle: {\n marginBottom: 2,\n },\n footerContainer: {\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});\n\nexport default FileViewer;\n"],"mappings":"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"}
@@ -5,17 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
11
11
 
12
- var _uikitUtils = require("@sendbird/uikit-utils");
12
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
13
 
14
14
  var _useContext = require("../../hooks/useContext");
15
15
 
16
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
18
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
20
18
  const SIZE = 16;
21
19
 
@@ -26,50 +24,21 @@ const MessageOutgoingStatus = _ref => {
26
24
  } = _ref;
27
25
  if (!message.isUserMessage() && !message.isFileMessage()) return null;
28
26
  const {
29
- sdk,
30
- features
27
+ sdk
31
28
  } = (0, _useContext.useSendbirdChat)();
32
29
  const {
33
30
  colors
34
31
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
35
- const uniqId = (0, _uikitUtils.useUniqId)('MessageOutgoingStatus');
36
- const forceUpdate = (0, _uikitUtils.useForceUpdate)();
37
- (0, _react.useEffect)(() => {
38
- const handlerId = `MessageOutgoingStatus_${uniqId}`;
39
-
40
- if (message.sendingStatus === 'succeeded' && channel.getUnreadMemberCount(message) === 0 && channel.getUndeliveredMemberCount(message) === 0) {
41
- sdk.removeChannelHandler(handlerId);
42
- } else {
43
- const handler = new sdk.ChannelHandler();
44
-
45
- handler.onReadReceiptUpdated = eventChannel => {
46
- if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
47
- forceUpdate();
48
- };
49
-
50
- if (features.deliveryReceiptEnabled) {
51
- handler.onDeliveryReceiptUpdated = eventChannel => {
52
- if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
53
- forceUpdate();
54
- };
55
- }
56
-
57
- sdk.addChannelHandler(handlerId, handler);
58
- }
59
-
60
- return () => {
61
- sdk.removeChannelHandler(handlerId);
62
- };
63
- }, [message.sendingStatus]);
64
-
65
- if (message.sendingStatus === 'pending') {
32
+ const outgoingStatus = (0, _uikitChatHooks.useMessageOutgoingStatus)(sdk, channel, message);
33
+
34
+ if (outgoingStatus === 'PENDING') {
66
35
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.LoadingSpinner, {
67
36
  size: SIZE,
68
37
  style: styles.container
69
38
  });
70
39
  }
71
40
 
72
- if (message.sendingStatus === 'failed') {
41
+ if (outgoingStatus === 'FAILED') {
73
42
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
74
43
  icon: 'error',
75
44
  size: SIZE,
@@ -78,7 +47,7 @@ const MessageOutgoingStatus = _ref => {
78
47
  });
79
48
  }
80
49
 
81
- if (channel.getUnreadMemberCount(message) === 0) {
50
+ if (outgoingStatus === 'READ') {
82
51
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
83
52
  icon: 'done-all',
84
53
  size: SIZE,
@@ -87,16 +56,16 @@ const MessageOutgoingStatus = _ref => {
87
56
  });
88
57
  }
89
58
 
90
- if (features.deliveryReceiptEnabled) {
91
- if (channel.getUndeliveredMemberCount(message) === 0) {
92
- return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
93
- icon: 'done-all',
94
- size: SIZE,
95
- color: colors.onBackground03,
96
- style: styles.container
97
- });
98
- }
59
+ if (outgoingStatus === 'UNREAD' || outgoingStatus === 'DELIVERED') {
60
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
61
+ icon: 'done-all',
62
+ size: SIZE,
63
+ color: colors.onBackground03,
64
+ style: styles.container
65
+ });
66
+ }
99
67
 
68
+ if (outgoingStatus === 'UNDELIVERED') {
100
69
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
101
70
  icon: 'done',
102
71
  size: SIZE,
@@ -105,12 +74,7 @@ const MessageOutgoingStatus = _ref => {
105
74
  });
106
75
  }
107
76
 
108
- return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
109
- icon: 'done-all',
110
- size: SIZE,
111
- color: colors.onBackground03,
112
- style: styles.container
113
- });
77
+ return null;
114
78
  };
115
79
 
116
80
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
@@ -1 +1 @@
1
- {"version":3,"names":["SIZE","MessageOutgoingStatus","channel","message","isUserMessage","isFileMessage","sdk","features","useSendbirdChat","colors","useUIKitTheme","uniqId","useUniqId","forceUpdate","useForceUpdate","useEffect","handlerId","sendingStatus","getUnreadMemberCount","getUndeliveredMemberCount","removeChannelHandler","handler","ChannelHandler","onReadReceiptUpdated","eventChannel","isDifferentChannel","deliveryReceiptEnabled","onDeliveryReceiptUpdated","addChannelHandler","styles","container","error","secondary","onBackground03","createStyleSheet","marginRight","React","memo"],"sources":["MessageOutgoingStatus.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\n\nconst SIZE = 16;\n\ntype Props = { channel: SendbirdGroupChannel; message: SendbirdMessage };\nconst MessageOutgoingStatus = ({ channel, message }: Props) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return null;\n\n const { sdk, features } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n\n const uniqId = useUniqId('MessageOutgoingStatus');\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n const handlerId = `MessageOutgoingStatus_${uniqId}`;\n\n if (\n message.sendingStatus === 'succeeded' &&\n channel.getUnreadMemberCount(message) === 0 &&\n channel.getUndeliveredMemberCount(message) === 0\n ) {\n sdk.removeChannelHandler(handlerId);\n } else {\n const handler = new sdk.ChannelHandler();\n\n handler.onReadReceiptUpdated = (eventChannel) => {\n if (isDifferentChannel(channel, eventChannel)) return;\n forceUpdate();\n };\n\n if (features.deliveryReceiptEnabled) {\n handler.onDeliveryReceiptUpdated = (eventChannel) => {\n if (isDifferentChannel(channel, eventChannel)) return;\n forceUpdate();\n };\n }\n\n sdk.addChannelHandler(handlerId, handler);\n }\n\n return () => {\n sdk.removeChannelHandler(handlerId);\n };\n }, [message.sendingStatus]);\n\n if (message.sendingStatus === 'pending') {\n return <LoadingSpinner size={SIZE} style={styles.container} />;\n }\n\n if (message.sendingStatus === 'failed') {\n return <Icon icon={'error'} size={SIZE} color={colors.error} style={styles.container} />;\n }\n\n if (channel.getUnreadMemberCount(message) === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.secondary} style={styles.container} />;\n }\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n return <Icon icon={'done'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n};\n\nconst styles = createStyleSheet({\n container: {\n marginRight: 4,\n },\n});\n\nexport default React.memo(MessageOutgoingStatus);\n"],"mappings":"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"}
1
+ {"version":3,"names":["SIZE","MessageOutgoingStatus","channel","message","isUserMessage","isFileMessage","sdk","useSendbirdChat","colors","useUIKitTheme","outgoingStatus","useMessageOutgoingStatus","styles","container","error","secondary","onBackground03","createStyleSheet","marginRight","React","memo"],"sources":["MessageOutgoingStatus.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport { Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\n\nconst SIZE = 16;\n\ntype Props = { channel: SendbirdGroupChannel; message: SendbirdMessage };\nconst MessageOutgoingStatus = ({ channel, message }: Props) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return null;\n\n const { sdk } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, message);\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={SIZE} style={styles.container} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={SIZE} color={colors.error} style={styles.container} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={SIZE} color={colors.secondary} style={styles.container} />;\n }\n\n if (outgoingStatus === 'UNREAD' || outgoingStatus === 'DELIVERED') {\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n return null;\n};\n\nconst styles = createStyleSheet({\n container: {\n marginRight: 4,\n },\n});\n\nexport default React.memo(MessageOutgoingStatus);\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAGA;;;;AAEA,MAAMA,IAAI,GAAG,EAAb;;AAGA,MAAMC,qBAAqB,GAAG,QAAiC;EAAA,IAAhC;IAAEC,OAAF;IAAWC;EAAX,CAAgC;EAC7D,IAAI,CAACA,OAAO,CAACC,aAAR,EAAD,IAA4B,CAACD,OAAO,CAACE,aAAR,EAAjC,EAA0D,OAAO,IAAP;EAE1D,MAAM;IAAEC;EAAF,IAAU,IAAAC,2BAAA,GAAhB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAMC,cAAc,GAAG,IAAAC,wCAAA,EAAyBL,GAAzB,EAA8BJ,OAA9B,EAAuCC,OAAvC,CAAvB;;EAEA,IAAIO,cAAc,KAAK,SAAvB,EAAkC;IAChC,oBAAO,6BAAC,0CAAD;MAAgB,IAAI,EAAEV,IAAtB;MAA4B,KAAK,EAAEY,MAAM,CAACC;IAA1C,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,QAAvB,EAAiC;IAC/B,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,OAAZ;MAAqB,IAAI,EAAEV,IAA3B;MAAiC,KAAK,EAAEQ,MAAM,CAACM,KAA/C;MAAsD,KAAK,EAAEF,MAAM,CAACC;IAApE,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,MAAvB,EAA+B;IAC7B,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,UAAZ;MAAwB,IAAI,EAAEV,IAA9B;MAAoC,KAAK,EAAEQ,MAAM,CAACO,SAAlD;MAA6D,KAAK,EAAEH,MAAM,CAACC;IAA3E,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,QAAnB,IAA+BA,cAAc,KAAK,WAAtD,EAAmE;IACjE,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,UAAZ;MAAwB,IAAI,EAAEV,IAA9B;MAAoC,KAAK,EAAEQ,MAAM,CAACQ,cAAlD;MAAkE,KAAK,EAAEJ,MAAM,CAACC;IAAhF,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,aAAvB,EAAsC;IACpC,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,MAAZ;MAAoB,IAAI,EAAEV,IAA1B;MAAgC,KAAK,EAAEQ,MAAM,CAACQ,cAA9C;MAA8D,KAAK,EAAEJ,MAAM,CAACC;IAA5E,EAAP;EACD;;EAED,OAAO,IAAP;AACD,CA5BD;;AA8BA,MAAMD,MAAM,GAAG,IAAAK,4CAAA,EAAiB;EAC9BJ,SAAS,EAAE;IACTK,WAAW,EAAE;EADJ;AADmB,CAAjB,CAAf;;4BAMeC,cAAA,CAAMC,IAAN,CAAWnB,qBAAX,C"}
@@ -7,19 +7,19 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _reactNative = require("react-native");
11
+
10
12
  var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
11
13
 
12
14
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
15
 
14
- var _Icon = _interopRequireDefault(require("@sendbird/uikit-react-native-foundation/src/ui/Icon"));
15
-
16
16
  var _uikitUtils = require("@sendbird/uikit-utils");
17
17
 
18
- var _useContext = require("../hooks/useContext");
18
+ var _ChannelCover = _interopRequireDefault(require("../components/ChannelCover"));
19
19
 
20
- var _ChannelCover = _interopRequireDefault(require("./ChannelCover"));
20
+ var _constants = require("../constants");
21
21
 
22
- var _SBUPressable = _interopRequireDefault(require("./SBUPressable"));
22
+ var _useContext = require("../hooks/useContext");
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
@@ -52,7 +52,6 @@ const GroupChannelPreviewContainer = _ref => {
52
52
  colors
53
53
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
54
54
  const [typingUsers, setTypingUsers] = (0, _react.useState)([]);
55
- const forceUpdate = (0, _uikitUtils.useForceUpdate)();
56
55
 
57
56
  if (features.channelListTypingIndicatorEnabled) {
58
57
  const typingId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
@@ -65,26 +64,7 @@ const GroupChannelPreviewContainer = _ref => {
65
64
  });
66
65
  }
67
66
 
68
- if (features.channelListMessageReceiptStatusEnabled) {
69
- const receiptId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
70
- (0, _uikitChatHooks.useChannelHandler)(sdk, `GroupChannelPreviewContainer_ReceiptStatus_${receiptId}`, {
71
- onDeliveryReceiptUpdated(eventChannel) {
72
- if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
73
- if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;
74
- if (!(0, _uikitUtils.isMyMessage)(eventChannel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
75
- forceUpdate();
76
- },
77
-
78
- onReadReceiptUpdated(eventChannel) {
79
- if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
80
- if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;
81
- if (!(0, _uikitUtils.isMyMessage)(eventChannel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
82
- forceUpdate();
83
- }
84
-
85
- });
86
- }
87
-
67
+ const outgoingStatus = (0, _uikitChatHooks.useMessageOutgoingStatus)(sdk, channel, channel.lastMessage);
88
68
  const bodyText = (0, _uikitUtils.useIIFE)(() => {
89
69
  if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);
90
70
  });
@@ -92,6 +72,7 @@ const GroupChannelPreviewContainer = _ref => {
92
72
  var _channel$lastMessage;
93
73
 
94
74
  if (!((_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage())) return undefined;
75
+ if (typingUsers.length > 0) return undefined;
95
76
  return iconMapper[(0, _uikitUtils.getFileType)(channel.lastMessage.type || (0, _uikitUtils.getFileExtension)(channel.lastMessage.name))];
96
77
  });
97
78
  const titleCaptionIcon = (0, _uikitUtils.useIIFE)(() => {
@@ -99,15 +80,15 @@ const GroupChannelPreviewContainer = _ref => {
99
80
  if (!features.channelListMessageReceiptStatusEnabled) return undefined;
100
81
  if (!(0, _uikitUtils.isMyMessage)(channel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return undefined;
101
82
 
102
- if (channel.lastMessage.sendingStatus === 'pending') {
83
+ if (outgoingStatus === 'PENDING') {
103
84
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.LoadingSpinner, {
104
85
  size: 16,
105
86
  style: styles.titleCaptionIcon
106
87
  });
107
88
  }
108
89
 
109
- if (channel.lastMessage.sendingStatus === 'failed') {
110
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
90
+ if (outgoingStatus === 'FAILED') {
91
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
111
92
  icon: 'error',
112
93
  size: 16,
113
94
  color: colors.error,
@@ -115,41 +96,37 @@ const GroupChannelPreviewContainer = _ref => {
115
96
  });
116
97
  }
117
98
 
118
- if (channel.getUnreadMemberCount(channel.lastMessage) === 0) {
119
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
99
+ if (outgoingStatus === 'UNDELIVERED') {
100
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
101
+ icon: 'done',
102
+ size: 16,
103
+ color: colors.onBackground03,
104
+ containerStyle: styles.titleCaptionIcon
105
+ });
106
+ }
107
+
108
+ if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {
109
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
120
110
  icon: 'done-all',
121
111
  size: 16,
122
- color: colors.secondary,
112
+ color: colors.onBackground03,
123
113
  style: styles.titleCaptionIcon
124
114
  });
125
115
  }
126
116
 
127
- if (features.deliveryReceiptEnabled) {
128
- if (channel.getUndeliveredMemberCount(channel.lastMessage) === 0) {
129
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
130
- icon: 'done-all',
131
- size: 16,
132
- color: colors.onBackground03,
133
- style: styles.titleCaptionIcon
134
- });
135
- }
136
-
137
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
138
- icon: 'done',
117
+ if (outgoingStatus === 'READ') {
118
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
119
+ icon: 'done-all',
139
120
  size: 16,
140
- color: colors.onBackground03,
141
- containerStyle: styles.titleCaptionIcon
121
+ color: colors.secondary,
122
+ style: styles.titleCaptionIcon
142
123
  });
143
124
  }
144
125
 
145
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
146
- icon: 'done-all',
147
- size: 16,
148
- color: colors.onBackground03,
149
- style: styles.titleCaptionIcon
150
- });
126
+ return undefined;
151
127
  });
152
- return /*#__PURE__*/_react.default.createElement(_SBUPressable.default, {
128
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
129
+ delayLongPress: _constants.DEFAULT_LONG_PRESS_DELAY,
153
130
  onPress: onPress,
154
131
  onLongPress: onLongPress
155
132
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.GroupChannelPreview, {
@@ -0,0 +1 @@
1
+ {"version":3,"names":["iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","typingUsers","setTypingUsers","useState","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","outgoingStatus","useMessageOutgoingStatus","lastMessage","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","isMyMessage","userId","styles","error","onBackground03","secondary","DEFAULT_LONG_PRESS_DELAY","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","createStyleSheet","marginRight"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n if (features.channelListTypingIndicatorEnabled) {\n const typingId = useUniqId('GroupChannelPreviewContainer');\n useChannelHandler(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n }\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const bodyIcon = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage) return undefined;\n if (!features.channelListMessageReceiptStatusEnabled) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={bodyIcon}\n badgeCount={channel.unreadMessageCount}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
- var _TypedPlaceholder = _interopRequireDefault(require("./components/TypedPlaceholder"));
12
+ var _TypedPlaceholder = _interopRequireDefault(require("../components/TypedPlaceholder"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
@@ -28,7 +28,7 @@ const DefaultErrorBoundaryComponent = props => {
28
28
  }));
29
29
  };
30
30
 
31
- class InternalErrorBoundary extends _react.default.PureComponent {
31
+ class InternalErrorBoundaryContainer extends _react.default.PureComponent {
32
32
  constructor() {
33
33
  super(...arguments);
34
34
 
@@ -75,10 +75,10 @@ class InternalErrorBoundary extends _react.default.PureComponent {
75
75
 
76
76
  }
77
77
 
78
- _defineProperty(InternalErrorBoundary, "defaultProps", {
78
+ _defineProperty(InternalErrorBoundaryContainer, "defaultProps", {
79
79
  ErrorInfoComponent: DefaultErrorBoundaryComponent
80
80
  });
81
81
 
82
- var _default = InternalErrorBoundary;
82
+ var _default = InternalErrorBoundaryContainer;
83
83
  exports.default = _default;
84
- //# sourceMappingURL=InternalErrorBoundary.js.map
84
+ //# sourceMappingURL=InternalErrorBoundaryContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DefaultErrorBoundaryComponent","props","flex","justifyContent","alignItems","reset","InternalErrorBoundaryContainer","React","PureComponent","error","errorInfo","setState","onError","state","ErrorInfoComponent","children"],"sources":["InternalErrorBoundaryContainer.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from '../components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from '../types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundaryContainer extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n children?: React.ReactNode;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundaryContainer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;;;AAGA,MAAMA,6BAA6B,GAAIC,KAAD,IAA+B;EACnE,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAR;MAAWC,cAAc,EAAE,QAA3B;MAAqCC,UAAU,EAAE;IAAjD;EAAb,gBACE,6BAAC,yBAAD;IAAkB,IAAI,EAAE,aAAxB;IAAuC,YAAY,EAAEH,KAAK,CAACI;EAA3D,EADF,CADF;AAKD,CAND;;AAQA,MAAMC,8BAAN,SAA6CC,cAAA,CAAMC,aAAnD,CAIG;EAAA;IAAA;;IAAA,+BAK6D;MAC5DC,KAAK,EAAE,IADqD;MAE5DC,SAAS,EAAE;IAFiD,CAL7D;;IAAA,2CAUmB,CAACD,KAAD,EAAeC,SAAf,KAAwC;MAAA;;MAC1D,KAAKC,QAAL,CAAc;QAAEF,KAAF;QAASC;MAAT,CAAd;MACA,2CAAKT,KAAL,EAAWW,OAAX,8FAAqB;QAAEH,KAAF;QAASC,SAAT;QAAoBL,KAAK,EAAE,KAAKA;MAAhC,CAArB;IACD,CAbA;;IAAA,+BAeO,MAAM;MACZ,KAAKM,QAAL,CAAc;QAAEF,KAAK,EAAE,IAAT;QAAeC,SAAS,EAAE;MAA1B,CAAd;IACD,CAjBA;;IAAA,gCAmBQ,MAAM;MACb,IAAI,KAAKG,KAAL,CAAWJ,KAAX,IAAoB,KAAKI,KAAL,CAAWH,SAAnC,EAA8C;QAAA;;QAC5C,OACE,+CAAKT,KAAL,EAAWa,kBAAX,mGAAgC;UAC9BL,KAAK,EAAE,KAAKI,KAAL,CAAWJ,KADY;UAE9BC,SAAS,EAAE,KAAKG,KAAL,CAAWH,SAFQ;UAG9BL,KAAK,EAAE,KAAKA;QAHkB,CAAhC,MAIM,IALR;MAOD;;MAED,oBAAO,4DAAG,KAAKJ,KAAL,CAAWc,QAAd,CAAP;IACD,CA/BA;EAAA;;AAAA;;gBAJGT,8B,kBAKkB;EACpBQ,kBAAkB,EAAEd;AADA,C;;eAiCTM,8B"}
@@ -15,23 +15,23 @@ var _sendbird = _interopRequireDefault(require("sendbird"));
15
15
 
16
16
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
17
17
 
18
- var _InternalErrorBoundary = _interopRequireDefault(require("./InternalErrorBoundary"));
18
+ var _Localization = require("../contexts/Localization");
19
19
 
20
- var _InternalLocalCacheStorage = _interopRequireDefault(require("./InternalLocalCacheStorage"));
20
+ var _PlatformService = require("../contexts/PlatformService");
21
21
 
22
- var _Localization = require("./contexts/Localization");
22
+ var _SendbirdChat = require("../contexts/SendbirdChat");
23
23
 
24
- var _PlatformService = require("./contexts/PlatformService");
24
+ var _useContext = require("../hooks/useContext");
25
25
 
26
- var _SendbirdChat = require("./contexts/SendbirdChat");
26
+ var _InternalLocalCacheStorage = _interopRequireDefault(require("../libs/InternalLocalCacheStorage"));
27
27
 
28
- var _useContext = require("./hooks/useContext");
28
+ var _StringSet = _interopRequireDefault(require("../localization/StringSet.en"));
29
29
 
30
- var _StringSet = _interopRequireDefault(require("./localization/StringSet.en"));
30
+ var _dynamicModule = _interopRequireDefault(require("../platform/dynamicModule"));
31
31
 
32
- var _dynamicModule = _interopRequireDefault(require("./platform/dynamicModule"));
32
+ var _version = _interopRequireDefault(require("../version"));
33
33
 
34
- var _version = _interopRequireDefault(require("./version"));
34
+ var _InternalErrorBoundaryContainer = _interopRequireDefault(require("./InternalErrorBoundaryContainer"));
35
35
 
36
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
37
 
@@ -140,7 +140,7 @@ const SendbirdUIKitContainer = _ref => {
140
140
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
141
141
  }, /*#__PURE__*/_react.default.createElement(LocalizedDialogProvider, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
142
142
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
143
- }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundary.default, errorBoundary, children)))))))));
143
+ }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children)))))))));
144
144
  };
145
145
 
146
146
  const LocalizedDialogProvider = _ref2 => {
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","localCacheStorage","Sendbird","localCacheEnabled","useAsyncStorageAsDatabase","InternalLocalCacheStorage","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport Sendbird from 'sendbird';\n\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/Localization';\nimport { PlatformServiceProvider } from '../contexts/PlatformService';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChat';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n enableAutoPushTokenRegistration?: boolean;\n enableChannelListTypingIndicator?: boolean;\n enableChannelListMessageReceiptStatus?: boolean;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n if (chatOptions?.localCacheStorage) {\n sdk = new Sendbird({ appId, localCacheEnabled: true });\n sdk.useAsyncStorageAsDatabase(new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n } else {\n sdk = new Sendbird({ appId });\n }\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n // @ts-ignore\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n if (SendbirdUIKit.PLATFORM) {\n // @ts-ignore\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatListProps } from 'react-native';\n\nimport type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelListProps {\n /** Props for `GroupChannelListFragment` **/\n Fragment: {\n /** Navigate to GroupChannelFragment **/\n onPressChannel: (channel: SendbirdGroupChannel) => void;\n /** Navigate to GroupChannelCreateFragment **/\n onPressCreateChannel: (channelType: GroupChannelType) => void;\n /** Custom Header for TypeSelector, Only replace header component not a module **/\n TypeSelectorHeader?: null | CommonComponent<\n BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>\n >;\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview?: (\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n // /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/\n // skipTypeSelection?: boolean;\n /** Custom Query creator for channels query **/\n queryCreator?: UseGroupChannelListOptions['queryCreator'];\n /** Sort comparator for sort channels **/\n sortComparator?: UseGroupChannelListOptions['sortComparator'];\n /** FlatList props for GroupChannelList.List **/\n flatListProps?: GroupChannelListProps['List']['flatListProps'];\n /** Action menu item creator for onLongPress **/\n menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];\n };\n /** Props for `GroupChannelListModule.Header` **/\n Header: {};\n /** Props for `GroupChannelListModule.List` **/\n List: {\n /** GroupChannels from SendbirdChat SDK **/\n groupChannels: SendbirdGroupChannel[];\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview: (\n // FIXME/BREAKING: Changed to props object\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Method to load more data, called with onEndReached of FlatList **/\n onLoadNext: () => Promise<void>;\n /** Prop from Fragment **/\n flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;\n /** Prop from Fragment **/\n menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;\n };\n /** Props for `GroupChannelListModule.TypeSelector` **/\n TypeSelector: {\n /** Prop from Fragment `Fragment.TypeSelectorHeader` **/\n Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];\n /** Prop from Fragment `Fragment.skipTypeSelection` **/\n skipTypeSelection: boolean;\n /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/\n onSelectType: (type: GroupChannelType) => void;\n };\n}\n\n/**\n * Internal context for GroupChannelList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelListContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n }>;\n TypeSelector: React.Context<{\n visible: boolean;\n show: () => void;\n hide: () => void;\n headerTitle: string;\n }>;\n}\nexport interface GroupChannelListModule {\n Provider: CommonComponent;\n Header: CommonComponent<GroupChannelListProps['Header']>;\n List: CommonComponent<GroupChannelListProps['List']>;\n TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelListFragment = CommonComponent<GroupChannelListProps['Fragment']>;\nexport type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatListProps } from 'react-native';\n\nimport type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelListProps {\n /** Props for `GroupChannelListFragment` **/\n Fragment: {\n /** Navigate to GroupChannelFragment **/\n onPressChannel: (channel: SendbirdGroupChannel) => void;\n /** Navigate to GroupChannelCreateFragment **/\n onPressCreateChannel: (channelType: GroupChannelType) => void;\n /** Custom Header for TypeSelector, Only replace header component not a module **/\n TypeSelectorHeader?: null | CommonComponent<\n BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>\n >;\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview?: (\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n // /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/\n // skipTypeSelection?: boolean;\n /** Custom Query creator for channels query **/\n queryCreator?: UseGroupChannelListOptions['queryCreator'];\n /** Custom Collection creator for group channel collection **/\n collectionCreator?: UseGroupChannelListOptions['collectionCreator'];\n /** FlatList props for GroupChannelList.List **/\n flatListProps?: GroupChannelListProps['List']['flatListProps'];\n /** Action menu item creator for onLongPress **/\n menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];\n };\n /** Props for `GroupChannelListModule.Header` **/\n Header: {};\n /** Props for `GroupChannelListModule.List` **/\n List: {\n /** GroupChannels from SendbirdChat SDK **/\n groupChannels: SendbirdGroupChannel[];\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview: (\n // FIXME/BREAKING: Changed to props object\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Method to load more data, called with onEndReached of FlatList **/\n onLoadNext: () => Promise<void>;\n /** Prop from Fragment **/\n flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;\n /** Prop from Fragment **/\n menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;\n };\n /** Props for `GroupChannelListModule.TypeSelector` **/\n TypeSelector: {\n /** Prop from Fragment `Fragment.TypeSelectorHeader` **/\n Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];\n /** Prop from Fragment `Fragment.skipTypeSelection` **/\n skipTypeSelection: boolean;\n /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/\n onSelectType: (type: GroupChannelType) => void;\n };\n}\n\n/**\n * Internal context for GroupChannelList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelListContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n }>;\n TypeSelector: React.Context<{\n visible: boolean;\n show: () => void;\n hide: () => void;\n headerTitle: string;\n }>;\n}\nexport interface GroupChannelListModule {\n Provider: CommonComponent;\n Header: CommonComponent<GroupChannelListProps['Header']>;\n List: CommonComponent<GroupChannelListProps['List']>;\n TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelListFragment = CommonComponent<GroupChannelListProps['Fragment']>;\nexport type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';\n"],"mappings":""}
@@ -75,7 +75,7 @@ const createGroupChannelFragment = initModule => {
75
75
  queryCreator,
76
76
  sortComparator,
77
77
  onChannelDeleted,
78
- enableCollectionWithoutLocalCache: true
78
+ enableCollectionWithoutLocalCache: !queryCreator
79
79
  });
80
80
 
81
81
  const _renderMessage = (0, _uikitUtils.useFreshCallback)(props => {