@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.
- package/README.md +11 -27
- package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
- package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
- package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
- package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
- package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
- package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
- package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +12 -11
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
- package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
- package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
- package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
- package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
- package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
- package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
- package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
- package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
- package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/commonjs/index.js +72 -40
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/libs/EmojiManager.js.map +1 -1
- package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
- package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
- package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
- package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/localization/createBaseStringSet.js +25 -3
- package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
- package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelInput/SendInput.js +23 -6
- package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
- package/lib/module/components/ChannelInput/index.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +22 -4
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
- package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
- package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
- package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
- package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
- package/lib/module/components/ThreadChatFlatList/index.js +66 -0
- package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
- package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
- package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
- package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
- package/lib/module/containers/SendbirdUIKitContainer.js +13 -12
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js +6 -0
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
- package/lib/module/domain/groupChannelThread/index.js +9 -0
- package/lib/module/domain/groupChannelThread/index.js.map +1 -0
- package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
- package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
- package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
- package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
- package/lib/module/domain/groupChannelThread/types.js +2 -0
- package/lib/module/domain/groupChannelThread/types.js.map +1 -0
- package/lib/module/fragments/createGroupChannelFragment.js +33 -7
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
- package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
- package/lib/module/hooks/useMentionSuggestion.js +5 -2
- package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/libs/EmojiManager.js.map +1 -1
- package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
- package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
- package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
- package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/localization/createBaseStringSet.js +27 -4
- package/lib/module/localization/createBaseStringSet.js.map +1 -1
- package/lib/module/platform/createMediaService.native.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
- package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
- package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
- package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
- package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
- package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
- package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
- package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
- package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
- package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +8 -10
- package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
- package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
- package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
- package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
- package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
- package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
- package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
- package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +5 -4
- package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
- package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
- package/lib/typescript/src/types.d.ts +4 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +27 -22
- package/src/components/ChannelInput/SendInput.tsx +24 -5
- package/src/components/ChannelInput/index.tsx +1 -0
- package/src/components/ChannelMessageList/index.tsx +27 -5
- package/src/components/ChannelThreadMessageList/index.tsx +406 -0
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
- package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
- package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
- package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
- package/src/components/ThreadChatFlatList/index.tsx +63 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
- package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
- package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
- package/src/containers/SendbirdUIKitContainer.tsx +28 -17
- package/src/contexts/SendbirdChatCtx.tsx +20 -0
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
- package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
- package/src/domain/groupChannel/types.ts +5 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
- package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
- package/src/domain/groupChannelThread/index.ts +8 -0
- package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
- package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
- package/src/domain/groupChannelThread/types.ts +184 -0
- package/src/fragments/createGroupChannelFragment.tsx +38 -8
- package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
- package/src/hooks/useMentionSuggestion.ts +13 -9
- package/src/index.ts +4 -0
- package/src/libs/EmojiManager.ts +2 -2
- package/src/libs/InternalLocalCacheStorage.ts +70 -21
- package/src/libs/VoiceMessageStatusManager.ts +56 -0
- package/src/localization/StringSet.type.ts +27 -0
- package/src/localization/createBaseStringSet.ts +33 -4
- package/src/platform/createMediaService.native.tsx +9 -1
- package/src/types.ts +6 -1
- package/src/version.ts +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import GroupChannelThreadHeader from '../component/GroupChannelThreadHeader';
|
|
2
|
+
import GroupChannelThreadInput from '../component/GroupChannelThreadInput';
|
|
3
|
+
import GroupChannelThreadMessageList from '../component/GroupChannelThreadMessageList';
|
|
4
|
+
import GroupChannelThreadParentMessageInfo from '../component/GroupChannelThreadParentMessageInfo';
|
|
5
|
+
import GroupChannelThreadStatusEmpty from '../component/GroupChannelThreadStatusEmpty';
|
|
6
|
+
import GroupChannelThreadStatusLoading from '../component/GroupChannelThreadStatusLoading';
|
|
7
|
+
import GroupChannelThreadSuggestedMentionList from '../component/GroupChannelThreadSuggestedMentionList';
|
|
8
|
+
import { GroupChannelThreadContextsProvider } from './moduleContext';
|
|
9
|
+
const createGroupChannelThreadModule = function () {
|
|
10
|
+
let {
|
|
11
|
+
Header = GroupChannelThreadHeader,
|
|
12
|
+
ParentMessageInfo = GroupChannelThreadParentMessageInfo,
|
|
13
|
+
MessageList = GroupChannelThreadMessageList,
|
|
14
|
+
Input = GroupChannelThreadInput,
|
|
15
|
+
SuggestedMentionList = GroupChannelThreadSuggestedMentionList,
|
|
16
|
+
StatusLoading = GroupChannelThreadStatusLoading,
|
|
17
|
+
StatusEmpty = GroupChannelThreadStatusEmpty,
|
|
18
|
+
Provider = GroupChannelThreadContextsProvider,
|
|
19
|
+
...module
|
|
20
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
21
|
+
return {
|
|
22
|
+
Header,
|
|
23
|
+
ParentMessageInfo,
|
|
24
|
+
MessageList,
|
|
25
|
+
Input,
|
|
26
|
+
SuggestedMentionList,
|
|
27
|
+
StatusEmpty,
|
|
28
|
+
StatusLoading,
|
|
29
|
+
Provider,
|
|
30
|
+
...module
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export default createGroupChannelThreadModule;
|
|
34
|
+
//# sourceMappingURL=createGroupChannelThreadModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GroupChannelThreadHeader","GroupChannelThreadInput","GroupChannelThreadMessageList","GroupChannelThreadParentMessageInfo","GroupChannelThreadStatusEmpty","GroupChannelThreadStatusLoading","GroupChannelThreadSuggestedMentionList","GroupChannelThreadContextsProvider","createGroupChannelThreadModule","Header","ParentMessageInfo","MessageList","Input","SuggestedMentionList","StatusLoading","StatusEmpty","Provider","module","arguments","length","undefined"],"sources":["createGroupChannelThreadModule.tsx"],"sourcesContent":["import GroupChannelThreadHeader from '../component/GroupChannelThreadHeader';\nimport GroupChannelThreadInput from '../component/GroupChannelThreadInput';\nimport GroupChannelThreadMessageList from '../component/GroupChannelThreadMessageList';\nimport GroupChannelThreadParentMessageInfo from '../component/GroupChannelThreadParentMessageInfo';\nimport GroupChannelThreadStatusEmpty from '../component/GroupChannelThreadStatusEmpty';\nimport GroupChannelThreadStatusLoading from '../component/GroupChannelThreadStatusLoading';\nimport GroupChannelThreadSuggestedMentionList from '../component/GroupChannelThreadSuggestedMentionList';\nimport type { GroupChannelThreadModule } from '../types';\nimport { GroupChannelThreadContextsProvider } from './moduleContext';\n\nconst createGroupChannelThreadModule = ({\n Header = GroupChannelThreadHeader,\n ParentMessageInfo = GroupChannelThreadParentMessageInfo,\n MessageList = GroupChannelThreadMessageList,\n Input = GroupChannelThreadInput,\n SuggestedMentionList = GroupChannelThreadSuggestedMentionList,\n StatusLoading = GroupChannelThreadStatusLoading,\n StatusEmpty = GroupChannelThreadStatusEmpty,\n Provider = GroupChannelThreadContextsProvider,\n ...module\n}: Partial<GroupChannelThreadModule> = {}): GroupChannelThreadModule => {\n return {\n Header,\n ParentMessageInfo,\n MessageList,\n Input,\n SuggestedMentionList,\n StatusEmpty,\n StatusLoading,\n Provider,\n ...module,\n };\n};\n\nexport default createGroupChannelThreadModule;\n"],"mappings":"AAAA,OAAOA,wBAAwB,MAAM,uCAAuC;AAC5E,OAAOC,uBAAuB,MAAM,sCAAsC;AAC1E,OAAOC,6BAA6B,MAAM,4CAA4C;AACtF,OAAOC,mCAAmC,MAAM,kDAAkD;AAClG,OAAOC,6BAA6B,MAAM,4CAA4C;AACtF,OAAOC,+BAA+B,MAAM,8CAA8C;AAC1F,OAAOC,sCAAsC,MAAM,qDAAqD;AAExG,SAASC,kCAAkC,QAAQ,iBAAiB;AAEpE,MAAMC,8BAA8B,GAAG,SAAAA,CAAA,EAUiC;EAAA,IAVhC;IACtCC,MAAM,GAAGT,wBAAwB;IACjCU,iBAAiB,GAAGP,mCAAmC;IACvDQ,WAAW,GAAGT,6BAA6B;IAC3CU,KAAK,GAAGX,uBAAuB;IAC/BY,oBAAoB,GAAGP,sCAAsC;IAC7DQ,aAAa,GAAGT,+BAA+B;IAC/CU,WAAW,GAAGX,6BAA6B;IAC3CY,QAAQ,GAAGT,kCAAkC;IAC7C,GAAGU;EAC8B,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvC,OAAO;IACLT,MAAM;IACNC,iBAAiB;IACjBC,WAAW;IACXC,KAAK;IACLC,oBAAoB;IACpBE,WAAW;IACXD,aAAa;IACbE,QAAQ;IACR,GAAGC;EACL,CAAC;AACH,CAAC;AAED,eAAeT,8BAA8B"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import React, { createContext, useRef, useState } from 'react';
|
|
2
|
+
import { Logger, NOOP, useFreshCallback } from '@sendbird/uikit-utils';
|
|
3
|
+
import ProviderLayout from '../../../components/ProviderLayout';
|
|
4
|
+
import { useLocalization } from '../../../hooks/useContext';
|
|
5
|
+
export const GroupChannelThreadContexts = {
|
|
6
|
+
Fragment: /*#__PURE__*/createContext({
|
|
7
|
+
headerTitle: '',
|
|
8
|
+
channel: {},
|
|
9
|
+
parentMessage: {},
|
|
10
|
+
setMessageToEdit: NOOP
|
|
11
|
+
}),
|
|
12
|
+
PubSub: /*#__PURE__*/createContext({
|
|
13
|
+
publish: NOOP,
|
|
14
|
+
subscribe: () => NOOP
|
|
15
|
+
}),
|
|
16
|
+
MessageList: /*#__PURE__*/createContext({
|
|
17
|
+
flatListRef: {
|
|
18
|
+
current: null
|
|
19
|
+
},
|
|
20
|
+
scrollToMessage: () => false,
|
|
21
|
+
lazyScrollToBottom: () => {
|
|
22
|
+
// noop
|
|
23
|
+
},
|
|
24
|
+
lazyScrollToIndex: () => {
|
|
25
|
+
// noop
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
};
|
|
29
|
+
export const GroupChannelThreadContextsProvider = _ref => {
|
|
30
|
+
let {
|
|
31
|
+
children,
|
|
32
|
+
channel,
|
|
33
|
+
parentMessage,
|
|
34
|
+
keyboardAvoidOffset = 0,
|
|
35
|
+
groupChannelThreadPubSub,
|
|
36
|
+
threadedMessages
|
|
37
|
+
} = _ref;
|
|
38
|
+
if (!channel) throw new Error('GroupChannel is not provided to GroupChannelThreadModule');
|
|
39
|
+
const {
|
|
40
|
+
STRINGS
|
|
41
|
+
} = useLocalization();
|
|
42
|
+
const [messageToEdit, setMessageToEdit] = useState();
|
|
43
|
+
const {
|
|
44
|
+
flatListRef,
|
|
45
|
+
lazyScrollToIndex,
|
|
46
|
+
lazyScrollToBottom,
|
|
47
|
+
scrollToMessage
|
|
48
|
+
} = useScrollActions({
|
|
49
|
+
threadedMessages: threadedMessages
|
|
50
|
+
});
|
|
51
|
+
return /*#__PURE__*/React.createElement(ProviderLayout, null, /*#__PURE__*/React.createElement(GroupChannelThreadContexts.Fragment.Provider, {
|
|
52
|
+
value: {
|
|
53
|
+
headerTitle: STRINGS.GROUP_CHANNEL_THREAD.HEADER_TITLE,
|
|
54
|
+
channel,
|
|
55
|
+
parentMessage,
|
|
56
|
+
keyboardAvoidOffset,
|
|
57
|
+
messageToEdit: messageToEdit,
|
|
58
|
+
setMessageToEdit
|
|
59
|
+
}
|
|
60
|
+
}, /*#__PURE__*/React.createElement(GroupChannelThreadContexts.PubSub.Provider, {
|
|
61
|
+
value: groupChannelThreadPubSub
|
|
62
|
+
}, /*#__PURE__*/React.createElement(GroupChannelThreadContexts.MessageList.Provider, {
|
|
63
|
+
value: {
|
|
64
|
+
flatListRef,
|
|
65
|
+
scrollToMessage,
|
|
66
|
+
lazyScrollToIndex,
|
|
67
|
+
lazyScrollToBottom
|
|
68
|
+
}
|
|
69
|
+
}, children))));
|
|
70
|
+
};
|
|
71
|
+
const useScrollActions = params => {
|
|
72
|
+
const {
|
|
73
|
+
threadedMessages
|
|
74
|
+
} = params;
|
|
75
|
+
const flatListRef = useRef(null);
|
|
76
|
+
|
|
77
|
+
// FIXME: Workaround, should run after data has been applied to UI.
|
|
78
|
+
const lazyScrollToBottom = useFreshCallback(params => {
|
|
79
|
+
if (!flatListRef.current) {
|
|
80
|
+
logFlatListRefWarning();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
if (flatListRef.current) {
|
|
85
|
+
flatListRef.current.scrollToEnd({
|
|
86
|
+
animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// FIXME: Workaround, should run after data has been applied to UI.
|
|
93
|
+
const lazyScrollToIndex = useFreshCallback(params => {
|
|
94
|
+
if (!flatListRef.current) {
|
|
95
|
+
logFlatListRefWarning();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
setTimeout(() => {
|
|
99
|
+
if (flatListRef.current) {
|
|
100
|
+
flatListRef.current.scrollToIndex({
|
|
101
|
+
index: (params === null || params === void 0 ? void 0 : params.index) ?? 0,
|
|
102
|
+
animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false,
|
|
103
|
+
viewPosition: (params === null || params === void 0 ? void 0 : params.viewPosition) ?? 0.5
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
|
|
107
|
+
});
|
|
108
|
+
const scrollToMessage = useFreshCallback((messageId, options) => {
|
|
109
|
+
if (!flatListRef.current) {
|
|
110
|
+
logFlatListRefWarning();
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const foundMessageIndex = threadedMessages.findIndex(it => it.messageId === messageId);
|
|
114
|
+
const isIncludedInList = foundMessageIndex > -1;
|
|
115
|
+
if (isIncludedInList) {
|
|
116
|
+
lazyScrollToIndex({
|
|
117
|
+
index: foundMessageIndex,
|
|
118
|
+
animated: true,
|
|
119
|
+
timeout: 0,
|
|
120
|
+
viewPosition: options === null || options === void 0 ? void 0 : options.viewPosition
|
|
121
|
+
});
|
|
122
|
+
return true;
|
|
123
|
+
} else {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
return {
|
|
128
|
+
flatListRef,
|
|
129
|
+
lazyScrollToIndex,
|
|
130
|
+
lazyScrollToBottom,
|
|
131
|
+
scrollToMessage
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
const logFlatListRefWarning = () => {
|
|
135
|
+
Logger.warn('Cannot find flatListRef.current, please render FlatList and pass the flatListRef' + 'or please try again after FlatList has been rendered.');
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=moduleContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useRef","useState","Logger","NOOP","useFreshCallback","ProviderLayout","useLocalization","GroupChannelThreadContexts","Fragment","headerTitle","channel","parentMessage","setMessageToEdit","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","GroupChannelThreadContextsProvider","_ref","children","keyboardAvoidOffset","groupChannelThreadPubSub","threadedMessages","Error","STRINGS","messageToEdit","useScrollActions","createElement","Provider","value","GROUP_CHANNEL_THREAD","HEADER_TITLE","params","logFlatListRefWarning","setTimeout","scrollToEnd","animated","timeout","scrollToIndex","index","viewPosition","messageId","options","foundMessageIndex","findIndex","it","isIncludedInList","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type {\n GroupChannelThreadContextsType,\n GroupChannelThreadModule,\n GroupChannelThreadPubSubContextPayload,\n} from '../types';\nimport { GroupChannelThreadProps } from '../types';\n\nexport const GroupChannelThreadContexts: GroupChannelThreadContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n parentMessage: {} as SendbirdUserMessage | SendbirdFileMessage,\n setMessageToEdit: NOOP,\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelThreadPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelThreadContextsProvider: GroupChannelThreadModule['Provider'] = ({\n children,\n channel,\n parentMessage,\n keyboardAvoidOffset = 0,\n groupChannelThreadPubSub,\n threadedMessages,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelThreadModule');\n\n const { STRINGS } = useLocalization();\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n threadedMessages: threadedMessages,\n });\n\n return (\n <ProviderLayout>\n <GroupChannelThreadContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL_THREAD.HEADER_TITLE,\n channel,\n parentMessage,\n keyboardAvoidOffset,\n messageToEdit: messageToEdit,\n setMessageToEdit,\n }}\n >\n <GroupChannelThreadContexts.PubSub.Provider value={groupChannelThreadPubSub}>\n <GroupChannelThreadContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n }}\n >\n {children}\n </GroupChannelThreadContexts.MessageList.Provider>\n </GroupChannelThreadContexts.PubSub.Provider>\n </GroupChannelThreadContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelThreadContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelThreadProps['Provider'], 'threadedMessages'>) => {\n const { threadedMessages } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n if (flatListRef.current) {\n flatListRef.current.scrollToEnd({ animated: params?.animated ?? false });\n }\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n if (flatListRef.current) {\n flatListRef.current.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = threadedMessages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAG9D,SAEEC,MAAM,EACNC,IAAI,EAKJC,gBAAgB,QACX,uBAAuB;AAE9B,OAAOC,cAAc,MAAM,oCAAoC;AAC/D,SAASC,eAAe,QAAQ,2BAA2B;AAS3D,OAAO,MAAMC,0BAA0D,GAAG;EACxEC,QAAQ,eAAET,aAAa,CAAC;IACtBU,WAAW,EAAE,EAAE;IACfC,OAAO,EAAE,CAAC,CAAyB;IACnCC,aAAa,EAAE,CAAC,CAA8C;IAC9DC,gBAAgB,EAAET;EACpB,CAAC,CAAC;EACFU,MAAM,eAAEd,aAAa,CAAC;IACpBe,OAAO,EAAEX,IAAI;IACbY,SAAS,EAAEA,CAAA,KAAMZ;EACnB,CAAC,CAAmD;EACpDa,WAAW,eAAEjB,aAAa,CAAC;IACzBkB,WAAW,EAAE;MAAEC,OAAO,EAAE;IAAK,CAAC;IAC9BC,eAAe,EAAEA,CAAA,KAAM,KAAK;IAC5BC,kBAAkB,EAAEA,CAAA,KAAM;MACxB;IAAA,CACD;IACDC,iBAAiB,EAAEA,CAAA,KAAM;MACvB;IAAA;EAEJ,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,kCAAwE,GAAGC,IAAA,IAOlF;EAAA,IAPmF;IACvFC,QAAQ;IACRd,OAAO;IACPC,aAAa;IACbc,mBAAmB,GAAG,CAAC;IACvBC,wBAAwB;IACxBC;EACF,CAAC,GAAAJ,IAAA;EACC,IAAI,CAACb,OAAO,EAAE,MAAM,IAAIkB,KAAK,CAAC,0DAA0D,CAAC;EAEzF,MAAM;IAAEC;EAAQ,CAAC,GAAGvB,eAAe,EAAE;EACrC,MAAM,CAACwB,aAAa,EAAElB,gBAAgB,CAAC,GAAGX,QAAQ,EAA6C;EAC/F,MAAM;IAAEgB,WAAW;IAAEI,iBAAiB;IAAED,kBAAkB;IAAED;EAAgB,CAAC,GAAGY,gBAAgB,CAAC;IAC/FJ,gBAAgB,EAAEA;EACpB,CAAC,CAAC;EAEF,oBACE7B,KAAA,CAAAkC,aAAA,CAAC3B,cAAc,qBACbP,KAAA,CAAAkC,aAAA,CAACzB,0BAA0B,CAACC,QAAQ,CAACyB,QAAQ;IAC3CC,KAAK,EAAE;MACLzB,WAAW,EAAEoB,OAAO,CAACM,oBAAoB,CAACC,YAAY;MACtD1B,OAAO;MACPC,aAAa;MACbc,mBAAmB;MACnBK,aAAa,EAAEA,aAAa;MAC5BlB;IACF;EAAE,gBAEFd,KAAA,CAAAkC,aAAA,CAACzB,0BAA0B,CAACM,MAAM,CAACoB,QAAQ;IAACC,KAAK,EAAER;EAAyB,gBAC1E5B,KAAA,CAAAkC,aAAA,CAACzB,0BAA0B,CAACS,WAAW,CAACiB,QAAQ;IAC9CC,KAAK,EAAE;MACLjB,WAAW;MACXE,eAAe;MACfE,iBAAiB;MACjBD;IACF;EAAE,GAEDI,QAAQ,CACuC,CACP,CACA,CAChC;AAErB,CAAC;AAGD,MAAMO,gBAAgB,GAAIM,MAAqE,IAAK;EAClG,MAAM;IAAEV;EAAiB,CAAC,GAAGU,MAAM;EACnC,MAAMpB,WAAW,GAAGjB,MAAM,CAA4B,IAAI,CAAC;;EAE3D;EACA,MAAMoB,kBAAkB,GAAGhB,gBAAgB,CAAgDiC,MAAM,IAAK;IACpG,IAAI,CAACpB,WAAW,CAACC,OAAO,EAAE;MACxBoB,qBAAqB,EAAE;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MACf,IAAItB,WAAW,CAACC,OAAO,EAAE;QACvBD,WAAW,CAACC,OAAO,CAACsB,WAAW,CAAC;UAAEC,QAAQ,EAAE,CAAAJ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,QAAQ,KAAI;QAAM,CAAC,CAAC;MAC1E;IACF,CAAC,EAAE,CAAAJ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEK,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;;EAEF;EACA,MAAMrB,iBAAiB,GAAGjB,gBAAgB,CAAgDiC,MAAM,IAAK;IACnG,IAAI,CAACpB,WAAW,CAACC,OAAO,EAAE;MACxBoB,qBAAqB,EAAE;MACvB;IACF;IAEAC,UAAU,CAAC,MAAM;MACf,IAAItB,WAAW,CAACC,OAAO,EAAE;QACvBD,WAAW,CAACC,OAAO,CAACyB,aAAa,CAAC;UAChCC,KAAK,EAAE,CAAAP,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,KAAK,KAAI,CAAC;UACzBH,QAAQ,EAAE,CAAAJ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,QAAQ,KAAI,KAAK;UACnCI,YAAY,EAAE,CAAAR,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEQ,YAAY,KAAI;QACxC,CAAC,CAAC;MACJ;IACF,CAAC,EAAE,CAAAR,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEK,OAAO,KAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;EAEF,MAAMvB,eAAe,GAAGf,gBAAgB,CAA6C,CAAC0C,SAAS,EAAEC,OAAO,KAAK;IAC3G,IAAI,CAAC9B,WAAW,CAACC,OAAO,EAAE;MACxBoB,qBAAqB,EAAE;MACvB,OAAO,KAAK;IACd;IAEA,MAAMU,iBAAiB,GAAGrB,gBAAgB,CAACsB,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACJ,SAAS,KAAKA,SAAS,CAAC;IACxF,MAAMK,gBAAgB,GAAGH,iBAAiB,GAAG,CAAC,CAAC;IAE/C,IAAIG,gBAAgB,EAAE;MACpB9B,iBAAiB,CAAC;QAChBuB,KAAK,EAAEI,iBAAiB;QACxBP,QAAQ,EAAE,IAAI;QACdC,OAAO,EAAE,CAAC;QACVG,YAAY,EAAEE,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF;MACzB,CAAC,CAAC;MACF,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF,CAAC,CAAC;EAEF,OAAO;IACL5B,WAAW;IACXI,iBAAiB;IACjBD,kBAAkB;IAClBD;EACF,CAAC;AACH,CAAC;AAED,MAAMmB,qBAAqB,GAAGA,CAAA,KAAM;EAClCpC,MAAM,CAACkD,IAAI,CACT,kFAAkF,GAChF,uDAAuD,CAC1D;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelThreadMessageListProps } from '../../components/ChannelThreadMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport interface GroupChannelThreadProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n startingPoint?: number;\n onParentMessageDeleted: () => void;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelThreadProps['Header']['onPressLeft'];\n onPressHeaderSubtitle?: GroupChannelThreadProps['Header']['onPressSubtitle'];\n onPressMediaMessage?: GroupChannelThreadProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelThreadProps['MessageList']['renderMessage'];\n\n enableMessageGrouping?: GroupChannelThreadProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelThreadProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelThreadProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n };\n Header: {\n onPressLeft: () => void;\n onPressSubtitle: () => void;\n };\n ParentMessageInfo: {\n channel: SendbirdGroupChannel;\n currentUserId?: string;\n onDeleteMessage: (message: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n };\n MessageList: Pick<\n ChannelThreadMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n startingPoint?: number;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n keyboardAvoidOffset?: number;\n groupChannelThreadPubSub: PubSub<GroupChannelThreadPubSubContextPayload>;\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n threadedMessages: SendbirdMessage[];\n };\n}\n\n/**\n * Internal context for GroupChannelThread\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelThreadContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n PubSub: React.Context<PubSub<GroupChannelThreadPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelThreadContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\n\nexport interface GroupChannelThreadModule {\n Provider: CommonComponent<GroupChannelThreadProps['Provider']>;\n Header: CommonComponent<GroupChannelThreadProps['Header']>;\n ParentMessageInfo: CommonComponent<GroupChannelThreadProps['ParentMessageInfo']>;\n MessageList: CommonComponent<GroupChannelThreadProps['MessageList']>;\n Input: CommonComponent<GroupChannelThreadProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelThreadProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelThreadFragment = React.FC<GroupChannelThreadProps['Fragment']>;\n\nexport type GroupChannelThreadPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
2
|
import { MessageFilter } from '@sendbird/chat/groupChannel';
|
|
3
3
|
import { ReplyType } from '@sendbird/chat/message';
|
|
4
|
-
import { Box } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import { Box, useToast } from '@sendbird/uikit-react-native-foundation';
|
|
5
5
|
import { useGroupChannelMessages } from '@sendbird/uikit-tools';
|
|
6
|
+
import { getReadableFileSize } from '@sendbird/uikit-utils';
|
|
6
7
|
import { NOOP, PASS, confirmAndMarkAsRead, messageComparator, useFreshCallback, useIIFE, useRefTracker } from '@sendbird/uikit-utils';
|
|
7
8
|
import GroupChannelMessageRenderer, { GroupChannelTypingIndicatorBubble } from '../components/GroupChannelMessageRenderer';
|
|
8
9
|
import NewMessagesButton from '../components/NewMessagesButton';
|
|
9
10
|
import ScrollToBottomButton from '../components/ScrollToBottomButton';
|
|
10
11
|
import StatusComposition from '../components/StatusComposition';
|
|
11
12
|
import createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';
|
|
12
|
-
import { usePlatformService, useSendbirdChat } from '../hooks/useContext';
|
|
13
|
+
import { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';
|
|
13
14
|
import pubsub from '../utils/pubsub';
|
|
14
15
|
const createGroupChannelFragment = initModule => {
|
|
15
16
|
const GroupChannelModule = createGroupChannelModule(initModule);
|
|
@@ -25,6 +26,7 @@ const createGroupChannelFragment = initModule => {
|
|
|
25
26
|
onPressHeaderRight = NOOP,
|
|
26
27
|
onPressMediaMessage = NOOP,
|
|
27
28
|
onChannelDeleted = NOOP,
|
|
29
|
+
onPressReplyMessageInThread = NOOP,
|
|
28
30
|
onBeforeSendUserMessage = PASS,
|
|
29
31
|
onBeforeSendFileMessage = PASS,
|
|
30
32
|
onBeforeUpdateUserMessage = PASS,
|
|
@@ -43,15 +45,24 @@ const createGroupChannelFragment = initModule => {
|
|
|
43
45
|
const {
|
|
44
46
|
sdk,
|
|
45
47
|
currentUser,
|
|
46
|
-
sbOptions
|
|
48
|
+
sbOptions,
|
|
49
|
+
voiceMessageStatusManager
|
|
47
50
|
} = useSendbirdChat();
|
|
51
|
+
const toast = useToast();
|
|
52
|
+
const {
|
|
53
|
+
STRINGS
|
|
54
|
+
} = useLocalization();
|
|
48
55
|
const [internalSearchItem, setInternalSearchItem] = useState(searchItem);
|
|
49
56
|
const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);
|
|
50
57
|
const [groupChannelPubSub] = useState(() => pubsub());
|
|
51
58
|
const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);
|
|
52
59
|
const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);
|
|
53
60
|
const replyType = useIIFE(() => {
|
|
54
|
-
if (sbOptions.uikit.groupChannel.channel.replyType === 'none')
|
|
61
|
+
if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {
|
|
62
|
+
return ReplyType.NONE;
|
|
63
|
+
} else {
|
|
64
|
+
return ReplyType.ONLY_REPLY_TO_CHANNEL;
|
|
65
|
+
}
|
|
55
66
|
});
|
|
56
67
|
const {
|
|
57
68
|
loading,
|
|
@@ -98,6 +109,7 @@ const createGroupChannelFragment = initModule => {
|
|
|
98
109
|
return Promise.allSettled([playerService.reset(), recorderService.reset()]);
|
|
99
110
|
};
|
|
100
111
|
const _onPressHeaderLeft = useFreshCallback(async () => {
|
|
112
|
+
voiceMessageStatusManager.clear();
|
|
101
113
|
await onBlurFragment();
|
|
102
114
|
onPressHeaderLeft();
|
|
103
115
|
});
|
|
@@ -109,6 +121,10 @@ const createGroupChannelFragment = initModule => {
|
|
|
109
121
|
await onBlurFragment();
|
|
110
122
|
onPressMediaMessage(message, deleteMessage, uri);
|
|
111
123
|
});
|
|
124
|
+
const _onPressReplyMessageInThread = useFreshCallback(async (message, startingPoint) => {
|
|
125
|
+
await onBlurFragment();
|
|
126
|
+
onPressReplyMessageInThread(message, startingPoint);
|
|
127
|
+
});
|
|
112
128
|
useEffect(() => {
|
|
113
129
|
return () => {
|
|
114
130
|
onBlurFragment();
|
|
@@ -160,9 +176,18 @@ const createGroupChannelFragment = initModule => {
|
|
|
160
176
|
onSent(message);
|
|
161
177
|
});
|
|
162
178
|
const onPressSendFileMessage = useFreshCallback(async params => {
|
|
179
|
+
var _processedParams$file;
|
|
163
180
|
const processedParams = await onBeforeSendFileMessage(params);
|
|
164
|
-
const
|
|
165
|
-
|
|
181
|
+
const fileSize = ((_processedParams$file = processedParams.file) === null || _processedParams$file === void 0 ? void 0 : _processedParams$file.size) ?? processedParams.fileSize;
|
|
182
|
+
const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;
|
|
183
|
+
if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {
|
|
184
|
+
const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;
|
|
185
|
+
toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');
|
|
186
|
+
return;
|
|
187
|
+
} else {
|
|
188
|
+
const message = await sendFileMessage(processedParams, onPending);
|
|
189
|
+
onSent(message);
|
|
190
|
+
}
|
|
166
191
|
});
|
|
167
192
|
const onPressUpdateUserMessage = useFreshCallback(async (message, params) => {
|
|
168
193
|
const processedParams = await onBeforeUpdateUserMessage(params);
|
|
@@ -182,7 +207,8 @@ const createGroupChannelFragment = initModule => {
|
|
|
182
207
|
enableTypingIndicator: enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator,
|
|
183
208
|
keyboardAvoidOffset: keyboardAvoidOffset,
|
|
184
209
|
messages: messages,
|
|
185
|
-
onUpdateSearchItem: onUpdateSearchItem
|
|
210
|
+
onUpdateSearchItem: onUpdateSearchItem,
|
|
211
|
+
onPressReplyMessageInThread: _onPressReplyMessageInThread
|
|
186
212
|
}, /*#__PURE__*/React.createElement(GroupChannelModule.Header, {
|
|
187
213
|
shouldHideRight: navigateFromMessageSearch,
|
|
188
214
|
onPressHeaderLeft: _onPressHeaderLeft,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","MessageFilter","ReplyType","Box","useGroupChannelMessages","NOOP","PASS","confirmAndMarkAsRead","messageComparator","useFreshCallback","useIIFE","useRefTracker","GroupChannelMessageRenderer","GroupChannelTypingIndicatorBubble","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","usePlatformService","useSendbirdChat","pubsub","createGroupChannelFragment","initModule","GroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","sdk","currentUser","sbOptions","internalSearchItem","setInternalSearchItem","navigateFromMessageSearch","Boolean","groupChannelPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","replyType","uikit","groupChannel","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","startingPoint","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","renderItem","content","isFirstItem","memoizedFlatListProps","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","MessageFilter","ReplyType","Box","useToast","useGroupChannelMessages","getReadableFileSize","NOOP","PASS","confirmAndMarkAsRead","messageComparator","useFreshCallback","useIIFE","useRefTracker","GroupChannelMessageRenderer","GroupChannelTypingIndicatorBubble","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","useLocalization","usePlatformService","useSendbirdChat","pubsub","createGroupChannelFragment","initModule","GroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","sdk","currentUser","sbOptions","voiceMessageStatusManager","toast","STRINGS","internalSearchItem","setInternalSearchItem","navigateFromMessageSearch","Boolean","groupChannelPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","replyType","uikit","groupChannel","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","startingPoint","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","clear","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","renderItem","content","isFirstItem","memoizedFlatListProps","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdSendableMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport { FileType } from '../platform/types';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onPressReplyMessageInThread = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager } = useSendbirdChat();\n const toast = useToast();\n const { STRINGS } = useLocalization();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {\n return ReplyType.NONE;\n } else {\n return ReplyType.ONLY_REPLY_TO_CHANNEL;\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n voiceMessageStatusManager.clear();\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as FileType)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n onPressReplyMessageInThread={_onPressReplyMessageInThread}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|