@sendbird/uikit-react-native 3.5.3 → 3.6.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 (234) hide show
  1. package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
  2. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  4. package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
  5. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  6. package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
  7. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
  8. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  14. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
  15. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  16. package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
  17. package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
  18. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
  19. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  20. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
  23. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  26. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
  27. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  28. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
  29. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  30. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
  31. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
  32. package/lib/commonjs/containers/SendbirdUIKitContainer.js +7 -1
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  34. package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  36. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  38. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  40. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
  42. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  43. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
  44. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  45. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
  46. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  47. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
  48. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  49. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
  50. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  51. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
  52. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  53. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
  54. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  55. package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
  56. package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
  57. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
  58. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  59. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
  60. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  61. package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
  62. package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
  63. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
  64. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  65. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
  66. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
  67. package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
  68. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  69. package/lib/commonjs/index.js +72 -40
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
  72. package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
  73. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  74. package/lib/commonjs/localization/createBaseStringSet.js +25 -3
  75. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  76. package/lib/commonjs/version.js +1 -1
  77. package/lib/commonjs/version.js.map +1 -1
  78. package/lib/module/components/ChannelInput/SendInput.js +23 -6
  79. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  80. package/lib/module/components/ChannelInput/index.js.map +1 -1
  81. package/lib/module/components/ChannelMessageList/index.js +22 -4
  82. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  83. package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
  84. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
  85. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  86. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  87. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
  88. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  89. package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
  90. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  91. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
  92. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  93. package/lib/module/components/ThreadChatFlatList/index.js +66 -0
  94. package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
  95. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
  96. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  97. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
  98. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  99. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
  100. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  101. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
  102. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  103. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
  104. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  105. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
  106. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  107. package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
  108. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
  109. package/lib/module/containers/SendbirdUIKitContainer.js +7 -1
  110. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  111. package/lib/module/contexts/SendbirdChatCtx.js +6 -0
  112. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  113. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
  114. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  115. package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
  116. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  117. package/lib/module/domain/groupChannel/types.js.map +1 -1
  118. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
  119. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  120. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
  121. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  122. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
  123. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  124. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
  125. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  126. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
  127. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  128. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
  129. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  130. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
  131. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  132. package/lib/module/domain/groupChannelThread/index.js +9 -0
  133. package/lib/module/domain/groupChannelThread/index.js.map +1 -0
  134. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
  135. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  136. package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
  137. package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  138. package/lib/module/domain/groupChannelThread/types.js +2 -0
  139. package/lib/module/domain/groupChannelThread/types.js.map +1 -0
  140. package/lib/module/fragments/createGroupChannelFragment.js +33 -7
  141. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  142. package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
  143. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
  144. package/lib/module/hooks/useMentionSuggestion.js +5 -2
  145. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  146. package/lib/module/index.js +3 -0
  147. package/lib/module/index.js.map +1 -1
  148. package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
  149. package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
  150. package/lib/module/localization/StringSet.type.js.map +1 -1
  151. package/lib/module/localization/createBaseStringSet.js +27 -4
  152. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  153. package/lib/module/version.js +1 -1
  154. package/lib/module/version.js.map +1 -1
  155. package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
  156. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
  157. package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
  158. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
  159. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
  160. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
  161. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
  162. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
  163. package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
  164. package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
  165. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
  166. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
  167. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
  168. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
  169. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
  170. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
  171. package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
  172. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +6 -4
  173. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
  174. package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
  175. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
  176. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
  177. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
  178. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
  179. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
  180. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
  181. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
  182. package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
  183. package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
  184. package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
  185. package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
  186. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  187. package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
  188. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  189. package/lib/typescript/src/index.d.ts +3 -0
  190. package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
  191. package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
  192. package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
  193. package/lib/typescript/src/version.d.ts +1 -1
  194. package/package.json +6 -6
  195. package/src/components/ChannelInput/SendInput.tsx +24 -5
  196. package/src/components/ChannelInput/index.tsx +1 -0
  197. package/src/components/ChannelMessageList/index.tsx +27 -5
  198. package/src/components/ChannelThreadMessageList/index.tsx +406 -0
  199. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
  200. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
  201. package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
  202. package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
  203. package/src/components/ThreadChatFlatList/index.tsx +63 -0
  204. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
  205. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
  206. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
  207. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
  208. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
  209. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
  210. package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
  211. package/src/containers/SendbirdUIKitContainer.tsx +9 -4
  212. package/src/contexts/SendbirdChatCtx.tsx +20 -0
  213. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
  214. package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
  215. package/src/domain/groupChannel/types.ts +5 -0
  216. package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
  217. package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
  218. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
  219. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
  220. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
  221. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
  222. package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
  223. package/src/domain/groupChannelThread/index.ts +8 -0
  224. package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
  225. package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
  226. package/src/domain/groupChannelThread/types.ts +184 -0
  227. package/src/fragments/createGroupChannelFragment.tsx +38 -8
  228. package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
  229. package/src/hooks/useMentionSuggestion.ts +13 -9
  230. package/src/index.ts +4 -0
  231. package/src/libs/VoiceMessageStatusManager.ts +56 -0
  232. package/src/localization/StringSet.type.ts +27 -0
  233. package/src/localization/createBaseStringSet.ts +33 -4
  234. package/src/version.ts +1 -1
