@sendbird/uikit-react-native 1.1.0 → 1.1.2

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 (144) hide show
  1. package/lib/commonjs/components/FileViewer.js +11 -13
  2. package/lib/commonjs/components/FileViewer.js.map +1 -1
  3. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +47 -15
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +51 -34
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  7. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +2 -1
  8. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  9. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +20 -56
  10. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  11. package/lib/commonjs/components/MessageRenderer/index.js +7 -2
  12. package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
  13. package/lib/commonjs/{components → containers}/GroupChannelPreviewContainer.js +30 -53
  14. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -0
  15. package/lib/commonjs/{InternalErrorBoundary.js → containers/InternalErrorBoundaryContainer.js} +5 -5
  16. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -0
  17. package/lib/commonjs/{SendbirdUIKitContainer.js → containers/SendbirdUIKitContainer.js} +10 -10
  18. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -0
  19. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +39 -6
  20. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  21. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  22. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  23. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  24. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +35 -2
  25. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  26. package/lib/commonjs/fragments/createGroupChannelFragment.js +1 -1
  27. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  28. package/lib/commonjs/fragments/createGroupChannelListFragment.js +6 -6
  29. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  30. package/lib/commonjs/index.js +1 -1
  31. package/lib/commonjs/index.js.map +1 -1
  32. package/lib/commonjs/{InternalLocalCacheStorage.js → libs/InternalLocalCacheStorage.js} +0 -0
  33. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -0
  34. package/lib/commonjs/libs/SBUError.js +41 -0
  35. package/lib/commonjs/libs/SBUError.js.map +1 -0
  36. package/lib/commonjs/libs/SBUUtils.js +20 -0
  37. package/lib/commonjs/libs/SBUUtils.js.map +1 -0
  38. package/lib/commonjs/localization/StringSet.type.js +6 -0
  39. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  40. package/lib/commonjs/platform/createFileService.expo.js +6 -4
  41. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  42. package/lib/commonjs/platform/createFileService.native.js +20 -8
  43. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  44. package/lib/commonjs/platform/types.js +4 -0
  45. package/lib/commonjs/platform/types.js.map +1 -1
  46. package/lib/commonjs/version.js +1 -1
  47. package/lib/commonjs/version.js.map +1 -1
  48. package/lib/module/components/FileViewer.js +13 -12
  49. package/lib/module/components/FileViewer.js.map +1 -1
  50. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +48 -17
  51. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  52. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +52 -35
  53. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  54. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +2 -1
  55. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  56. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +17 -51
  57. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  58. package/lib/module/components/MessageRenderer/index.js +7 -2
  59. package/lib/module/components/MessageRenderer/index.js.map +1 -1
  60. package/lib/module/{components → containers}/GroupChannelPreviewContainer.js +28 -51
  61. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -0
  62. package/lib/module/{InternalErrorBoundary.js → containers/InternalErrorBoundaryContainer.js} +5 -5
  63. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -0
  64. package/lib/module/{SendbirdUIKitContainer.js → containers/SendbirdUIKitContainer.js} +10 -10
  65. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -0
  66. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +38 -7
  67. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  68. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  69. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  70. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  71. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +34 -3
  72. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  73. package/lib/module/fragments/createGroupChannelFragment.js +1 -1
  74. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  75. package/lib/module/fragments/createGroupChannelListFragment.js +6 -6
  76. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  77. package/lib/module/index.js +1 -1
  78. package/lib/module/index.js.map +1 -1
  79. package/lib/module/{InternalLocalCacheStorage.js → libs/InternalLocalCacheStorage.js} +0 -0
  80. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -0
  81. package/lib/module/libs/SBUError.js +32 -0
  82. package/lib/module/libs/SBUError.js.map +1 -0
  83. package/lib/module/libs/SBUUtils.js +10 -0
  84. package/lib/module/libs/SBUUtils.js.map +1 -0
  85. package/lib/module/localization/StringSet.type.js +6 -0
  86. package/lib/module/localization/StringSet.type.js.map +1 -1
  87. package/lib/module/platform/createFileService.expo.js +5 -4
  88. package/lib/module/platform/createFileService.expo.js.map +1 -1
  89. package/lib/module/platform/createFileService.native.js +18 -8
  90. package/lib/module/platform/createFileService.native.js.map +1 -1
  91. package/lib/module/platform/types.js +1 -1
  92. package/lib/module/platform/types.js.map +1 -1
  93. package/lib/module/version.js +1 -1
  94. package/lib/module/version.js.map +1 -1
  95. package/lib/typescript/src/{components → containers}/GroupChannelPreviewContainer.d.ts +0 -0
  96. package/lib/typescript/src/{InternalErrorBoundary.d.ts → containers/InternalErrorBoundaryContainer.d.ts} +3 -3
  97. package/lib/typescript/src/{SendbirdUIKitContainer.d.ts → containers/SendbirdUIKitContainer.d.ts} +4 -4
  98. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  99. package/lib/typescript/src/index.d.ts +1 -1
  100. package/lib/typescript/src/{InternalLocalCacheStorage.d.ts → libs/InternalLocalCacheStorage.d.ts} +2 -2
  101. package/lib/typescript/src/libs/SBUError.d.ts +14 -0
  102. package/lib/typescript/src/libs/SBUUtils.d.ts +3 -0
  103. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  104. package/lib/typescript/src/platform/types.d.ts +2 -1
  105. package/lib/typescript/src/version.d.ts +1 -1
  106. package/package.json +5 -5
  107. package/src/components/FileViewer.tsx +19 -12
  108. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +55 -12
  109. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +38 -30
  110. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +1 -1
  111. package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +13 -46
  112. package/src/components/MessageRenderer/index.tsx +5 -2
  113. package/src/{components → containers}/GroupChannelPreviewContainer.tsx +20 -37
  114. package/src/{InternalErrorBoundary.tsx → containers/InternalErrorBoundaryContainer.tsx} +4 -4
  115. package/src/{SendbirdUIKitContainer.tsx → containers/SendbirdUIKitContainer.tsx} +13 -13
  116. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +28 -4
  117. package/src/domain/groupChannelList/types.ts +2 -2
  118. package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +1 -1
  119. package/src/domain/groupChannelSettings/module/moduleContext.tsx +26 -3
  120. package/src/fragments/createGroupChannelFragment.tsx +1 -1
  121. package/src/fragments/createGroupChannelListFragment.tsx +6 -6
  122. package/src/index.ts +1 -1
  123. package/src/{InternalLocalCacheStorage.ts → libs/InternalLocalCacheStorage.ts} +1 -1
  124. package/src/libs/SBUError.ts +26 -0
  125. package/src/libs/SBUUtils.ts +9 -0
  126. package/src/localization/StringSet.type.ts +10 -0
  127. package/src/platform/createFileService.expo.ts +5 -4
  128. package/src/platform/createFileService.native.ts +17 -8
  129. package/src/platform/types.ts +3 -1
  130. package/src/version.ts +1 -1
  131. package/lib/commonjs/InternalErrorBoundary.js.map +0 -1
  132. package/lib/commonjs/InternalLocalCacheStorage.js.map +0 -1
  133. package/lib/commonjs/SendbirdUIKitContainer.js.map +0 -1
  134. package/lib/commonjs/components/GroupChannelPreviewContainer.js.map +0 -1
  135. package/lib/commonjs/components/SBUPressable.js +0 -45
  136. package/lib/commonjs/components/SBUPressable.js.map +0 -1
  137. package/lib/module/InternalErrorBoundary.js.map +0 -1
  138. package/lib/module/InternalLocalCacheStorage.js.map +0 -1
  139. package/lib/module/SendbirdUIKitContainer.js.map +0 -1
  140. package/lib/module/components/GroupChannelPreviewContainer.js.map +0 -1
  141. package/lib/module/components/SBUPressable.js +0 -33
  142. package/lib/module/components/SBUPressable.js.map +0 -1
  143. package/lib/typescript/src/components/SBUPressable.d.ts +0 -18
  144. package/src/components/SBUPressable.tsx +0 -40
