@sendbird/uikit-react-native 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +7 -7
  2. package/lib/commonjs/components/FileViewer.js +319 -0
  3. package/lib/commonjs/components/FileViewer.js.map +1 -0
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +116 -0
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +8 -0
  7. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
  8. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +20 -65
  9. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  10. package/lib/commonjs/components/UserActionBar.js +1 -3
  11. package/lib/commonjs/components/UserActionBar.js.map +1 -1
  12. package/lib/commonjs/components/UserSelectableBar.js +1 -3
  13. package/lib/commonjs/components/UserSelectableBar.js.map +1 -1
  14. package/lib/commonjs/constants.js +7 -1
  15. package/lib/commonjs/constants.js.map +1 -1
  16. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +157 -0
  17. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -0
  18. package/lib/commonjs/{InternalErrorBoundary.js → containers/InternalErrorBoundaryContainer.js} +5 -5
  19. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -0
  20. package/lib/commonjs/{SendbirdUIKitContainer.js → containers/SendbirdUIKitContainer.js} +15 -12
  21. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -0
  22. package/lib/commonjs/contexts/PlatformService.js +4 -2
  23. package/lib/commonjs/contexts/PlatformService.js.map +1 -1
  24. package/lib/commonjs/contexts/SendbirdChat.js +6 -2
  25. package/lib/commonjs/contexts/SendbirdChat.js.map +1 -1
  26. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
  27. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  28. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +30 -7
  29. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  30. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +2 -3
  31. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  32. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  33. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  34. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +1 -1
  35. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  36. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +3 -7
  37. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  38. package/lib/commonjs/fragments/createGroupChannelFragment.js +14 -12
  39. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  40. package/lib/commonjs/fragments/createGroupChannelListFragment.js +10 -40
  41. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  42. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +1 -1
  43. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
  44. package/lib/commonjs/hooks/useContext.js.map +1 -1
  45. package/lib/commonjs/index.js +30 -3
  46. package/lib/commonjs/index.js.map +1 -1
  47. package/lib/commonjs/{InternalLocalCacheStorage.js → libs/InternalLocalCacheStorage.js} +0 -0
  48. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -0
  49. package/lib/commonjs/localization/StringSet.type.js +8 -0
  50. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  51. package/lib/commonjs/platform/createFileService.expo.js +21 -2
  52. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  53. package/lib/commonjs/platform/createFileService.native.js +20 -3
  54. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  55. package/lib/commonjs/platform/createMediaService.expo.js +64 -0
  56. package/lib/commonjs/platform/createMediaService.expo.js.map +1 -0
  57. package/lib/commonjs/platform/createMediaService.native.js +67 -0
  58. package/lib/commonjs/platform/createMediaService.native.js.map +1 -0
  59. package/lib/commonjs/platform/createNotificationService.expo.js.map +1 -1
  60. package/lib/commonjs/platform/types.js.map +1 -1
  61. package/lib/commonjs/version.js +1 -1
  62. package/lib/commonjs/version.js.map +1 -1
  63. package/lib/module/components/FileViewer.js +300 -0
  64. package/lib/module/components/FileViewer.js.map +1 -0
  65. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +100 -0
  66. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
  67. package/lib/module/components/MessageRenderer/FileMessage/index.js +6 -0
  68. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
  69. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +17 -60
  70. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  71. package/lib/module/components/UserActionBar.js +1 -1
  72. package/lib/module/components/UserActionBar.js.map +1 -1
  73. package/lib/module/components/UserSelectableBar.js +1 -1
  74. package/lib/module/components/UserSelectableBar.js.map +1 -1
  75. package/lib/module/constants.js +5 -0
  76. package/lib/module/constants.js.map +1 -1
  77. package/lib/module/containers/GroupChannelPreviewContainer.js +135 -0
  78. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -0
  79. package/lib/module/{InternalErrorBoundary.js → containers/InternalErrorBoundaryContainer.js} +5 -5
  80. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -0
  81. package/lib/module/{SendbirdUIKitContainer.js → containers/SendbirdUIKitContainer.js} +15 -12
  82. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -0
  83. package/lib/module/contexts/PlatformService.js +4 -2
  84. package/lib/module/contexts/PlatformService.js.map +1 -1
  85. package/lib/module/contexts/SendbirdChat.js +6 -2
  86. package/lib/module/contexts/SendbirdChat.js.map +1 -1
  87. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
  88. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  89. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -7
  90. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  91. package/lib/module/domain/groupChannel/module/moduleContext.js +2 -3
  92. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  93. package/lib/module/domain/groupChannel/types.js.map +1 -1
  94. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  95. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +1 -1
  96. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  97. package/lib/module/fragments/createGroupChannelCreateFragment.js +4 -4
  98. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  99. package/lib/module/fragments/createGroupChannelFragment.js +16 -14
  100. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  101. package/lib/module/fragments/createGroupChannelListFragment.js +14 -41
  102. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  103. package/lib/module/fragments/createGroupChannelMembersFragment.js +1 -1
  104. package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
  105. package/lib/module/hooks/useContext.js.map +1 -1
  106. package/lib/module/index.js +5 -2
  107. package/lib/module/index.js.map +1 -1
  108. package/lib/module/{InternalLocalCacheStorage.js → libs/InternalLocalCacheStorage.js} +0 -0
  109. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -0
  110. package/lib/module/localization/StringSet.type.js +8 -0
  111. package/lib/module/localization/StringSet.type.js.map +1 -1
  112. package/lib/module/platform/createFileService.expo.js +21 -2
  113. package/lib/module/platform/createFileService.expo.js.map +1 -1
  114. package/lib/module/platform/createFileService.native.js +20 -3
  115. package/lib/module/platform/createFileService.native.js.map +1 -1
  116. package/lib/module/platform/createMediaService.expo.js +54 -0
  117. package/lib/module/platform/createMediaService.expo.js.map +1 -0
  118. package/lib/module/platform/createMediaService.native.js +57 -0
  119. package/lib/module/platform/createMediaService.native.js.map +1 -0
  120. package/lib/module/platform/createNotificationService.expo.js.map +1 -1
  121. package/lib/module/platform/types.js.map +1 -1
  122. package/lib/module/version.js +1 -1
  123. package/lib/module/version.js.map +1 -1
  124. package/lib/typescript/src/components/FileViewer.d.ts +12 -0
  125. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +3 -0
  126. package/lib/typescript/src/components/UserActionBar.d.ts +2 -3
  127. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -3
  128. package/lib/typescript/src/constants.d.ts +5 -0
  129. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +8 -0
  130. package/lib/typescript/src/{InternalErrorBoundary.d.ts → containers/InternalErrorBoundaryContainer.d.ts} +3 -3
  131. package/lib/typescript/src/{SendbirdUIKitContainer.d.ts → containers/SendbirdUIKitContainer.d.ts} +9 -5
  132. package/lib/typescript/src/contexts/PlatformService.d.ts +3 -2
  133. package/lib/typescript/src/contexts/SendbirdChat.d.ts +5 -1
  134. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +3 -2
  135. package/lib/typescript/src/domain/groupChannel/types.d.ts +6 -2
  136. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  137. package/lib/typescript/src/hooks/useContext.d.ts +7 -5
  138. package/lib/typescript/src/index.d.ts +4 -1
  139. package/lib/typescript/src/{InternalLocalCacheStorage.d.ts → libs/InternalLocalCacheStorage.d.ts} +2 -2
  140. package/lib/typescript/src/localization/StringSet.type.d.ts +4 -0
  141. package/lib/typescript/src/platform/createMediaService.expo.d.ts +9 -0
  142. package/lib/typescript/src/platform/createMediaService.native.d.ts +9 -0
  143. package/lib/typescript/src/platform/createNotificationService.expo.d.ts +1 -1
  144. package/lib/typescript/src/platform/types.d.ts +20 -1
  145. package/lib/typescript/src/version.d.ts +1 -1
  146. package/package.json +14 -5
  147. package/src/components/FileViewer.tsx +283 -0
  148. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +91 -0
  149. package/src/components/MessageRenderer/FileMessage/index.tsx +6 -0
  150. package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +14 -54
  151. package/src/components/UserActionBar.tsx +1 -1
  152. package/src/components/UserSelectableBar.tsx +1 -1
  153. package/src/constants.ts +5 -0
  154. package/src/containers/GroupChannelPreviewContainer.tsx +117 -0
  155. package/src/{InternalErrorBoundary.tsx → containers/InternalErrorBoundaryContainer.tsx} +4 -4
  156. package/src/{SendbirdUIKitContainer.tsx → containers/SendbirdUIKitContainer.tsx} +26 -14
  157. package/src/contexts/PlatformService.tsx +15 -3
  158. package/src/contexts/SendbirdChat.tsx +13 -5
  159. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +1 -1
  160. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +23 -6
  161. package/src/domain/groupChannel/module/moduleContext.tsx +6 -13
  162. package/src/domain/groupChannel/types.ts +8 -2
  163. package/src/domain/groupChannelList/types.ts +3 -2
  164. package/src/domain/groupChannelSettings/module/moduleContext.tsx +5 -10
  165. package/src/fragments/createGroupChannelCreateFragment.tsx +38 -41
  166. package/src/fragments/createGroupChannelFragment.tsx +24 -34
  167. package/src/fragments/createGroupChannelListFragment.tsx +13 -35
  168. package/src/fragments/createGroupChannelMembersFragment.tsx +34 -39
  169. package/src/hooks/useContext.ts +3 -5
  170. package/src/index.ts +6 -2
  171. package/src/{InternalLocalCacheStorage.ts → libs/InternalLocalCacheStorage.ts} +1 -1
  172. package/src/localization/StringSet.type.ts +8 -0
  173. package/src/platform/createFileService.expo.ts +17 -2
  174. package/src/platform/createFileService.native.ts +16 -3
  175. package/src/platform/createMediaService.expo.tsx +30 -0
  176. package/src/platform/createMediaService.native.tsx +37 -0
  177. package/src/platform/createNotificationService.expo.ts +1 -1
  178. package/src/platform/types.ts +26 -1
  179. package/src/version.ts +1 -1
  180. package/lib/commonjs/InternalErrorBoundary.js.map +0 -1
  181. package/lib/commonjs/InternalLocalCacheStorage.js.map +0 -1
  182. package/lib/commonjs/SendbirdUIKitContainer.js.map +0 -1
  183. package/lib/module/InternalErrorBoundary.js.map +0 -1
  184. package/lib/module/InternalLocalCacheStorage.js.map +0 -1
  185. package/lib/module/SendbirdUIKitContainer.js.map +0 -1