@@ -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;
@@ -13,7 +13,7 @@ import type { StringSet } from '../localization/StringSet.type';
13
13
  import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface, PlayerServiceInterface, RecorderServiceInterface } from '../platform/types';
14
14
  import type { ErrorBoundaryProps, LocalCacheStorage } from '../types';
15
15
  export declare const SendbirdUIKit: Readonly<{
16
- VERSION: "3.5.3";
16
+ VERSION: "3.6.0";
17
17
  PLATFORM: string;
18
18
  DEFAULT: {
19
19
  AUTO_PUSH_TOKEN_REGISTRATION: boolean;
@@ -21,7 +21,6 @@ export declare const SendbirdUIKit: Readonly<{
21
21
  IMAGE_COMPRESSION: boolean;
22
22
  };
23
23
  }>;
24
- type UnimplementedFeatures = 'threadReplySelectType' | 'replyType';
25
24
  export type ChatOmittedInitParams = Omit<SendbirdChatParams<[GroupChannelModule, OpenChannelModule]>, (typeof chatOmitKeys)[number]>;
26
25
  declare const chatOmitKeys: readonly ["appId", "newInstance", "modules", "debugMode", "appVersion", "localCacheEnabled", "useAsyncStorageStore"];
27
26
  export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
@@ -40,8 +39,11 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
40
39
  } & Partial<ChatOmittedInitParams> & Partial<ChatRelatedFeaturesInUIKit>;
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'> & {
43
+ /**
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}
45
+ */
46
+ enableReactionsSupergroup: never;
45
47
  };
46
48
  groupChannelList: SBUConfig['groupChannel']['channelList'];
47
49
  groupChannelSettings: SBUConfig['groupChannel']['setting'];
@@ -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" | "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" | "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" | "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" | "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';
@@ -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;
@@ -105,6 +105,24 @@ export interface StringSet {
105
105
  /** GroupChannel > Suggested mention list */
106
106
  MENTION_LIMITED: (mentionLimit: number) => string;
107
107
  };
