@sendbird/uikit-react-native 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +42 -17
  2. package/lib/commonjs/components/FileViewer.js +2 -5
  3. package/lib/commonjs/components/FileViewer.js.map +1 -1
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +1 -1
  7. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  8. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +1 -6
  9. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
  10. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +2 -2
  11. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  12. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +5 -3
  13. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  14. package/lib/commonjs/containers/SendbirdUIKitContainer.js +14 -3
  15. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  16. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  17. package/lib/commonjs/contexts/SendbirdChatCtx.js +10 -14
  18. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  19. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +68 -13
  20. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  21. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +1 -0
  22. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  23. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +3 -1
  24. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  25. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +2 -2
  26. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  27. package/lib/commonjs/fragments/createGroupChannelListFragment.js +4 -14
  28. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  29. package/lib/commonjs/hooks/useKeyboardStatus.js +13 -9
  30. package/lib/commonjs/hooks/useKeyboardStatus.js.map +1 -1
  31. package/lib/commonjs/index.js.map +1 -1
  32. package/lib/commonjs/libs/ImageCompressionConfig.js +38 -0
  33. package/lib/commonjs/libs/ImageCompressionConfig.js.map +1 -0
  34. package/lib/commonjs/libs/SBUUtils.js +27 -0
  35. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  36. package/lib/commonjs/localization/StringSet.type.js +3 -0
  37. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  38. package/lib/commonjs/platform/createMediaService.expo.js +35 -1
  39. package/lib/commonjs/platform/createMediaService.expo.js.map +1 -1
  40. package/lib/commonjs/platform/createMediaService.native.js +41 -6
  41. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  42. package/lib/commonjs/platform/dynamicModule.js +9 -57
  43. package/lib/commonjs/platform/dynamicModule.js.map +1 -1
  44. package/lib/commonjs/platform/types.js.map +1 -1
  45. package/lib/commonjs/version.js +1 -1
  46. package/lib/commonjs/version.js.map +1 -1
  47. package/lib/module/components/FileViewer.js +2 -5
  48. package/lib/module/components/FileViewer.js.map +1 -1
  49. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
  50. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  51. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +1 -1
  52. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  53. package/lib/module/components/MessageRenderer/FileMessage/index.js +1 -5
  54. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
  55. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +2 -2
  56. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  57. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +4 -4
  58. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  59. package/lib/module/containers/SendbirdUIKitContainer.js +13 -3
  60. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  61. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  62. package/lib/module/contexts/SendbirdChatCtx.js +12 -14
  63. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  64. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +69 -14
  65. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  66. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +1 -0
  67. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  68. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +3 -2
  69. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  70. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +2 -2
  71. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  72. package/lib/module/fragments/createGroupChannelListFragment.js +5 -9
  73. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  74. package/lib/module/hooks/useKeyboardStatus.js +12 -9
  75. package/lib/module/hooks/useKeyboardStatus.js.map +1 -1
  76. package/lib/module/index.js.map +1 -1
  77. package/lib/module/libs/ImageCompressionConfig.js +30 -0
  78. package/lib/module/libs/ImageCompressionConfig.js.map +1 -0
  79. package/lib/module/libs/SBUUtils.js +26 -1
  80. package/lib/module/libs/SBUUtils.js.map +1 -1
  81. package/lib/module/localization/StringSet.type.js +3 -0
  82. package/lib/module/localization/StringSet.type.js.map +1 -1
  83. package/lib/module/platform/createMediaService.expo.js +33 -1
  84. package/lib/module/platform/createMediaService.expo.js.map +1 -1
  85. package/lib/module/platform/createMediaService.native.js +38 -5
  86. package/lib/module/platform/createMediaService.native.js.map +1 -1
  87. package/lib/module/platform/dynamicModule.js +10 -56
  88. package/lib/module/platform/dynamicModule.js.map +1 -1
  89. package/lib/module/platform/types.js.map +1 -1
  90. package/lib/module/version.js +1 -1
  91. package/lib/module/version.js.map +1 -1
  92. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +10 -7
  93. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -2
  94. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +8 -3
  95. package/lib/typescript/src/hooks/useContext.d.ts +2 -29
  96. package/lib/typescript/src/index.d.ts +1 -1
  97. package/lib/typescript/src/libs/ImageCompressionConfig.d.ts +16 -0
  98. package/lib/typescript/src/libs/SBUUtils.d.ts +6 -0
  99. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  100. package/lib/typescript/src/platform/createMediaService.expo.d.ts +5 -1
  101. package/lib/typescript/src/platform/createMediaService.native.d.ts +7 -5
  102. package/lib/typescript/src/platform/dynamicModule.d.ts +7 -12
  103. package/lib/typescript/src/platform/types.d.ts +28 -3
  104. package/lib/typescript/src/version.d.ts +1 -1
  105. package/package.json +15 -5
  106. package/src/components/FileViewer.tsx +2 -5
  107. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +6 -1
  108. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +1 -1
  109. package/src/components/MessageRenderer/FileMessage/index.tsx +1 -4
  110. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +2 -2
  111. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +4 -4
  112. package/src/containers/SendbirdUIKitContainer.tsx +25 -6
  113. package/src/contexts/PlatformServiceCtx.tsx +9 -2
  114. package/src/contexts/SendbirdChatCtx.tsx +22 -19
  115. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +82 -14
  116. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +1 -0
  117. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +3 -2
  118. package/src/domain/groupChannelSettings/module/moduleContext.tsx +8 -2
  119. package/src/fragments/createGroupChannelListFragment.tsx +5 -9
  120. package/src/hooks/useKeyboardStatus.ts +10 -5
  121. package/src/index.ts +1 -0
  122. package/src/libs/ImageCompressionConfig.ts +31 -0
  123. package/src/libs/SBUUtils.ts +28 -1
  124. package/src/localization/StringSet.type.ts +7 -0
  125. package/src/platform/createMediaService.expo.tsx +24 -1
  126. package/src/platform/createMediaService.native.tsx +31 -9
  127. package/src/platform/dynamicModule.ts +17 -59
  128. package/src/platform/types.ts +29 -7
  129. package/src/version.ts +1 -1
  130. package/lib/commonjs/utils/common.js +0 -19
  131. package/lib/commonjs/utils/common.js.map +0 -1
  132. package/lib/module/utils/common.js +0 -7
  133. package/lib/module/utils/common.js.map +0 -1
  134. package/lib/typescript/src/utils/common.d.ts +0 -1
  135. package/src/utils/common.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","Platform","StyleSheet","View","Icon","Image","createStyleSheet","useUIKitTheme","getAvailableUriFromFileMessage","useForceUpdate","useRetry","hasError","retryCount","OS","forceUpdate","retryCountRef","retryTimeoutRef","reloadReservation","current","setTimeout","clearTimeout","ImageFileMessage","message","children","variant","colors","imageNotFound","setImageNotFound","fileUrl","style","styles","image","backgroundColor","onBackground04","key","bubbleContainer","ui","enabled","background","uri","absoluteFill","hide","onBackground02","borderRadius","overflow","width","maxWidth","height","display"],"sources":["ImageFileMessage.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileMessageProps } from './index';\n\nconst useRetry = (hasError: boolean, retryCount = 5) => {\n if (Platform.OS === 'android') return '';\n\n const forceUpdate = useForceUpdate();\n const retryCountRef = useRef(1);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n\n useEffect(() => {\n if (hasError) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n forceUpdate();\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [hasError]);\n\n return retryCountRef.current;\n};\n\nconst ImageFileMessage = ({ message, children, variant }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n const key = useRetry(imageNotFound);\n\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: colors.ui.message[variant].enabled.background }]}>\n <View style={style}>\n <Image\n key={key}\n source={{ uri: fileUrl }}\n style={[StyleSheet.absoluteFill, imageNotFound && styles.hide]}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n onLoad={() => setImageNotFound(false)}\n />\n {imageNotFound && (\n <Icon\n containerStyle={StyleSheet.absoluteFill}\n icon={'thumbnail-none'}\n size={48}\n color={colors.onBackground02}\n />\n )}\n </View>\n {children}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n bubbleContainer: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n overflow: 'hidden',\n },\n hide: {\n display: 'none',\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Platform","StyleSheet","View","Icon","Image","createStyleSheet","useUIKitTheme","getAvailableUriFromFileMessage","useForceUpdate","useRetry","hasError","retryCount","OS","forceUpdate","retryCountRef","retryTimeoutRef","reloadReservation","current","setTimeout","clearTimeout","ImageFileMessage","message","children","variant","colors","imageNotFound","setImageNotFound","fileUrl","style","styles","image","backgroundColor","onBackground04","key","bubbleContainer","ui","enabled","background","uri","absoluteFill","hide","onBackground02","borderRadius","overflow","width","maxWidth","height","display"],"sources":["ImageFileMessage.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileMessageProps } from './index';\n\nconst useRetry = (hasError: boolean, retryCount = 5) => {\n if (Platform.OS === 'android') return '';\n\n const forceUpdate = useForceUpdate();\n const retryCountRef = useRef(1);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n\n useEffect(() => {\n if (hasError) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n forceUpdate();\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [hasError]);\n\n return retryCountRef.current;\n};\n\nconst ImageFileMessage = ({ message, children, variant }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n const key = useRetry(imageNotFound);\n\n return (\n <View\n style={[\n styles.bubbleContainer,\n { backgroundColor: imageNotFound ? colors.onBackground04 : colors.ui.message[variant].enabled.background },\n ]}\n >\n <View style={style}>\n <Image\n key={key}\n source={{ uri: fileUrl }}\n style={[StyleSheet.absoluteFill, imageNotFound && styles.hide]}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n onLoad={() => setImageNotFound(false)}\n />\n {imageNotFound && (\n <Icon\n containerStyle={StyleSheet.absoluteFill}\n icon={'thumbnail-none'}\n size={48}\n color={colors.onBackground02}\n />\n )}\n </View>\n {children}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n bubbleContainer: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n overflow: 'hidden',\n },\n hide: {\n display: 'none',\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":"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"}
@@ -17,7 +17,7 @@ const useRetry = function (videoFileUrl) {
17
17
  } = usePlatformService();
18
18
 
19
19
  const fetchThumbnail = () => {
20
- return mediaService === null || mediaService === void 0 ? void 0 : mediaService.getVideoThumbnail({
20
+ return mediaService.getVideoThumbnail({
21
21
  url: videoFileUrl,
22
22
  timeMills: 1000
23
23
  }).then(result => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","View","Icon","Image","createStyleSheet","useUIKitTheme","getAvailableUriFromFileMessage","usePlatformService","useRetry","videoFileUrl","retryCount","state","setState","thumbnail","loading","retryCountRef","retryTimeoutRef","mediaService","fetchThumbnail","getVideoThumbnail","url","timeMills","then","result","path","reloadReservation","current","setTimeout","clearTimeout","VideoFileMessage","message","variant","children","colors","fileUrl","style","styles","video","backgroundColor","onBackground04","bubbleContainer","ui","enabled","background","bubbleInnerContainer","uri","PlayIcon","onBackground02","playIcon","onBackgroundReverse01","borderRadius","overflow","alignItems","justifyContent","width","maxWidth","height","position","padding"],"sources":["VideoFileMessage.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst useRetry = (videoFileUrl: string, retryCount = 5) => {\n const [state, setState] = useState({ thumbnail: null as null | string, loading: true });\n const retryCountRef = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n\n const { mediaService } = usePlatformService();\n\n const fetchThumbnail = () => {\n return mediaService?.getVideoThumbnail({ url: videoFileUrl, timeMills: 1000 }).then((result) => {\n setState({ loading: false, thumbnail: result?.path ?? null });\n });\n };\n\n useEffect(() => {\n if (!state.thumbnail) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n fetchThumbnail();\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [state.thumbnail]);\n\n return state;\n};\n\nconst VideoFileMessage = ({ message, variant, children }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.video, { backgroundColor: colors.onBackground04 }];\n\n const { loading, thumbnail } = useRetry(fileUrl);\n\n if (loading) {\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: colors.ui.message[variant].enabled.background }]}>\n <View style={[styles.bubbleContainer, styles.bubbleInnerContainer]}>\n <View style={style} />\n <PlayIcon />\n </View>\n {children}\n </View>\n );\n }\n\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: colors.ui.message[variant].enabled.background }]}>\n <View style={[styles.bubbleContainer, styles.bubbleInnerContainer]}>\n <Image source={{ uri: thumbnail || fileUrl }} style={style} resizeMode={'cover'} resizeMethod={'resize'} />\n <PlayIcon />\n </View>\n {children}\n </View>\n );\n};\n\nconst PlayIcon = () => {\n const { colors } = useUIKitTheme();\n\n return (\n <Icon\n icon={'play'}\n size={28}\n color={colors.onBackground02}\n containerStyle={[styles.playIcon, { backgroundColor: colors.onBackgroundReverse01 }]}\n />\n );\n};\n\nconst styles = createStyleSheet({\n bubbleContainer: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n bubbleInnerContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n video: {\n width: 240,\n maxWidth: 240,\n height: 160,\n },\n playIcon: {\n position: 'absolute',\n padding: 10,\n borderRadius: 50,\n },\n});\n\nexport default VideoFileMessage;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","View","Icon","Image","createStyleSheet","useUIKitTheme","getAvailableUriFromFileMessage","usePlatformService","useRetry","videoFileUrl","retryCount","state","setState","thumbnail","loading","retryCountRef","retryTimeoutRef","mediaService","fetchThumbnail","getVideoThumbnail","url","timeMills","then","result","path","reloadReservation","current","setTimeout","clearTimeout","VideoFileMessage","message","variant","children","colors","fileUrl","style","styles","video","backgroundColor","onBackground04","bubbleContainer","ui","enabled","background","bubbleInnerContainer","uri","PlayIcon","onBackground02","playIcon","onBackgroundReverse01","borderRadius","overflow","alignItems","justifyContent","width","maxWidth","height","position","padding"],"sources":["VideoFileMessage.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst useRetry = (videoFileUrl: string, retryCount = 5) => {\n const [state, setState] = useState({ thumbnail: null as null | string, loading: true });\n const retryCountRef = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n\n const { mediaService } = usePlatformService();\n\n const fetchThumbnail = () => {\n return mediaService.getVideoThumbnail({ url: videoFileUrl, timeMills: 1000 }).then((result) => {\n setState({ loading: false, thumbnail: result?.path ?? null });\n });\n };\n\n useEffect(() => {\n if (!state.thumbnail) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n fetchThumbnail();\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [state.thumbnail]);\n\n return state;\n};\n\nconst VideoFileMessage = ({ message, variant, children }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.video, { backgroundColor: colors.onBackground04 }];\n\n const { loading, thumbnail } = useRetry(fileUrl);\n\n if (loading) {\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: colors.ui.message[variant].enabled.background }]}>\n <View style={[styles.bubbleContainer, styles.bubbleInnerContainer]}>\n <View style={style} />\n <PlayIcon />\n </View>\n {children}\n </View>\n );\n }\n\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: colors.ui.message[variant].enabled.background }]}>\n <View style={[styles.bubbleContainer, styles.bubbleInnerContainer]}>\n <Image source={{ uri: thumbnail || fileUrl }} style={style} resizeMode={'cover'} resizeMethod={'resize'} />\n <PlayIcon />\n </View>\n {children}\n </View>\n );\n};\n\nconst PlayIcon = () => {\n const { colors } = useUIKitTheme();\n\n return (\n <Icon\n icon={'play'}\n size={28}\n color={colors.onBackground02}\n containerStyle={[styles.playIcon, { backgroundColor: colors.onBackgroundReverse01 }]}\n />\n );\n};\n\nconst styles = createStyleSheet({\n bubbleContainer: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n bubbleInnerContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n video: {\n width: 240,\n maxWidth: 240,\n height: 160,\n },\n playIcon: {\n position: 'absolute',\n padding: 10,\n borderRadius: 50,\n },\n});\n\nexport default VideoFileMessage;\n"],"mappings":"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"}
