@sendbird/uikit-react-native 3.5.4 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +11 -27
  2. package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
  3. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  5. package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
  6. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
  8. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  15. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
  16. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  17. package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
  18. package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
  19. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
  20. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  23. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
  26. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  27. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
  28. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  29. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
  30. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  31. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
  32. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js +12 -11
  34. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
  40. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
  43. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  44. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
  45. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  46. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
  47. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  48. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
  49. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  50. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
  51. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  52. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
  53. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  54. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
  55. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  56. package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
  57. package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
  58. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
  59. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  60. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
  61. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  62. package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
  63. package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
  64. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
  65. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  66. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
  67. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
  68. package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
  69. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  70. package/lib/commonjs/index.js +72 -40
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/libs/EmojiManager.js.map +1 -1
  73. package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
  74. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
  75. package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
  76. package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
  77. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  78. package/lib/commonjs/localization/createBaseStringSet.js +25 -3
  79. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  80. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  81. package/lib/commonjs/types.js.map +1 -1
  82. package/lib/commonjs/version.js +1 -1
  83. package/lib/commonjs/version.js.map +1 -1
  84. package/lib/module/components/ChannelInput/SendInput.js +23 -6
  85. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +22 -4
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
  90. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
  91. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  92. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  93. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
  94. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  95. package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
  96. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
  98. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  99. package/lib/module/components/ThreadChatFlatList/index.js +66 -0
  100. package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
  101. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
  102. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  103. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
  104. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  105. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
  106. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  107. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
  108. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  109. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
  110. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  111. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
  112. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  113. package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
  114. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
  115. package/lib/module/containers/SendbirdUIKitContainer.js +13 -12
  116. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  117. package/lib/module/contexts/SendbirdChatCtx.js +6 -0
  118. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  119. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
  120. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  121. package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
  122. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  123. package/lib/module/domain/groupChannel/types.js.map +1 -1
  124. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
  125. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  126. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
  127. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  128. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
  129. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  130. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
  131. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  132. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
  133. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  134. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
  135. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  136. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
  137. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  138. package/lib/module/domain/groupChannelThread/index.js +9 -0
  139. package/lib/module/domain/groupChannelThread/index.js.map +1 -0
  140. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
  141. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  142. package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
  143. package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  144. package/lib/module/domain/groupChannelThread/types.js +2 -0
  145. package/lib/module/domain/groupChannelThread/types.js.map +1 -0
  146. package/lib/module/fragments/createGroupChannelFragment.js +33 -7
  147. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  148. package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
  149. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
  150. package/lib/module/hooks/useMentionSuggestion.js +5 -2
  151. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  152. package/lib/module/index.js +3 -0
  153. package/lib/module/index.js.map +1 -1
  154. package/lib/module/libs/EmojiManager.js.map +1 -1
  155. package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
  156. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
  157. package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
  158. package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
  159. package/lib/module/localization/StringSet.type.js.map +1 -1
  160. package/lib/module/localization/createBaseStringSet.js +27 -4
  161. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  162. package/lib/module/platform/createMediaService.native.js.map +1 -1
  163. package/lib/module/types.js.map +1 -1
  164. package/lib/module/version.js +1 -1
  165. package/lib/module/version.js.map +1 -1
  166. package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
  167. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
  168. package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
  169. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
  170. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
  171. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
  172. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
  173. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
  174. package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
  175. package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
  176. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
  177. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
  178. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
  179. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
  180. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
  181. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
  182. package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
  183. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +8 -10
  184. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
  185. package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
  186. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
  187. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
  188. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
  189. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
  190. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
  191. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
  192. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
  193. package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
  194. package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
  195. package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
  196. package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
  197. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  198. package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
  199. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  200. package/lib/typescript/src/index.d.ts +3 -0
  201. package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +5 -4
  202. package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
  203. package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
  204. package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
  205. package/lib/typescript/src/types.d.ts +4 -1
  206. package/lib/typescript/src/version.d.ts +1 -1
  207. package/package.json +27 -22
  208. package/src/components/ChannelInput/SendInput.tsx +24 -5
  209. package/src/components/ChannelInput/index.tsx +1 -0
  210. package/src/components/ChannelMessageList/index.tsx +27 -5
  211. package/src/components/ChannelThreadMessageList/index.tsx +406 -0
  212. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
  213. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
  214. package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
  215. package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
  216. package/src/components/ThreadChatFlatList/index.tsx +63 -0
  217. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
  218. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
  219. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
  220. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
  221. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
  222. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
  223. package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
  224. package/src/containers/SendbirdUIKitContainer.tsx +28 -17
  225. package/src/contexts/SendbirdChatCtx.tsx +20 -0
  226. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
  227. package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
  228. package/src/domain/groupChannel/types.ts +5 -0
  229. package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
  230. package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
  231. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
  232. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
  233. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
  234. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
  235. package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
  236. package/src/domain/groupChannelThread/index.ts +8 -0
  237. package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
  238. package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
  239. package/src/domain/groupChannelThread/types.ts +184 -0
  240. package/src/fragments/createGroupChannelFragment.tsx +38 -8
  241. package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
  242. package/src/hooks/useMentionSuggestion.ts +13 -9
  243. package/src/index.ts +4 -0
  244. package/src/libs/EmojiManager.ts +2 -2
  245. package/src/libs/InternalLocalCacheStorage.ts +70 -21
  246. package/src/libs/VoiceMessageStatusManager.ts +56 -0
  247. package/src/localization/StringSet.type.ts +27 -0
  248. package/src/localization/createBaseStringSet.ts +33 -4
  249. package/src/platform/createMediaService.native.tsx +9 -1
  250. package/src/types.ts +6 -1
  251. package/src/version.ts +1 -1