@@ -5,17 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
11
11
 
12
- var _uikitUtils = require("@sendbird/uikit-utils");
12
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
13
 
14
14
  var _useContext = require("../../hooks/useContext");
15
15
 
16
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
18
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
20
18
  const SIZE = 16;
21
19
 
@@ -25,60 +23,22 @@ const MessageOutgoingStatus = _ref => {
25
23
  message
26
24
  } = _ref;
27
25
  if (!message.isUserMessage() && !message.isFileMessage()) return null;
28
- const handlerId = (0, _uikitUtils.useUniqId)('MessageOutgoingStatus');
29
26
  const {
30
- sdk,
31
- features
27
+ sdk
32
28
  } = (0, _useContext.useSendbirdChat)();
33
29
  const {
34
30
  colors
35
31
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
36
- const [state, setState] = (0, _react.useState)(() => ({
37
- unreadCount: channel.getUnreadMemberCount(message),
38
- undeliveredCount: channel.getUndeliveredMemberCount(message)
39
- }));
40
-
41
- const getCounts = (channel, message) => {
42
- return {
43
- unreadCount: channel.getUnreadMemberCount(message),
44
- undeliveredCount: channel.getUndeliveredMemberCount(message)
45
- };
46
- };
47
-
48
- (0, _react.useEffect)(() => {
49
- const id = String(handlerId);
50
-
51
- if (message.sendingStatus === 'succeeded' && state.unreadCount === 0 && state.undeliveredCount === 0) {
52
- sdk.removeChannelHandler(id);
53
- } else {
54
- const handler = new sdk.ChannelHandler();
55
-
56
- handler.onReadReceiptUpdated = channel => {
57
- if (channel.url === message.channelUrl) setState(getCounts(channel, message));
58
- };
59
-
60
- if (features.deliveryReceiptEnabled) {
61
- handler.onDeliveryReceiptUpdated = channel => {
62
- if (channel.url === message.channelUrl && channel.isGroupChannel()) setState(getCounts(channel, message));
63
- };
64
- }
65
-
66
- sdk.addChannelHandler(id, handler);
67
- }
68
-
69
- return () => {
70
- sdk.removeChannelHandler(id);
71
- };
72
- }, [message.sendingStatus]);
73
-
74
- if (message.sendingStatus === 'pending') {
32
+ const outgoingStatus = (0, _uikitChatHooks.useMessageOutgoingStatus)(sdk, channel, message);
33
+
34
+ if (outgoingStatus === 'PENDING') {
75
35
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.LoadingSpinner, {
76
36
  size: SIZE,
77
37
  style: styles.container
78
38
  });
79
39
  }
80
40
 
81
- if (message.sendingStatus === 'failed') {
41
+ if (outgoingStatus === 'FAILED') {
82
42
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
83
43
  icon: 'error',
84
44
  size: SIZE,
@@ -87,7 +47,7 @@ const MessageOutgoingStatus = _ref => {
87
47
  });
88
48
  }
89
49
 
90
- if (state.unreadCount === 0) {
50
+ if (outgoingStatus === 'READ') {
91
51
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
92
52
  icon: 'done-all',
93
53
  size: SIZE,
@@ -96,16 +56,16 @@ const MessageOutgoingStatus = _ref => {
96
56
  });
97
57
  }
98
58
 
99
- if (features.deliveryReceiptEnabled) {
100
- if (state.undeliveredCount === 0) {
101
- return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
102
- icon: 'done-all',
103
- size: SIZE,
104
- color: colors.onBackground03,
105
- style: styles.container
106
- });
107
- }
59
+ if (outgoingStatus === 'UNREAD' || outgoingStatus === 'DELIVERED') {
60
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
61
+ icon: 'done-all',
62
+ size: SIZE,
63
+ color: colors.onBackground03,
64
+ style: styles.container
65
+ });
66
+ }
108
67
 