@@ -131,11 +131,13 @@ const MessageRenderer = _ref => {
131
131
  })), isIncoming && /*#__PURE__*/_react.default.createElement(_MessageIncomingAvatar.default, {
132
132
  message: message,
133
133
  grouping: groupWithNext
134
- }), /*#__PURE__*/_react.default.createElement(_reactNative.View, null, isIncoming && /*#__PURE__*/_react.default.createElement(_MessageIncomingSenderName.default, {
134
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
135
+ style: styles.bubbleContainer
136
+ }, isIncoming && /*#__PURE__*/_react.default.createElement(_MessageIncomingSenderName.default, {
135
137
  message: message,
136
138
  grouping: groupWithPrev
137
139
  }), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
138
- style: styles.bubbleContainer
140
+ style: styles.bubbleWrapper
139
141
  }, messageComponent, isIncoming && /*#__PURE__*/_react.default.createElement(_MessageTime.default, {
140
142
  message: message,
141
143
  grouping: groupWithNext,
@@ -173,6 +175,9 @@ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
173
175
  maxWidth: 240
174
176
  },
175
177
  bubbleContainer: {
178
+ flexShrink: 1
179
+ },
180
+ bubbleWrapper: {
176
181
  flexDirection: 'row',
177
182
  alignItems: 'flex-end'
178
183
  },
@@ -1 +1 @@
1
- {"version":3,"names":["MessageRenderer","currentUserId","channel","message","onPress","onLongPress","rest","variant","isMyMessage","isOutgoing","isIncoming","variantContainerStyle","incoming","styles","chatIncoming","outgoing","chatOutgoing","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","enableMessageGrouping","prevMessage","nextMessage","messageComponent","useIIFE","pressableProps","style","msgContainer","disabled","delayLongPress","DEFAULT_LONG_PRESS_DELAY","messageProps","isUserMessage","pressed","isFileMessage","isAdminMessage","conditionChaining","chatGroup","chatNonGroup","chatLastMessage","outgoingContainer","timeOutgoing","bubbleContainer","timeIncoming","createStyleSheet","flexDirection","justifyContent","alignItems","marginLeft","marginRight","marginBottom","maxWidth","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { calcMessageGrouping, conditionChaining, isMyMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport { DEFAULT_LONG_PRESS_DELAY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport AdminMessage from './AdminMessage';\nimport FileMessage from './FileMessage';\nimport MessageContainer from './MessageContainer';\nimport MessageDateSeparator from './MessageDateSeparator';\nimport MessageIncomingAvatar from './MessageIncomingAvatar';\nimport MessageIncomingSenderName from './MessageIncomingSenderName';\nimport MessageOutgoingStatus from './MessageOutgoingStatus';\nimport MessageTime from './MessageTime';\nimport UnknownMessage from './UnknownMessage';\nimport UserMessage from './UserMessage';\n\ntype MessageStyleVariant = 'outgoing' | 'incoming';\nexport interface MessageRendererInterface<T = SendbirdMessage> {\n message: T;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n variant: MessageStyleVariant;\n groupWithPrev: boolean;\n groupWithNext: boolean;\n pressed: boolean;\n}\n\nconst MessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n currentUserId,\n channel,\n message,\n onPress,\n onLongPress,\n ...rest\n}) => {\n const variant: MessageStyleVariant = isMyMessage(message, currentUserId) ? 'outgoing' : 'incoming';\n const isOutgoing = variant === 'outgoing';\n const isIncoming = variant === 'incoming';\n const variantContainerStyle = { incoming: styles.chatIncoming, outgoing: styles.chatOutgoing }[variant];\n\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(rest.enableMessageGrouping),\n message,\n rest.prevMessage,\n rest.nextMessage,\n );\n\n const messageComponent = useIIFE(() => {\n const pressableProps = {\n style: styles.msgContainer,\n disabled: !onPress && !onLongPress,\n onPress,\n onLongPress,\n delayLongPress: DEFAULT_LONG_PRESS_DELAY,\n };\n const messageProps = { ...rest, variant, groupWithNext, groupWithPrev };\n\n if (message.isUserMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UserMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isFileMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <FileMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isAdminMessage()) {\n return <AdminMessage message={message} pressed={false} {...messageProps} />;\n }\n\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UnknownMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n });\n\n return (\n <MessageContainer>\n <MessageDateSeparator message={message} prevMessage={rest.prevMessage} />\n {message.isAdminMessage() && messageComponent}\n {!message.isAdminMessage() && (\n <View\n style={[\n variantContainerStyle,\n conditionChaining(\n [groupWithNext, Boolean(rest.nextMessage)],\n [styles.chatGroup, styles.chatNonGroup, styles.chatLastMessage],\n ),\n ]}\n >\n {isOutgoing && (\n <View style={styles.outgoingContainer}>\n <MessageOutgoingStatus channel={channel} message={message} />\n <MessageTime message={message} grouping={groupWithNext} style={styles.timeOutgoing} />\n </View>\n )}\n {isIncoming && <MessageIncomingAvatar message={message} grouping={groupWithNext} />}\n <View>\n {isIncoming && <MessageIncomingSenderName message={message} grouping={groupWithPrev} />}\n <View style={styles.bubbleContainer}>\n {messageComponent}\n {isIncoming && <MessageTime message={message} grouping={groupWithNext} style={styles.timeIncoming} />}\n </View>\n </View>\n </View>\n )}\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n chatIncoming: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n },\n chatOutgoing: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n timeIncoming: {\n marginLeft: 4,\n },\n timeOutgoing: {\n marginRight: 4,\n },\n chatGroup: {\n marginBottom: 2,\n },\n chatNonGroup: {\n marginBottom: 16,\n },\n chatLastMessage: {\n marginBottom: 16,\n },\n msgContainer: {\n maxWidth: 240,\n },\n bubbleContainer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n outgoingContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default React.memo(MessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["MessageRenderer","currentUserId","channel","message","onPress","onLongPress","rest","variant","isMyMessage","isOutgoing","isIncoming","variantContainerStyle","incoming","styles","chatIncoming","outgoing","chatOutgoing","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","enableMessageGrouping","prevMessage","nextMessage","messageComponent","useIIFE","pressableProps","style","msgContainer","disabled","delayLongPress","DEFAULT_LONG_PRESS_DELAY","messageProps","isUserMessage","pressed","isFileMessage","isAdminMessage","conditionChaining","chatGroup","chatNonGroup","chatLastMessage","outgoingContainer","timeOutgoing","bubbleContainer","bubbleWrapper","timeIncoming","createStyleSheet","flexDirection","justifyContent","alignItems","marginLeft","marginRight","marginBottom","maxWidth","flexShrink","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { calcMessageGrouping, conditionChaining, isMyMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport { DEFAULT_LONG_PRESS_DELAY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport AdminMessage from './AdminMessage';\nimport FileMessage from './FileMessage';\nimport MessageContainer from './MessageContainer';\nimport MessageDateSeparator from './MessageDateSeparator';\nimport MessageIncomingAvatar from './MessageIncomingAvatar';\nimport MessageIncomingSenderName from './MessageIncomingSenderName';\nimport MessageOutgoingStatus from './MessageOutgoingStatus';\nimport MessageTime from './MessageTime';\nimport UnknownMessage from './UnknownMessage';\nimport UserMessage from './UserMessage';\n\ntype MessageStyleVariant = 'outgoing' | 'incoming';\nexport interface MessageRendererInterface<T = SendbirdMessage> {\n message: T;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n variant: MessageStyleVariant;\n groupWithPrev: boolean;\n groupWithNext: boolean;\n pressed: boolean;\n}\n\nconst MessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n currentUserId,\n channel,\n message,\n onPress,\n onLongPress,\n ...rest\n}) => {\n const variant: MessageStyleVariant = isMyMessage(message, currentUserId) ? 'outgoing' : 'incoming';\n const isOutgoing = variant === 'outgoing';\n const isIncoming = variant === 'incoming';\n const variantContainerStyle = { incoming: styles.chatIncoming, outgoing: styles.chatOutgoing }[variant];\n\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(rest.enableMessageGrouping),\n message,\n rest.prevMessage,\n rest.nextMessage,\n );\n\n const messageComponent = useIIFE(() => {\n const pressableProps = {\n style: styles.msgContainer,\n disabled: !onPress && !onLongPress,\n onPress,\n onLongPress,\n delayLongPress: DEFAULT_LONG_PRESS_DELAY,\n };\n const messageProps = { ...rest, variant, groupWithNext, groupWithPrev };\n\n if (message.isUserMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UserMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isFileMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <FileMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isAdminMessage()) {\n return <AdminMessage message={message} pressed={false} {...messageProps} />;\n }\n\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UnknownMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n });\n\n return (\n <MessageContainer>\n <MessageDateSeparator message={message} prevMessage={rest.prevMessage} />\n {message.isAdminMessage() && messageComponent}\n {!message.isAdminMessage() && (\n <View\n style={[\n variantContainerStyle,\n conditionChaining(\n [groupWithNext, Boolean(rest.nextMessage)],\n [styles.chatGroup, styles.chatNonGroup, styles.chatLastMessage],\n ),\n ]}\n >\n {isOutgoing && (\n <View style={styles.outgoingContainer}>\n <MessageOutgoingStatus channel={channel} message={message} />\n <MessageTime message={message} grouping={groupWithNext} style={styles.timeOutgoing} />\n </View>\n )}\n {isIncoming && <MessageIncomingAvatar message={message} grouping={groupWithNext} />}\n <View style={styles.bubbleContainer}>\n {isIncoming && <MessageIncomingSenderName message={message} grouping={groupWithPrev} />}\n <View style={styles.bubbleWrapper}>\n {messageComponent}\n {isIncoming && <MessageTime message={message} grouping={groupWithNext} style={styles.timeIncoming} />}\n </View>\n </View>\n </View>\n )}\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n chatIncoming: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n },\n chatOutgoing: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n timeIncoming: {\n marginLeft: 4,\n },\n timeOutgoing: {\n marginRight: 4,\n },\n chatGroup: {\n marginBottom: 2,\n },\n chatNonGroup: {\n marginBottom: 16,\n },\n chatLastMessage: {\n marginBottom: 16,\n },\n msgContainer: {\n maxWidth: 240,\n },\n bubbleContainer: {\n flexShrink: 1,\n },\n bubbleWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n outgoingContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default React.memo(MessageRenderer);\n"],"mappings":"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"}
@@ -7,19 +7,19 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _reactNative = require("react-native");
11
+
10
12
  var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
11
13
 
12
14
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
15
 
14
- var _Icon = _interopRequireDefault(require("@sendbird/uikit-react-native-foundation/src/ui/Icon"));
15
-
16
16
  var _uikitUtils = require("@sendbird/uikit-utils");
17
17
 
18
- var _useContext = require("../hooks/useContext");
18
+ var _ChannelCover = _interopRequireDefault(require("../components/ChannelCover"));
19
19
 
20
- var _ChannelCover = _interopRequireDefault(require("./ChannelCover"));
20
+ var _constants = require("../constants");
21
21
 
22
- var _SBUPressable = _interopRequireDefault(require("./SBUPressable"));
22
+ var _useContext = require("../hooks/useContext");
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
@@ -52,7 +52,6 @@ const GroupChannelPreviewContainer = _ref => {
52
52
  colors
53
53
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
54
54
  const [typingUsers, setTypingUsers] = (0, _react.useState)([]);
55
- const forceUpdate = (0, _uikitUtils.useForceUpdate)();
56
55
 
57
56
  if (features.channelListTypingIndicatorEnabled) {
58
57
  const typingId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
@@ -65,26 +64,7 @@ const GroupChannelPreviewContainer = _ref => {
65
64
  });
66
65
  }
67
66
 
68
- if (features.channelListMessageReceiptStatusEnabled) {
69
- const receiptId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
70
- (0, _uikitChatHooks.useChannelHandler)(sdk, `GroupChannelPreviewContainer_ReceiptStatus_${receiptId}`, {
71
- onDeliveryReceiptUpdated(eventChannel) {
72
- if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
73
- if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;
74
- if (!(0, _uikitUtils.isMyMessage)(eventChannel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
75
- forceUpdate();
76
- },
77
-
78
- onReadReceiptUpdated(eventChannel) {
79
- if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
80
- if (!eventChannel.isGroupChannel() || !eventChannel.lastMessage) return;
81
- if (!(0, _uikitUtils.isMyMessage)(eventChannel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
82
- forceUpdate();
83
- }
84
-
85
- });
86
- }
87
-
67
+ const outgoingStatus = (0, _uikitChatHooks.useMessageOutgoingStatus)(sdk, channel, channel.lastMessage);
88
68
  const bodyText = (0, _uikitUtils.useIIFE)(() => {
89
69
  if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);
90
70
  });
@@ -92,6 +72,7 @@ const GroupChannelPreviewContainer = _ref => {
92
72
  var _channel$lastMessage;
93
73
 
94
74
  if (!((_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage())) return undefined;
75
+ if (typingUsers.length > 0) return undefined;
95
76
  return iconMapper[(0, _uikitUtils.getFileType)(channel.lastMessage.type || (0, _uikitUtils.getFileExtension)(channel.lastMessage.name))];
96
77
  });
97
78
  const titleCaptionIcon = (0, _uikitUtils.useIIFE)(() => {
@@ -99,15 +80,15 @@ const GroupChannelPreviewContainer = _ref => {
99
80
  if (!features.channelListMessageReceiptStatusEnabled) return undefined;
100
81
  if (!(0, _uikitUtils.isMyMessage)(channel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return undefined;
101
82
 
102
- if (channel.lastMessage.sendingStatus === 'pending') {
83
+ if (outgoingStatus === 'PENDING') {
103
84
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.LoadingSpinner, {
104
85
  size: 16,
105
86
  style: styles.titleCaptionIcon
106
87
  });
107
88
  }
108
89
 
109
- if (channel.lastMessage.sendingStatus === 'failed') {
110
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
90
+ if (outgoingStatus === 'FAILED') {
91
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
111
92
  icon: 'error',
112
93
  size: 16,
113
94
  color: colors.error,
@@ -115,41 +96,37 @@ const GroupChannelPreviewContainer = _ref => {
115
96
  });
116
97
  }
117
98
 
118
- if (channel.getUnreadMemberCount(channel.lastMessage) === 0) {
119
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
99
+ if (outgoingStatus === 'UNDELIVERED') {
100
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
101
+ icon: 'done',
102
+ size: 16,
103
+ color: colors.onBackground03,
104
+ containerStyle: styles.titleCaptionIcon
105
+ });
106
+ }
107
+
108
+ if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {
109
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
120
110
  icon: 'done-all',
121
111
  size: 16,
122
- color: colors.secondary,
112
+ color: colors.onBackground03,
123
113
  style: styles.titleCaptionIcon
124
114
  });
125
115
  }
126
116
 
127
- if (features.deliveryReceiptEnabled) {
128
- if (channel.getUndeliveredMemberCount(channel.lastMessage) === 0) {
129
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
130
- icon: 'done-all',
131
- size: 16,
132
- color: colors.onBackground03,
133
- style: styles.titleCaptionIcon
134
- });
135
- }
136
-
137
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
138
- icon: 'done',
117
+ if (outgoingStatus === 'READ') {
118
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
119
+ icon: 'done-all',
139
120
  size: 16,
140
- color: colors.onBackground03,
141
- containerStyle: styles.titleCaptionIcon
121
+ color: colors.secondary,
122
+ style: styles.titleCaptionIcon
142
123
  });
143
124
  }
144
125
 
145
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
146
- icon: 'done-all',
147
- size: 16,
148
- color: colors.onBackground03,
149
- style: styles.titleCaptionIcon
150
- });
126
+ return undefined;
151
127
  });
152
- return /*#__PURE__*/_react.default.createElement(_SBUPressable.default, {
128
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
129
+ delayLongPress: _constants.DEFAULT_LONG_PRESS_DELAY,
153
130
  onPress: onPress,
154
131
  onLongPress: onLongPress
155
132
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.GroupChannelPreview, {
@@ -0,0 +1 @@
1
+ {"version":3,"names":["iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","typingUsers","setTypingUsers","useState","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","outgoingStatus","useMessageOutgoingStatus","lastMessage","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","isMyMessage","userId","styles","error","onBackground03","secondary","DEFAULT_LONG_PRESS_DELAY","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","createStyleSheet","marginRight"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n if (features.channelListTypingIndicatorEnabled) {\n const typingId = useUniqId('GroupChannelPreviewContainer');\n useChannelHandler(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n }\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const bodyIcon = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage) return undefined;\n if (!features.channelListMessageReceiptStatusEnabled) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={bodyIcon}\n badgeCount={channel.unreadMessageCount}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
- var _TypedPlaceholder = _interopRequireDefault(require("./components/TypedPlaceholder"));
12
+ var _TypedPlaceholder = _interopRequireDefault(require("../components/TypedPlaceholder"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
@@ -28,7 +28,7 @@ const DefaultErrorBoundaryComponent = props => {
28
28
  }));
29
29
  };
30
30
 
31
- class InternalErrorBoundary extends _react.default.PureComponent {
31
+ class InternalErrorBoundaryContainer extends _react.default.PureComponent {
32
32
  constructor() {
33
33
  super(...arguments);
34
34
 
@@ -75,10 +75,10 @@ class InternalErrorBoundary extends _react.default.PureComponent {
75
75
 
76
76
  }
77
77
 
78
- _defineProperty(InternalErrorBoundary, "defaultProps", {
78
+ _defineProperty(InternalErrorBoundaryContainer, "defaultProps", {
79
79
  ErrorInfoComponent: DefaultErrorBoundaryComponent
80
80
  });
81
81
 
82
- var _default = InternalErrorBoundary;
82
+ var _default = InternalErrorBoundaryContainer;
83
83
  exports.default = _default;
84
- //# sourceMappingURL=InternalErrorBoundary.js.map
84
+ //# sourceMappingURL=InternalErrorBoundaryContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DefaultErrorBoundaryComponent","props","flex","justifyContent","alignItems","reset","InternalErrorBoundaryContainer","React","PureComponent","error","errorInfo","setState","onError","state","ErrorInfoComponent","children"],"sources":["InternalErrorBoundaryContainer.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from '../components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from '../types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundaryContainer extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n children?: React.ReactNode;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundaryContainer;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;;;AAGA,MAAMA,6BAA6B,GAAIC,KAAD,IAA+B;EACnE,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAR;MAAWC,cAAc,EAAE,QAA3B;MAAqCC,UAAU,EAAE;IAAjD;EAAb,gBACE,6BAAC,yBAAD;IAAkB,IAAI,EAAE,aAAxB;IAAuC,YAAY,EAAEH,KAAK,CAACI;EAA3D,EADF,CADF;AAKD,CAND;;AAQA,MAAMC,8BAAN,SAA6CC,cAAA,CAAMC,aAAnD,CAIG;EAAA;IAAA;;IAAA,+BAK6D;MAC5DC,KAAK,EAAE,IADqD;MAE5DC,SAAS,EAAE;IAFiD,CAL7D;;IAAA,2CAUmB,CAACD,KAAD,EAAeC,SAAf,KAAwC;MAAA;;MAC1D,KAAKC,QAAL,CAAc;QAAEF,KAAF;QAASC;MAAT,CAAd;MACA,2CAAKT,KAAL,EAAWW,OAAX,8FAAqB;QAAEH,KAAF;QAASC,SAAT;QAAoBL,KAAK,EAAE,KAAKA;MAAhC,CAArB;IACD,CAbA;;IAAA,+BAeO,MAAM;MACZ,KAAKM,QAAL,CAAc;QAAEF,KAAK,EAAE,IAAT;QAAeC,SAAS,EAAE;MAA1B,CAAd;IACD,CAjBA;;IAAA,gCAmBQ,MAAM;MACb,IAAI,KAAKG,KAAL,CAAWJ,KAAX,IAAoB,KAAKI,KAAL,CAAWH,SAAnC,EAA8C;QAAA;;QAC5C,OACE,+CAAKT,KAAL,EAAWa,kBAAX,mGAAgC;UAC9BL,KAAK,EAAE,KAAKI,KAAL,CAAWJ,KADY;UAE9BC,SAAS,EAAE,KAAKG,KAAL,CAAWH,SAFQ;UAG9BL,KAAK,EAAE,KAAKA;QAHkB,CAAhC,MAIM,IALR;MAOD;;MAED,oBAAO,4DAAG,KAAKJ,KAAL,CAAWc,QAAd,CAAP;IACD,CA/BA;EAAA;;AAAA;;gBAJGT,8B,kBAKkB;EACpBQ,kBAAkB,EAAEd;AADA,C;;eAiCTM,8B"}
@@ -15,23 +15,23 @@ var _sendbird = _interopRequireDefault(require("sendbird"));
15
15
 
16
16
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
17
17
 
18
- var _InternalErrorBoundary = _interopRequireDefault(require("./InternalErrorBoundary"));
18
+ var _Localization = require("../contexts/Localization");
19
19
 
20
- var _InternalLocalCacheStorage = _interopRequireDefault(require("./InternalLocalCacheStorage"));
20
+ var _PlatformService = require("../contexts/PlatformService");
21
21
 
22
- var _Localization = require("./contexts/Localization");
22
+ var _SendbirdChat = require("../contexts/SendbirdChat");
23
23
 
24
- var _PlatformService = require("./contexts/PlatformService");
24
+ var _useContext = require("../hooks/useContext");
25
25
 
26
- var _SendbirdChat = require("./contexts/SendbirdChat");
26
+ var _InternalLocalCacheStorage = _interopRequireDefault(require("../libs/InternalLocalCacheStorage"));
27
27
 
28
- var _useContext = require("./hooks/useContext");
28
+ var _StringSet = _interopRequireDefault(require("../localization/StringSet.en"));
29
29
 
30
- var _StringSet = _interopRequireDefault(require("./localization/StringSet.en"));
30
+ var _dynamicModule = _interopRequireDefault(require("../platform/dynamicModule"));
31
31
 
32
- var _dynamicModule = _interopRequireDefault(require("./platform/dynamicModule"));
32
+ var _version = _interopRequireDefault(require("../version"));
33
33
 
34
- var _version = _interopRequireDefault(require("./version"));
34
+ var _InternalErrorBoundaryContainer = _interopRequireDefault(require("./InternalErrorBoundaryContainer"));
35
35
 
36
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
37
 
@@ -140,7 +140,7 @@ const SendbirdUIKitContainer = _ref => {
140
140
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
141
141
  }, /*#__PURE__*/_react.default.createElement(LocalizedDialogProvider, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
142
142
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
143
- }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundary.default, errorBoundary, children)))))))));
143
+ }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children)))))))));
144
144
  };