@@ -2,18 +2,14 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
2
2
 
3
3
  import React from 'react';
4
4
  import { getFileExtension, getFileType } from '@sendbird/uikit-utils';
5
- import { usePlatformService } from '../../../hooks/useContext';
6
5
  import BaseFileMessage from './BaseFileMessage';
7
6
  import ImageFileMessage from './ImageFileMessage';
8
7
  import VideoFileMessage from './VideoFileMessage';
9
8
 
10
9
  const FileMessage = props => {
11
- const {
12
- mediaService
13
- } = usePlatformService();
14
10
  const fileType = getFileType(props.message.type || getFileExtension(props.message.name));
15
11
  if (fileType === 'image') return /*#__PURE__*/React.createElement(ImageFileMessage, props);
16
- if (fileType === 'video' && mediaService !== null && mediaService !== void 0 && mediaService.getVideoThumbnail) return /*#__PURE__*/React.createElement(VideoFileMessage, props);
12
+ if (fileType === 'video') return /*#__PURE__*/React.createElement(VideoFileMessage, props);
17
13
  return /*#__PURE__*/React.createElement(BaseFileMessage, _extends({}, props, {
18
14
  type: fileType
19
15
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["React","getFileExtension","getFileType","usePlatformService","BaseFileMessage","ImageFileMessage","VideoFileMessage","FileMessage","props","mediaService","fileType","message","type","name","getVideoThumbnail","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport { usePlatformService } from '../../../hooks/useContext';\nimport type { MessageRendererInterface } from '../index';\nimport BaseFileMessage from './BaseFileMessage';\nimport ImageFileMessage from './ImageFileMessage';\nimport VideoFileMessage from './VideoFileMessage';\n\nexport type FileMessageProps = MessageRendererInterface<SendbirdFileMessage>;\nconst FileMessage = (props: FileMessageProps) => {\n const { mediaService } = usePlatformService();\n\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\n\n if (fileType === 'image') return <ImageFileMessage {...props} />;\n if (fileType === 'video' && mediaService?.getVideoThumbnail) return <VideoFileMessage {...props} />;\n\n return <BaseFileMessage {...props} type={fileType} />;\n};\n\nexport default React.memo(FileMessage);\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAA8BC,gBAA9B,EAAgDC,WAAhD,QAAmE,uBAAnE;AAEA,SAASC,kBAAT,QAAmC,2BAAnC;AAEA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAGA,MAAMC,WAAW,GAAIC,KAAD,IAA6B;EAC/C,MAAM;IAAEC;EAAF,IAAmBN,kBAAkB,EAA3C;EAEA,MAAMO,QAAQ,GAAGR,WAAW,CAACM,KAAK,CAACG,OAAN,CAAcC,IAAd,IAAsBX,gBAAgB,CAACO,KAAK,CAACG,OAAN,CAAcE,IAAf,CAAvC,CAA5B;EAEA,IAAIH,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,oBAAC,gBAAD,EAAsBF,KAAtB,CAAP;EAC1B,IAAIE,QAAQ,KAAK,OAAb,IAAwBD,YAAxB,aAAwBA,YAAxB,eAAwBA,YAAY,CAAEK,iBAA1C,EAA6D,oBAAO,oBAAC,gBAAD,EAAsBN,KAAtB,CAAP;EAE7D,oBAAO,oBAAC,eAAD,eAAqBA,KAArB;IAA4B,IAAI,EAAEE;EAAlC,GAAP;AACD,CATD;;AAWA,4BAAeV,KAAK,CAACe,IAAN,CAAWR,WAAX,CAAf"}
1
+ {"version":3,"names":["React","getFileExtension","getFileType","BaseFileMessage","ImageFileMessage","VideoFileMessage","FileMessage","props","fileType","message","type","name","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\nimport BaseFileMessage from './BaseFileMessage';\nimport ImageFileMessage from './ImageFileMessage';\nimport VideoFileMessage from './VideoFileMessage';\n\nexport type FileMessageProps = MessageRendererInterface<SendbirdFileMessage>;\nconst FileMessage = (props: FileMessageProps) => {\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\n\n if (fileType === 'image') return <ImageFileMessage {...props} />;\n if (fileType === 'video') return <VideoFileMessage {...props} />;\n\n return <BaseFileMessage {...props} type={fileType} />;\n};\n\nexport default React.memo(FileMessage);\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAA8BC,gBAA9B,EAAgDC,WAAhD,QAAmE,uBAAnE;AAGA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAGA,MAAMC,WAAW,GAAIC,KAAD,IAA6B;EAC/C,MAAMC,QAAQ,GAAGN,WAAW,CAACK,KAAK,CAACE,OAAN,CAAcC,IAAd,IAAsBT,gBAAgB,CAACM,KAAK,CAACE,OAAN,CAAcE,IAAf,CAAvC,CAA5B;EAEA,IAAIH,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,oBAAC,gBAAD,EAAsBD,KAAtB,CAAP;EAC1B,IAAIC,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,oBAAC,gBAAD,EAAsBD,KAAtB,CAAP;EAE1B,oBAAO,oBAAC,eAAD,eAAqBA,KAArB;IAA4B,IAAI,EAAEC;EAAlC,GAAP;AACD,CAPD;;AASA,4BAAeR,KAAK,CAACY,IAAN,CAAWN,WAAX,CAAf"}
@@ -5,7 +5,7 @@ import { View } from 'react-native';
5
5
  import { RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
6
6
  import { urlRegexStrict } from '@sendbird/uikit-utils';
7
7
  import { useLocalization, useSendbirdChat, useUserProfile } from '../../../hooks/useContext';
8
- import { openUrl } from '../../../utils/common';
8
+ import SBUUtils from '../../../libs/SBUUtils';
9
9
 
10
10
  const BaseUserMessage = _ref => {
11
11
  let {
@@ -86,7 +86,7 @@ const BaseUserMessage = _ref => {
86
86
  } = _ref3;
87
87
  return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
88
88
  key: `${keyPrefix}-${index}`,
89
- onPress: () => openUrl(match),
89
+ onPress: () => SBUUtils.openURL(match),
90
90
  onLongPress: onLongPressURL,
91
91
  style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, {
92
92
  textDecorationLine: 'underline'
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","RegexText","Text","createStyleSheet","useUIKitTheme","urlRegexStrict","useLocalization","useSendbirdChat","useUserProfile","openUrl","BaseUserMessage","message","variant","pressed","children","onLongPressMentionedUser","onLongPressURL","mentionManager","currentUser","show","STRINGS","colors","palette","color","ui","styles","container","backgroundColor","background","wrapper","textMsg","regex","templateRegex","replacer","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","userId","style","fontWeight","highlight","asMentionedMessageText","textDecorationLine","shouldUseMentionedMessageTemplate","mentionedMessageTemplate","Boolean","updatedAt","textEdited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","borderRadius","overflow","paddingHorizontal","paddingVertical"],"sources":["BaseUserMessage.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { urlRegexStrict } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat, useUserProfile } from '../../../hooks/useContext';\nimport { openUrl } from '../../../utils/common';\nimport type { UserMessageProps } from './index';\n\nconst BaseUserMessage = ({\n message,\n variant,\n pressed,\n children,\n onLongPressMentionedUser,\n onLongPressURL,\n}: UserMessageProps) => {\n const { mentionManager, currentUser } = useSendbirdChat();\n const { show } = useUserProfile();\n const { STRINGS } = useLocalization();\n const { colors, palette } = useUIKitTheme();\n\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n\n return (\n <View style={[styles.container, { backgroundColor: color.background }]}>\n <View style={styles.wrapper}>\n <Text body3 color={color.textMsg}>\n <RegexText\n body3\n color={color.textMsg}\n patterns={[\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => show(user)}\n onLongPress={onLongPressMentionedUser}\n style={[\n parentProps?.style,\n { fontWeight: 'bold' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, index, keyPrefix }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => openUrl(match)}\n onLongPress={onLongPressURL}\n style={[parentProps?.style, { textDecorationLine: 'underline' }]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {mentionManager.shouldUseMentionedMessageTemplate(message)\n ? message.mentionedMessageTemplate\n : message.message}\n </RegexText>\n {Boolean(message.updatedAt) && (\n <Text body3 color={color.textEdited}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX}\n </Text>\n )}\n </Text>\n </View>\n {children}\n </View>\n );\n};\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n wrapper: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n },\n});\n\nexport default BaseUserMessage;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","View","RegexText","Text","createStyleSheet","useUIKitTheme","urlRegexStrict","useLocalization","useSendbirdChat","useUserProfile","SBUUtils","BaseUserMessage","message","variant","pressed","children","onLongPressMentionedUser","onLongPressURL","mentionManager","currentUser","show","STRINGS","colors","palette","color","ui","styles","container","backgroundColor","background","wrapper","textMsg","regex","templateRegex","replacer","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","userId","style","fontWeight","highlight","asMentionedMessageText","openURL","textDecorationLine","shouldUseMentionedMessageTemplate","mentionedMessageTemplate","Boolean","updatedAt","textEdited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","borderRadius","overflow","paddingHorizontal","paddingVertical"],"sources":["BaseUserMessage.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { urlRegexStrict } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat, useUserProfile } from '../../../hooks/useContext';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { UserMessageProps } from './index';\n\nconst BaseUserMessage = ({\n message,\n variant,\n pressed,\n children,\n onLongPressMentionedUser,\n onLongPressURL,\n}: UserMessageProps) => {\n const { mentionManager, currentUser } = useSendbirdChat();\n const { show } = useUserProfile();\n const { STRINGS } = useLocalization();\n const { colors, palette } = useUIKitTheme();\n\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n\n return (\n <View style={[styles.container, { backgroundColor: color.background }]}>\n <View style={styles.wrapper}>\n <Text body3 color={color.textMsg}>\n <RegexText\n body3\n color={color.textMsg}\n patterns={[\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => show(user)}\n onLongPress={onLongPressMentionedUser}\n style={[\n parentProps?.style,\n { fontWeight: 'bold' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, index, keyPrefix }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => SBUUtils.openURL(match)}\n onLongPress={onLongPressURL}\n style={[parentProps?.style, { textDecorationLine: 'underline' }]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {mentionManager.shouldUseMentionedMessageTemplate(message)\n ? message.mentionedMessageTemplate\n : message.message}\n </RegexText>\n {Boolean(message.updatedAt) && (\n <Text body3 color={color.textEdited}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX}\n </Text>\n )}\n </Text>\n </View>\n {children}\n </View>\n );\n};\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n wrapper: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n },\n});\n\nexport default BaseUserMessage;\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React, { useState } from 'react';
4
- import { Linking, TouchableOpacity, View } from 'react-native';
4
+ import { TouchableOpacity, View } from 'react-native';
5
5
  import { Icon, Image, RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
6
6
  import { conditionChaining, urlRegexRough } from '@sendbird/uikit-utils';
7
7
  import { useLocalization, useSendbirdChat, useUserProfile } from '../../../hooks/useContext';
8
- import { openUrl } from '../../../utils/common';
8
+ import SBUUtils from '../../../libs/SBUUtils';
9
9
 
10
10
  const OpenGraphUserMessage = _ref => {
11
11
  var _ogMetaData$defaultIm;
@@ -98,7 +98,7 @@ const OpenGraphUserMessage = _ref => {
98
98
  } = _ref3;
99
99
  return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
100
100
  key: `${keyPrefix}-${index}`,
101
- onPress: () => openUrl(match),
101
+ onPress: () => SBUUtils.openURL(match),
102
102
  onLongPress: onLongPressURL,
103
103
  style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, styles.urlText]
104
104
  }), match);
@@ -116,7 +116,7 @@ const OpenGraphUserMessage = _ref => {
116
116
  })
117
117
  },
118
118
  activeOpacity: 0.85,
119
- onPress: () => Linking.openURL(ogMetaData.url).catch()
119
+ onPress: () => SBUUtils.openURL(ogMetaData.url)
120
120
  }, /*#__PURE__*/React.createElement(View, {
121
121
  style: [styles.ogImageContainer, {
122
122
  backgroundColor: select({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Linking","TouchableOpacity","View","Icon","Image","RegexText","Text","createStyleSheet","useUIKitTheme","conditionChaining","urlRegexRough","useLocalization","useSendbirdChat","useUserProfile","openUrl","OpenGraphUserMessage","message","variant","pressed","ogMetaData","children","onLongPressMentionedUser","onLongPressURL","mentionManager","currentUser","STRINGS","show","colors","select","palette","imageNotFound","setImageNotFound","color","ui","containerBackground","dark","background400","light","background100","styles","bubbleContainer","backgroundColor","container","background","messageContainer","textMsg","regex","templateRegex","replacer","match","groups","parentProps","keyPrefix","index","user","mentionedUsers","find","it","userId","isCurrentUser","style","mentionedText","highlight","asMentionedMessageText","urlText","shouldUseMentionedMessageTemplate","mentionedMessageTemplate","Boolean","updatedAt","textEdited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","background500","background200","openURL","url","catch","ogImageContainer","ogImage","onBackground02","uri","defaultImage","ogContainer","onBackground01","ogTitle","title","description","ogDesc","borderRadius","overflow","width","maxWidth","paddingVertical","paddingHorizontal","paddingTop","paddingBottom","flex","height","marginBottom","lineHeight","fontWeight","textDecorationLine"],"sources":["OpenGraphUserMessage.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Linking, TouchableOpacity, View } from 'react-native';\n\nimport type { OGMetaData } from '@sendbird/chat/message';\nimport { Icon, Image, RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining, urlRegexRough } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat, useUserProfile } from '../../../hooks/useContext';\nimport { openUrl } from '../../../utils/common';\nimport type { UserMessageProps } from './index';\n\ntype Props = UserMessageProps & {\n ogMetaData: OGMetaData;\n};\n\nconst OpenGraphUserMessage = ({\n message,\n variant,\n pressed,\n ogMetaData,\n children,\n onLongPressMentionedUser,\n onLongPressURL,\n}: Props) => {\n const { mentionManager, currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { show } = useUserProfile();\n const { colors, select, palette } = useUIKitTheme();\n\n const [imageNotFound, setImageNotFound] = useState(false);\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n\n const containerBackground = select({ dark: palette.background400, light: palette.background100 });\n\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: containerBackground }]}>\n <View style={[styles.container, styles.bubbleContainer, { backgroundColor: color.background }]}>\n <View style={styles.messageContainer}>\n <Text body3 color={color.textMsg}>\n <RegexText\n body3\n color={color.textMsg}\n patterns={[\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, keyPrefix, index }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const isCurrentUser = user.userId === currentUser?.userId;\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => show(user)}\n onLongPress={onLongPressMentionedUser}\n style={[\n parentProps?.style,\n styles.mentionedText,\n isCurrentUser && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n {\n regex: urlRegexRough,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => openUrl(match)}\n onLongPress={onLongPressURL}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {mentionManager.shouldUseMentionedMessageTemplate(message)\n ? message.mentionedMessageTemplate\n : message.message}\n </RegexText>\n {Boolean(message.updatedAt) && (\n <Text body3 color={color.textEdited}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX}\n </Text>\n )}\n </Text>\n </View>\n <TouchableOpacity\n style={{ backgroundColor: select({ dark: palette.background500, light: palette.background200 }) }}\n activeOpacity={0.85}\n onPress={() => Linking.openURL(ogMetaData.url).catch()}\n >\n <View\n style={[\n styles.ogImageContainer,\n { backgroundColor: select({ dark: palette.background500, light: palette.background200 }) },\n ]}\n >\n {conditionChaining(\n [imageNotFound],\n [\n <Icon\n containerStyle={styles.ogImage}\n icon={'thumbnail-none'}\n size={48}\n color={colors.onBackground02}\n />,\n <Image\n source={{ uri: ogMetaData.defaultImage?.url }}\n style={styles.ogImage}\n resizeMode={'cover'}\n onError={() => setImageNotFound(true)}\n />,\n ],\n )}\n </View>\n <View style={[styles.ogContainer, { backgroundColor: containerBackground }]}>\n <Text numberOfLines={3} body2 color={colors.onBackground01} style={styles.ogTitle}>\n {ogMetaData.title}\n </Text>\n {Boolean(ogMetaData.description) && (\n <Text numberOfLines={1} caption2 color={colors.onBackground01} style={styles.ogDesc}>\n {ogMetaData.description}\n </Text>\n )}\n <Text numberOfLines={1} caption2 color={colors.onBackground02}>\n {ogMetaData.url}\n </Text>\n </View>\n </TouchableOpacity>\n </View>\n {children}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n bubbleContainer: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n container: {\n width: 240,\n maxWidth: 240,\n },\n messageContainer: {\n paddingVertical: 6,\n paddingHorizontal: 12,\n },\n ogContainer: {\n paddingHorizontal: 12,\n paddingTop: 8,\n paddingBottom: 12,\n },\n ogImageContainer: {\n flex: 1,\n height: 136,\n },\n ogImage: {\n width: '100%',\n height: '100%',\n },\n ogTitle: {\n marginBottom: 4,\n },\n ogDesc: {\n lineHeight: 14,\n marginBottom: 8,\n },\n mentionedText: {\n fontWeight: 'bold',\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\n\nexport default OpenGraphUserMessage;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","TouchableOpacity","View","Icon","Image","RegexText","Text","createStyleSheet","useUIKitTheme","conditionChaining","urlRegexRough","useLocalization","useSendbirdChat","useUserProfile","SBUUtils","OpenGraphUserMessage","message","variant","pressed","ogMetaData","children","onLongPressMentionedUser","onLongPressURL","mentionManager","currentUser","STRINGS","show","colors","select","palette","imageNotFound","setImageNotFound","color","ui","containerBackground","dark","background400","light","background100","styles","bubbleContainer","backgroundColor","container","background","messageContainer","textMsg","regex","templateRegex","replacer","match","groups","parentProps","keyPrefix","index","user","mentionedUsers","find","it","userId","isCurrentUser","style","mentionedText","highlight","asMentionedMessageText","openURL","urlText","shouldUseMentionedMessageTemplate","mentionedMessageTemplate","Boolean","updatedAt","textEdited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","background500","background200","url","ogImageContainer","ogImage","onBackground02","uri","defaultImage","ogContainer","onBackground01","ogTitle","title","description","ogDesc","borderRadius","overflow","width","maxWidth","paddingVertical","paddingHorizontal","paddingTop","paddingBottom","flex","height","marginBottom","lineHeight","fontWeight","textDecorationLine"],"sources":["OpenGraphUserMessage.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport type { OGMetaData } from '@sendbird/chat/message';\nimport { Icon, Image, RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining, urlRegexRough } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat, useUserProfile } from '../../../hooks/useContext';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { UserMessageProps } from './index';\n\ntype Props = UserMessageProps & {\n ogMetaData: OGMetaData;\n};\n\nconst OpenGraphUserMessage = ({\n message,\n variant,\n pressed,\n ogMetaData,\n children,\n onLongPressMentionedUser,\n onLongPressURL,\n}: Props) => {\n const { mentionManager, currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { show } = useUserProfile();\n const { colors, select, palette } = useUIKitTheme();\n\n const [imageNotFound, setImageNotFound] = useState(false);\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n\n const containerBackground = select({ dark: palette.background400, light: palette.background100 });\n\n return (\n <View style={[styles.bubbleContainer, { backgroundColor: containerBackground }]}>\n <View style={[styles.container, styles.bubbleContainer, { backgroundColor: color.background }]}>\n <View style={styles.messageContainer}>\n <Text body3 color={color.textMsg}>\n <RegexText\n body3\n color={color.textMsg}\n patterns={[\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, keyPrefix, index }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const isCurrentUser = user.userId === currentUser?.userId;\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => show(user)}\n onLongPress={onLongPressMentionedUser}\n style={[\n parentProps?.style,\n styles.mentionedText,\n isCurrentUser && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n {\n regex: urlRegexRough,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => SBUUtils.openURL(match)}\n onLongPress={onLongPressURL}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {mentionManager.shouldUseMentionedMessageTemplate(message)\n ? message.mentionedMessageTemplate\n : message.message}\n </RegexText>\n {Boolean(message.updatedAt) && (\n <Text body3 color={color.textEdited}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX}\n </Text>\n )}\n </Text>\n </View>\n <TouchableOpacity\n style={{ backgroundColor: select({ dark: palette.background500, light: palette.background200 }) }}\n activeOpacity={0.85}\n onPress={() => SBUUtils.openURL(ogMetaData.url)}\n >\n <View\n style={[\n styles.ogImageContainer,\n { backgroundColor: select({ dark: palette.background500, light: palette.background200 }) },\n ]}\n >\n {conditionChaining(\n [imageNotFound],\n [\n <Icon\n containerStyle={styles.ogImage}\n icon={'thumbnail-none'}\n size={48}\n color={colors.onBackground02}\n />,\n <Image\n source={{ uri: ogMetaData.defaultImage?.url }}\n style={styles.ogImage}\n resizeMode={'cover'}\n onError={() => setImageNotFound(true)}\n />,\n ],\n )}\n </View>\n <View style={[styles.ogContainer, { backgroundColor: containerBackground }]}>\n <Text numberOfLines={3} body2 color={colors.onBackground01} style={styles.ogTitle}>\n {ogMetaData.title}\n </Text>\n {Boolean(ogMetaData.description) && (\n <Text numberOfLines={1} caption2 color={colors.onBackground01} style={styles.ogDesc}>\n {ogMetaData.description}\n </Text>\n )}\n <Text numberOfLines={1} caption2 color={colors.onBackground02}>\n {ogMetaData.url}\n </Text>\n </View>\n </TouchableOpacity>\n </View>\n {children}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n bubbleContainer: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n container: {\n width: 240,\n maxWidth: 240,\n },\n messageContainer: {\n paddingVertical: 6,\n paddingHorizontal: 12,\n },\n ogContainer: {\n paddingHorizontal: 12,\n paddingTop: 8,\n paddingBottom: 12,\n },\n ogImageContainer: {\n flex: 1,\n height: 136,\n },\n ogImage: {\n width: '100%',\n height: '100%',\n },\n ogTitle: {\n marginBottom: 4,\n },\n ogDesc: {\n lineHeight: 14,\n marginBottom: 8,\n },\n mentionedText: {\n fontWeight: 'bold',\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\n\nexport default OpenGraphUserMessage;\n"],"mappings":"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"}
@@ -12,6 +12,7 @@ import { ReactionProvider } from '../contexts/ReactionCtx';
12
12
  import { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';
13
13
  import { UserProfileProvider } from '../contexts/UserProfileCtx';
14
14
  import EmojiManager from '../libs/EmojiManager';
15
+ import ImageCompressionConfig from '../libs/ImageCompressionConfig';
15
16
  import InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';
16
17
  import MentionConfig from '../libs/MentionConfig';
17
18
  import MentionManager from '../libs/MentionManager';
@@ -28,7 +29,8 @@ export const SendbirdUIKit = Object.freeze({
28
29
  CHANNEL_LIST_TYPING_INDICATOR: false,
29
30
  CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,
30
31
  USE_USER_ID_FOR_NICKNAME: false,
31
- USER_MENTION: false
32
+ USER_MENTION: false,
33
+ IMAGE_COMPRESSION: true
32
34
  }
33
35
  });
34
36
 
@@ -40,10 +42,11 @@ const SendbirdUIKitContainer = _ref => {
40
42
  platformServices,
41
43
  localization,
42
44
  styles,
45
+ errorBoundary,
43
46
  toast,
44
47
  userProfile,
45
48
  userMention,
46
- errorBoundary
49
+ imageCompression
47
50
  } = _ref;
48
51
  const defaultStringSet = (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? StringSetEn;
49
52
  const isFirstMount = useIsFirstMount();
@@ -65,6 +68,11 @@ const SendbirdUIKitContainer = _ref => {
65
68
  });
66
69
  return new MentionManager(config, (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUserMention) ?? SendbirdUIKit.DEFAULT.USER_MENTION);
67
70
  }, [userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills]);
71
+ const imageCompressionConfig = useMemo(() => new ImageCompressionConfig({
72
+ compressionRate: (imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate) || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,
73
+ width: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width,
74
+ height: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height
75
+ }), [imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height]);
68
76
  useLayoutEffect(() => {
69
77
  if (!isFirstMount) {
70
78
  const sendbird = initializeSendbird(appId, internalStorage, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.onInitialized);
@@ -86,11 +94,13 @@ const SendbirdUIKitContainer = _ref => {
86
94
  sdkInstance: sdkInstance,
87
95
  emojiManager: emojiManager,
88
96
  mentionManager: mentionManager,
97
+ imageCompressionConfig: imageCompressionConfig,
89
98
  enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION,
90
99
  enableChannelListTypingIndicator: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListTypingIndicator) ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR,
91
100
  enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS,
92
101
  enableUseUserIdForNickname: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUseUserIdForNickname) ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME,
93
- enableUserMention: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUserMention) ?? SendbirdUIKit.DEFAULT.USER_MENTION
102
+ enableUserMention: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUserMention) ?? SendbirdUIKit.DEFAULT.USER_MENTION,
103
+ enableImageCompression: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableImageCompression) ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION
94
104
  }, /*#__PURE__*/React.createElement(LocalizationProvider, {
95
105
  stringSet: defaultStringSet
96
106
  }, /*#__PURE__*/React.createElement(PlatformServiceProvider, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","Sendbird","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","InternalLocalCacheStorage","MentionConfig","MentionManager","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","CHANNEL_LIST_TYPING_INDICATOR","CHANNEL_LIST_MESSAGE_RECEIPT_STATUS","USE_USER_ID_FOR_NICKNAME","USER_MENTION","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","userProfile","userMention","errorBoundary","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","localCacheStorage","undefined","sdkInstance","setSdkInstance","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","mentionManager","config","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","enableUserMention","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","file","notification","clipboard","media","theme","HeaderComponent","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","value","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","init","modules","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\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 {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\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 DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n CHANNEL_LIST_TYPING_INDICATOR: false,\n CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,\n USE_USER_ID_FOR_NICKNAME: false,\n USER_MENTION: false,\n },\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 } & Partial<UIKitFeaturesInSendbirdChatContext>;\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 userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\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 userProfile,\n userMention,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n const internalStorage = useMemo(\n () => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),\n [chatOptions?.localCacheStorage],\n );\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n const mentionManager = useMemo(() => {\n const config = new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n return new MentionManager(config, chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION);\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n if (!isFirstMount) {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n }\n };\n }, [appId, internalStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n enableAutoPushTokenRegistration={\n chatOptions?.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableChannelListTypingIndicator={\n chatOptions?.enableChannelListTypingIndicator ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR\n }\n enableChannelListMessageReceiptStatus={\n chatOptions?.enableChannelListMessageReceiptStatus ??\n SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS\n }\n enableUseUserIdForNickname={\n chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\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 <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <ReactionProvider>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\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 <InternalErrorBoundaryContainer {...errorBoundary}>\n {children}\n </InternalErrorBoundaryContainer>\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n if (SendbirdUIKit.VERSION) {\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.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 chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","Sendbird","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","CHANNEL_LIST_TYPING_INDICATOR","CHANNEL_LIST_MESSAGE_RECEIPT_STATUS","USE_USER_ID_FOR_NICKNAME","USER_MENTION","IMAGE_COMPRESSION","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","userMention","imageCompression","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","localCacheStorage","undefined","sdkInstance","setSdkInstance","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","mentionManager","config","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","enableUserMention","imageCompressionConfig","compressionRate","COMPRESSION_RATE","width","height","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","enableImageCompression","file","notification","clipboard","media","theme","HeaderComponent","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","value","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","init","modules","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\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 {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\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 DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n CHANNEL_LIST_TYPING_INDICATOR: false,\n CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,\n USE_USER_ID_FOR_NICKNAME: false,\n USER_MENTION: false,\n IMAGE_COMPRESSION: true,\n },\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 } & Partial<UIKitFeaturesInSendbirdChatContext>;\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 errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n userMention,\n imageCompression,\n}: SendbirdUIKitContainerProps) => {\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n const internalStorage = useMemo(\n () => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),\n [chatOptions?.localCacheStorage],\n );\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n\n const mentionManager = useMemo(() => {\n const config = new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n return new MentionManager(config, chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION);\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n const imageCompressionConfig = useMemo(\n () =>\n new ImageCompressionConfig({\n compressionRate: imageCompression?.compressionRate || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,\n width: imageCompression?.width,\n height: imageCompression?.height,\n }),\n [imageCompression?.compressionRate, imageCompression?.width, imageCompression?.height],\n );\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n if (!isFirstMount) {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n }\n };\n }, [appId, internalStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n enableAutoPushTokenRegistration={\n chatOptions?.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableChannelListTypingIndicator={\n chatOptions?.enableChannelListTypingIndicator ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR\n }\n enableChannelListMessageReceiptStatus={\n chatOptions?.enableChannelListMessageReceiptStatus ??\n SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS\n }\n enableUseUserIdForNickname={\n chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}\n enableImageCompression={chatOptions?.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\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 <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <ReactionProvider>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\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 <InternalErrorBoundaryContainer {...errorBoundary}>\n {children}\n </InternalErrorBoundaryContainer>\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n if (SendbirdUIKit.VERSION) {\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.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 chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","PlatformServiceContext","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService?: MediaServiceInterface;\n}>;\n\nexport const PlatformServiceContext = React.createContext<Props | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAgBA,OAAO,MAAMC,sBAAsB,gBAAGD,KAAK,CAACE,aAAN,CAAkC,IAAlC,CAA/B;AACP,OAAO,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,oBAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
1
+ {"version":3,"names":["React","PlatformServiceContext","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n}>;\n\nexport type PlatformServiceContextType = {\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n};\n\nexport const PlatformServiceContext = React.createContext<PlatformServiceContextType | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAuBA,OAAO,MAAMC,sBAAsB,gBAAGD,KAAK,CAACE,aAAN,CAAuD,IAAvD,CAA/B;AACP,OAAO,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,oBAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
@@ -1,7 +1,6 @@
1
- import React, { useCallback, useEffect, useState } from 'react';
2
- import { AppState } from 'react-native';
1
+ import React, { useCallback, useState } from 'react';
3
2
  import { useAppFeatures } from '@sendbird/uikit-chat-hooks';
4
- import { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';
3
+ import { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';
5
4
  export const SendbirdChatContext = /*#__PURE__*/React.createContext(null);
6
5
  export const SendbirdChatProvider = _ref => {
7
6
  let {
@@ -9,11 +8,13 @@ export const SendbirdChatProvider = _ref => {
9
8
  sdkInstance,
10
9
  emojiManager,
11
10
  mentionManager,
11
+ imageCompressionConfig,
12
12
  enableAutoPushTokenRegistration,
13
13
  enableChannelListMessageReceiptStatus,
14
14
  enableChannelListTypingIndicator,
15
15
  enableUseUserIdForNickname,
16
- enableUserMention
16
+ enableUserMention,
17
+ enableImageCompression
17
18
  } = _ref;
18
19
  const [currentUser, _setCurrentUser] = useState();
19
20
  const forceUpdate = useForceUpdate();
@@ -52,19 +53,15 @@ export const SendbirdChatProvider = _ref => {
52
53
  const markAsDeliveredWithChannel = useCallback(channel => {
53
54
  if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);
54
55
  }, [sdkInstance, appFeatures.deliveryReceiptEnabled]);
55
- useEffect(() => {
56
- const listener = status => {
57
- // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';
58
- if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();
59
- };
60
-
61
- const subscriber = AppState.addEventListener('change', listener);
62
- return () => subscriber.remove();
63
- }, [sdkInstance]);
56
+ useAppState('change', status => {
57
+ // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';
58
+ if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();
59
+ });
64
60
  const value = {
65
61
  sdk: sdkInstance,
66
62
  emojiManager,
67
63
  mentionManager,
64
+ imageCompressionConfig,
68
65
  currentUser,
69
66
  setCurrentUser,
70
67
  updateCurrentUserInfo,
@@ -74,7 +71,8 @@ export const SendbirdChatProvider = _ref => {
74
71
  channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,
75
72
  channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,
76
73
  useUserIdForNicknameEnabled: enableUseUserIdForNickname,
77
- userMentionEnabled: enableUserMention
74
+ userMentionEnabled: enableUserMention,
75
+ imageCompressionEnabled: enableImageCompression
78
76
  }
79
77
  };
80
78
  return /*#__PURE__*/React.createElement(SendbirdChatContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useState","AppState","useAppFeatures","confirmAndMarkAsDelivered","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","children","sdkInstance","emojiManager","mentionManager","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","enableUserMention","currentUser","_setCurrentUser","forceUpdate","appFeatures","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled","useUserIdForNicknameEnabled","userMentionEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type MentionManager from '../libs/MentionManager';\nimport type { FileType } from '../platform/types';\n\nexport interface UIKitFeaturesInSendbirdChatContext {\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n enableUseUserIdForNickname: boolean;\n enableUserMention: boolean;\n}\n\ninterface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n}\n\ntype Context = {\n sdk: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n userMentionEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n enableUseUserIdForNickname,\n enableUserMention,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n userMentionEnabled: enableUserMention,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,SAA7B,EAAwCC,QAAxC,QAAwD,OAAxD;AACA,SAASC,QAAT,QAAyC,cAAzC;AAEA,SAASC,cAAT,QAA+B,4BAA/B;AAOA,SAASC,yBAAT,EAAoCC,cAApC,QAA0D,uBAA1D;AA+CA,OAAO,MAAMC,mBAAmB,gBAAGR,KAAK,CAACS,aAAN,CAAoC,IAApC,CAA5B;AACP,OAAO,MAAMC,oBAAoB,GAAG,QAUvB;EAAA,IAVwB;IACnCC,QADmC;IAEnCC,WAFmC;IAGnCC,YAHmC;IAInCC,cAJmC;IAKnCC,+BALmC;IAMnCC,qCANmC;IAOnCC,gCAPmC;IAQnCC,0BARmC;IASnCC;EATmC,CAUxB;EACX,MAAM,CAACC,WAAD,EAAcC,eAAd,IAAiClB,QAAQ,EAA/C;EACA,MAAMmB,WAAW,GAAGf,cAAc,EAAlC;EACA,MAAMgB,WAAW,GAAGlB,cAAc,CAACO,WAAD,CAAlC;EAEA,MAAMY,cAAyC,GAAGvB,WAAW,CAAEwB,IAAD,IAAU;IACtE;IACAJ,eAAe,CAACI,IAAD,CAAf;;IACAH,WAAW;EACZ,CAJ4D,EAI1D,EAJ0D,CAA7D;EAMA,MAAMI,qBAAuD,GAAGzB,WAAW,CACzE,OAAO0B,QAAP,EAAiBC,OAAjB,KAA6B;IAC3B,IAAIH,IAAI,GAAGL,WAAX;IAEA,IAAI,CAACK,IAAL,EAAW,MAAM,IAAII,KAAJ,CAAU,gFAAV,CAAN;IAEX,MAAMC,MAAgC,GAAG,EAAzC;;IAEA,IAAI,CAACH,QAAL,EAAe;MACbG,MAAM,CAACH,QAAP,GAAkBF,IAAI,CAACE,QAAvB;IACD,CAFD,MAEO;MACLG,MAAM,CAACH,QAAP,GAAkBA,QAAlB;IACD;;IAED,IAAI,CAACC,OAAL,EAAc;MACZE,MAAM,CAACC,UAAP,GAAoBN,IAAI,CAACM,UAAzB;IACD,CAFD,MAEO,IAAI,OAAOH,OAAP,KAAmB,QAAvB,EAAiC;MACtCE,MAAM,CAACC,UAAP,GAAoBH,OAApB;IACD,CAFM,MAEA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;MACtCE,MAAM,CAACE,YAAP,GAAsBJ,OAAtB;IACD,CAFM,MAEA;MACL,MAAM,IAAIC,KAAJ,CAAW,qDAAoD,OAAOD,OAAQ,GAA9E,CAAN;IACD;;IAEDH,IAAI,GAAG,MAAMb,WAAW,CAACc,qBAAZ,CAAkCI,MAAlC,CAAb;IAEAN,cAAc,CAACC,IAAD,CAAd;IACA,OAAOA,IAAP;EACD,CA5BwE,EA6BzE,CAACb,WAAD,EAAcQ,WAAd,EAA2BI,cAA3B,CA7ByE,CAA3E;EAgCA,MAAMS,0BAAiE,GAAGhC,WAAW,CAClFiC,OAAD,IAAmC;IACjC,IAAIX,WAAW,CAACY,sBAAhB,EAAwC7B,yBAAyB,CAAC,CAAC4B,OAAD,CAAD,CAAzB;EACzC,CAHkF,EAInF,CAACtB,WAAD,EAAcW,WAAW,CAACY,sBAA1B,CAJmF,CAArF;EAOAjC,SAAS,CAAC,MAAM;IACd,MAAMkC,QAAQ,GAAIC,MAAD,IAA4B;MAC3C;MACA,IAAIA,MAAM,KAAK,QAAf,EAAyBzB,WAAW,CAAC0B,eAAZ,KAAgC,QAAhC,IAA4C1B,WAAW,CAAC2B,kBAAZ,EAA5C,CAAzB,KACK,IAAIF,MAAM,KAAK,YAAf,EAA6BzB,WAAW,CAAC0B,eAAZ,KAAgC,MAAhC,IAA0C1B,WAAW,CAAC4B,kBAAZ,EAA1C;IACnC,CAJD;;IAMA,MAAMC,UAAU,GAAGrC,QAAQ,CAACsC,gBAAT,CAA0B,QAA1B,EAAoCN,QAApC,CAAnB;IACA,OAAO,MAAMK,UAAU,CAACE,MAAX,EAAb;EACD,CATQ,EASN,CAAC/B,WAAD,CATM,CAAT;EAWA,MAAMgC,KAAc,GAAG;IACrBC,GAAG,EAAEjC,WADgB;IAErBC,YAFqB;IAGrBC,cAHqB;IAIrBM,WAJqB;IAKrBI,cALqB;IAOrBE,qBAPqB;IAQrBO,0BARqB;IAUrBa,QAAQ,EAAE,EACR,GAAGvB,WADK;MAERwB,gCAAgC,EAAEhC,+BAF1B;MAGRiC,iCAAiC,EAAE/B,gCAH3B;MAIRgC,sCAAsC,EAAEjC,qCAJhC;MAKRkC,2BAA2B,EAAEhC,0BALrB;MAMRiC,kBAAkB,EAAEhC;IANZ;EAVW,CAAvB;EAoBA,oBAAO,oBAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAEyB;EAArC,GAA6CjC,QAA7C,CAAP;AACD,CA5FM"}
1
+ {"version":3,"names":["React","useCallback","useState","useAppFeatures","confirmAndMarkAsDelivered","useAppState","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","children","sdkInstance","emojiManager","mentionManager","imageCompressionConfig","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","enableUserMention","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled","useUserIdForNicknameEnabled","userMentionEnabled","imageCompressionEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type { FileType } from '../platform/types';\n\nexport interface UIKitFeaturesInSendbirdChatContext {\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n enableUseUserIdForNickname: boolean;\n enableUserMention: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n}\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n userMentionEnabled: boolean;\n imageCompressionEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n enableUseUserIdForNickname,\n enableUserMention,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n userMentionEnabled: enableUserMention,\n imageCompressionEnabled: enableImageCompression,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}