68
+ if (outgoingStatus === 'UNDELIVERED') {
109
69
  return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
110
70
  icon: 'done',
111
71
  size: SIZE,
@@ -114,12 +74,7 @@ const MessageOutgoingStatus = _ref => {
114
74
  });
115
75
  }
116
76
 
117
- return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
118
- icon: 'done-all',
119
- size: SIZE,
120
- color: colors.onBackground03,
121
- style: styles.container
122
- });
77
+ return null;
123
78
  };
124
79
 
125
80
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
@@ -1 +1 @@
1
- {"version":3,"names":["SIZE","MessageOutgoingStatus","channel","message","isUserMessage","isFileMessage","handlerId","useUniqId","sdk","features","useSendbirdChat","colors","useUIKitTheme","state","setState","useState","unreadCount","getUnreadMemberCount","undeliveredCount","getUndeliveredMemberCount","getCounts","useEffect","id","String","sendingStatus","removeChannelHandler","handler","ChannelHandler","onReadReceiptUpdated","url","channelUrl","deliveryReceiptEnabled","onDeliveryReceiptUpdated","isGroupChannel","addChannelHandler","styles","container","error","secondary","onBackground03","createStyleSheet","marginRight","React","memo"],"sources":["MessageOutgoingStatus.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport { Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\n\nconst SIZE = 16;\n\ntype Props = { channel: SendbirdGroupChannel; message: SendbirdMessage };\nconst MessageOutgoingStatus = ({ channel, message }: Props) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return null;\n\n const handlerId = useUniqId('MessageOutgoingStatus');\n\n const { sdk, features } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n\n const [state, setState] = useState(() => ({\n unreadCount: channel.getUnreadMemberCount(message),\n undeliveredCount: channel.getUndeliveredMemberCount(message),\n }));\n\n const getCounts = (channel: SendbirdGroupChannel, message: SendbirdUserMessage | SendbirdFileMessage) => {\n return {\n unreadCount: channel.getUnreadMemberCount(message),\n undeliveredCount: channel.getUndeliveredMemberCount(message),\n };\n };\n\n useEffect(() => {\n const id = String(handlerId);\n if (message.sendingStatus === 'succeeded' && state.unreadCount === 0 && state.undeliveredCount === 0) {\n sdk.removeChannelHandler(id);\n } else {\n const handler = new sdk.ChannelHandler();\n handler.onReadReceiptUpdated = (channel) => {\n if (channel.url === message.channelUrl) setState(getCounts(channel, message));\n };\n\n if (features.deliveryReceiptEnabled) {\n handler.onDeliveryReceiptUpdated = (channel) => {\n if (channel.url === message.channelUrl && channel.isGroupChannel()) setState(getCounts(channel, message));\n };\n }\n sdk.addChannelHandler(id, handler);\n }\n\n return () => {\n sdk.removeChannelHandler(id);\n };\n }, [message.sendingStatus]);\n\n if (message.sendingStatus === 'pending') {\n return <LoadingSpinner size={SIZE} style={styles.container} />;\n }\n\n if (message.sendingStatus === 'failed') {\n return <Icon icon={'error'} size={SIZE} color={colors.error} style={styles.container} />;\n }\n\n if (state.unreadCount === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.secondary} style={styles.container} />;\n }\n\n if (features.deliveryReceiptEnabled) {\n if (state.undeliveredCount === 0) {\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n return <Icon icon={'done'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n};\n\nconst styles = createStyleSheet({\n container: {\n marginRight: 4,\n },\n});\n\nexport default React.memo(MessageOutgoingStatus);\n"],"mappings":"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"}
1
+ {"version":3,"names":["SIZE","MessageOutgoingStatus","channel","message","isUserMessage","isFileMessage","sdk","useSendbirdChat","colors","useUIKitTheme","outgoingStatus","useMessageOutgoingStatus","styles","container","error","secondary","onBackground03","createStyleSheet","marginRight","React","memo"],"sources":["MessageOutgoingStatus.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport { Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\n\nconst SIZE = 16;\n\ntype Props = { channel: SendbirdGroupChannel; message: SendbirdMessage };\nconst MessageOutgoingStatus = ({ channel, message }: Props) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return null;\n\n const { sdk } = useSendbirdChat();\n const { colors } = useUIKitTheme();\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, message);\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={SIZE} style={styles.container} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={SIZE} color={colors.error} style={styles.container} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={SIZE} color={colors.secondary} style={styles.container} />;\n }\n\n if (outgoingStatus === 'UNREAD' || outgoingStatus === 'DELIVERED') {\n return <Icon icon={'done-all'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={SIZE} color={colors.onBackground03} style={styles.container} />;\n }\n\n return null;\n};\n\nconst styles = createStyleSheet({\n container: {\n marginRight: 4,\n },\n});\n\nexport default React.memo(MessageOutgoingStatus);\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAGA;;;;AAEA,MAAMA,IAAI,GAAG,EAAb;;AAGA,MAAMC,qBAAqB,GAAG,QAAiC;EAAA,IAAhC;IAAEC,OAAF;IAAWC;EAAX,CAAgC;EAC7D,IAAI,CAACA,OAAO,CAACC,aAAR,EAAD,IAA4B,CAACD,OAAO,CAACE,aAAR,EAAjC,EAA0D,OAAO,IAAP;EAE1D,MAAM;IAAEC;EAAF,IAAU,IAAAC,2BAAA,GAAhB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAMC,cAAc,GAAG,IAAAC,wCAAA,EAAyBL,GAAzB,EAA8BJ,OAA9B,EAAuCC,OAAvC,CAAvB;;EAEA,IAAIO,cAAc,KAAK,SAAvB,EAAkC;IAChC,oBAAO,6BAAC,0CAAD;MAAgB,IAAI,EAAEV,IAAtB;MAA4B,KAAK,EAAEY,MAAM,CAACC;IAA1C,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,QAAvB,EAAiC;IAC/B,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,OAAZ;MAAqB,IAAI,EAAEV,IAA3B;MAAiC,KAAK,EAAEQ,MAAM,CAACM,KAA/C;MAAsD,KAAK,EAAEF,MAAM,CAACC;IAApE,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,MAAvB,EAA+B;IAC7B,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,UAAZ;MAAwB,IAAI,EAAEV,IAA9B;MAAoC,KAAK,EAAEQ,MAAM,CAACO,SAAlD;MAA6D,KAAK,EAAEH,MAAM,CAACC;IAA3E,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,QAAnB,IAA+BA,cAAc,KAAK,WAAtD,EAAmE;IACjE,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,UAAZ;MAAwB,IAAI,EAAEV,IAA9B;MAAoC,KAAK,EAAEQ,MAAM,CAACQ,cAAlD;MAAkE,KAAK,EAAEJ,MAAM,CAACC;IAAhF,EAAP;EACD;;EAED,IAAIH,cAAc,KAAK,aAAvB,EAAsC;IACpC,oBAAO,6BAAC,gCAAD;MAAM,IAAI,EAAE,MAAZ;MAAoB,IAAI,EAAEV,IAA1B;MAAgC,KAAK,EAAEQ,MAAM,CAACQ,cAA9C;MAA8D,KAAK,EAAEJ,MAAM,CAACC;IAA5E,EAAP;EACD;;EAED,OAAO,IAAP;AACD,CA5BD;;AA8BA,MAAMD,MAAM,GAAG,IAAAK,4CAAA,EAAiB;EAC9BJ,SAAS,EAAE;IACTK,WAAW,EAAE;EADJ;AADmB,CAAjB,CAAf;;4BAMeC,cAAA,CAAMC,IAAN,CAAWnB,qBAAX,C"}
@@ -89,8 +89,6 @@ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
89
89
  marginRight: 8
90
90
  }