108
+ GROUP_CHANNEL_THREAD: {
109
+ /** GroupChannelThread > Header */
110
+ HEADER_TITLE: string;
111
+ HEADER_SUBTITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;
112
+ /** GroupChannelThread > List */
113
+ LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;
114
+ LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;
115
+ /** GroupChannelThread > Message bubble */
116
+ MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;
117
+ MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;
118
+ MESSAGE_BUBBLE_EDITED_POSTFIX: string;
119
+ MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;
120
+ MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;
121
+ PARENT_MESSAGE_TIME: (message: SendbirdMessage, locale?: Locale) => string;
122
+ REPLY_COUNT: (replyCount: number, maxReplyCount?: number) => string;
123
+ /** GroupChannelThread > Suggested mention list */
124
+ MENTION_LIMITED: (mentionLimit: number) => string;
125
+ };
108
126
  GROUP_CHANNEL_SETTINGS: {
109
127
  /** GroupChannelSettings > Header */
110
128
  HEADER_TITLE: string;
@@ -236,6 +254,8 @@ export interface StringSet {
236
254
  CHANNEL_INPUT_PLACEHOLDER_DISABLED: string;
237
255
  CHANNEL_INPUT_PLACEHOLDER_MUTED: string;
238
256
  CHANNEL_INPUT_PLACEHOLDER_REPLY: string;
257
+ CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD: string;
258
+ CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD: string;
239
259
  CHANNEL_INPUT_EDIT_OK: string;
240
260
  CHANNEL_INPUT_EDIT_CANCEL: string;
241
261
  /** ChannelInput > Attachments **/
@@ -251,6 +271,7 @@ export interface StringSet {
251
271
  CHANNEL_MESSAGE_SAVE: string;
252
272
  CHANNEL_MESSAGE_DELETE: string;
253
273
  CHANNEL_MESSAGE_REPLY: string;
274
+ CHANNEL_MESSAGE_THREAD: string;
254
275
  /** Channel > Message > Delete confirm **/
255
276
  CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: string;
256
277
  CHANNEL_MESSAGE_DELETE_CONFIRM_OK: string;
@@ -308,6 +329,8 @@ export interface StringSet {
308
329
  UNKNOWN_ERROR: string;
309
330
  GET_CHANNEL_ERROR: string;
310
331
  FIND_PARENT_MSG_ERROR: string;
332
+ THREAD_PARENT_MESSAGE_DELETED_ERROR: string;
333
+ FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR: (uploadSizeLimit: string) => string;
311
334
  };
312
335
  PROFILE_CARD: {
313
336
  BUTTON_MESSAGE: string;
@@ -1,5 +1,5 @@
1
1
  import type { Locale } from 'date-fns';
2
- import type { PartialDeep } from '@sendbird/uikit-utils';
2
+ import { PartialDeep } from '@sendbird/uikit-utils';
3
3
  import type { StringSet } from './StringSet.type';
4
4
  type StringSetCreateOptions = {
5
5
  dateLocale: Locale;
@@ -1,2 +1,2 @@
1
- declare const VERSION = "3.5.3";
1
+ declare const VERSION = "3.6.0";
2
2
  export default VERSION;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-react-native",
3
- "version": "3.5.3",
3
+ "version": "3.6.0",
4
4
  "description": "Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.",
5
5
  "keywords": [
6
6
  "sendbird",
@@ -60,10 +60,10 @@
60
60
  },
61
61
  "dependencies": {
62
62
  "@openspacelabs/react-native-zoomable-view": "^2.1.5",
63
- "@sendbird/uikit-chat-hooks": "3.5.3",
64
- "@sendbird/uikit-react-native-foundation": "3.5.3",
65
- "@sendbird/uikit-tools": "0.0.1-alpha.66",
66
- "@sendbird/uikit-utils": "3.5.3"
63
+ "@sendbird/uikit-chat-hooks": "3.6.0",
64
+ "@sendbird/uikit-react-native-foundation": "3.6.0",
65
+ "@sendbird/uikit-tools": "0.0.1-alpha.77",
66
+ "@sendbird/uikit-utils": "3.6.0"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@bam.tech/react-native-image-resizer": "^3.0.4",
@@ -203,5 +203,5 @@
203
203
  ]
204
204
  ]
205
205
  },
206
- "gitHead": "6755956a0655f69825f06abb9c4d8ae12748297c"
206
+ "gitHead": "74380f45cc34ef2d9f8a6b7f5cb9144329457c5b"
207
207
  }
@@ -53,6 +53,7 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
53
53
  channel,
54
54
  messageToReply,
55
55
  setMessageToReply,
56
+ messageForThread,
56
57
  },
57
58
  ref,
58
59
  ) {
@@ -71,11 +72,22 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
71
72
 
72
73
  const messageReplyParams = useIIFE(() => {
73
74
  const { groupChannel } = sbOptions.uikit;
74
- if (!channel.isGroupChannel() || groupChannel.channel.replyType === 'none' || !messageToReply) return {};
75
- return {
76
- parentMessageId: messageToReply.messageId,
77
- isReplyToChannel: true,
78
- };
75
+
76
+ if (channel.isGroupChannel()) {
77
+ if (groupChannel.channel.replyType === 'quote_reply' && messageToReply) {
78
+ return {
79
+ parentMessageId: messageToReply.messageId,
80
+ isReplyToChannel: true,
81
+ };
82
+ } else if (groupChannel.channel.replyType === 'thread' && messageForThread) {
83
+ return {
84
+ parentMessageId: messageForThread.messageId,
85
+ isReplyToChannel: true,
86
+ };
87
+ }
88
+ }
89
+
90
+ return {};
79
91
  });
80
92
 
81
93
  const messageMentionParams = useIIFE(() => {
@@ -152,6 +164,13 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
152
164
  if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;
153
165
  if (inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;
154
166
  if (messageToReply) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY;
167
+ if (messageForThread) {
168
+ if (messageForThread.threadInfo && messageForThread.threadInfo.replyCount > 0) {
169
+ return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD;
170
+ } else {
171
+ return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD;
172
+ }
173
+ }
155
174
 
156
175
  return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;
157
176
  };
@@ -65,6 +65,7 @@ export type ChannelInputProps = {
65
65
  // reply - only available on group channel
66
66
  messageToReply?: undefined | SendbirdUserMessage | SendbirdFileMessage;
67
67
  setMessageToReply?: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;
68
+ messageForThread?: undefined | SendbirdUserMessage | SendbirdFileMessage;
68
69
 
69
70
  // mention
70
71
  SuggestedMentionList?: CommonComponent<SuggestedMentionListProps>;