145
145
 
146
146
  const LocalizedDialogProvider = _ref2 => {
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","localCacheStorage","Sendbird","localCacheEnabled","useAsyncStorageAsDatabase","InternalLocalCacheStorage","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport Sendbird from 'sendbird';\n\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/Localization';\nimport { PlatformServiceProvider } from '../contexts/PlatformService';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChat';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n enableAutoPushTokenRegistration?: boolean;\n enableChannelListTypingIndicator?: boolean;\n enableChannelListMessageReceiptStatus?: boolean;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n if (chatOptions?.localCacheStorage) {\n sdk = new Sendbird({ appId, localCacheEnabled: true });\n sdk.useAsyncStorageAsDatabase(new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n } else {\n sdk = new Sendbird({ appId });\n }\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n // @ts-ignore\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n if (SendbirdUIKit.PLATFORM) {\n // @ts-ignore\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -15,6 +15,10 @@ var _uikitUtils = require("@sendbird/uikit-utils");
15
15
 
16
16
  var _useContext = require("../../../../hooks/useContext");
17
17
 
18
+ var _SBUError = _interopRequireDefault(require("../../../../libs/SBUError"));
19
+
20
+ var _SBUUtils = _interopRequireDefault(require("../../../../libs/SBUUtils"));
21
+
18
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
23
 
20
24
  const SendInput = _ref => {
@@ -28,15 +32,18 @@ const SendInput = _ref => {
28
32
  const {
29
33
  STRINGS
30
34
  } = (0, _useContext.useLocalization)();
31
- const {
32
- openSheet
33
- } = (0, _uikitReactNativeFoundation.useBottomSheet)();
34
35
  const {
35
36
  fileService
36
37
  } = (0, _useContext.usePlatformService)();
37
38
  const {
38
39
  colors
39
40
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
41
+ const {
42
+ openSheet
43
+ } = (0, _uikitReactNativeFoundation.useBottomSheet)();
44
+ const {
45
+ alert
46
+ } = (0, _uikitReactNativeFoundation.useAlert)();
40
47
  const toast = (0, _uikitReactNativeFoundation.useToast)();
41
48
 
42
49
  const onPressSend = () => {
@@ -52,7 +59,20 @@ const SendInput = _ref => {
52
59
  onPress: async () => {
53
60
  const photo = await fileService.openCamera({
54
61
  mediaType: 'all',
55
- onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error')
62
+ onOpenFailure: error => {
63
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
64
+ alert({
65
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
66
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),
67
+ buttons: [{
68
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
69
+ onPress: () => _SBUUtils.default.openSettings()
70
+ }]
71
+ });
72
+ } else {
73
+ toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
74
+ }
75
+ }
56
76
  });
57
77
 
58
78
  if (photo) {
@@ -66,7 +86,20 @@ const SendInput = _ref => {
66
86
  const photo = await fileService.openMediaLibrary({
67
87
  selectionLimit: 1,
68
88
  mediaType: 'all',
69
- onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error')
89
+ onOpenFailure: error => {
90
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
91
+ alert({
92
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
93
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),
94
+ buttons: [{
95
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
96
+ onPress: () => _SBUUtils.default.openSettings()
97
+ }]
98
+ });
99
+ } else {
100
+ toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
101
+ }
102
+ }
70
103
  });
71
104
 
72
105
  if (photo && photo[0]) {
@@ -78,7 +111,7 @@ const SendInput = _ref => {
78
111
  icon: 'document',
79
112
  onPress: async () => {
80
113
  const file = await fileService.openDocument({
81
- onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error')
114
+ onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error')
82
115
  });
83
116
 
84
117
  if (file) {
@@ -1 +1 @@
1
- {"version":3,"names":["SendInput","onSendUserMessage","onSendFileMessage","text","setText","disabled","STRINGS","useLocalization","openSheet","useBottomSheet","fileService","usePlatformService","colors","useUIKitTheme","toast","useToast","onPressSend","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailureWithToastMessage","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","conditionChaining","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_ACTIVE","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../../hooks/useContext';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n setText: (val: string) => void;\n disabled: boolean;\n};\nconst SendInput = ({ onSendUserMessage, onSendFileMessage, text, setText, disabled }: SendInputProps) => {\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const toast = useToast();\n\n const onPressSend = () => {\n onSendUserMessage(text).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n setText('');\n };\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n multiline\n editable={!disabled}\n value={text}\n onChangeText={setText}\n style={styles.input}\n placeholder={conditionChaining(\n [disabled],\n [STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED, STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE],\n )}\n />\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["SendInput","onSendUserMessage","onSendFileMessage","text","setText","disabled","STRINGS","useLocalization","fileService","usePlatformService","colors","useUIKitTheme","openSheet","useBottomSheet","alert","useAlert","toast","useToast","onPressSend","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","conditionChaining","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_ACTIVE","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../../hooks/useContext';\nimport SBUError from '../../../../libs/SBUError';\nimport SBUUtils from '../../../../libs/SBUUtils';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n setText: (val: string) => void;\n disabled: boolean;\n};\nconst SendInput = ({ onSendUserMessage, onSendFileMessage, text, setText, disabled }: SendInputProps) => {\n const { STRINGS } = useLocalization();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const toast = useToast();\n\n const onPressSend = () => {\n onSendUserMessage(text).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n setText('');\n };\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n multiline\n editable={!disabled}\n value={text}\n onChangeText={setText}\n style={styles.input}\n placeholder={conditionChaining(\n [disabled],\n [STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED, STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE],\n )}\n />\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatListProps } from 'react-native';\n\nimport type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelListProps {\n /** Props for `GroupChannelListFragment` **/\n Fragment: {\n /** Navigate to GroupChannelFragment **/\n onPressChannel: (channel: SendbirdGroupChannel) => void;\n /** Navigate to GroupChannelCreateFragment **/\n onPressCreateChannel: (channelType: GroupChannelType) => void;\n /** Custom Header for TypeSelector, Only replace header component not a module **/\n TypeSelectorHeader?: null | CommonComponent<\n BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>\n >;\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview?: (\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n // /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/\n // skipTypeSelection?: boolean;\n /** Custom Query creator for channels query **/\n queryCreator?: UseGroupChannelListOptions['queryCreator'];\n /** Sort comparator for sort channels **/\n sortComparator?: UseGroupChannelListOptions['sortComparator'];\n /** FlatList props for GroupChannelList.List **/\n flatListProps?: GroupChannelListProps['List']['flatListProps'];\n /** Action menu item creator for onLongPress **/\n menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];\n };\n /** Props for `GroupChannelListModule.Header` **/\n Header: {};\n /** Props for `GroupChannelListModule.List` **/\n List: {\n /** GroupChannels from SendbirdChat SDK **/\n groupChannels: SendbirdGroupChannel[];\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview: (\n // FIXME/BREAKING: Changed to props object\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Method to load more data, called with onEndReached of FlatList **/\n onLoadNext: () => Promise<void>;\n /** Prop from Fragment **/\n flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;\n /** Prop from Fragment **/\n menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;\n };\n /** Props for `GroupChannelListModule.TypeSelector` **/\n TypeSelector: {\n /** Prop from Fragment `Fragment.TypeSelectorHeader` **/\n Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];\n /** Prop from Fragment `Fragment.skipTypeSelection` **/\n skipTypeSelection: boolean;\n /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/\n onSelectType: (type: GroupChannelType) => void;\n };\n}\n\n/**\n * Internal context for GroupChannelList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelListContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n }>;\n TypeSelector: React.Context<{\n visible: boolean;\n show: () => void;\n hide: () => void;\n headerTitle: string;\n }>;\n}\nexport interface GroupChannelListModule {\n Provider: CommonComponent;\n Header: CommonComponent<GroupChannelListProps['Header']>;\n List: CommonComponent<GroupChannelListProps['List']>;\n TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelListFragment = CommonComponent<GroupChannelListProps['Fragment']>;\nexport type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatListProps } from 'react-native';\n\nimport type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelListProps {\n /** Props for `GroupChannelListFragment` **/\n Fragment: {\n /** Navigate to GroupChannelFragment **/\n onPressChannel: (channel: SendbirdGroupChannel) => void;\n /** Navigate to GroupChannelCreateFragment **/\n onPressCreateChannel: (channelType: GroupChannelType) => void;\n /** Custom Header for TypeSelector, Only replace header component not a module **/\n TypeSelectorHeader?: null | CommonComponent<\n BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>\n >;\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview?: (\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n // /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/\n // skipTypeSelection?: boolean;\n /** Custom Query creator for channels query **/\n queryCreator?: UseGroupChannelListOptions['queryCreator'];\n /** Custom Collection creator for group channel collection **/\n collectionCreator?: UseGroupChannelListOptions['collectionCreator'];\n /** FlatList props for GroupChannelList.List **/\n flatListProps?: GroupChannelListProps['List']['flatListProps'];\n /** Action menu item creator for onLongPress **/\n menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];\n };\n /** Props for `GroupChannelListModule.Header` **/\n Header: {};\n /** Props for `GroupChannelListModule.List` **/\n List: {\n /** GroupChannels from SendbirdChat SDK **/\n groupChannels: SendbirdGroupChannel[];\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview: (\n // FIXME/BREAKING: Changed to props object\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Method to load more data, called with onEndReached of FlatList **/\n onLoadNext: () => Promise<void>;\n /** Prop from Fragment **/\n flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;\n /** Prop from Fragment **/\n menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;\n };\n /** Props for `GroupChannelListModule.TypeSelector` **/\n TypeSelector: {\n /** Prop from Fragment `Fragment.TypeSelectorHeader` **/\n Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];\n /** Prop from Fragment `Fragment.skipTypeSelection` **/\n skipTypeSelection: boolean;\n /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/\n onSelectType: (type: GroupChannelType) => void;\n };\n}\n\n/**\n * Internal context for GroupChannelList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelListContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n }>;\n TypeSelector: React.Context<{\n visible: boolean;\n show: () => void;\n hide: () => void;\n headerTitle: string;\n }>;\n}\nexport interface GroupChannelListModule {\n Provider: CommonComponent;\n Header: CommonComponent<GroupChannelListProps['Header']>;\n List: CommonComponent<GroupChannelListProps['List']>;\n TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelListFragment = CommonComponent<GroupChannelListProps['Fragment']>;\nexport type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';\n"],"mappings":""}
@@ -37,7 +37,7 @@ const GroupChannelSettingsInfo = _ => {
37
37
  } = (0, _useContext.useLocalization)();
38
38
 
39
39
  if (!currentUser) {
40
- _uikitUtils.Logger.warn('Cannot render GroupChannelSettingsInfo, User is not connected');
40
+ _uikitUtils.Logger.warn('Cannot render GroupChannelSettingsInfo, please connect using `useConnection()` hook first');
41
41
 
42
42
  return null;
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"names":["GroupChannelSettingsInfo","_","channel","useContext","GroupChannelSettingsContexts","Fragment","currentUser","useSendbirdChat","STRINGS","useLocalization","Logger","warn","styles","userInfoContainer","avatarContainer","getGroupChannelTitle","userId","LABELS","USER_NO_NAME","CHANNEL_NO_MEMBERS","createStyleSheet","container","flex","paddingVertical","alignItems","marginBottom","userIdContainer","userIdLabel"],"sources":["GroupChannelSettingsInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nconst GroupChannelSettingsInfo = (_: GroupChannelSettingsProps['Info']) => {\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelSettingsInfo, User is not connected');\n return null;\n }\n\n return (\n <View>\n <View style={styles.userInfoContainer}>\n <ChannelCover channel={channel} size={80} containerStyle={styles.avatarContainer} />\n <Text h1 numberOfLines={1}>\n {getGroupChannelTitle(\n currentUser.userId,\n channel,\n STRINGS.LABELS.USER_NO_NAME,\n STRINGS.LABELS.CHANNEL_NO_MEMBERS,\n )}\n </Text>\n </View>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: { flex: 1 },\n userInfoContainer: { paddingVertical: 24, alignItems: 'center' },\n avatarContainer: { marginBottom: 12 },\n userIdContainer: { paddingVertical: 16 },\n userIdLabel: { marginBottom: 4 },\n});\nexport default GroupChannelSettingsInfo;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;AAGA,MAAMA,wBAAwB,GAAIC,CAAD,IAA0C;EACzE,MAAM;IAAEC;EAAF,IAAc,IAAAC,iBAAA,EAAWC,2CAAA,CAA6BC,QAAxC,CAApB;EACA,MAAM;IAAEC;EAAF,IAAkB,IAAAC,2BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;;EAEA,IAAI,CAACH,WAAL,EAAkB;IAChBI,kBAAA,CAAOC,IAAP,CAAY,+DAAZ;;IACA,OAAO,IAAP;EACD;;EAED,oBACE,6BAAC,iBAAD,qBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,qBAAD;IAAc,OAAO,EAAEX,OAAvB;IAAgC,IAAI,EAAE,EAAtC;IAA0C,cAAc,EAAEU,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,gCAAD;IAAM,EAAE,MAAR;IAAS,aAAa,EAAE;EAAxB,GACG,IAAAC,gCAAA,EACCT,WAAW,CAACU,MADb,EAECd,OAFD,EAGCM,OAAO,CAACS,MAAR,CAAeC,YAHhB,EAICV,OAAO,CAACS,MAAR,CAAeE,kBAJhB,CADH,CAFF,CADF,eAYE,6BAAC,mCAAD,OAZF,CADF;AAgBD,CA1BD;;AA4BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BC,SAAS,EAAE;IAAEC,IAAI,EAAE;EAAR,CADmB;EAE9BT,iBAAiB,EAAE;IAAEU,eAAe,EAAE,EAAnB;IAAuBC,UAAU,EAAE;EAAnC,CAFW;EAG9BV,eAAe,EAAE;IAAEW,YAAY,EAAE;EAAhB,CAHa;EAI9BC,eAAe,EAAE;IAAEH,eAAe,EAAE;EAAnB,CAJa;EAK9BI,WAAW,EAAE;IAAEF,YAAY,EAAE;EAAhB;AALiB,CAAjB,CAAf;eAOezB,wB"}
1
+ {"version":3,"names":["GroupChannelSettingsInfo","_","channel","useContext","GroupChannelSettingsContexts","Fragment","currentUser","useSendbirdChat","STRINGS","useLocalization","Logger","warn","styles","userInfoContainer","avatarContainer","getGroupChannelTitle","userId","LABELS","USER_NO_NAME","CHANNEL_NO_MEMBERS","createStyleSheet","container","flex","paddingVertical","alignItems","marginBottom","userIdContainer","userIdLabel"],"sources":["GroupChannelSettingsInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nconst GroupChannelSettingsInfo = (_: GroupChannelSettingsProps['Info']) => {\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelSettingsInfo, please connect using `useConnection()` hook first');\n return null;\n }\n\n return (\n <View>\n <View style={styles.userInfoContainer}>\n <ChannelCover channel={channel} size={80} containerStyle={styles.avatarContainer} />\n <Text h1 numberOfLines={1}>\n {getGroupChannelTitle(\n currentUser.userId,\n channel,\n STRINGS.LABELS.USER_NO_NAME,\n STRINGS.LABELS.CHANNEL_NO_MEMBERS,\n )}\n </Text>\n </View>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: { flex: 1 },\n userInfoContainer: { paddingVertical: 24, alignItems: 'center' },\n avatarContainer: { marginBottom: 12 },\n userIdContainer: { paddingVertical: 16 },\n userIdLabel: { marginBottom: 4 },\n});\nexport default GroupChannelSettingsInfo;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;AAGA,MAAMA,wBAAwB,GAAIC,CAAD,IAA0C;EACzE,MAAM;IAAEC;EAAF,IAAc,IAAAC,iBAAA,EAAWC,2CAAA,CAA6BC,QAAxC,CAApB;EACA,MAAM;IAAEC;EAAF,IAAkB,IAAAC,2BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;;EAEA,IAAI,CAACH,WAAL,EAAkB;IAChBI,kBAAA,CAAOC,IAAP,CAAY,2FAAZ;;IACA,OAAO,IAAP;EACD;;EAED,oBACE,6BAAC,iBAAD,qBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,qBAAD;IAAc,OAAO,EAAEX,OAAvB;IAAgC,IAAI,EAAE,EAAtC;IAA0C,cAAc,EAAEU,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,gCAAD;IAAM,EAAE,MAAR;IAAS,aAAa,EAAE;EAAxB,GACG,IAAAC,gCAAA,EACCT,WAAW,CAACU,MADb,EAECd,OAFD,EAGCM,OAAO,CAACS,MAAR,CAAeC,YAHhB,EAICV,OAAO,CAACS,MAAR,CAAeE,kBAJhB,CADH,CAFF,CADF,eAYE,6BAAC,mCAAD,OAZF,CADF;AAgBD,CA1BD;;AA4BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BC,SAAS,EAAE;IAAEC,IAAI,EAAE;EAAR,CADmB;EAE9BT,iBAAiB,EAAE;IAAEU,eAAe,EAAE,EAAnB;IAAuBC,UAAU,EAAE;EAAnC,CAFW;EAG9BV,eAAe,EAAE;IAAEW,YAAY,EAAE;EAAhB,CAHa;EAI9BC,eAAe,EAAE;IAAEH,eAAe,EAAE;EAAnB,CAJa;EAK9BI,WAAW,EAAE;IAAEF,YAAY,EAAE;EAAhB;AALiB,CAAjB,CAAf;eAOezB,wB"}