91
91
  });
92
-
93
- var _default = /*#__PURE__*/_react.default.memo(UserActionBar);
94
-
92
+ var _default = UserActionBar;
95
93
  exports.default = _default;
96
94
  //# sourceMappingURL=UserActionBar.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UserActionBar","muted","uri","name","disabled","onPressActionMenu","label","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","createStyleSheet","flexDirection","alignItems","width","height","marginLeft","marginRight","flex","paddingRight","borderBottomWidth","padding","React","memo"],"sources":["UserActionBar.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n label?: string;\n muted: boolean;\n disabled: boolean;\n onPressActionMenu?: () => void;\n};\nconst UserActionBar = ({ muted, uri, name, disabled, onPressActionMenu, label }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);\n\n return (\n <View style={styles.container}>\n <Avatar muted={muted} size={36} uri={uri} containerStyle={styles.avatar} />\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n {Boolean(label) && (\n <Text body2 color={colors.onBackground02} style={styles.label}>\n {label}\n </Text>\n )}\n {Boolean(onPressActionMenu) && (\n <TouchableOpacity onPress={onPressActionMenu} disabled={disabled}>\n <Icon color={iconColor} size={24} icon={'more'} containerStyle={styles.iconContainer} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n },\n avatar: {\n marginLeft: 16,\n marginRight: 16,\n },\n label: {\n marginRight: 4,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n paddingRight: 12,\n borderBottomWidth: 1,\n },\n iconContainer: {\n padding: 4,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default React.memo(UserActionBar);\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAUA,MAAMA,aAAa,GAAG,QAAqE;EAAA,IAApE;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,iBAA9B;IAAiDC;EAAjD,CAAoE;EACzF,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAAkB,CAACN,QAAD,CAAlB,EAA8B,CAACG,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,cAA/B,CAA9B,CAAlB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,kCAAD;IAAQ,KAAK,EAAEb,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC,GAArC;IAA0C,cAAc,EAAEW,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEV,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACV,IAAhD;IAAsD,KAAK,EAAEI,MAAM,CAACK;EAApE,GACGT,IADH,CADF,EAIGe,OAAO,CAACZ,KAAD,CAAP,iBACC,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEC,MAAM,CAACY,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACP;EAAxD,GACGA,KADH,CALJ,EASGY,OAAO,CAACb,iBAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAED;EAAxD,gBACE,6BAAC,gCAAD;IAAM,KAAK,EAAEK,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEI,MAAM,CAACO;EAAvE,EADF,CAVJ,CAFF,CADF;AAoBD,CAzBD;;AA2BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BrB,KAAK,EAAE;IACLqB,WAAW,EAAE;EADR,CAXuB;EAc9BX,aAAa,EAAE;IACbS,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BV,aAAa,EAAE;IACbW,OAAO,EAAE;EADI,CAtBe;EAyB9B5B,IAAI,EAAE;IACJyB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAjB,CAAf;;4BA+BeK,cAAA,CAAMC,IAAN,CAAWjC,aAAX,C"}