@@ -8,7 +8,8 @@ declare const _default: React.MemoExoticComponent<(props: {
8
8
  nextMessage?: SendbirdMessage | undefined;
9
9
  onPress?: (() => void) | undefined;
10
10
  onLongPress?: (() => void) | undefined;
11
- onPressParentMessage?: ((parentMessage: SendbirdMessage) => void) | undefined;
11
+ onPressParentMessage?: ((parentMessage: SendbirdMessage, childMessage: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => void) | undefined;
12
+ onReplyInThreadMessage?: ((message: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => void) | undefined;
12
13
  onShowUserProfile?: ((user: import("@sendbird/chat/groupChannel").Member | import("@sendbird/chat").User, options?: {
13
14
  hideMessageButton?: boolean | undefined;
14
15
  } | undefined) => void) | undefined;
@@ -17,5 +18,6 @@ declare const _default: React.MemoExoticComponent<(props: {
17
18
  enableMessageGrouping: boolean;
18
19
  bottomSheetItem?: import("@sendbird/uikit-react-native-foundation").BottomSheetItem | undefined;
19
20
  isFirstItem: boolean;
21
+ hideParentMessage?: boolean | undefined;
20
22
  }) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null>;
21
23
  export default _default;
@@ -7,7 +7,8 @@ declare const _default: React.MemoExoticComponent<(props: {
7
7
  nextMessage?: SendbirdMessage | undefined;
8
8
  onPress?: (() => void) | undefined;
9
9
  onLongPress?: (() => void) | undefined;
10
- onPressParentMessage?: ((parentMessage: SendbirdMessage) => void) | undefined;
10
+ onPressParentMessage?: ((parentMessage: SendbirdMessage, childMessage: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => void) | undefined;
11
+ onReplyInThreadMessage?: ((message: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => void) | undefined;
11
12
  onShowUserProfile?: ((user: import("@sendbird/chat/groupChannel").Member | import("@sendbird/chat").User, options?: {
12
13
  hideMessageButton?: boolean | undefined;
13
14
  } | undefined) => void) | undefined;
@@ -16,5 +17,6 @@ declare const _default: React.MemoExoticComponent<(props: {
16
17
  enableMessageGrouping: boolean;
17
18
  bottomSheetItem?: import("@sendbird/uikit-react-native-foundation").BottomSheetItem | undefined;
18
19
  isFirstItem: boolean;
20
+ hideParentMessage?: boolean | undefined;
19
21
  }) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null>;
20
22
  export default _default;
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { SendbirdBaseChannel, SendbirdBaseMessage } from '@sendbird/uikit-utils';
3
- declare const MessageReactionAddon: ({ channel, message }: {
3
+ export type ReactionAddonType = 'default' | 'thread_parent_message';
4
+ declare const MessageReactionAddon: ({ channel, message, reactionAddonType, }: {
4
5
  channel: SendbirdBaseChannel;
5
6
  message: SendbirdBaseMessage;
7
+ reactionAddonType?: ReactionAddonType | undefined;
6
8
  }) => React.JSX.Element | null;
7
9
  export default MessageReactionAddon;
@@ -5,8 +5,9 @@ export declare const ReactionAddons: {
5
5
  channel: import("@sendbird/chat").BaseChannel;
6
6
  message: import("@sendbird/chat/message").BaseMessage;
7
7
  }) => import("react").JSX.Element;
8
- Message: ({ channel, message }: {
8
+ Message: ({ channel, message, reactionAddonType, }: {
9
9
  channel: import("@sendbird/chat").BaseChannel;
10
10
  message: import("@sendbird/chat/message").BaseMessage;
11
+ reactionAddonType?: import("./MessageReactionAddon").ReactionAddonType | undefined;
11
12
  }) => import("react").JSX.Element | null;
12
13
  };
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { FlatListProps, FlatList as RNFlatList } from 'react-native';
3
+ import { SendbirdMessage } from '@sendbird/uikit-utils';
4
+ declare const ThreadChatFlatList: React.ForwardRefExoticComponent<Omit<FlatListProps<SendbirdMessage>, "onEndReached"> & {
5
+ onBottomReached: () => void;
6
+ onTopReached: () => void;
7
+ onScrolledAwayFromBottom: (value: boolean) => void;
8
+ } & React.RefAttributes<RNFlatList<any>>>;
9
+ export default ThreadChatFlatList;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ThreadParentMessageRendererProps } from './index';
3
+ declare const ThreadParentMessageFile: (props: ThreadParentMessageRendererProps) => React.JSX.Element | null;
4
+ export default ThreadParentMessageFile;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ThreadParentMessageRendererProps } from './index';
3
+ declare const ThreadParentMessageFileImage: (props: ThreadParentMessageRendererProps) => React.JSX.Element | null;
4
+ export default ThreadParentMessageFileImage;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { ThreadParentMessageRendererProps } from './index';
3
+ type Props = ThreadParentMessageRendererProps<{
4
+ fetchThumbnailFromVideoSource: (uri: string) => Promise<{
5
+ path: string;
6
+ } | null>;
7
+ }>;
8
+ declare const ThreadParentMessageFileVideo: (props: Props) => React.JSX.Element | null;
9
+ export default ThreadParentMessageFileVideo;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { ThreadParentMessageRendererProps } from './index';
3
+ export type VoiceFileMessageState = {
4
+ status: 'preparing' | 'playing' | 'paused';
5
+ currentTime: number;
6
+ duration: number;
7
+ };
8
+ type Props = ThreadParentMessageRendererProps<{
9
+ durationMetaArrayKey?: string;
10
+ onUnmount: () => void;
11
+ }>;
12
+ declare const ThreadParentMessageFileVoice: (props: Props) => React.JSX.Element | null;
13
+ export default ThreadParentMessageFileVoice;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { type RegexTextPattern } from '@sendbird/uikit-react-native-foundation';
3
+ import { SendbirdUserMessage } from '@sendbird/uikit-utils';
4
+ import { ThreadParentMessageRendererProps } from './index';
5
+ type Props = ThreadParentMessageRendererProps<{
6
+ regexTextPatterns?: RegexTextPattern[];
7
+ renderRegexTextChildren?: (message: SendbirdUserMessage) => string;
8
+ }>;
9
+ declare const ThreadParentMessageUser: (props: Props) => React.JSX.Element | null;
10
+ export default ThreadParentMessageUser;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { type RegexTextPattern } from '@sendbird/uikit-react-native-foundation';
3
+ import { SendbirdUserMessage } from '@sendbird/uikit-utils';
4
+ import { ThreadParentMessageRendererProps } from './index';
5
+ type Props = ThreadParentMessageRendererProps<{
6
+ regexTextPatterns?: RegexTextPattern[];
7
+ renderRegexTextChildren?: (message: SendbirdUserMessage) => string;
8
+ }>;
9
+ declare const ThreadParentMessageUserOg: (props: Props) => React.JSX.Element | null;
10
+ export default ThreadParentMessageUserOg;
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { SendbirdFileMessage, type SendbirdUser, SendbirdUserMessage } from '@sendbird/uikit-utils';
3
+ import { VoiceFileMessageState } from './ThreadParentMessage.file.voice';
4
+ export type ThreadParentMessageRendererProps<AdditionalProps = unknown> = {
5
+ parentMessage: SendbirdUserMessage | SendbirdFileMessage;
6
+ onPress?: () => void;
7
+ onLongPress?: () => void;
8
+ onPressURL?: (url: string) => void;
9
+ onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;
10
+ onToggleVoiceMessage?: (state: VoiceFileMessageState, setState: React.Dispatch<React.SetStateAction<VoiceFileMessageState>>) => Promise<void>;
11
+ } & AdditionalProps;
12
+ declare const _default: React.MemoExoticComponent<(props: {
13
+ parentMessage: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage;
14
+ onPress?: (() => void) | undefined;
15
+ onLongPress?: (() => void) | undefined;
16
+ onPressURL?: ((url: string) => void) | undefined;
17
+ onPressMentionedUser?: ((mentionedUser?: import("@sendbird/chat").User | undefined) => void) | undefined;
18
+ onToggleVoiceMessage?: ((state: VoiceFileMessageState, setState: React.Dispatch<React.SetStateAction<VoiceFileMessageState>>) => Promise<void>) | undefined;
19
+ }) => React.JSX.Element | null>;
20
+ export default _default;
@@ -4,16 +4,16 @@ import { GroupChannelModule } from '@sendbird/chat/groupChannel';
4
4
  import { OpenChannelModule } from '@sendbird/chat/openChannel';
5
5
  import type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';
6
6
  import { SBUConfig } from '@sendbird/uikit-tools';
7
- import type { PartialDeep, SendbirdChatSDK, SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
7
+ import { PartialDeep, SendbirdChatSDK, SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
8
8
  import type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';
9
9
  import type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';
10
10
  import { MentionConfigInterface } from '../libs/MentionConfig';
11
11
  import { VoiceMessageConfigInterface } from '../libs/VoiceMessageConfig';
12
12
  import type { StringSet } from '../localization/StringSet.type';
13
13
  import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface, PlayerServiceInterface, RecorderServiceInterface } from '../platform/types';
14
- import type { ErrorBoundaryProps, LocalCacheStorage } from '../types';
14
+ import { ErrorBoundaryProps, LocalCacheStorage } from '../types';
15
15
  export declare const SendbirdUIKit: Readonly<{
16
- VERSION: "3.5.4";
16
+ VERSION: "3.7.0";
17
17
  PLATFORM: string;
18
18
  DEFAULT: {
19
19
  AUTO_PUSH_TOKEN_REGISTRATION: boolean;
@@ -21,9 +21,8 @@ export declare const SendbirdUIKit: Readonly<{
21
21
  IMAGE_COMPRESSION: boolean;
22
22
  };
23
23
  }>;
24
- type UnimplementedFeatures = 'threadReplySelectType' | 'replyType' | 'enableReactionsSupergroup';
25
24
  export type ChatOmittedInitParams = Omit<SendbirdChatParams<[GroupChannelModule, OpenChannelModule]>, (typeof chatOmitKeys)[number]>;
26
- declare const chatOmitKeys: readonly ["appId", "newInstance", "modules", "debugMode", "appVersion", "localCacheEnabled", "useAsyncStorageStore"];
25
+ declare const chatOmitKeys: readonly ["appId", "newInstance", "modules", "debugMode", "appVersion", "localCacheEnabled", "useAsyncStorageStore", "useMMKVStorageStore"];
27
26
  export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
28
27
  appId: string;
29
28
  platformServices: {
@@ -34,14 +33,13 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
34
33
  player: PlayerServiceInterface;
35
34
  recorder: RecorderServiceInterface;
36
35
  };
37
- chatOptions: {
38
- localCacheStorage: LocalCacheStorage;
36
+ chatOptions: Partial<ChatOmittedInitParams> & Partial<ChatRelatedFeaturesInUIKit> & {
39
37
  onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;
40
- } & Partial<ChatOmittedInitParams> & Partial<ChatRelatedFeaturesInUIKit>;
38
+ localCacheStorage: LocalCacheStorage;
39
+ };
41
40
  uikitOptions?: PartialDeep<{
42
41
  common: SBUConfig['common'];
43
- groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures> & {
44
- replyType: Extract<SBUConfig['groupChannel']['channel']['replyType'], 'none' | 'quote_reply'>;
42
+ groupChannel: Omit<SBUConfig['groupChannel']['channel'], 'enableReactionsSupergroup'> & {
45
43
  /**
46
44
  * @deprecated Currently, this feature is turned off by default. If you wish to use this feature, contact us: {@link https://dashboard.sendbird.com/settings/contact_us?category=feedback_and_feature_requests&product=UIKit}
47
45
  */
@@ -5,7 +5,9 @@ import type EmojiManager from '../libs/EmojiManager';
5
5
  import type ImageCompressionConfig from '../libs/ImageCompressionConfig';
6
6
  import type MentionManager from '../libs/MentionManager';
7
7
  import type VoiceMessageConfig from '../libs/VoiceMessageConfig';
8
+ import VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';
8
9
  import type { FileType } from '../platform/types';
10
+ import { type PubSub } from '../utils/pubsub';
9
11
  export interface ChatRelatedFeaturesInUIKit {
10
12
  enableAutoPushTokenRegistration: boolean;
11
13
  enableUseUserIdForNickname: boolean;
@@ -15,19 +17,30 @@ interface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {
15
17
  sdkInstance: SendbirdChatSDK;
16
18
  emojiManager: EmojiManager;
17
19
  mentionManager: MentionManager;
20
+ voiceMessageStatusManager: VoiceMessageStatusManager;
18
21
  imageCompressionConfig: ImageCompressionConfig;
19
22
  voiceMessageConfig: VoiceMessageConfig;
20
23
  }
24
+ export type GroupChannelFragmentOptionsPubSubContextPayload = {
25
+ type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT';
26
+ data: {
27
+ startingPoint: number;
28
+ };
29
+ };
21
30
  export type SendbirdChatContextType = {
22
31
  sdk: SendbirdChatSDK;
23
32
  currentUser?: SendbirdUser;
24
33
  setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;
25
34
  emojiManager: EmojiManager;
26
35
  mentionManager: MentionManager;
36
+ voiceMessageStatusManager: VoiceMessageStatusManager;
27
37
  imageCompressionConfig: ImageCompressionConfig;
28
38
  voiceMessageConfig: VoiceMessageConfig;
29
39
  updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;
30
40
  markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;
41
+ groupChannelFragmentOptions: {
42
+ pubsub: PubSub<GroupChannelFragmentOptionsPubSubContextPayload>;
43
+ };
31
44
  sbOptions: {
32
45
  uikit: SBUConfig;
33
46
  uikitWithAppInfo: {
@@ -57,9 +70,10 @@ export type SendbirdChatContextType = {
57
70
  broadcastChannelEnabled: boolean;
58
71
  superGroupChannelEnabled: boolean;
59
72
  reactionEnabled: boolean;
73
+ uploadSizeLimit: number | undefined;
60
74
  };
61
75
  };
62
76
  };
63
77
  export declare const SendbirdChatContext: React.Context<SendbirdChatContextType | null>;
64
- export declare const SendbirdChatProvider: ({ children, sdkInstance, emojiManager, mentionManager, imageCompressionConfig, voiceMessageConfig, enableAutoPushTokenRegistration, enableUseUserIdForNickname, enableImageCompression, }: Props) => React.JSX.Element;
78
+ export declare const SendbirdChatProvider: ({ children, sdkInstance, emojiManager, mentionManager, voiceMessageStatusManager, imageCompressionConfig, voiceMessageConfig, enableAutoPushTokenRegistration, enableUseUserIdForNickname, enableImageCompression, }: Props) => React.JSX.Element;
65
79
  export {};
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import type { FlatList } from 'react-native';
3
3
  import type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';
4
4
  import type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';
5
- import type { OnBeforeHandler, PickPartial, SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdFileMessageUpdateParams, SendbirdGroupChannel, SendbirdMessage, SendbirdUser, SendbirdUserMessage, SendbirdUserMessageCreateParams, SendbirdUserMessageUpdateParams } from '@sendbird/uikit-utils';
5
+ import type { OnBeforeHandler, PickPartial, SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdFileMessageUpdateParams, SendbirdGroupChannel, SendbirdMessage, SendbirdSendableMessage, SendbirdUser, SendbirdUserMessage, SendbirdUserMessageCreateParams, SendbirdUserMessageUpdateParams } from '@sendbird/uikit-utils';
6
6
  import type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';
7
7
  import type { ChannelMessageListProps } from '../../components/ChannelMessageList';
8
8
  import type { CommonComponent } from '../../types';
@@ -15,6 +15,7 @@ export interface GroupChannelProps {
15
15
  onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];
16
16
  onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];
17
17
  onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];
18
+ onPressReplyMessageInThread?: GroupChannelProps['Provider']['onPressReplyMessageInThread'];
18
19
  onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;
19
20
  onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;
20
21
  onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;
@@ -58,6 +59,7 @@ export interface GroupChannelProps {
58
59
  groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;
59
60
  messages: SendbirdMessage[];
60
61
  onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;
62
+ onPressReplyMessageInThread: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;
61
63
  };
62
64
  }
63
65
  /**
@@ -120,6 +122,7 @@ export interface GroupChannelContextsType {
120
122
  timeout?: number;
121
123
  viewPosition?: number;
122
124
  }) => void;
125
+ onPressReplyMessageInThread?: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;
123
126
  }>;
124
127
  }
125
128
  export interface GroupChannelModule {
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { GroupChannelThreadProps } from '../types';
3
+ declare const GroupChannelThreadHeader: ({ onPressLeft, onPressSubtitle }: GroupChannelThreadProps['Header']) => React.JSX.Element;
4
+ export default GroupChannelThreadHeader;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<({ inputDisabled, ...props }: import("@sendbird/uikit-utils").PickPartial<import("../../../components/ChannelInput").ChannelInputProps, "onPressUpdateUserMessage" | "shouldRenderInput" | "onPressSendUserMessage" | "onPressSendFileMessage" | "onPressUpdateFileMessage" | "SuggestedMentionList" | "AttachmentsButton", "inputDisabled">) => React.JSX.Element>;
3
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<(props: Pick<import("../../../components/ChannelThreadMessageList").ChannelThreadMessageListProps<import("@sendbird/chat/groupChannel").GroupChannel>, "channel" | "onTopReached" | "onBottomReached" | "onScrolledAwayFromBottom" | "currentUserId" | "enableMessageGrouping" | "searchItem" | "hasNext" | "onDeleteMessage" | "onResendFailedMessage" | "onPressMediaMessage" | "renderMessage" | "messages" | "newMessages" | "scrolledAwayFromBottom" | "flatListProps"> & {
3
+ onResetMessageList: () => Promise<void>;
4
+ onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;
5
+ startingPoint?: number | undefined;
6
+ }) => React.JSX.Element>;
7
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<(props: {
3
+ channel: import("@sendbird/chat/groupChannel").GroupChannel;
4
+ currentUserId?: string | undefined;
5
+ onDeleteMessage: (message: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => Promise<void>;
6
+ onPressMediaMessage?: ((message: import("@sendbird/chat/message").FileMessage, deleteMessage: () => Promise<void>, uri: string) => void) | undefined;
7
+ }) => React.JSX.Element>;
8
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const GroupChannelThreadStatusEmpty: () => React.JSX.Element;
3
+ export default GroupChannelThreadStatusEmpty;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const GroupChannelThreadStatusLoading: () => React.JSX.Element;
3
+ export default GroupChannelThreadStatusLoading;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { GroupChannelThreadProps } from '../types';
3
+ declare const GroupChannelThreadSuggestedMentionList: ({ text, selection, inputHeight, bottomInset, onPressToMention, mentionedUsers, }: GroupChannelThreadProps['SuggestedMentionList']) => React.JSX.Element;
4
+ export default GroupChannelThreadSuggestedMentionList;
@@ -0,0 +1,8 @@
1
+ export { default as GroupChannelThreadHeader } from './component/GroupChannelThreadHeader';
2
+ export { default as GroupChannelThreadMessageList } from './component/GroupChannelThreadMessageList';
3
+ export { default as GroupChannelThreadInput } from './component/GroupChannelThreadInput';
4
+ export { default as GroupChannelThreadSuggestedMentionList } from './component/GroupChannelThreadSuggestedMentionList';
5
+ export { default as GroupChannelThreadStatusEmpty } from './component/GroupChannelThreadStatusEmpty';
6
+ export { default as GroupChannelThreadStatusLoading } from './component/GroupChannelThreadStatusLoading';
7
+ export { default as createGroupChannelThreadModule } from './module/createGroupChannelThreadModule';
8
+ export { GroupChannelThreadContextsProvider, GroupChannelThreadContexts } from './module/moduleContext';
@@ -0,0 +1,3 @@
1
+ import type { GroupChannelThreadModule } from '../types';
2
+ declare const createGroupChannelThreadModule: ({ Header, ParentMessageInfo, MessageList, Input, SuggestedMentionList, StatusLoading, StatusEmpty, Provider, ...module }?: Partial<GroupChannelThreadModule>) => GroupChannelThreadModule;
3
+ export default createGroupChannelThreadModule;
@@ -0,0 +1,3 @@
1
+ import type { GroupChannelThreadContextsType, GroupChannelThreadModule } from '../types';
2
+ export declare const GroupChannelThreadContexts: GroupChannelThreadContextsType;
3
+ export declare const GroupChannelThreadContextsProvider: GroupChannelThreadModule['Provider'];
@@ -0,0 +1,136 @@
1
+ import type React from 'react';
2
+ import type { FlatList } from 'react-native';
3
+ import type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';
4
+ import type { OnBeforeHandler, PickPartial, SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdFileMessageUpdateParams, SendbirdGroupChannel, SendbirdMessage, SendbirdUserMessage, SendbirdUserMessageCreateParams, SendbirdUserMessageUpdateParams } from '@sendbird/uikit-utils';
5
+ import type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';
6
+ import type { ChannelThreadMessageListProps } from '../../components/ChannelThreadMessageList';
7
+ import type { CommonComponent } from '../../types';
8
+ import type { PubSub } from '../../utils/pubsub';
9
+ export interface GroupChannelThreadProps {
10
+ Fragment: {
11
+ channel: SendbirdGroupChannel;
12
+ parentMessage: SendbirdUserMessage | SendbirdFileMessage;
13
+ startingPoint?: number;
14
+ onParentMessageDeleted: () => void;
15
+ onChannelDeleted: () => void;
16
+ onPressHeaderLeft: GroupChannelThreadProps['Header']['onPressLeft'];
17
+ onPressHeaderSubtitle?: GroupChannelThreadProps['Header']['onPressSubtitle'];
18
+ onPressMediaMessage?: GroupChannelThreadProps['MessageList']['onPressMediaMessage'];
19
+ onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;
20
+ onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;
21
+ onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;
22
+ onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;
23
+ renderMessage?: GroupChannelThreadProps['MessageList']['renderMessage'];
24
+ enableMessageGrouping?: GroupChannelThreadProps['MessageList']['enableMessageGrouping'];
25
+ keyboardAvoidOffset?: GroupChannelThreadProps['Provider']['keyboardAvoidOffset'];
26
+ flatListProps?: GroupChannelThreadProps['MessageList']['flatListProps'];
27
+ sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];
28
+ };
29
+ Header: {
30
+ onPressLeft: () => void;
31
+ onPressSubtitle: () => void;
32
+ };
33
+ ParentMessageInfo: {
34
+ channel: SendbirdGroupChannel;
35
+ currentUserId?: string;
36
+ onDeleteMessage: (message: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;
37
+ onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;
38
+ };
39
+ MessageList: Pick<ChannelThreadMessageListProps<SendbirdGroupChannel>, 'enableMessageGrouping' | 'currentUserId' | 'channel' | 'messages' | 'newMessages' | 'scrolledAwayFromBottom' | 'onScrolledAwayFromBottom' | 'onTopReached' | 'onBottomReached' | 'onResendFailedMessage' | 'onDeleteMessage' | 'onPressMediaMessage' | 'renderMessage' | 'flatListProps' | 'hasNext' | 'searchItem'> & {
40
+ onResetMessageList: () => Promise<void>;
41
+ onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;
42
+ startingPoint?: number;
43
+ };
44
+ Input: PickPartial<ChannelInputProps, 'shouldRenderInput' | 'onPressSendUserMessage' | 'onPressSendFileMessage' | 'onPressUpdateUserMessage' | 'onPressUpdateFileMessage' | 'SuggestedMentionList' | 'AttachmentsButton', 'inputDisabled'>;
45
+ SuggestedMentionList: SuggestedMentionListProps;
46
+ Provider: {
47
+ channel: SendbirdGroupChannel;
48
+ keyboardAvoidOffset?: number;
49
+ groupChannelThreadPubSub: PubSub<GroupChannelThreadPubSubContextPayload>;
50
+ parentMessage: SendbirdUserMessage | SendbirdFileMessage;
51
+ threadedMessages: SendbirdMessage[];
52
+ };
53
+ }
54
+ /**
55
+ * Internal context for GroupChannelThread
56
+ * For example, the developer can create a custom header
57
+ * with getting data from the domain context
58
+ * */
59
+ export interface GroupChannelThreadContextsType {
60
+ Fragment: React.Context<{
61
+ headerTitle: string;
62
+ keyboardAvoidOffset?: number;
63
+ channel: SendbirdGroupChannel;
64
+ parentMessage: SendbirdUserMessage | SendbirdFileMessage;
65
+ messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;
66
+ setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;
67
+ }>;
68
+ PubSub: React.Context<PubSub<GroupChannelThreadPubSubContextPayload>>;
69
+ MessageList: React.Context<{
70
+ /**
71
+ * ref object for FlatList of MessageList
72
+ * */
73
+ flatListRef: React.MutableRefObject<FlatList | null>;
74
+ /**
75
+ * Function that scrolls to a message within a group channel.
76
+ * @param messageId {number} - The id of the message to scroll.
77
+ * @param options {object} - Scroll options (optional).
78
+ * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.
79
+ * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)
80
+ *
81
+ * @example
82
+ * ```
83
+ * const { scrollToMessage } = useContext(GroupChannelThreadContexts.MessageList);
84
+ * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });
85
+ * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');
86
+ * ```
87
+ * */
88
+ scrollToMessage: (messageId: number, options?: {
89
+ focusAnimated?: boolean;
90
+ viewPosition?: number;
91
+ }) => boolean;
92
+ /**
93
+ * Call the FlatList function asynchronously to scroll to bottom lazily
94
+ * to avoid scrolling before data rendering has been committed.
95
+ * */
96
+ lazyScrollToBottom: (params?: {
97
+ animated?: boolean;
98
+ timeout?: number;
99
+ }) => void;
100
+ /**
101
+ * Call the FlatList function asynchronously to scroll to index lazily.
102
+ * to avoid scrolling before data rendering has been committed.
103
+ * */
104
+ lazyScrollToIndex: (params?: {
105
+ index?: number;
106
+ animated?: boolean;
107
+ timeout?: number;
108
+ viewPosition?: number;
109
+ }) => void;
110
+ }>;
111
+ }
112
+ export interface GroupChannelThreadModule {
113
+ Provider: CommonComponent<GroupChannelThreadProps['Provider']>;
114
+ Header: CommonComponent<GroupChannelThreadProps['Header']>;
115
+ ParentMessageInfo: CommonComponent<GroupChannelThreadProps['ParentMessageInfo']>;
116
+ MessageList: CommonComponent<GroupChannelThreadProps['MessageList']>;
117
+ Input: CommonComponent<GroupChannelThreadProps['Input']>;
118
+ SuggestedMentionList: CommonComponent<GroupChannelThreadProps['SuggestedMentionList']>;
119
+ StatusEmpty: CommonComponent;
120
+ StatusLoading: CommonComponent;
121
+ }
122
+ export type GroupChannelThreadFragment = React.FC<GroupChannelThreadProps['Fragment']>;
123
+ export type GroupChannelThreadPubSubContextPayload = {
124
+ type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';
125
+ data: {
126
+ message: SendbirdUserMessage | SendbirdFileMessage;
127
+ };
128
+ } | {
129
+ type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';
130
+ data: {
131
+ messages: SendbirdMessage[];
132
+ };
133
+ } | {
134
+ type: 'TYPING_BUBBLE_RENDERED';
135
+ data?: undefined;
136
+ };
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  declare const _default: React.MemoExoticComponent<({ onPressHeaderLeft, onPressHeaderRight, rightIconName }: {
3
- rightIconName: "search" | "stop" | "photo" | "recording" | "message" | "done" | "user" | "add" | "chat-hide" | "chat-show" | "archive" | "arrow-left" | "audio-off-filled" | "audio-off" | "audio-on-filled" | "audio-on" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "delete" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "error" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "pause" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thumbnail-none" | "unarchive";
3
+ rightIconName: "search" | "stop" | "photo" | "recording" | "delete" | "message" | "done" | "user" | "add" | "chat-hide" | "chat-show" | "archive" | "arrow-left" | "audio-off-filled" | "audio-off" | "audio-on-filled" | "audio-on" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "error" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "pause" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thread" | "thumbnail-none" | "unarchive";
4
4
  onPressHeaderLeft: () => void;
5
5
  onPressHeaderRight: () => void;
6
6
  }) => React.JSX.Element>;
@@ -0,0 +1,5 @@
1
+ import { type SendbirdMessage } from '@sendbird/uikit-utils';
2
+ import type { GroupChannelThreadFragment, GroupChannelThreadModule } from '../domain/groupChannelThread/types';
3
+ declare const createGroupChannelThreadFragment: (initModule?: Partial<GroupChannelThreadModule>) => GroupChannelThreadFragment;
4
+ export declare function threadMessageComparator(a: SendbirdMessage, b: SendbirdMessage): number;
5
+ export default createGroupChannelThreadFragment;
@@ -1,7 +1,7 @@
1
1
  import { SendbirdChannel } from '@sendbird/uikit-utils';
2
2
  import { FileType } from '../platform/types';
3
3
  export declare const useChannelInputItems: (channel: SendbirdChannel, sendFileMessage: (file: FileType) => void) => {
4
- icon?: "search" | "stop" | "photo" | "recording" | "message" | "done" | "user" | "add" | "chat-hide" | "chat-show" | "archive" | "arrow-left" | "audio-off-filled" | "audio-off" | "audio-on-filled" | "audio-on" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "delete" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "error" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "pause" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thumbnail-none" | "unarchive" | undefined;
4
+ icon?: "search" | "stop" | "photo" | "recording" | "delete" | "message" | "done" | "user" | "add" | "chat-hide" | "chat-show" | "archive" | "arrow-left" | "audio-off-filled" | "audio-off" | "audio-on-filled" | "audio-on" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "error" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "pause" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thread" | "thumbnail-none" | "unarchive" | undefined;
5
5
  iconColor?: string | undefined;
6
6
  title: string;
7
7
  titleColor?: string | undefined;
@@ -29,6 +29,7 @@ export { default as createGroupChannelRegisterOperatorFragment } from './fragmen
29
29
  export { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';
30
30
  export { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';
31
31
  export { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';
32
+ export { default as createGroupChannelThreadFragment } from './fragments/createGroupChannelThreadFragment';
32
33
  export { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';
33
34
  /** Fragments - open channels **/
34
35
  export { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';
@@ -82,6 +83,8 @@ export * from './domain/groupChannelNotifications';
82
83
  export * from './domain/groupChannelNotifications/types';
83
84
  export * from './domain/groupChannelUserList/types';
84
85
  export * from './domain/messageSearch/types';
86
+ export * from './domain/groupChannelThread';
87
+ export * from './domain/groupChannelThread/types';
85
88
  /** Feature - open channels **/
86
89
  export * from './domain/openChannel';
87
90
  export * from './domain/openChannel/types';
@@ -1,8 +1,9 @@
1
- import type { KeyValuePairGet, KeyValuePairSet, LocalCacheStorage } from '../types';
2
- export default class InternalLocalCacheStorage implements LocalCacheStorage {
3
- private storage;
1
+ import type { AsyncLocalCacheStorage, KeyValuePairGet, KeyValuePairSet, LocalCacheStorage } from '../types';
2
+ export default class InternalLocalCacheStorage implements AsyncLocalCacheStorage {
3
+ private readonly _mmkv?;
4
+ private readonly _async?;
4
5
  constructor(storage: LocalCacheStorage);
5
- getAllKeys(): Promise<readonly string[] | string[]>;
6
+ getAllKeys(): Promise<readonly string[]>;
6
7
  getItem(key: string): Promise<string | null>;
7
8
  removeItem(key: string): Promise<void>;
8
9
  setItem(key: string, value: string): Promise<void>;
@@ -0,0 +1,11 @@
1
+ declare class VoiceMessageStatusManager {
2
+ private statusMap;
3
+ private generateKey;
4
+ subscribe: (channelUrl: string, messageId: number, subscriber: (currentTime: number) => void) => void;
5
+ unsubscribe: (channelUrl: string, messageId: number, subscriber: (currentTime: number) => void) => void;
6
+ publishAll: () => void;
7
+ getCurrentTime: (channelUrl: string, messageId: number) => number;
8
+ setCurrentTime: (channelUrl: string, messageId: number, currentTime: number) => void;
9
+ clear: () => void;
10
+ }
11
+ export default VoiceMessageStatusManager;