@sendbird/uikit-react-native 3.7.0 → 3.7.2
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/ChannelMessageList/index.js +2 -3
- package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
- package/lib/commonjs/components/ChannelThreadMessageList/index.js +2 -3
- package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -1
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +2 -2
- package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +2 -2
- package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +2 -2
- package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +10 -2
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/SBUHandlersCtx.js +25 -0
- package/lib/commonjs/contexts/SBUHandlersCtx.js.map +1 -0
- package/lib/commonjs/contexts/SendbirdChatCtx.js +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +2 -3
- package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
- package/lib/commonjs/hooks/useContext.js +8 -1
- package/lib/commonjs/hooks/useContext.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/ChannelMessageList/index.js +3 -4
- package/lib/module/components/ChannelMessageList/index.js.map +1 -1
- package/lib/module/components/ChannelThreadMessageList/index.js +3 -4
- package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -1
- package/lib/module/components/GroupChannelMessageRenderer/index.js +3 -3
- package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/OpenChannelMessageRenderer/index.js +3 -3
- package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
- package/lib/module/components/ThreadParentMessageRenderer/index.js +3 -3
- package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +10 -2
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/SBUHandlersCtx.js +16 -0
- package/lib/module/contexts/SBUHandlersCtx.js.map +1 -0
- package/lib/module/contexts/SendbirdChatCtx.js +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +3 -4
- package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
- package/lib/module/hooks/useContext.js +6 -0
- package/lib/module/hooks/useContext.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +3 -1
- package/lib/typescript/src/contexts/SBUHandlersCtx.d.ts +21 -0
- package/lib/typescript/src/hooks/useContext.d.ts +1 -0
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +5 -5
- package/src/components/ChannelMessageList/index.tsx +9 -4
- package/src/components/ChannelThreadMessageList/index.tsx +9 -4
- package/src/components/GroupChannelMessageRenderer/index.tsx +3 -3
- package/src/components/OpenChannelMessageRenderer/index.tsx +3 -3
- package/src/components/ThreadParentMessageRenderer/index.tsx +3 -3
- package/src/containers/SendbirdUIKitContainer.tsx +89 -77
- package/src/contexts/SBUHandlersCtx.tsx +27 -0
- package/src/contexts/SendbirdChatCtx.tsx +1 -1
- package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +3 -4
- package/src/hooks/useContext.ts +7 -0
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","pubsub","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","voiceMessageStatusManager","imageCompressionConfig","voiceMessageConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnect","then","undefined","value","sdk","groupChannelFragmentOptions","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';\nimport type { FileType } from '../platform/types';\nimport pubsub, { type PubSub } from '../utils/pubsub';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n}\n\nexport type GroupChannelFragmentOptionsPubSubContextPayload = {\n type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT';\n data: {\n startingPoint: number;\n };\n};\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // feature related instances\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n groupChannelFragmentOptions: {\n pubsub: PubSub<GroupChannelFragmentOptionsPubSubContextPayload>;\n };\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n readonly enableReactions: boolean;\n readonly enableReactionsSupergroup: boolean;\n readonly enableOgtag: boolean;\n };\n setting: {\n readonly enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n readonly enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n uploadSizeLimit: number | undefined;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n voiceMessageStatusManager,\n imageCompressionConfig,\n voiceMessageConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n useEffect(() => {\n return () => {\n sdkInstance.disconnect().then(() => _setCurrentUser(undefined));\n };\n }, [sdkInstance]);\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n voiceMessageConfig,\n voiceMessageStatusManager,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n groupChannelFragmentOptions: {\n pubsub: pubsub<GroupChannelFragmentOptionsPubSubContextPayload>(),\n },\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","pubsub","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","voiceMessageStatusManager","imageCompressionConfig","voiceMessageConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnectWebSocket","then","undefined","value","sdk","groupChannelFragmentOptions","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';\nimport type { FileType } from '../platform/types';\nimport pubsub, { type PubSub } from '../utils/pubsub';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n}\n\nexport type GroupChannelFragmentOptionsPubSubContextPayload = {\n type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT';\n data: {\n startingPoint: number;\n };\n};\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // feature related instances\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n groupChannelFragmentOptions: {\n pubsub: PubSub<GroupChannelFragmentOptionsPubSubContextPayload>;\n };\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n readonly enableReactions: boolean;\n readonly enableReactionsSupergroup: boolean;\n readonly enableOgtag: boolean;\n };\n setting: {\n readonly enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n readonly enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n uploadSizeLimit: number | undefined;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n voiceMessageStatusManager,\n imageCompressionConfig,\n voiceMessageConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n useEffect(() => {\n return () => {\n sdkInstance.disconnectWebSocket().then(() => _setCurrentUser(undefined));\n };\n }, [sdkInstance]);\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n voiceMessageConfig,\n voiceMessageStatusManager,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n groupChannelFragmentOptions: {\n pubsub: pubsub<GroupChannelFragmentOptionsPubSubContextPayload>(),\n },\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
|
package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js
CHANGED
|
@@ -3,8 +3,7 @@ import { TouchableOpacity, View } from 'react-native';
|
|
|
3
3
|
import { Avatar, Divider, Icon, Text, createStyleSheet, useAlert, useBottomSheet, useToast, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
4
4
|
import { Logger, getAvailableUriFromFileMessage, getFileExtension, getFileType, isMyMessage, isVoiceMessage, shouldRenderReaction, toMegabyte } from '@sendbird/uikit-utils';
|
|
5
5
|
import ThreadParentMessageRenderer from '../../../components/ThreadParentMessageRenderer';
|
|
6
|
-
import { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';
|
|
7
|
-
import SBUUtils from '../../../libs/SBUUtils';
|
|
6
|
+
import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../../hooks/useContext';
|
|
8
7
|
import { GroupChannelThreadContexts } from '../module/moduleContext';
|
|
9
8
|
import { ReactionAddons } from './../../../components/ReactionAddons';
|
|
10
9
|
const GroupChannelThreadParentMessageInfo = props => {
|
|
@@ -155,6 +154,7 @@ const useCreateMessagePressActions = _ref => {
|
|
|
155
154
|
onPressMediaMessage,
|
|
156
155
|
onEditMessage
|
|
157
156
|
} = _ref;
|
|
157
|
+
const handlers = useSBUHandlers();
|
|
158
158
|
const {
|
|
159
159
|
STRINGS
|
|
160
160
|
} = useLocalization();
|
|
@@ -205,9 +205,8 @@ const useCreateMessagePressActions = _ref => {
|
|
|
205
205
|
const fileType = getFileType(message.type || getFileExtension(message.name));
|
|
206
206
|
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
207
207
|
onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage === null || onDeleteMessage === void 0 ? void 0 : onDeleteMessage(message), getAvailableUriFromFileMessage(message));
|
|
208
|
-
} else {
|
|
209
|
-
SBUUtils.openURL(message.url);
|
|
210
208
|
}
|
|
209
|
+
handlers.onOpenFileURL(message.url);
|
|
211
210
|
}
|
|
212
211
|
};
|
|
213
212
|
const alertForMessageDelete = message => {
|
package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","TouchableOpacity","View","Avatar","Divider","Icon","Text","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","shouldRenderReaction","toMegabyte","ThreadParentMessageRenderer","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","GroupChannelThreadContexts","ReactionAddons","GroupChannelThreadParentMessageInfo","props","_parentMessage$sender","_parentMessage$thread","channel","parentMessage","setMessageToEdit","Fragment","STRINGS","colors","sbOptions","nickName","sender","nickname","LABELS","USER_NO_NAME","messageTimestamp","GROUP_CHANNEL_THREAD","PARENT_MESSAGE_TIME","replyCountText","REPLY_COUNT","threadInfo","replyCount","createMessagePressActions","useCreateMessagePressActions","currentUserId","onDeleteMessage","onPressMediaMessage","onEditMessage","onPress","onLongPress","bottomSheetItem","message","renderMessageInfoAndMenu","_parentMessage$sender2","createElement","style","styles","infoAndMenuContainer","size","uri","profileUrl","userNickAndTimeContainer","h2","color","onBackground01","numberOfLines","userNickname","caption2","onBackground03","messageTime","activeOpacity","undefined","icon","onBackground02","renderReplyCount","replyContainer","caption3","replyText","renderReactionAddons","configs","uikitWithAppInfo","groupChannel","isSuper","enableReactionsSupergroup","enableReactions","reactionButtonContainer","Message","reactionAddonType","messageProps","container","messageContainer","flexDirection","height","padding","paddingBottom","flex","marginLeft","marginBottom","marginTop","contextMenuButton","width","justifyContent","paddingHorizontal","paddingVertical","paddingLeft","_ref","toast","openSheet","alert","clipboardService","fileService","onDeleteFailure","error","show","TOAST","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","includes","openURL","alertForMessageDelete","title","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref2","sheetItems","menu","copy","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","sendingStatus","HeaderComponent","isGroupChannel","_ref3","onClose","BottomSheet","memo"],"sources":["GroupChannelThreadParentMessageInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Avatar,\n BottomSheetItem,\n Divider,\n Icon,\n Text,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderReaction,\n toMegabyte,\n} from '@sendbird/uikit-utils';\n\nimport ThreadParentMessageRenderer, {\n ThreadParentMessageRendererProps,\n} from '../../../components/ThreadParentMessageRenderer';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\nimport { ReactionAddons } from './../../../components/ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\n\nconst GroupChannelThreadParentMessageInfo = (props: GroupChannelThreadProps['ParentMessageInfo']) => {\n const { channel, parentMessage, setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { sbOptions } = useSendbirdChat();\n\n const nickName = parentMessage.sender?.nickname || STRINGS.LABELS.USER_NO_NAME;\n const messageTimestamp = STRINGS.GROUP_CHANNEL_THREAD.PARENT_MESSAGE_TIME(parentMessage);\n const replyCountText = STRINGS.GROUP_CHANNEL_THREAD.REPLY_COUNT(parentMessage.threadInfo?.replyCount || 0);\n const createMessagePressActions = useCreateMessagePressActions({\n channel: props.channel,\n currentUserId: props.currentUserId,\n onDeleteMessage: props.onDeleteMessage,\n onPressMediaMessage: props.onPressMediaMessage,\n onEditMessage: setMessageToEdit,\n });\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: parentMessage });\n\n const renderMessageInfoAndMenu = () => {\n return (\n <View style={styles.infoAndMenuContainer}>\n <Avatar size={34} uri={parentMessage.sender?.profileUrl} />\n <View style={styles.userNickAndTimeContainer}>\n <Text h2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>\n {nickName}\n </Text>\n <Text caption2 color={colors.onBackground03} style={styles.messageTime}>\n {messageTimestamp}\n </Text>\n </View>\n <TouchableOpacity activeOpacity={0.7} onPress={bottomSheetItem ? onLongPress : undefined}>\n <Icon icon={'more'} color={colors.onBackground02} />\n </TouchableOpacity>\n </View>\n );\n };\n\n const renderReplyCount = (replyCountText: string) => {\n if (replyCountText) {\n return (\n <View style={styles.replyContainer}>\n <Text caption3 color={colors.onBackground03} style={styles.replyText}>\n {replyCountText}\n </Text>\n <Divider />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const renderReactionAddons = () => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions)) {\n return (\n <View style={styles.reactionButtonContainer}>\n <ReactionAddons.Message\n channel={props.channel}\n message={parentMessage}\n reactionAddonType={'thread_parent_message'}\n />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n parentMessage,\n onPress,\n onLongPress,\n };\n\n return (\n <View>\n <View style={styles.container}>{renderMessageInfoAndMenu()}</View>\n <View style={styles.messageContainer}>\n <ThreadParentMessageRenderer {...messageProps}></ThreadParentMessageRenderer>\n </View>\n {renderReactionAddons()}\n <Divider />\n {renderReplyCount(replyCountText)}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n },\n infoAndMenuContainer: {\n flexDirection: 'row',\n height: 50,\n padding: 16,\n paddingBottom: 0,\n },\n userNickAndTimeContainer: {\n flexDirection: 'column',\n flex: 1,\n marginLeft: 8,\n },\n userNickname: {\n marginBottom: 2,\n },\n messageTime: {\n marginTop: 2,\n },\n contextMenuButton: {\n width: 34,\n height: 34,\n justifyContent: 'flex-end',\n },\n messageContainer: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n reactionButtonContainer: {\n paddingLeft: 16,\n marginBottom: 16,\n },\n replyContainer: {\n flexDirection: 'column',\n },\n replyText: {\n justifyContent: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n});\n\nconst useCreateMessagePressActions = ({\n channel,\n currentUserId,\n onDeleteMessage,\n onPressMediaMessage,\n onEditMessage,\n}: Pick<\n GroupChannelThreadProps['ParentMessageInfo'],\n 'channel' | 'currentUserId' | 'onDeleteMessage' | 'onPressMediaMessage'\n> & { onEditMessage: (message: HandleableMessage) => void }): CreateMessagePressActions => {\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage?.(message), getAvailableUriFromFileMessage(message));\n } else {\n SBUUtils.openURL(message.url);\n }\n }\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage?.(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage?.(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n if (message.isFileMessage()) {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n } else {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n };\n};\n\nexport default React.memo(GroupChannelThreadParentMessageInfo);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useContext","TouchableOpacity","View","Avatar","Divider","Icon","Text","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","Logger","getAvailableUriFromFileMessage","getFileExtension","getFileType","isMyMessage","isVoiceMessage","shouldRenderReaction","toMegabyte","ThreadParentMessageRenderer","useLocalization","usePlatformService","useSBUHandlers","useSendbirdChat","GroupChannelThreadContexts","ReactionAddons","GroupChannelThreadParentMessageInfo","props","_parentMessage$sender","_parentMessage$thread","channel","parentMessage","setMessageToEdit","Fragment","STRINGS","colors","sbOptions","nickName","sender","nickname","LABELS","USER_NO_NAME","messageTimestamp","GROUP_CHANNEL_THREAD","PARENT_MESSAGE_TIME","replyCountText","REPLY_COUNT","threadInfo","replyCount","createMessagePressActions","useCreateMessagePressActions","currentUserId","onDeleteMessage","onPressMediaMessage","onEditMessage","onPress","onLongPress","bottomSheetItem","message","renderMessageInfoAndMenu","_parentMessage$sender2","createElement","style","styles","infoAndMenuContainer","size","uri","profileUrl","userNickAndTimeContainer","h2","color","onBackground01","numberOfLines","userNickname","caption2","onBackground03","messageTime","activeOpacity","undefined","icon","onBackground02","renderReplyCount","replyContainer","caption3","replyText","renderReactionAddons","configs","uikitWithAppInfo","groupChannel","isSuper","enableReactionsSupergroup","enableReactions","reactionButtonContainer","Message","reactionAddonType","messageProps","container","messageContainer","flexDirection","height","padding","paddingBottom","flex","marginLeft","marginBottom","marginTop","contextMenuButton","width","justifyContent","paddingHorizontal","paddingVertical","paddingLeft","_ref","handlers","toast","openSheet","alert","clipboardService","fileService","onDeleteFailure","error","show","TOAST","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","includes","onOpenFileURL","alertForMessageDelete","title","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref2","sheetItems","menu","copy","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","sendingStatus","HeaderComponent","isGroupChannel","_ref3","onClose","BottomSheet","memo"],"sources":["GroupChannelThreadParentMessageInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Avatar,\n BottomSheetItem,\n Divider,\n Icon,\n Text,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderReaction,\n toMegabyte,\n} from '@sendbird/uikit-utils';\n\nimport ThreadParentMessageRenderer, {\n ThreadParentMessageRendererProps,\n} from '../../../components/ThreadParentMessageRenderer';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\nimport { ReactionAddons } from './../../../components/ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\n\nconst GroupChannelThreadParentMessageInfo = (props: GroupChannelThreadProps['ParentMessageInfo']) => {\n const { channel, parentMessage, setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { sbOptions } = useSendbirdChat();\n\n const nickName = parentMessage.sender?.nickname || STRINGS.LABELS.USER_NO_NAME;\n const messageTimestamp = STRINGS.GROUP_CHANNEL_THREAD.PARENT_MESSAGE_TIME(parentMessage);\n const replyCountText = STRINGS.GROUP_CHANNEL_THREAD.REPLY_COUNT(parentMessage.threadInfo?.replyCount || 0);\n const createMessagePressActions = useCreateMessagePressActions({\n channel: props.channel,\n currentUserId: props.currentUserId,\n onDeleteMessage: props.onDeleteMessage,\n onPressMediaMessage: props.onPressMediaMessage,\n onEditMessage: setMessageToEdit,\n });\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: parentMessage });\n\n const renderMessageInfoAndMenu = () => {\n return (\n <View style={styles.infoAndMenuContainer}>\n <Avatar size={34} uri={parentMessage.sender?.profileUrl} />\n <View style={styles.userNickAndTimeContainer}>\n <Text h2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>\n {nickName}\n </Text>\n <Text caption2 color={colors.onBackground03} style={styles.messageTime}>\n {messageTimestamp}\n </Text>\n </View>\n <TouchableOpacity activeOpacity={0.7} onPress={bottomSheetItem ? onLongPress : undefined}>\n <Icon icon={'more'} color={colors.onBackground02} />\n </TouchableOpacity>\n </View>\n );\n };\n\n const renderReplyCount = (replyCountText: string) => {\n if (replyCountText) {\n return (\n <View style={styles.replyContainer}>\n <Text caption3 color={colors.onBackground03} style={styles.replyText}>\n {replyCountText}\n </Text>\n <Divider />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const renderReactionAddons = () => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions)) {\n return (\n <View style={styles.reactionButtonContainer}>\n <ReactionAddons.Message\n channel={props.channel}\n message={parentMessage}\n reactionAddonType={'thread_parent_message'}\n />\n </View>\n );\n } else {\n return null;\n }\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n parentMessage,\n onPress,\n onLongPress,\n };\n\n return (\n <View>\n <View style={styles.container}>{renderMessageInfoAndMenu()}</View>\n <View style={styles.messageContainer}>\n <ThreadParentMessageRenderer {...messageProps}></ThreadParentMessageRenderer>\n </View>\n {renderReactionAddons()}\n <Divider />\n {renderReplyCount(replyCountText)}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n },\n infoAndMenuContainer: {\n flexDirection: 'row',\n height: 50,\n padding: 16,\n paddingBottom: 0,\n },\n userNickAndTimeContainer: {\n flexDirection: 'column',\n flex: 1,\n marginLeft: 8,\n },\n userNickname: {\n marginBottom: 2,\n },\n messageTime: {\n marginTop: 2,\n },\n contextMenuButton: {\n width: 34,\n height: 34,\n justifyContent: 'flex-end',\n },\n messageContainer: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n reactionButtonContainer: {\n paddingLeft: 16,\n marginBottom: 16,\n },\n replyContainer: {\n flexDirection: 'column',\n },\n replyText: {\n justifyContent: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n});\n\nconst useCreateMessagePressActions = ({\n channel,\n currentUserId,\n onDeleteMessage,\n onPressMediaMessage,\n onEditMessage,\n}: Pick<\n GroupChannelThreadProps['ParentMessageInfo'],\n 'channel' | 'currentUserId' | 'onDeleteMessage' | 'onPressMediaMessage'\n> & { onEditMessage: (message: HandleableMessage) => void }): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage?.(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage?.(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage?.(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n if (message.isFileMessage()) {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n } else {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n };\n};\n\nexport default React.memo(GroupChannelThreadParentMessageInfo);\n"],"mappings":"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"}
|
|
@@ -2,8 +2,14 @@ import { useContext } from 'react';
|
|
|
2
2
|
import { LocalizationContext } from '../contexts/LocalizationCtx';
|
|
3
3
|
import { PlatformServiceContext } from '../contexts/PlatformServiceCtx';
|
|
4
4
|
import { ReactionContext } from '../contexts/ReactionCtx';
|
|
5
|
+
import { SBUHandlersContext } from '../contexts/SBUHandlersCtx';
|
|
5
6
|
import { SendbirdChatContext } from '../contexts/SendbirdChatCtx';
|
|
6
7
|
import { UserProfileContext } from '../contexts/UserProfileCtx';
|
|
8
|
+
export const useSBUHandlers = () => {
|
|
9
|
+
const value = useContext(SBUHandlersContext);
|
|
10
|
+
if (!value) throw new Error('SBUHandlersContext is not provided');
|
|
11
|
+
return value;
|
|
12
|
+
};
|
|
7
13
|
export const useLocalization = () => {
|
|
8
14
|
const value = useContext(LocalizationContext);
|
|
9
15
|
if (!value) throw new Error('LocalizationContext is not provided');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useContext","LocalizationContext","PlatformServiceContext","ReactionContext","SendbirdChatContext","UserProfileContext","
|
|
1
|
+
{"version":3,"names":["useContext","LocalizationContext","PlatformServiceContext","ReactionContext","SBUHandlersContext","SendbirdChatContext","UserProfileContext","useSBUHandlers","value","Error","useLocalization","usePlatformService","useSendbirdChat","useUserProfile","useReaction"],"sources":["useContext.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport { LocalizationContext } from '../contexts/LocalizationCtx';\nimport { PlatformServiceContext } from '../contexts/PlatformServiceCtx';\nimport { ReactionContext } from '../contexts/ReactionCtx';\nimport { SBUHandlersContext } from '../contexts/SBUHandlersCtx';\nimport { SendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { UserProfileContext } from '../contexts/UserProfileCtx';\n\nexport const useSBUHandlers = () => {\n const value = useContext(SBUHandlersContext);\n if (!value) throw new Error('SBUHandlersContext is not provided');\n return value;\n};\n\nexport const useLocalization = () => {\n const value = useContext(LocalizationContext);\n if (!value) throw new Error('LocalizationContext is not provided');\n return value;\n};\n\nexport const usePlatformService = () => {\n const value = useContext(PlatformServiceContext);\n if (!value) throw new Error('PlatformServiceContext is not provided');\n return value;\n};\n\nexport const useSendbirdChat = () => {\n const value = useContext(SendbirdChatContext);\n if (!value) throw new Error('SendbirdChatContext is not provided');\n return value;\n};\n\nexport const useUserProfile = () => {\n const value = useContext(UserProfileContext);\n if (!value) throw new Error('UserProfileContext is not provided');\n return value;\n};\n\nexport const useReaction = () => {\n const value = useContext(ReactionContext);\n if (!value) throw new Error('ReactionContext is not provided');\n return value;\n};\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAElC,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,sBAAsB,QAAQ,gCAAgC;AACvE,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,kBAAkB,QAAQ,4BAA4B;AAC/D,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,kBAAkB,QAAQ,4BAA4B;AAE/D,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,KAAK,GAAGR,UAAU,CAACI,kBAAkB,CAAC;EAC5C,IAAI,CAACI,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;EACjE,OAAOD,KAAK;AACd,CAAC;AAED,OAAO,MAAME,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMF,KAAK,GAAGR,UAAU,CAACC,mBAAmB,CAAC;EAC7C,IAAI,CAACO,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,qCAAqC,CAAC;EAClE,OAAOD,KAAK;AACd,CAAC;AAED,OAAO,MAAMG,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAMH,KAAK,GAAGR,UAAU,CAACE,sBAAsB,CAAC;EAChD,IAAI,CAACM,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,wCAAwC,CAAC;EACrE,OAAOD,KAAK;AACd,CAAC;AAED,OAAO,MAAMI,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMJ,KAAK,GAAGR,UAAU,CAACK,mBAAmB,CAAC;EAC7C,IAAI,CAACG,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,qCAAqC,CAAC;EAClE,OAAOD,KAAK;AACd,CAAC;AAED,OAAO,MAAMK,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAML,KAAK,GAAGR,UAAU,CAACM,kBAAkB,CAAC;EAC5C,IAAI,CAACE,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;EACjE,OAAOD,KAAK;AACd,CAAC;AAED,OAAO,MAAMM,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAMN,KAAK,GAAGR,UAAU,CAACG,eAAe,CAAC;EACzC,IAAI,CAACK,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,iCAAiC,CAAC;EAC9D,OAAOD,KAAK;AACd,CAAC"}
|
package/lib/module/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.7.
|
|
1
|
+
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.7.2';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,OAAO;AACvB,eAAeA,OAAO"}
|
|
@@ -5,6 +5,7 @@ import { OpenChannelModule } from '@sendbird/chat/openChannel';
|
|
|
5
5
|
import type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
6
6
|
import { SBUConfig } from '@sendbird/uikit-tools';
|
|
7
7
|
import { PartialDeep, SendbirdChatSDK, SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
|
|
8
|
+
import { type SBUHandlers } from '../contexts/SBUHandlersCtx';
|
|
8
9
|
import type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';
|
|
9
10
|
import type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';
|
|
10
11
|
import { MentionConfigInterface } from '../libs/MentionConfig';
|
|
@@ -13,7 +14,7 @@ import type { StringSet } from '../localization/StringSet.type';
|
|
|
13
14
|
import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface, PlayerServiceInterface, RecorderServiceInterface } from '../platform/types';
|
|
14
15
|
import { ErrorBoundaryProps, LocalCacheStorage } from '../types';
|
|
15
16
|
export declare const SendbirdUIKit: Readonly<{
|
|
16
|
-
VERSION: "3.7.
|
|
17
|
+
VERSION: "3.7.2";
|
|
17
18
|
PLATFORM: string;
|
|
18
19
|
DEFAULT: {
|
|
19
20
|
AUTO_PUSH_TOKEN_REGISTRATION: boolean;
|
|
@@ -64,6 +65,7 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
64
65
|
onError?: (props: ErrorBoundaryProps) => void;
|
|
65
66
|
ErrorInfoComponent?: (props: ErrorBoundaryProps) => React.ReactNode;
|
|
66
67
|
};
|
|
68
|
+
handlers?: Partial<SBUHandlers>;
|
|
67
69
|
toast?: {
|
|
68
70
|
dismissTimeout?: number;
|
|
69
71
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SBUHandlers {
|
|
3
|
+
/**
|
|
4
|
+
* Callback function to handle opening a URL.
|
|
5
|
+
* This is triggered when a URL needs to be opened.
|
|
6
|
+
*/
|
|
7
|
+
onOpenURL: (url: string) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Callback function to handle opening a file URL.
|
|
10
|
+
* This is triggered when a file URL needs to be opened.
|
|
11
|
+
*
|
|
12
|
+
* Note that this function is also called redundantly
|
|
13
|
+
* when `onPressMediaMessage` handler is triggered by clicking on media messages containing images, videos, or audio.
|
|
14
|
+
*/
|
|
15
|
+
onOpenFileURL: (url: string) => void;
|
|
16
|
+
}
|
|
17
|
+
type Props = React.PropsWithChildren<SBUHandlers>;
|
|
18
|
+
export type SBUHandlersContextType = SBUHandlers;
|
|
19
|
+
export declare const SBUHandlersContext: React.Context<SBUHandlers | null>;
|
|
20
|
+
export declare const SBUHandlersProvider: ({ children, onOpenURL, onOpenFileURL }: Props) => React.JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const useSBUHandlers: () => import("../contexts/SBUHandlersCtx").SBUHandlers;
|
|
1
2
|
export declare const useLocalization: () => import("../contexts/LocalizationCtx").LocalizationContextType;
|
|
2
3
|
export declare const usePlatformService: () => import("../contexts/PlatformServiceCtx").PlatformServiceContextType;
|
|
3
4
|
export declare const useSendbirdChat: () => import("../contexts/SendbirdChatCtx").SendbirdChatContextType;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const VERSION = "3.7.
|
|
1
|
+
declare const VERSION = "3.7.2";
|
|
2
2
|
export default VERSION;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sendbird/uikit-react-native",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.2",
|
|
4
4
|
"description": "Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sendbird",
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@openspacelabs/react-native-zoomable-view": "^2.1.5",
|
|
63
|
-
"@sendbird/uikit-chat-hooks": "3.7.
|
|
64
|
-
"@sendbird/uikit-react-native-foundation": "3.7.
|
|
63
|
+
"@sendbird/uikit-chat-hooks": "3.7.2",
|
|
64
|
+
"@sendbird/uikit-react-native-foundation": "3.7.2",
|
|
65
65
|
"@sendbird/uikit-tools": "0.0.1-alpha.77",
|
|
66
|
-
"@sendbird/uikit-utils": "3.7.
|
|
66
|
+
"@sendbird/uikit-utils": "3.7.2"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@bam.tech/react-native-image-resizer": "^3.0.4",
|
|
@@ -208,5 +208,5 @@
|
|
|
208
208
|
]
|
|
209
209
|
]
|
|
210
210
|
},
|
|
211
|
-
"gitHead": "
|
|
211
|
+
"gitHead": "b865930e985bc4e50ceab20aa9d26e73b940411c"
|
|
212
212
|
}
|
|
@@ -30,8 +30,13 @@ import {
|
|
|
30
30
|
} from '@sendbird/uikit-utils';
|
|
31
31
|
|
|
32
32
|
import type { UserProfileContextType } from '../../contexts/UserProfileCtx';
|
|
33
|
-
import {
|
|
34
|
-
|
|
33
|
+
import {
|
|
34
|
+
useLocalization,
|
|
35
|
+
usePlatformService,
|
|
36
|
+
useSBUHandlers,
|
|
37
|
+
useSendbirdChat,
|
|
38
|
+
useUserProfile,
|
|
39
|
+
} from '../../hooks/useContext';
|
|
35
40
|
import ChatFlatList from '../ChatFlatList';
|
|
36
41
|
import { ReactionAddons } from '../ReactionAddons';
|
|
37
42
|
|
|
@@ -216,6 +221,7 @@ const useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdO
|
|
|
216
221
|
| 'onResendFailedMessage'
|
|
217
222
|
| 'onPressMediaMessage'
|
|
218
223
|
>): CreateMessagePressActions => {
|
|
224
|
+
const handlers = useSBUHandlers();
|
|
219
225
|
const { colors } = useUIKitTheme();
|
|
220
226
|
const { STRINGS } = useLocalization();
|
|
221
227
|
const toast = useToast();
|
|
@@ -265,9 +271,8 @@ const useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdO
|
|
|
265
271
|
const fileType = getFileType(message.type || getFileExtension(message.name));
|
|
266
272
|
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
267
273
|
onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));
|
|
268
|
-
} else {
|
|
269
|
-
SBUUtils.openURL(message.url);
|
|
270
274
|
}
|
|
275
|
+
handlers.onOpenFileURL(message.url);
|
|
271
276
|
}
|
|
272
277
|
};
|
|
273
278
|
|
|
@@ -30,8 +30,13 @@ import {
|
|
|
30
30
|
} from '@sendbird/uikit-utils';
|
|
31
31
|
|
|
32
32
|
import type { UserProfileContextType } from '../../contexts/UserProfileCtx';
|
|
33
|
-
import {
|
|
34
|
-
|
|
33
|
+
import {
|
|
34
|
+
useLocalization,
|
|
35
|
+
usePlatformService,
|
|
36
|
+
useSBUHandlers,
|
|
37
|
+
useSendbirdChat,
|
|
38
|
+
useUserProfile,
|
|
39
|
+
} from '../../hooks/useContext';
|
|
35
40
|
import { ReactionAddons } from '../ReactionAddons';
|
|
36
41
|
import ThreadChatFlatList from '../ThreadChatFlatList';
|
|
37
42
|
|
|
@@ -194,6 +199,7 @@ const useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdO
|
|
|
194
199
|
ChannelThreadMessageListProps<T>,
|
|
195
200
|
'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'
|
|
196
201
|
>): CreateMessagePressActions => {
|
|
202
|
+
const handlers = useSBUHandlers();
|
|
197
203
|
const { colors } = useUIKitTheme();
|
|
198
204
|
const { STRINGS } = useLocalization();
|
|
199
205
|
const toast = useToast();
|
|
@@ -243,9 +249,8 @@ const useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdO
|
|
|
243
249
|
const fileType = getFileType(message.type || getFileExtension(message.name));
|
|
244
250
|
if (['image', 'video', 'audio'].includes(fileType)) {
|
|
245
251
|
onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));
|
|
246
|
-
} else {
|
|
247
|
-
SBUUtils.openURL(message.url);
|
|
248
252
|
}
|
|
253
|
+
handlers.onOpenFileURL(message.url);
|
|
249
254
|
}
|
|
250
255
|
};
|
|
251
256
|
|
|
@@ -25,8 +25,7 @@ import {
|
|
|
25
25
|
import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
|
|
26
26
|
import { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';
|
|
27
27
|
import type { GroupChannelProps } from '../../domain/groupChannel/types';
|
|
28
|
-
import { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';
|
|
29
|
-
import SBUUtils from '../../libs/SBUUtils';
|
|
28
|
+
import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';
|
|
30
29
|
import { TypingIndicatorType } from '../../types';
|
|
31
30
|
import { ReactionAddons } from '../ReactionAddons';
|
|
32
31
|
import GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';
|
|
@@ -49,6 +48,7 @@ const GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'
|
|
|
49
48
|
nextMessage,
|
|
50
49
|
hideParentMessage,
|
|
51
50
|
}) => {
|
|
51
|
+
const handlers = useSBUHandlers();
|
|
52
52
|
const playerUnsubscribes = useRef<(() => void)[]>([]);
|
|
53
53
|
const { palette } = useUIKitTheme();
|
|
54
54
|
const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();
|
|
@@ -98,7 +98,7 @@ const GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'
|
|
|
98
98
|
variant,
|
|
99
99
|
onPress,
|
|
100
100
|
onLongPress,
|
|
101
|
-
onPressURL: (url) =>
|
|
101
|
+
onPressURL: (url) => handlers.onOpenURL(url),
|
|
102
102
|
onPressAvatar: () => {
|
|
103
103
|
if ('sender' in message) onShowUserProfile?.(message.sender);
|
|
104
104
|
},
|
|
@@ -12,8 +12,7 @@ import {
|
|
|
12
12
|
} from '@sendbird/uikit-utils';
|
|
13
13
|
|
|
14
14
|
import type { OpenChannelProps } from '../../domain/openChannel/types';
|
|
15
|
-
import { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';
|
|
16
|
-
import SBUUtils from '../../libs/SBUUtils';
|
|
15
|
+
import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';
|
|
17
16
|
import OpenChannelMessageDateSeparator from './OpenChannelMessageDateSeparator';
|
|
18
17
|
|
|
19
18
|
const OpenChannelMessageRenderer: OpenChannelProps['Fragment']['renderMessage'] = ({
|
|
@@ -26,6 +25,7 @@ const OpenChannelMessageRenderer: OpenChannelProps['Fragment']['renderMessage']
|
|
|
26
25
|
prevMessage,
|
|
27
26
|
nextMessage,
|
|
28
27
|
}) => {
|
|
28
|
+
const handlers = useSBUHandlers();
|
|
29
29
|
const { sbOptions } = useSendbirdChat();
|
|
30
30
|
const { STRINGS } = useLocalization();
|
|
31
31
|
const { mediaService } = usePlatformService();
|
|
@@ -35,7 +35,7 @@ const OpenChannelMessageRenderer: OpenChannelProps['Fragment']['renderMessage']
|
|
|
35
35
|
channel,
|
|
36
36
|
onPress,
|
|
37
37
|
onLongPress,
|
|
38
|
-
onPressURL: (url) =>
|
|
38
|
+
onPressURL: (url) => handlers.onOpenURL(url),
|
|
39
39
|
onPressAvatar: () => 'sender' in message && onShowUserProfile?.(message.sender, { hideMessageButton: true }),
|
|
40
40
|
grouped: groupWithPrev,
|
|
41
41
|
strings: {
|
|
@@ -11,8 +11,7 @@ import {
|
|
|
11
11
|
} from '@sendbird/uikit-utils';
|
|
12
12
|
|
|
13
13
|
import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
|
|
14
|
-
import
|
|
15
|
-
import { usePlatformService, useSendbirdChat } from './../../hooks/useContext';
|
|
14
|
+
import { usePlatformService, useSBUHandlers, useSendbirdChat } from './../../hooks/useContext';
|
|
16
15
|
import ThreadParentMessageFile from './ThreadParentMessage.file';
|
|
17
16
|
import ThreadParentMessageFileImage from './ThreadParentMessage.file.image';
|
|
18
17
|
import ThreadParentMessageFileVideo from './ThreadParentMessage.file.video';
|
|
@@ -33,6 +32,7 @@ export type ThreadParentMessageRendererProps<AdditionalProps = unknown> = {
|
|
|
33
32
|
} & AdditionalProps;
|
|
34
33
|
|
|
35
34
|
const ThreadParentMessageRenderer = (props: ThreadParentMessageRendererProps) => {
|
|
35
|
+
const handlers = useSBUHandlers();
|
|
36
36
|
const playerUnsubscribes = useRef<(() => void)[]>([]);
|
|
37
37
|
const { sbOptions, currentUser, mentionManager } = useSendbirdChat();
|
|
38
38
|
const { palette } = useUIKitTheme();
|
|
@@ -50,7 +50,7 @@ const ThreadParentMessageRenderer = (props: ThreadParentMessageRendererProps) =>
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
const messageProps: ThreadParentMessageRendererProps = {
|
|
53
|
-
onPressURL: (url) =>
|
|
53
|
+
onPressURL: (url) => handlers.onOpenURL(url),
|
|
54
54
|
onToggleVoiceMessage: async (state, setState) => {
|
|
55
55
|
if (isVoiceMessage(parentMessage) && parentMessage.sendingStatus === 'succeeded') {
|
|
56
56
|
if (playerService.uri === parentMessage.url) {
|