1
+ {"version":3,"names":["UserActionBar","muted","uri","name","disabled","onPressActionMenu","label","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","createStyleSheet","flexDirection","alignItems","width","height","marginLeft","marginRight","flex","paddingRight","borderBottomWidth","padding"],"sources":["UserActionBar.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n label?: string;\n muted: boolean;\n disabled: boolean;\n onPressActionMenu?: () => void;\n};\nconst UserActionBar = ({ muted, uri, name, disabled, onPressActionMenu, label }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);\n\n return (\n <View style={styles.container}>\n <Avatar muted={muted} size={36} uri={uri} containerStyle={styles.avatar} />\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n {Boolean(label) && (\n <Text body2 color={colors.onBackground02} style={styles.label}>\n {label}\n </Text>\n )}\n {Boolean(onPressActionMenu) && (\n <TouchableOpacity onPress={onPressActionMenu} disabled={disabled}>\n <Icon color={iconColor} size={24} icon={'more'} containerStyle={styles.iconContainer} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n },\n avatar: {\n marginLeft: 16,\n marginRight: 16,\n },\n label: {\n marginRight: 4,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n paddingRight: 12,\n borderBottomWidth: 1,\n },\n iconContainer: {\n padding: 4,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default UserActionBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAUA,MAAMA,aAAa,GAAG,QAAqE;EAAA,IAApE;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,iBAA9B;IAAiDC;EAAjD,CAAoE;EACzF,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAAkB,CAACN,QAAD,CAAlB,EAA8B,CAACG,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,cAA/B,CAA9B,CAAlB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,kCAAD;IAAQ,KAAK,EAAEb,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC,GAArC;IAA0C,cAAc,EAAEW,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEV,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACV,IAAhD;IAAsD,KAAK,EAAEI,MAAM,CAACK;EAApE,GACGT,IADH,CADF,EAIGe,OAAO,CAACZ,KAAD,CAAP,iBACC,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEC,MAAM,CAACY,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACP;EAAxD,GACGA,KADH,CALJ,EASGY,OAAO,CAACb,iBAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAED;EAAxD,gBACE,6BAAC,gCAAD;IAAM,KAAK,EAAEK,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEI,MAAM,CAACO;EAAvE,EADF,CAVJ,CAFF,CADF;AAoBD,CAzBD;;AA2BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BrB,KAAK,EAAE;IACLqB,WAAW,EAAE;EADR,CAXuB;EAc9BX,aAAa,EAAE;IACbS,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BV,aAAa,EAAE;IACbW,OAAO,EAAE;EADI,CAtBe;EAyB9B5B,IAAI,EAAE;IACJyB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAjB,CAAf;eA+Be3B,a"}
@@ -71,8 +71,6 @@ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
71
71
  marginRight: 8
72
72
  }
