@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.
- 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 +7 -1
- 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/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/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 +7 -1
- 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/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/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 +6 -4
- 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/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/version.d.ts +1 -1
- package/package.json +6 -6
- 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 +9 -4
- 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/VoiceMessageStatusManager.ts +56 -0
- package/src/localization/StringSet.type.ts +27 -0
- package/src/localization/createBaseStringSet.ts +33 -4
- package/src/version.ts +1 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { Box, Icon, PressBox, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
3
|
+
import { LoadingSpinner, ProgressBar } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import { createStyleSheet } from '@sendbird/uikit-react-native-foundation';
|
|
5
|
+
import { millsToMSS } from '@sendbird/uikit-utils';
|
|
6
|
+
const ThreadParentMessageFileVoice = props => {
|
|
7
|
+
const {
|
|
8
|
+
onLongPress,
|
|
9
|
+
onToggleVoiceMessage,
|
|
10
|
+
parentMessage,
|
|
11
|
+
durationMetaArrayKey = 'KEY_VOICE_MESSAGE_DURATION',
|
|
12
|
+
onUnmount
|
|
13
|
+
} = props;
|
|
14
|
+
const fileMessage = parentMessage;
|
|
15
|
+
if (!fileMessage) return null;
|
|
16
|
+
const {
|
|
17
|
+
colors
|
|
18
|
+
} = useUIKitTheme();
|
|
19
|
+
const [state, setState] = useState(() => {
|
|
20
|
+
var _meta$value;
|
|
21
|
+
const meta = fileMessage.metaArrays.find(it => it.key === durationMetaArrayKey);
|
|
22
|
+
const value = meta === null || meta === void 0 ? void 0 : (_meta$value = meta.value) === null || _meta$value === void 0 ? void 0 : _meta$value[0];
|
|
23
|
+
const initialDuration = value ? parseInt(value, 10) : 0;
|
|
24
|
+
return {
|
|
25
|
+
status: 'paused',
|
|
26
|
+
currentTime: 0,
|
|
27
|
+
duration: initialDuration
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
return () => {
|
|
32
|
+
onUnmount();
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
const uiColors = colors.ui.groupChannelMessage['incoming'];
|
|
36
|
+
const remainingTime = state.duration - state.currentTime;
|
|
37
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
38
|
+
style: styles.container,
|
|
39
|
+
backgroundColor: uiColors.enabled.background
|
|
40
|
+
}, /*#__PURE__*/React.createElement(PressBox, {
|
|
41
|
+
onPress: () => onToggleVoiceMessage === null || onToggleVoiceMessage === void 0 ? void 0 : onToggleVoiceMessage(state, setState),
|
|
42
|
+
onLongPress: onLongPress
|
|
43
|
+
}, /*#__PURE__*/React.createElement(ProgressBar, {
|
|
44
|
+
current: state.currentTime,
|
|
45
|
+
total: state.duration,
|
|
46
|
+
style: {
|
|
47
|
+
minWidth: 136,
|
|
48
|
+
height: 44
|
|
49
|
+
},
|
|
50
|
+
trackColor: uiColors.enabled.voiceProgressTrack,
|
|
51
|
+
overlay: /*#__PURE__*/React.createElement(Box, {
|
|
52
|
+
flex: 1,
|
|
53
|
+
flexDirection: 'row',
|
|
54
|
+
alignItems: 'center',
|
|
55
|
+
justifyContent: 'space-between',
|
|
56
|
+
paddingHorizontal: 12
|
|
57
|
+
}, state.status === 'preparing' ? /*#__PURE__*/React.createElement(LoadingSpinner, {
|
|
58
|
+
size: 24,
|
|
59
|
+
color: uiColors.enabled.voiceSpinner
|
|
60
|
+
}) : /*#__PURE__*/React.createElement(Icon, {
|
|
61
|
+
size: 16,
|
|
62
|
+
containerStyle: {
|
|
63
|
+
backgroundColor: uiColors.enabled.voiceActionIconBackground,
|
|
64
|
+
padding: 6,
|
|
65
|
+
borderRadius: 16
|
|
66
|
+
},
|
|
67
|
+
icon: state.status === 'paused' ? 'play' : 'pause'
|
|
68
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
69
|
+
body3: true,
|
|
70
|
+
style: {
|
|
71
|
+
lineHeight: undefined,
|
|
72
|
+
marginLeft: 6,
|
|
73
|
+
opacity: 0.88
|
|
74
|
+
},
|
|
75
|
+
color: uiColors.enabled.textVoicePlaytime
|
|
76
|
+
}, millsToMSS(state.currentTime === 0 ? state.duration : remainingTime)))
|
|
77
|
+
})));
|
|
78
|
+
};
|
|
79
|
+
const styles = createStyleSheet({
|
|
80
|
+
container: {
|
|
81
|
+
borderRadius: 16,
|
|
82
|
+
overflow: 'hidden',
|
|
83
|
+
maxWidth: 136
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
export default ThreadParentMessageFileVoice;
|
|
87
|
+
//# sourceMappingURL=ThreadParentMessage.file.voice.js.map
|
package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Box","Icon","PressBox","Text","useUIKitTheme","LoadingSpinner","ProgressBar","createStyleSheet","millsToMSS","ThreadParentMessageFileVoice","props","onLongPress","onToggleVoiceMessage","parentMessage","durationMetaArrayKey","onUnmount","fileMessage","colors","state","setState","_meta$value","meta","metaArrays","find","it","key","value","initialDuration","parseInt","status","currentTime","duration","uiColors","ui","groupChannelMessage","remainingTime","createElement","style","styles","container","backgroundColor","enabled","background","onPress","current","total","minWidth","height","trackColor","voiceProgressTrack","overlay","flex","flexDirection","alignItems","justifyContent","paddingHorizontal","size","color","voiceSpinner","containerStyle","voiceActionIconBackground","padding","borderRadius","icon","body3","lineHeight","undefined","marginLeft","opacity","textVoicePlaytime","overflow","maxWidth"],"sources":["ThreadParentMessage.file.voice.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport { Box, Icon, PressBox, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { LoadingSpinner, ProgressBar } from '@sendbird/uikit-react-native-foundation';\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdFileMessage, millsToMSS } from '@sendbird/uikit-utils';\n\nimport { ThreadParentMessageRendererProps } from './index';\n\nexport type VoiceFileMessageState = {\n status: 'preparing' | 'playing' | 'paused';\n currentTime: number;\n duration: number;\n};\n\ntype Props = ThreadParentMessageRendererProps<{\n durationMetaArrayKey?: string;\n onUnmount: () => void;\n}>;\n\nconst ThreadParentMessageFileVoice = (props: Props) => {\n const {\n onLongPress,\n onToggleVoiceMessage,\n parentMessage,\n durationMetaArrayKey = 'KEY_VOICE_MESSAGE_DURATION',\n onUnmount,\n } = props;\n\n const fileMessage: SendbirdFileMessage = parentMessage as SendbirdFileMessage;\n if (!fileMessage) return null;\n\n const { colors } = useUIKitTheme();\n\n const [state, setState] = useState<VoiceFileMessageState>(() => {\n const meta = fileMessage.metaArrays.find((it) => it.key === durationMetaArrayKey);\n const value = meta?.value?.[0];\n const initialDuration = value ? parseInt(value, 10) : 0;\n return {\n status: 'paused',\n currentTime: 0,\n duration: initialDuration,\n };\n });\n\n useEffect(() => {\n return () => {\n onUnmount();\n };\n }, []);\n\n const uiColors = colors.ui.groupChannelMessage['incoming'];\n const remainingTime = state.duration - state.currentTime;\n\n return (\n <Box style={styles.container} backgroundColor={uiColors.enabled.background}>\n <PressBox onPress={() => onToggleVoiceMessage?.(state, setState)} onLongPress={onLongPress}>\n <ProgressBar\n current={state.currentTime}\n total={state.duration}\n style={{ minWidth: 136, height: 44 }}\n trackColor={uiColors.enabled.voiceProgressTrack}\n overlay={\n <Box\n flex={1}\n flexDirection={'row'}\n alignItems={'center'}\n justifyContent={'space-between'}\n paddingHorizontal={12}\n >\n {state.status === 'preparing' ? (\n <LoadingSpinner size={24} color={uiColors.enabled.voiceSpinner} />\n ) : (\n <Icon\n size={16}\n containerStyle={{\n backgroundColor: uiColors.enabled.voiceActionIconBackground,\n padding: 6,\n borderRadius: 16,\n }}\n icon={state.status === 'paused' ? 'play' : 'pause'}\n />\n )}\n <Text\n body3\n style={{ lineHeight: undefined, marginLeft: 6, opacity: 0.88 }}\n color={uiColors.enabled.textVoicePlaytime}\n >\n {millsToMSS(state.currentTime === 0 ? state.duration : remainingTime)}\n </Text>\n </Box>\n }\n />\n </PressBox>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n maxWidth: 136,\n },\n});\n\nexport default ThreadParentMessageFileVoice;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import { RegexText, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
|
|
5
|
+
import { urlRegexStrict } from '@sendbird/uikit-utils';
|
|
6
|
+
const ThreadParentMessageUser = props => {
|
|
7
|
+
var _props$renderRegexTex;
|
|
8
|
+
const userMessage = props.parentMessage;
|
|
9
|
+
if (!userMessage) return null;
|
|
10
|
+
const {
|
|
11
|
+
colors
|
|
12
|
+
} = useUIKitTheme();
|
|
13
|
+
return /*#__PURE__*/React.createElement(Text, {
|
|
14
|
+
body3: true,
|
|
15
|
+
color: colors.onBackground01,
|
|
16
|
+
suppressHighlighting: true
|
|
17
|
+
}, /*#__PURE__*/React.createElement(RegexText, {
|
|
18
|
+
body3: true,
|
|
19
|
+
color: colors.onBackground01,
|
|
20
|
+
patterns: [...(props.regexTextPatterns ?? []), {
|
|
21
|
+
regex: urlRegexStrict,
|
|
22
|
+
replacer(_ref) {
|
|
23
|
+
let {
|
|
24
|
+
match,
|
|
25
|
+
parentProps,
|
|
26
|
+
keyPrefix,
|
|
27
|
+
index
|
|
28
|
+
} = _ref;
|
|
29
|
+
return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
|
|
30
|
+
key: `${keyPrefix}-${index}`,
|
|
31
|
+
onPress: () => {
|
|
32
|
+
var _props$onPressURL;
|
|
33
|
+
return (_props$onPressURL = props.onPressURL) === null || _props$onPressURL === void 0 ? void 0 : _props$onPressURL.call(props, match);
|
|
34
|
+
},
|
|
35
|
+
style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, styles.urlText]
|
|
36
|
+
}), match);
|
|
37
|
+
}
|
|
38
|
+
}]
|
|
39
|
+
}, (_props$renderRegexTex = props.renderRegexTextChildren) === null || _props$renderRegexTex === void 0 ? void 0 : _props$renderRegexTex.call(props, userMessage)), Boolean(userMessage.updatedAt) && /*#__PURE__*/React.createElement(Text, {
|
|
40
|
+
body3: true,
|
|
41
|
+
color: colors.onBackground02
|
|
42
|
+
}, ' (edited)'));
|
|
43
|
+
};
|
|
44
|
+
const styles = createStyleSheet({
|
|
45
|
+
bubble: {
|
|
46
|
+
paddingHorizontal: 12,
|
|
47
|
+
paddingVertical: 6
|
|
48
|
+
},
|
|
49
|
+
urlText: {
|
|
50
|
+
textDecorationLine: 'underline'
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
export default ThreadParentMessageUser;
|
|
54
|
+
//# sourceMappingURL=ThreadParentMessage.user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","useUIKitTheme","RegexText","createStyleSheet","urlRegexStrict","ThreadParentMessageUser","props","_props$renderRegexTex","userMessage","parentMessage","colors","createElement","body3","color","onBackground01","suppressHighlighting","patterns","regexTextPatterns","regex","replacer","_ref","match","parentProps","keyPrefix","index","_extends","key","onPress","_props$onPressURL","onPressURL","call","style","styles","urlText","renderRegexTextChildren","Boolean","updatedAt","onBackground02","bubble","paddingHorizontal","paddingVertical","textDecorationLine"],"sources":["ThreadParentMessage.user.tsx"],"sourcesContent":["import React from 'react';\n\nimport { type RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { RegexText, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdUserMessage, urlRegexStrict } from '@sendbird/uikit-utils';\n\nimport { ThreadParentMessageRendererProps } from './index';\n\ntype Props = ThreadParentMessageRendererProps<{\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n}>;\n\nconst ThreadParentMessageUser = (props: Props) => {\n const userMessage: SendbirdUserMessage = props.parentMessage as SendbirdUserMessage;\n if (!userMessage) return null;\n\n const { colors } = useUIKitTheme();\n\n return (\n <Text body3 color={colors.onBackground01} suppressHighlighting>\n <RegexText\n body3\n color={colors.onBackground01}\n patterns={[\n ...(props.regexTextPatterns ?? []),\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => props.onPressURL?.(match)}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {props.renderRegexTextChildren?.(userMessage)}\n </RegexText>\n {Boolean(userMessage.updatedAt) && (\n <Text body3 color={colors.onBackground02}>\n {' (edited)'}\n </Text>\n )}\n </Text>\n );\n};\n\nconst styles = createStyleSheet({\n bubble: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\n\nexport default ThreadParentMessageUser;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAAgCC,IAAI,EAAEC,aAAa,QAAQ,yCAAyC;AACpG,SAASC,SAAS,EAAEC,gBAAgB,QAAQ,yCAAyC;AACrF,SAA8BC,cAAc,QAAQ,uBAAuB;AAS3E,MAAMC,uBAAuB,GAAIC,KAAY,IAAK;EAAA,IAAAC,qBAAA;EAChD,MAAMC,WAAgC,GAAGF,KAAK,CAACG,aAAoC;EACnF,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;EAE7B,MAAM;IAAEE;EAAO,CAAC,GAAGT,aAAa,EAAE;EAElC,oBACEF,KAAA,CAAAY,aAAA,CAACX,IAAI;IAACY,KAAK;IAACC,KAAK,EAAEH,MAAM,CAACI,cAAe;IAACC,oBAAoB;EAAA,gBAC5DhB,KAAA,CAAAY,aAAA,CAACT,SAAS;IACRU,KAAK;IACLC,KAAK,EAAEH,MAAM,CAACI,cAAe;IAC7BE,QAAQ,EAAE,CACR,IAAIV,KAAK,CAACW,iBAAiB,IAAI,EAAE,CAAC,EAClC;MACEC,KAAK,EAAEd,cAAc;MACrBe,QAAQA,CAAAC,IAAA,EAA2C;QAAA,IAA1C;UAAEC,KAAK;UAAEC,WAAW;UAAEC,SAAS;UAAEC;QAAM,CAAC,GAAAJ,IAAA;QAC/C,oBACErB,KAAA,CAAAY,aAAA,CAACX,IAAI,EAAAyB,QAAA,KACCH,WAAW;UACfI,GAAG,EAAG,GAAEH,SAAU,IAAGC,KAAM,EAAE;UAC7BG,OAAO,EAAEA,CAAA;YAAA,IAAAC,iBAAA;YAAA,QAAAA,iBAAA,GAAMtB,KAAK,CAACuB,UAAU,cAAAD,iBAAA,uBAAhBA,iBAAA,CAAAE,IAAA,CAAAxB,KAAK,EAAce,KAAK,CAAC;UAAA,CAAC;UACzCU,KAAK,EAAE,CAACT,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAES,KAAK,EAAEC,MAAM,CAACC,OAAO;QAAE,IAE3CZ,KAAK,CACD;MAEX;IACF,CAAC;EACD,IAAAd,qBAAA,GAEDD,KAAK,CAAC4B,uBAAuB,cAAA3B,qBAAA,uBAA7BA,qBAAA,CAAAuB,IAAA,CAAAxB,KAAK,EAA2BE,WAAW,CAAC,CACnC,EACX2B,OAAO,CAAC3B,WAAW,CAAC4B,SAAS,CAAC,iBAC7BrC,KAAA,CAAAY,aAAA,CAACX,IAAI;IAACY,KAAK;IAACC,KAAK,EAAEH,MAAM,CAAC2B;EAAe,GACtC,WAAW,CAEf,CACI;AAEX,CAAC;AAED,MAAML,MAAM,GAAG7B,gBAAgB,CAAC;EAC9BmC,MAAM,EAAE;IACNC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDP,OAAO,EAAE;IACPQ,kBAAkB,EAAE;EACtB;AACF,CAAC,CAAC;AAEF,eAAepC,uBAAuB"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, ImageWithPlaceholder, PressBox, RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import { urlRegexStrict, useFreshCallback } from '@sendbird/uikit-utils';
|
|
5
|
+
import { useSendbirdChat } from './../../hooks/useContext';
|
|
6
|
+
const ThreadParentMessageUserOg = props => {
|
|
7
|
+
var _props$renderRegexTex;
|
|
8
|
+
const userMessage = props.parentMessage;
|
|
9
|
+
if (!userMessage) return null;
|
|
10
|
+
const {
|
|
11
|
+
sbOptions
|
|
12
|
+
} = useSendbirdChat();
|
|
13
|
+
const {
|
|
14
|
+
select,
|
|
15
|
+
colors,
|
|
16
|
+
palette
|
|
17
|
+
} = useUIKitTheme();
|
|
18
|
+
const enableOgtag = sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag;
|
|
19
|
+
const onPressMessage = userMessage => useFreshCallback(() => {
|
|
20
|
+
var _userMessage$ogMetaDa, _props$onPressURL;
|
|
21
|
+
typeof ((_userMessage$ogMetaDa = userMessage.ogMetaData) === null || _userMessage$ogMetaDa === void 0 ? void 0 : _userMessage$ogMetaDa.url) === 'string' && ((_props$onPressURL = props.onPressURL) === null || _props$onPressURL === void 0 ? void 0 : _props$onPressURL.call(props, userMessage.ogMetaData.url));
|
|
22
|
+
});
|
|
23
|
+
return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(PressBox, {
|
|
24
|
+
activeOpacity: 0.85,
|
|
25
|
+
onPress: onPressMessage(userMessage)
|
|
26
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
27
|
+
body3: true,
|
|
28
|
+
color: colors.onBackground01,
|
|
29
|
+
suppressHighlighting: true
|
|
30
|
+
}, /*#__PURE__*/React.createElement(RegexText, {
|
|
31
|
+
body3: true,
|
|
32
|
+
color: colors.onBackground01,
|
|
33
|
+
patterns: [...(props.regexTextPatterns ?? []), {
|
|
34
|
+
regex: urlRegexStrict,
|
|
35
|
+
replacer(_ref) {
|
|
36
|
+
let {
|
|
37
|
+
match,
|
|
38
|
+
parentProps,
|
|
39
|
+
keyPrefix,
|
|
40
|
+
index
|
|
41
|
+
} = _ref;
|
|
42
|
+
return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
|
|
43
|
+
key: `${keyPrefix}-${index}`,
|
|
44
|
+
onPress: () => {
|
|
45
|
+
var _props$onPressURL2;
|
|
46
|
+
return (_props$onPressURL2 = props.onPressURL) === null || _props$onPressURL2 === void 0 ? void 0 : _props$onPressURL2.call(props, match);
|
|
47
|
+
},
|
|
48
|
+
style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, styles.urlText]
|
|
49
|
+
}), match);
|
|
50
|
+
}
|
|
51
|
+
}]
|
|
52
|
+
}, (_props$renderRegexTex = props.renderRegexTextChildren) === null || _props$renderRegexTex === void 0 ? void 0 : _props$renderRegexTex.call(props, userMessage)), Boolean(userMessage.updatedAt) && /*#__PURE__*/React.createElement(Text, {
|
|
53
|
+
body3: true,
|
|
54
|
+
color: colors.onBackground02
|
|
55
|
+
}, ' (edited)'))), userMessage.ogMetaData && enableOgtag && /*#__PURE__*/React.createElement(PressBox, {
|
|
56
|
+
onPress: onPressMessage(userMessage),
|
|
57
|
+
style: styles.container
|
|
58
|
+
}, /*#__PURE__*/React.createElement(Box, null, !!userMessage.ogMetaData.defaultImage && /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
|
|
59
|
+
style: styles.ogImage,
|
|
60
|
+
source: {
|
|
61
|
+
uri: userMessage.ogMetaData.defaultImage.url
|
|
62
|
+
}
|
|
63
|
+
}), /*#__PURE__*/React.createElement(Box, {
|
|
64
|
+
style: styles.ogContainer,
|
|
65
|
+
backgroundColor: select({
|
|
66
|
+
dark: palette.background400,
|
|
67
|
+
light: palette.background100
|
|
68
|
+
})
|
|
69
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
70
|
+
numberOfLines: 3,
|
|
71
|
+
body2: true,
|
|
72
|
+
color: colors.onBackground01,
|
|
73
|
+
style: styles.ogTitle
|
|
74
|
+
}, userMessage.ogMetaData.title), !!userMessage.ogMetaData.description && /*#__PURE__*/React.createElement(Text, {
|
|
75
|
+
numberOfLines: 1,
|
|
76
|
+
caption2: true,
|
|
77
|
+
color: colors.onBackground01,
|
|
78
|
+
style: styles.ogDesc
|
|
79
|
+
}, userMessage.ogMetaData.description), /*#__PURE__*/React.createElement(Text, {
|
|
80
|
+
numberOfLines: 1,
|
|
81
|
+
caption2: true,
|
|
82
|
+
color: colors.onBackground02
|
|
83
|
+
}, userMessage.ogMetaData.url)))));
|
|
84
|
+
};
|
|
85
|
+
const styles = createStyleSheet({
|
|
86
|
+
container: {
|
|
87
|
+
borderRadius: 16,
|
|
88
|
+
overflow: 'hidden'
|
|
89
|
+
},
|
|
90
|
+
ogContainer: {
|
|
91
|
+
paddingHorizontal: 12,
|
|
92
|
+
paddingTop: 8,
|
|
93
|
+
paddingBottom: 12,
|
|
94
|
+
maxWidth: 240,
|
|
95
|
+
borderBottomLeftRadius: 16,
|
|
96
|
+
borderBottomRightRadius: 16
|
|
97
|
+
},
|
|
98
|
+
ogImage: {
|
|
99
|
+
width: 240,
|
|
100
|
+
height: 136,
|
|
101
|
+
borderTopLeftRadius: 16,
|
|
102
|
+
borderTopRightRadius: 16
|
|
103
|
+
},
|
|
104
|
+
ogUrl: {
|
|
105
|
+
marginBottom: 4
|
|
106
|
+
},
|
|
107
|
+
ogTitle: {
|
|
108
|
+
marginBottom: 4
|
|
109
|
+
},
|
|
110
|
+
ogDesc: {
|
|
111
|
+
lineHeight: 14,
|
|
112
|
+
marginBottom: 8
|
|
113
|
+
},
|
|
114
|
+
urlText: {
|
|
115
|
+
textDecorationLine: 'underline'
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
export default ThreadParentMessageUserOg;
|
|
119
|
+
//# sourceMappingURL=ThreadParentMessage.user.og.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Box","ImageWithPlaceholder","PressBox","RegexText","Text","createStyleSheet","useUIKitTheme","urlRegexStrict","useFreshCallback","useSendbirdChat","ThreadParentMessageUserOg","props","_props$renderRegexTex","userMessage","parentMessage","sbOptions","select","colors","palette","enableOgtag","uikitWithAppInfo","groupChannel","channel","onPressMessage","_userMessage$ogMetaDa","_props$onPressURL","ogMetaData","url","onPressURL","call","createElement","activeOpacity","onPress","body3","color","onBackground01","suppressHighlighting","patterns","regexTextPatterns","regex","replacer","_ref","match","parentProps","keyPrefix","index","_extends","key","_props$onPressURL2","style","styles","urlText","renderRegexTextChildren","Boolean","updatedAt","onBackground02","container","defaultImage","ogImage","source","uri","ogContainer","backgroundColor","dark","background400","light","background100","numberOfLines","body2","ogTitle","title","description","caption2","ogDesc","borderRadius","overflow","paddingHorizontal","paddingTop","paddingBottom","maxWidth","borderBottomLeftRadius","borderBottomRightRadius","width","height","borderTopLeftRadius","borderTopRightRadius","ogUrl","marginBottom","lineHeight","textDecorationLine"],"sources":["ThreadParentMessage.user.og.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Box,\n ImageWithPlaceholder,\n PressBox,\n RegexText,\n type RegexTextPattern,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdUserMessage, urlRegexStrict, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from './../../hooks/useContext';\nimport { ThreadParentMessageRendererProps } from './index';\n\ntype Props = ThreadParentMessageRendererProps<{\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n}>;\n\nconst ThreadParentMessageUserOg = (props: Props) => {\n const userMessage: SendbirdUserMessage = props.parentMessage as SendbirdUserMessage;\n if (!userMessage) return null;\n\n const { sbOptions } = useSendbirdChat();\n const { select, colors, palette } = useUIKitTheme();\n const enableOgtag = sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag;\n const onPressMessage = (userMessage: SendbirdUserMessage) =>\n useFreshCallback(() => {\n typeof userMessage.ogMetaData?.url === 'string' && props.onPressURL?.(userMessage.ogMetaData.url);\n });\n\n return (\n <Box>\n <PressBox activeOpacity={0.85} onPress={onPressMessage(userMessage)}>\n <Text body3 color={colors.onBackground01} suppressHighlighting>\n <RegexText\n body3\n color={colors.onBackground01}\n patterns={[\n ...(props.regexTextPatterns ?? []),\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => props.onPressURL?.(match)}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {props.renderRegexTextChildren?.(userMessage)}\n </RegexText>\n {Boolean(userMessage.updatedAt) && (\n <Text body3 color={colors.onBackground02}>\n {' (edited)'}\n </Text>\n )}\n </Text>\n </PressBox>\n {userMessage.ogMetaData && enableOgtag && (\n <PressBox onPress={onPressMessage(userMessage)} style={styles.container}>\n <Box>\n {!!userMessage.ogMetaData.defaultImage && (\n <ImageWithPlaceholder style={styles.ogImage} source={{ uri: userMessage.ogMetaData.defaultImage.url }} />\n )}\n <Box\n style={styles.ogContainer}\n backgroundColor={select({ dark: palette.background400, light: palette.background100 })}\n >\n <Text numberOfLines={3} body2 color={colors.onBackground01} style={styles.ogTitle}>\n {userMessage.ogMetaData.title}\n </Text>\n {!!userMessage.ogMetaData.description && (\n <Text numberOfLines={1} caption2 color={colors.onBackground01} style={styles.ogDesc}>\n {userMessage.ogMetaData.description}\n </Text>\n )}\n <Text numberOfLines={1} caption2 color={colors.onBackground02}>\n {userMessage.ogMetaData.url}\n </Text>\n </Box>\n </Box>\n </PressBox>\n )}\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n ogContainer: {\n paddingHorizontal: 12,\n paddingTop: 8,\n paddingBottom: 12,\n maxWidth: 240,\n borderBottomLeftRadius: 16,\n borderBottomRightRadius: 16,\n },\n ogImage: {\n width: 240,\n height: 136,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n },\n ogUrl: {\n marginBottom: 4,\n },\n ogTitle: {\n marginBottom: 4,\n },\n ogDesc: {\n lineHeight: 14,\n marginBottom: 8,\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\n\nexport default ThreadParentMessageUserOg;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import React, { useRef } from 'react';
|
|
3
|
+
import { Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
+
import { getMessageType, isMyMessage, isVoiceMessage } from '@sendbird/uikit-utils';
|
|
5
|
+
import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
|
|
6
|
+
import SBUUtils from '../../libs/SBUUtils';
|
|
7
|
+
import { usePlatformService, useSendbirdChat } from './../../hooks/useContext';
|
|
8
|
+
import ThreadParentMessageFile from './ThreadParentMessage.file';
|
|
9
|
+
import ThreadParentMessageFileImage from './ThreadParentMessage.file.image';
|
|
10
|
+
import ThreadParentMessageFileVideo from './ThreadParentMessage.file.video';
|
|
11
|
+
import ThreadParentMessageFileVoice from './ThreadParentMessage.file.voice';
|
|
12
|
+
import ThreadParentMessageUser from './ThreadParentMessage.user';
|
|
13
|
+
import ThreadParentMessageUserOg from './ThreadParentMessage.user.og';
|
|
14
|
+
const ThreadParentMessageRenderer = props => {
|
|
15
|
+
const playerUnsubscribes = useRef([]);
|
|
16
|
+
const {
|
|
17
|
+
sbOptions,
|
|
18
|
+
currentUser,
|
|
19
|
+
mentionManager
|
|
20
|
+
} = useSendbirdChat();
|
|
21
|
+
const {
|
|
22
|
+
palette
|
|
23
|
+
} = useUIKitTheme();
|
|
24
|
+
const {
|
|
25
|
+
mediaService,
|
|
26
|
+
playerService
|
|
27
|
+
} = usePlatformService();
|
|
28
|
+
const parentMessage = props.parentMessage;
|
|
29
|
+
const resetPlayer = async () => {
|
|
30
|
+
playerUnsubscribes.current.forEach(unsubscribe => {
|
|
31
|
+
try {
|
|
32
|
+
unsubscribe();
|
|
33
|
+
} catch {}
|
|
34
|
+
});
|
|
35
|
+
playerUnsubscribes.current.length = 0;
|
|
36
|
+
await playerService.reset();
|
|
37
|
+
};
|
|
38
|
+
const messageProps = {
|
|
39
|
+
onPressURL: url => SBUUtils.openURL(url),
|
|
40
|
+
onToggleVoiceMessage: async (state, setState) => {
|
|
41
|
+
if (isVoiceMessage(parentMessage) && parentMessage.sendingStatus === 'succeeded') {
|
|
42
|
+
if (playerService.uri === parentMessage.url) {
|
|
43
|
+
if (playerService.state === 'playing') {
|
|
44
|
+
await playerService.pause();
|
|
45
|
+
} else {
|
|
46
|
+
await playerService.play(parentMessage.url);
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
if (playerService.state !== 'idle') {
|
|
50
|
+
await resetPlayer();
|
|
51
|
+
}
|
|
52
|
+
const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;
|
|
53
|
+
let seekFinished = !shouldSeekToTime;
|
|
54
|
+
const forPlayback = playerService.addPlaybackListener(_ref => {
|
|
55
|
+
let {
|
|
56
|
+
stopped,
|
|
57
|
+
currentTime,
|
|
58
|
+
duration
|
|
59
|
+
} = _ref;
|
|
60
|
+
if (seekFinished) {
|
|
61
|
+
setState(prevState => ({
|
|
62
|
+
...prevState,
|
|
63
|
+
currentTime: stopped ? 0 : currentTime,
|
|
64
|
+
duration
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
const forState = playerService.addStateListener(state => {
|
|
69
|
+
switch (state) {
|
|
70
|
+
case 'preparing':
|
|
71
|
+
setState(prevState => ({
|
|
72
|
+
...prevState,
|
|
73
|
+
status: 'preparing'
|
|
74
|
+
}));
|
|
75
|
+
break;
|
|
76
|
+
case 'playing':
|
|
77
|
+
setState(prevState => ({
|
|
78
|
+
...prevState,
|
|
79
|
+
status: 'playing'
|
|
80
|
+
}));
|
|
81
|
+
break;
|
|
82
|
+
case 'idle':
|
|
83
|
+
case 'paused':
|
|
84
|
+
{
|
|
85
|
+
setState(prevState => ({
|
|
86
|
+
...prevState,
|
|
87
|
+
status: 'paused'
|
|
88
|
+
}));
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case 'stopped':
|
|
92
|
+
setState(prevState => ({
|
|
93
|
+
...prevState,
|
|
94
|
+
status: 'paused'
|
|
95
|
+
}));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
playerUnsubscribes.current.push(forPlayback, forState);
|
|
100
|
+
await playerService.play(parentMessage.url);
|
|
101
|
+
if (shouldSeekToTime) {
|
|
102
|
+
await playerService.seek(state.currentTime);
|
|
103
|
+
seekFinished = true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
...props
|
|
109
|
+
};
|
|
110
|
+
const userMessageProps = {
|
|
111
|
+
renderRegexTextChildren: message => {
|
|
112
|
+
if (mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)) {
|
|
113
|
+
return message.mentionedMessageTemplate;
|
|
114
|
+
} else {
|
|
115
|
+
return message.message;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
regexTextPatterns: [{
|
|
119
|
+
regex: mentionManager.templateRegex,
|
|
120
|
+
replacer(_ref2) {
|
|
121
|
+
var _parentMessage$mentio;
|
|
122
|
+
let {
|
|
123
|
+
match,
|
|
124
|
+
groups,
|
|
125
|
+
parentProps,
|
|
126
|
+
index,
|
|
127
|
+
keyPrefix
|
|
128
|
+
} = _ref2;
|
|
129
|
+
const user = (_parentMessage$mentio = parentMessage.mentionedUsers) === null || _parentMessage$mentio === void 0 ? void 0 : _parentMessage$mentio.find(it => it.userId === groups[2]);
|
|
130
|
+
if (user) {
|
|
131
|
+
const mentionColor = !isMyMessage(parentMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ? palette.onBackgroundLight01 : parentProps === null || parentProps === void 0 ? void 0 : parentProps.color;
|
|
132
|
+
return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
|
|
133
|
+
key: `${keyPrefix}-${index}`,
|
|
134
|
+
color: mentionColor,
|
|
135
|
+
onPress: () => {
|
|
136
|
+
var _messageProps$onPress;
|
|
137
|
+
return (_messageProps$onPress = messageProps.onPressMentionedUser) === null || _messageProps$onPress === void 0 ? void 0 : _messageProps$onPress.call(messageProps, user);
|
|
138
|
+
},
|
|
139
|
+
onLongPress: messageProps.onLongPress,
|
|
140
|
+
style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, {
|
|
141
|
+
fontWeight: '700'
|
|
142
|
+
}, user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && {
|
|
143
|
+
backgroundColor: palette.highlight
|
|
144
|
+
}]
|
|
145
|
+
}), `${mentionManager.asMentionedMessageText(user)}`);
|
|
146
|
+
}
|
|
147
|
+
return match;
|
|
148
|
+
}
|
|
149
|
+
}]
|
|
150
|
+
};
|
|
151
|
+
switch (getMessageType(props.parentMessage)) {
|
|
152
|
+
case 'user':
|
|
153
|
+
{
|
|
154
|
+
return /*#__PURE__*/React.createElement(ThreadParentMessageUser, _extends({}, userMessageProps, messageProps));
|
|
155
|
+
}
|
|
156
|
+
case 'user.opengraph':
|
|
157
|
+
{
|
|
158
|
+
return /*#__PURE__*/React.createElement(ThreadParentMessageUserOg, _extends({}, userMessageProps, messageProps));
|
|
159
|
+
}
|
|
160
|
+
case 'file':
|
|
161
|
+
case 'file.audio':
|
|
162
|
+
{
|
|
163
|
+
return /*#__PURE__*/React.createElement(ThreadParentMessageFile, messageProps);
|
|
164
|
+
}
|
|
165
|
+
case 'file.video':
|
|
166
|
+
{
|
|
167
|
+
return /*#__PURE__*/React.createElement(ThreadParentMessageFileVideo, _extends({
|
|
168
|
+
fetchThumbnailFromVideoSource: uri => mediaService.getVideoThumbnail({
|
|
169
|
+
url: uri,
|
|
170
|
+
timeMills: 1000
|
|
171
|
+
})
|
|
172
|
+
}, messageProps));
|
|
173
|
+
}
|
|
174
|
+
case 'file.image':
|
|
175
|
+
{
|
|
176
|
+
return /*#__PURE__*/React.createElement(ThreadParentMessageFileImage, messageProps);
|
|
177
|
+
}
|
|
178
|
+
case 'file.voice':
|
|
179
|
+
{
|
|
180
|
+
return /*#__PURE__*/React.createElement(ThreadParentMessageFileVoice, _extends({
|
|
181
|
+
durationMetaArrayKey: VOICE_MESSAGE_META_ARRAY_DURATION_KEY,
|
|
182
|
+
onUnmount: () => {
|
|
183
|
+
if (isVoiceMessage(parentMessage) && playerService.uri === parentMessage.url) {
|
|
184
|
+
resetPlayer();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}, messageProps));
|
|
188
|
+
}
|
|
189
|
+
default:
|
|
190
|
+
{
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
export default /*#__PURE__*/React.memo(ThreadParentMessageRenderer);
|
|
196
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useRef","Text","useUIKitTheme","getMessageType","isMyMessage","isVoiceMessage","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","SBUUtils","usePlatformService","useSendbirdChat","ThreadParentMessageFile","ThreadParentMessageFileImage","ThreadParentMessageFileVideo","ThreadParentMessageFileVoice","ThreadParentMessageUser","ThreadParentMessageUserOg","ThreadParentMessageRenderer","props","playerUnsubscribes","sbOptions","currentUser","mentionManager","palette","mediaService","playerService","parentMessage","resetPlayer","current","forEach","unsubscribe","length","reset","messageProps","onPressURL","url","openURL","onToggleVoiceMessage","state","setState","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref","stopped","prevState","forState","addStateListener","status","push","seek","userMessageProps","renderRegexTextChildren","message","shouldUseMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref2","_parentMessage$mentio","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","userId","mentionColor","onBackgroundLight01","color","createElement","_extends","key","onPress","_messageProps$onPress","onPressMentionedUser","call","onLongPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","durationMetaArrayKey","onUnmount","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nimport { RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n type SendbirdUser,\n SendbirdUserMessage,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { usePlatformService, useSendbirdChat } from './../../hooks/useContext';\nimport ThreadParentMessageFile from './ThreadParentMessage.file';\nimport ThreadParentMessageFileImage from './ThreadParentMessage.file.image';\nimport ThreadParentMessageFileVideo from './ThreadParentMessage.file.video';\nimport ThreadParentMessageFileVoice, { VoiceFileMessageState } from './ThreadParentMessage.file.voice';\nimport ThreadParentMessageUser from './ThreadParentMessage.user';\nimport ThreadParentMessageUserOg from './ThreadParentMessage.user.og';\n\nexport type ThreadParentMessageRendererProps<AdditionalProps = unknown> = {\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressURL?: (url: string) => void;\n onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;\n onToggleVoiceMessage?: (\n state: VoiceFileMessageState,\n setState: React.Dispatch<React.SetStateAction<VoiceFileMessageState>>,\n ) => Promise<void>;\n} & AdditionalProps;\n\nconst ThreadParentMessageRenderer = (props: ThreadParentMessageRendererProps) => {\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { palette } = useUIKitTheme();\n const { mediaService, playerService } = usePlatformService();\n const parentMessage = props.parentMessage;\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n onPressURL: (url) => SBUUtils.openURL(url),\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(parentMessage) && parentMessage.sendingStatus === 'succeeded') {\n if (playerService.uri === parentMessage.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(parentMessage.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(parentMessage.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n ...props,\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = parentMessage.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(parentMessage, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n switch (getMessageType(props.parentMessage)) {\n case 'user': {\n return <ThreadParentMessageUser {...userMessageProps} {...messageProps} />;\n }\n case 'user.opengraph': {\n return <ThreadParentMessageUserOg {...userMessageProps} {...messageProps} />;\n }\n case 'file':\n case 'file.audio': {\n return <ThreadParentMessageFile {...messageProps} />;\n }\n case 'file.video': {\n return (\n <ThreadParentMessageFileVideo\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.image': {\n return <ThreadParentMessageFileImage {...messageProps} />;\n }\n case 'file.voice': {\n return (\n <ThreadParentMessageFileVoice\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n onUnmount={() => {\n if (isVoiceMessage(parentMessage) && playerService.uri === parentMessage.url) {\n resetPlayer();\n }\n }}\n {...messageProps}\n />\n );\n }\n default: {\n return null;\n }\n }\n};\n\nexport default React.memo(ThreadParentMessageRenderer);\n"],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';
|
|
|
19
19
|
import MentionConfig from '../libs/MentionConfig';
|
|
20
20
|
import MentionManager from '../libs/MentionManager';
|
|
21
21
|
import VoiceMessageConfig from '../libs/VoiceMessageConfig';
|
|
22
|
+
import VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';
|
|
22
23
|
import StringSetEn from '../localization/StringSet.en';
|
|
23
24
|
import SBUDynamicModule from '../platform/dynamicModule';
|
|
24
25
|
import VERSION from '../version';
|
|
@@ -77,6 +78,7 @@ const SendbirdUIKitContainer = props => {
|
|
|
77
78
|
} = useConfigInstance(props);
|
|
78
79
|
const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);
|
|
79
80
|
const mentionManager = useMemo(() => new MentionManager(mentionConfig), [mentionConfig]);
|
|
81
|
+
const voiceMessageStatusManager = useMemo(() => new VoiceMessageStatusManager(), []);
|
|
80
82
|
useLayoutEffect(() => {
|
|
81
83
|
if (!isFirstMount) {
|
|
82
84
|
const sendbird = initializeSendbird(appId, {
|
|
@@ -106,7 +108,10 @@ const SendbirdUIKitContainer = props => {
|
|
|
106
108
|
localConfigs: {
|
|
107
109
|
common: uikitOptions === null || uikitOptions === void 0 ? void 0 : uikitOptions.common,
|
|
108
110
|
groupChannel: {
|
|
109
|
-
channel:
|
|
111
|
+
channel: {
|
|
112
|
+
...(uikitOptions === null || uikitOptions === void 0 ? void 0 : uikitOptions.groupChannel),
|
|
113
|
+
enableReactionsSupergroup: undefined
|
|
114
|
+
},
|
|
110
115
|
channelList: uikitOptions === null || uikitOptions === void 0 ? void 0 : uikitOptions.groupChannelList,
|
|
111
116
|
setting: uikitOptions === null || uikitOptions === void 0 ? void 0 : uikitOptions.groupChannelSettings
|
|
112
117
|
},
|
|
@@ -120,6 +125,7 @@ const SendbirdUIKitContainer = props => {
|
|
|
120
125
|
mentionManager: mentionManager,
|
|
121
126
|
imageCompressionConfig: imageCompressionConfig,
|
|
122
127
|
voiceMessageConfig: voiceMessageConfig,
|
|
128
|
+
voiceMessageStatusManager: voiceMessageStatusManager,
|
|
123
129
|
enableAutoPushTokenRegistration: chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION,
|
|
124
130
|
enableUseUserIdForNickname: chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME,
|
|
125
131
|
enableImageCompression: chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION
|