73
73
  });
74
-
75
- var _default = /*#__PURE__*/_react.default.memo(UserSelectableBar);
76
-
74
+ var _default = UserSelectableBar;
77
75
  exports.default = _default;
78
76
  //# sourceMappingURL=UserSelectableBar.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UserSelectableBar","uri","name","selected","disabled","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","primary","onBackground03","styles","container","avatar","infoContainer","borderBottomColor","onBackground01","createStyleSheet","flexDirection","alignItems","width","height","paddingHorizontal","marginRight","flex","borderBottomWidth","React","memo"],"sources":["UserSelectableBar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n selected: boolean;\n disabled: boolean;\n};\nconst UserSelectableBar = ({ uri, name, selected, disabled }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining(\n [disabled, selected],\n [colors.onBackground04, colors.primary, colors.onBackground03],\n );\n\n return (\n <View style={styles.container}>\n <Avatar size={36} uri={uri} containerStyle={styles.avatar} />\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n <Icon color={iconColor} size={24} icon={selected ? 'checkbox-on' : 'checkbox-off'} />\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n paddingHorizontal: 16,\n },\n avatar: {\n marginRight: 16,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n borderBottomWidth: 1,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default React.memo(UserSelectableBar);\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAQA,MAAMA,iBAAiB,GAAG,QAA8C;EAAA,IAA7C;IAAEC,GAAF;IAAOC,IAAP;IAAaC,QAAb;IAAuBC;EAAvB,CAA6C;EACtE,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAChB,CAACJ,QAAD,EAAWD,QAAX,CADgB,EAEhB,CAACE,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,OAA/B,EAAwCL,MAAM,CAACM,cAA/C,CAFgB,CAAlB;EAKA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,EAAEZ,GAAvB;IAA4B,cAAc,EAAEW,MAAM,CAACE;EAAnD,EADF,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEX,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEG,MAAM,CAACV,IAAhD;IAAsD,KAAK,EAAEG,MAAM,CAACY;EAApE,GACGf,IADH,CADF,eAIE,6BAAC,gCAAD;IAAM,KAAK,EAAEK,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAEJ,QAAQ,GAAG,aAAH,GAAmB;EAAnE,EAJF,CAFF,CADF;AAWD,CAnBD;;AAqBA,MAAMS,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,SAAS,EAAE;IACTM,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE,EAJC;IAKTC,iBAAiB,EAAE;EALV,CADmB;EAQ9BT,MAAM,EAAE;IACNU,WAAW,EAAE;EADP,CARsB;EAW9BT,aAAa,EAAE;IACbO,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,iBAAiB,EAAE;EALN,CAXe;EAkB9BxB,IAAI,EAAE;IACJuB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAlBwB,CAAjB,CAAf;;4BAwBeG,cAAA,CAAMC,IAAN,CAAW5B,iBAAX,C"}
1
+ {"version":3,"names":["UserSelectableBar","uri","name","selected","disabled","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","primary","onBackground03","styles","container","avatar","infoContainer","borderBottomColor","onBackground01","createStyleSheet","flexDirection","alignItems","width","height","paddingHorizontal","marginRight","flex","borderBottomWidth"],"sources":["UserSelectableBar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n selected: boolean;\n disabled: boolean;\n};\nconst UserSelectableBar = ({ uri, name, selected, disabled }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining(\n [disabled, selected],\n [colors.onBackground04, colors.primary, colors.onBackground03],\n );\n\n return (\n <View style={styles.container}>\n <Avatar size={36} uri={uri} containerStyle={styles.avatar} />\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n <Icon color={iconColor} size={24} icon={selected ? 'checkbox-on' : 'checkbox-off'} />\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n paddingHorizontal: 16,\n },\n avatar: {\n marginRight: 16,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n borderBottomWidth: 1,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default UserSelectableBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAQA,MAAMA,iBAAiB,GAAG,QAA8C;EAAA,IAA7C;IAAEC,GAAF;IAAOC,IAAP;IAAaC,QAAb;IAAuBC;EAAvB,CAA6C;EACtE,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAChB,CAACJ,QAAD,EAAWD,QAAX,CADgB,EAEhB,CAACE,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,OAA/B,EAAwCL,MAAM,CAACM,cAA/C,CAFgB,CAAlB;EAKA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,EAAEZ,GAAvB;IAA4B,cAAc,EAAEW,MAAM,CAACE;EAAnD,EADF,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEX,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEG,MAAM,CAACV,IAAhD;IAAsD,KAAK,EAAEG,MAAM,CAACY;EAApE,GACGf,IADH,CADF,eAIE,6BAAC,gCAAD;IAAM,KAAK,EAAEK,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAEJ,QAAQ,GAAG,aAAH,GAAmB;EAAnE,EAJF,CAFF,CADF;AAWD,CAnBD;;AAqBA,MAAMS,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,SAAS,EAAE;IACTM,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE,EAJC;IAKTC,iBAAiB,EAAE;EALV,CADmB;EAQ9BT,MAAM,EAAE;IACNU,WAAW,EAAE;EADP,CARsB;EAW9BT,aAAa,EAAE;IACbO,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,iBAAiB,EAAE;EALN,CAXe;EAkB9BxB,IAAI,EAAE;IACJuB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAlBwB,CAAjB,CAAf;eAwBexB,iB"}
@@ -3,7 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.DEFAULT_LONG_PRESS_DELAY = void 0;
6
+ exports.DEPRECATION_WARNING = exports.DEFAULT_LONG_PRESS_DELAY = void 0;
7
7
  const DEFAULT_LONG_PRESS_DELAY = 350;
8
8
  exports.DEFAULT_LONG_PRESS_DELAY = DEFAULT_LONG_PRESS_DELAY;
9
+ const DEPRECATION_WARNING = {
10
+ GROUP_CHANNEL: {
11
+ ON_PRESS_IMAGE_MESSAGE: '`onPressImageMessage` is deprecated, please use `onPressMediaMessage` instead'
12
+ }
13
+ };
14
+ exports.DEPRECATION_WARNING = DEPRECATION_WARNING;
9
15
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_LONG_PRESS_DELAY"],"sources":["constants.ts"],"sourcesContent":["export const DEFAULT_LONG_PRESS_DELAY = 350;\n"],"mappings":";;;;;;AAAO,MAAMA,wBAAwB,GAAG,GAAjC"}
1
+ {"version":3,"names":["DEFAULT_LONG_PRESS_DELAY","DEPRECATION_WARNING","GROUP_CHANNEL","ON_PRESS_IMAGE_MESSAGE"],"sources":["constants.ts"],"sourcesContent":["export const DEFAULT_LONG_PRESS_DELAY = 350;\nexport const DEPRECATION_WARNING = {\n GROUP_CHANNEL: {\n ON_PRESS_IMAGE_MESSAGE: '`onPressImageMessage` is deprecated, please use `onPressMediaMessage` instead',\n },\n} as const;\n"],"mappings":";;;;;;AAAO,MAAMA,wBAAwB,GAAG,GAAjC;;AACA,MAAMC,mBAAmB,GAAG;EACjCC,aAAa,EAAE;IACbC,sBAAsB,EAAE;EADX;AADkB,CAA5B"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
13
+
14
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
15
+
16
+ var _uikitUtils = require("@sendbird/uikit-utils");
17
+
18
+ var _ChannelCover = _interopRequireDefault(require("../components/ChannelCover"));
19
+
20
+ var _constants = require("../constants");
21
+
22
+ var _useContext = require("../hooks/useContext");
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ const iconMapper = {
31
+ audio: 'file-audio',
32
+ image: 'photo',
33
+ video: 'play',
34
+ file: 'file-document'
35
+ };
36
+
37
+ const GroupChannelPreviewContainer = _ref => {
38
+ let {
39
+ onPress,
40
+ onLongPress,
41
+ channel
42
+ } = _ref;
43
+ const {
44
+ currentUser,
45
+ sdk,
46
+ features
47
+ } = (0, _useContext.useSendbirdChat)();
48
+ const {
49
+ STRINGS
50
+ } = (0, _useContext.useLocalization)();
51
+ const {
52
+ colors
53
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
54
+ const [typingUsers, setTypingUsers] = (0, _react.useState)([]);
55
+
56
+ if (features.channelListTypingIndicatorEnabled) {
57
+ const typingId = (0, _uikitUtils.useUniqId)('GroupChannelPreviewContainer');
58
+ (0, _uikitChatHooks.useChannelHandler)(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {
59
+ onTypingStatusUpdated(eventChannel) {
60
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
61
+ setTypingUsers(eventChannel.getTypingUsers());
62
+ }
63
+
64
+ });
65
+ }
66
+
67
+ const outgoingStatus = (0, _uikitChatHooks.useMessageOutgoingStatus)(sdk, channel, channel.lastMessage);
68
+ const bodyText = (0, _uikitUtils.useIIFE)(() => {
69
+ if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);
70
+ });
71
+ const bodyIcon = (0, _uikitUtils.useIIFE)(() => {
72
+ var _channel$lastMessage;
73
+
74
+ if (!((_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage())) return undefined;
75
+ if (typingUsers.length > 0) return undefined;
76
+ return iconMapper[(0, _uikitUtils.getFileType)(channel.lastMessage.type || (0, _uikitUtils.getFileExtension)(channel.lastMessage.name))];
77
+ });
78
+ const titleCaptionIcon = (0, _uikitUtils.useIIFE)(() => {
79
+ if (!channel.lastMessage) return undefined;
80
+ if (!features.channelListMessageReceiptStatusEnabled) return undefined;
81
+ if (!(0, _uikitUtils.isMyMessage)(channel.lastMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return undefined;
82
+
83
+ if (outgoingStatus === 'PENDING') {
84
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.LoadingSpinner, {
85
+ size: 16,
86
+ style: styles.titleCaptionIcon
87
+ });
88
+ }
89
+
90
+ if (outgoingStatus === 'FAILED') {
91
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
92
+ icon: 'error',
93
+ size: 16,
94
+ color: colors.error,
95
+ style: styles.titleCaptionIcon
96
+ });
97
+ }
98
+
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, {
110
+ icon: 'done-all',
111
+ size: 16,
112
+ color: colors.onBackground03,
113
+ style: styles.titleCaptionIcon
114
+ });
115
+ }
116
+
117
+ if (outgoingStatus === 'READ') {
118
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
119
+ icon: 'done-all',
120
+ size: 16,
121
+ color: colors.secondary,
122
+ style: styles.titleCaptionIcon
123
+ });
124
+ }
125
+
126
+ return undefined;
127
+ });
128
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
129
+ delayLongPress: _constants.DEFAULT_LONG_PRESS_DELAY,
130
+ onPress: onPress,
131
+ onLongPress: onLongPress
132
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.GroupChannelPreview, {
133
+ customCover: /*#__PURE__*/_react.default.createElement(_ChannelCover.default, {
134
+ channel: channel,
135
+ size: 56
136
+ }),
137
+ coverUrl: channel.coverUrl,
138
+ title: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '', channel),
139
+ titleCaptionLeft: titleCaptionIcon,
140
+ titleCaption: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel),
141
+ body: bodyText,
142
+ bodyIcon: bodyIcon,
143
+ badgeCount: channel.unreadMessageCount,
144
+ memberCount: channel.memberCount > 2 ? channel.memberCount : undefined,
145
+ frozen: channel.isFrozen,
146
+ notificationOff: channel.myPushTriggerOption === 'off'
147
+ }));
148
+ };
149
+
150
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
151
+ titleCaptionIcon: {
152
+ marginRight: 4
153
+ }
154
+ });
155
+ var _default = GroupChannelPreviewContainer;
156
+ exports.default = _default;
157
+ //# sourceMappingURL=GroupChannelPreviewContainer.js.map
@@ -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
 
@@ -122,13 +122,16 @@ const SendbirdUIKitContainer = _ref => {
122
122
  }, [appId, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.localCacheStorage]);
123
123
  return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_SendbirdChat.SendbirdChatProvider, {
124
124
  sdkInstance: sdkInstance,
125
- enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? true
125
+ enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? true,
126
+ enableChannelListTypingIndicator: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListTypingIndicator) ?? false,
127
+ enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? false
126
128
  }, /*#__PURE__*/_react.default.createElement(_Localization.LocalizationProvider, {
127
129
  stringSet: (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? _StringSet.default
128
130
  }, /*#__PURE__*/_react.default.createElement(_PlatformService.PlatformServiceProvider, {
129
131
  fileService: platformServices.file,
130
132
  notificationService: platformServices.notification,
131
- clipboardService: platformServices.clipboard
133
+ clipboardService: platformServices.clipboard,
134
+ mediaService: platformServices.media
132
135
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.UIKitThemeProvider, {
133
136
  theme: (styles === null || styles === void 0 ? void 0 : styles.theme) ?? _uikitReactNativeFoundation.LightUIKitTheme
134
137
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.HeaderStyleProvider, {
@@ -137,7 +140,7 @@ const SendbirdUIKitContainer = _ref => {
137
140
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
138
141
  }, /*#__PURE__*/_react.default.createElement(LocalizedDialogProvider, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
139
142
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
140
- }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundary.default, errorBoundary, children)))))))));
143
+ }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children)))))))));
141
144
  };
142
145
 
143
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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"}
@@ -18,13 +18,15 @@ const PlatformServiceProvider = _ref => {
18
18
  children,
19
19
  fileService,
20
20
  clipboardService,
21
- notificationService
21
+ notificationService,
22
+ mediaService
22
23
  } = _ref;
23
24
  return /*#__PURE__*/_react.default.createElement(PlatformServiceContext.Provider, {
24
25
  value: {
25
26
  fileService,
26
27
  clipboardService,
27
- notificationService
28
+ notificationService,
29
+ mediaService
28
30
  }
29
31
  }, children);
30
32
  };
@@ -1 +1 @@
1
- {"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService"],"sources":["PlatformService.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { ClipboardServiceInterface, FileServiceInterface, NotificationServiceInterface } from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n}>;\n\nexport const PlatformServiceContext = React.createContext<Props | null>(null);\nexport const PlatformServiceProvider = ({ children, fileService, clipboardService, notificationService }: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;;;AAUO,MAAMA,sBAAsB,gBAAGC,cAAA,CAAMC,aAAN,CAAkC,IAAlC,CAA/B;;;;AACA,MAAMC,uBAAuB,GAAG,QAA6E;EAAA,IAA5E;IAAEC,QAAF;IAAYC,WAAZ;IAAyBC,gBAAzB;IAA2CC;EAA3C,CAA4E;EAClH,oBACE,6BAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEF,WAAF;MAAeC,gBAAf;MAAiCC;IAAjC;EAAxC,GACGH,QADH,CADF;AAKD,CANM"}
1
+ {"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformService.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;;;;AAgBO,MAAMA,sBAAsB,gBAAGC,cAAA,CAAMC,aAAN,CAAkC,IAAlC,CAA/B;;;;AACA,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,6BAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
@@ -25,7 +25,9 @@ const SendbirdChatProvider = _ref => {
25
25
  let {
26
26
  children,
27
27
  sdkInstance,
28
- enableAutoPushTokenRegistration
28
+ enableAutoPushTokenRegistration,
29
+ enableChannelListMessageReceiptStatus,
30
+ enableChannelListTypingIndicator
29
31
  } = _ref;
30
32
  const [currentUser, _setCurrentUser] = (0, _react.useState)();
31
33
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
@@ -75,7 +77,9 @@ const SendbirdChatProvider = _ref => {
75
77
  updateCurrentUserInfo,
76
78
  markAsDeliveredWithChannel,
77
79
  features: { ...appFeatures,
78
- autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration
80
+ autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,
81
+ channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,
82
+ channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus
79
83
  }
80
84
  };
81
85
  return /*#__PURE__*/_react.default.createElement(SendbirdChatContext.Provider, {