@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","SendbirdChat","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","VoiceMessageConfig","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","USE_USER_ID_FOR_NICKNAME","IMAGE_COMPRESSION","chatOmitKeys","sanitizeChatOptions","chatOptions","opts","forEach","key","SendbirdUIKitContainer","props","children","appId","uikitOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","reaction","localCacheStorage","Error","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","sdkInstance","setSdkInstance","sendbird","initializeSendbird","current","chatSDK","imageCompressionConfig","voiceMessageConfig","mentionConfig","useConfigInstance","emojiManager","mentionManager","u","renderChildren","disabled","createElement","storage","localConfigs","common","groupChannel","channel","channelList","groupChannelList","setting","groupChannelSettings","openChannel","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","fileService","file","notificationService","notification","clipboardService","clipboard","mediaService","media","playerService","player","recorderService","recorder","theme","HeaderComponent","defaultTitleAlign","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","_extends","Consumer","value","STRINGS","defaultLabels","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","options","onInitialized","chatInitParams","init","newInstance","modules","localCacheEnabled","useAsyncStorageStore","platform","getDeviceOSPlatform","deviceOSInfo","version","String","Version","customData","platform_version","getReactNativeVersion","uikitExtension","product","UIKIT_CHAT","REACT_NATIVE","addSendbirdExtensions","addExtension","addEventListener","_chatSDK$setOnlineLis","_chatSDK","_chatSDK$setOfflineLi","_chatSDK2","listener","callback","callbackType","callCount","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","call","onOnline","setOfflineListener","onOffline","ANDROID","IOS","WEB","WINDOWS","undefined","major","minor","patch","constants","reactNativeVersion","_ref","_voiceMessage$recorde3","_voiceMessage$recorde4","imageCompression","userMention","voiceMessage","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","compressionRate","COMPRESSION_RATE","width","height","_voiceMessage$recorde","_voiceMessage$recorde2","minDuration","RECORDER","MIN_DURATION","maxDuration","MAX_DURATION"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport SendbirdChat, { DeviceOsPlatform, SendbirdChatParams, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';\nimport type {\n PartialDeep,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport VoiceMessageConfig, { VoiceMessageConfigInterface } from '../libs/VoiceMessageConfig';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n PlayerServiceInterface,\n RecorderServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n USE_USER_ID_FOR_NICKNAME: false,\n IMAGE_COMPRESSION: true,\n },\n});\n\ntype UnimplementedFeatures = 'threadReplySelectType' | 'replyType';\nexport type ChatOmittedInitParams = Omit<\n SendbirdChatParams<[GroupChannelModule, OpenChannelModule]>,\n (typeof chatOmitKeys)[number]\n>;\n\nconst chatOmitKeys = [\n 'appId',\n 'newInstance',\n 'modules',\n 'debugMode',\n 'appVersion',\n 'localCacheEnabled',\n 'useAsyncStorageStore',\n] as const;\nfunction sanitizeChatOptions<T extends Record<string, unknown>>(chatOptions: T): T {\n const opts = { ...chatOptions };\n chatOmitKeys.forEach((key) => delete opts[key]);\n return opts;\n}\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media: MediaServiceInterface;\n player: PlayerServiceInterface;\n recorder: RecorderServiceInterface;\n };\n chatOptions: {\n localCacheStorage: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<ChatOmittedInitParams> &\n Partial<ChatRelatedFeaturesInUIKit>;\n uikitOptions?: PartialDeep<{\n common: SBUConfig['common'];\n groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures> & {\n replyType: Extract<SBUConfig['groupChannel']['channel']['replyType'], 'none' | 'quote_reply'>;\n };\n groupChannelList: SBUConfig['groupChannel']['channelList'];\n groupChannelSettings: SBUConfig['groupChannel']['setting'];\n openChannel: SBUConfig['openChannel']['channel'];\n }>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n errorBoundary?: {\n disabled?: boolean;\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => React.ReactNode;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n reaction?: {\n onPressUserProfile?: (user: SendbirdUser | SendbirdMember) => void;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n voiceMessage?: PartialDeep<VoiceMessageConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = (props: SendbirdUIKitContainerProps) => {\n const {\n children,\n appId,\n chatOptions,\n uikitOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n reaction,\n } = props;\n\n if (!chatOptions.localCacheStorage) {\n throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');\n }\n\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n\n const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, { internalStorage, ...sanitizeChatOptions(chatOptions) });\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const { imageCompressionConfig, voiceMessageConfig, mentionConfig } = useConfigInstance(props);\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n const mentionManager = useMemo(() => new MentionManager(mentionConfig), [mentionConfig]);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, { internalStorage, ...sanitizeChatOptions(chatOptions) });\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, internalStorage]);\n\n const renderChildren = () => {\n if (errorBoundary?.disabled) {\n return children;\n } else {\n return <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>;\n }\n };\n\n return (\n <SafeAreaProvider>\n <UIKitConfigProvider\n storage={internalStorage}\n localConfigs={{\n common: uikitOptions?.common,\n groupChannel: {\n channel: uikitOptions?.groupChannel,\n channelList: uikitOptions?.groupChannelList,\n setting: uikitOptions?.groupChannelSettings,\n },\n openChannel: {\n channel: uikitOptions?.openChannel,\n },\n }}\n >\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n voiceMessageConfig={voiceMessageConfig}\n enableAutoPushTokenRegistration={\n chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableUseUserIdForNickname={\n chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableImageCompression={chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n playerService={platformServices.player}\n recorderService={platformServices.recorder}\n voiceMessageConfig={voiceMessageConfig}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider {...userProfile} statusBarTranslucent={styles?.statusBarTranslucent ?? true}>\n <ReactionProvider {...reaction}>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {renderChildren()}\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </UIKitConfigProvider>\n </SafeAreaProvider>\n );\n};\n\ninterface InitOptions extends ChatOmittedInitParams {\n internalStorage: InternalLocalCacheStorage;\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK;\n}\nconst initializeSendbird = (appId: string, options: InitOptions) => {\n let chatSDK: SendbirdChatSDK;\n const unsubscribes: Array<() => void> = [];\n const { internalStorage, onInitialized, ...chatInitParams } = options;\n\n chatSDK = SendbirdChat.init({\n ...chatInitParams,\n appId,\n newInstance: true,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: true,\n useAsyncStorageStore: internalStorage as never,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n const platform = getDeviceOSPlatform();\n if (SendbirdUIKit.VERSION && platform) {\n const deviceOSInfo = { platform, version: String(Platform.Version) };\n const customData = { platform_version: getReactNativeVersion() };\n const uikitExtension = {\n product: SendbirdProduct.UIKIT_CHAT,\n version: SendbirdUIKit.VERSION,\n platform: SendbirdPlatform.REACT_NATIVE,\n };\n\n chatSDK.addSendbirdExtensions([uikitExtension], deviceOSInfo, customData);\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n try {\n // NOTE: For removing buggy behavior of NetInfo.addEventListener\n // When you first add an event listener, it is assumed that the initialization of the internal event detector is done simultaneously.\n // In other words, when you call the first event listener two events are triggered immediately\n // - the one that is called when adding the event listener\n // - and the internal initialization event\n NetInfo.addEventListener(NOOP)();\n } catch {}\n\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n let callCount = 0;\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n\n // NOTE: When NetInfo.addEventListener is called\n // the event is immediately triggered regardless of whether the event actually occurred.\n // This is why it filters the first event.\n if (callCount === 0) {\n callCount++;\n return;\n }\n\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nfunction getDeviceOSPlatform() {\n switch (Platform.OS) {\n case 'android':\n return DeviceOsPlatform.ANDROID;\n case 'ios':\n return DeviceOsPlatform.IOS;\n case 'web':\n return DeviceOsPlatform.WEB;\n case 'windows':\n return DeviceOsPlatform.WINDOWS;\n default:\n return undefined;\n }\n}\n\nfunction getReactNativeVersion() {\n const { major, minor, patch } = Platform.constants.reactNativeVersion;\n return `${major}.${minor}.${patch}`;\n}\n\nconst useConfigInstance = ({ imageCompression, userMention, voiceMessage }: SendbirdUIKitContainerProps) => {\n const mentionConfig = useMemo(() => {\n return new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n const imageCompressionConfig = useMemo(() => {\n return new ImageCompressionConfig({\n compressionRate: imageCompression?.compressionRate || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,\n width: imageCompression?.width,\n height: imageCompression?.height,\n });\n }, [imageCompression?.compressionRate, imageCompression?.width, imageCompression?.height]);\n\n const voiceMessageConfig = useMemo(() => {\n return new VoiceMessageConfig({\n recorder: {\n minDuration: voiceMessage?.recorder?.minDuration ?? VoiceMessageConfig.DEFAULT.RECORDER.MIN_DURATION,\n maxDuration: voiceMessage?.recorder?.maxDuration ?? VoiceMessageConfig.DEFAULT.RECORDER.MAX_DURATION,\n },\n });\n }, [voiceMessage?.recorder?.minDuration, voiceMessage?.recorder?.maxDuration]);\n\n return {\n mentionConfig,\n imageCompressionConfig,\n voiceMessageConfig,\n };\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,eAAe,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACzE,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,gBAAgB,QAAQ,gCAAgC;AAEjE,OAAOC,YAAY,IAAIC,gBAAgB,EAAsBC,gBAAgB,EAAEC,eAAe,QAAQ,gBAAgB;AACtH,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,iBAAiB,QAAQ,4BAA4B;AAE9D,SACEC,cAAc,EACdC,MAAM,EACNC,mBAAmB,EACnBC,eAAe,EACfC,aAAa,EACbC,kBAAkB,QACb,yCAAyC;AAChD,SAAoBC,mBAAmB,QAAQ,uBAAuB;AAStE,SAASC,IAAI,EAAEC,eAAe,QAAQ,uBAAuB;AAE7D,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,6BAA6B;AACvF,SAASC,uBAAuB,QAAQ,gCAAgC;AACxE,SAASC,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,oBAAoB,QAAQ,6BAA6B;AAClE,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,OAAOC,YAAY,MAAM,sBAAsB;AAE/C,OAAOC,sBAAsB,MAAM,gCAAgC;AACnE,OAAOC,yBAAyB,MAAM,mCAAmC;AACzE,OAAOC,aAAa,MAAkC,uBAAuB;AAC7E,OAAOC,cAAc,MAAM,wBAAwB;AACnD,OAAOC,kBAAkB,MAAuC,4BAA4B;AAC5F,OAAOC,WAAW,MAAM,8BAA8B;AAEtD,OAAOC,gBAAgB,MAAM,2BAA2B;AAUxD,OAAOC,OAAO,MAAM,YAAY;AAChC,OAAOC,8BAA8B,MAAM,kCAAkC;AAE7E,MAAMC,OAAO,GAAGH,gBAAgB,CAACI,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC;AAC/E,OAAO,MAAMC,aAAa,GAAGC,MAAM,CAACC,MAAM,CAAC;EACzCN,OAAO;EACPO,QAAQ,EAAEtC,QAAQ,CAACuC,EAAE,CAACC,WAAW,EAAE;EACnCC,OAAO,EAAE;IACPC,4BAA4B,EAAE,IAAI;IAClCC,wBAAwB,EAAE,KAAK;IAC/BC,iBAAiB,EAAE;EACrB;AACF,CAAC,CAAC;AAQF,MAAMC,YAAY,GAAG,CACnB,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,CACd;AACV,SAASC,mBAAmBA,CAAoCC,WAAc,EAAK;EACjF,MAAMC,IAAI,GAAG;IAAE,GAAGD;EAAY,CAAC;EAC/BF,YAAY,CAACI,OAAO,CAAEC,GAAG,IAAK,OAAOF,IAAI,CAACE,GAAG,CAAC,CAAC;EAC/C,OAAOF,IAAI;AACb;AA2DA,MAAMG,sBAAsB,GAAIC,KAAkC,IAAK;EACrE,MAAM;IACJC,QAAQ;IACRC,KAAK;IACLP,WAAW;IACXQ,YAAY;IACZC,gBAAgB;IAChBC,YAAY;IACZC,MAAM;IACNC,aAAa;IACbC,KAAK;IACLC,WAAW;IACXC;EACF,CAAC,GAAGV,KAAK;EAET,IAAI,CAACL,WAAW,CAACgB,iBAAiB,EAAE;IAClC,MAAM,IAAIC,KAAK,CAAC,mEAAmE,CAAC;EACtF;EAEA,MAAMC,gBAAgB,GAAG,CAAAR,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAES,SAAS,KAAIrC,WAAW;EAE/D,MAAMsC,YAAY,GAAGnD,eAAe,EAAE;EACtC,MAAMoD,YAAY,GAAGtE,MAAM,CAAoB,EAAE,CAAC;EAElD,MAAM,CAACuE,eAAe,CAAC,GAAGtE,QAAQ,CAAC,MAAM,IAAI0B,yBAAyB,CAACsB,WAAW,CAACgB,iBAAiB,CAAC,CAAC;EACtG,MAAM,CAACO,WAAW,EAAEC,cAAc,CAAC,GAAGxE,QAAQ,CAAkB,MAAM;IACpE,MAAMyE,QAAQ,GAAGC,kBAAkB,CAACnB,KAAK,EAAE;MAAEe,eAAe;MAAE,GAAGvB,mBAAmB,CAACC,WAAW;IAAE,CAAC,CAAC;IACpGqB,YAAY,CAACM,OAAO,GAAGF,QAAQ,CAACJ,YAAY;IAC5C,OAAOI,QAAQ,CAACG,OAAO;EACzB,CAAC,CAAC;EAEF,MAAM;IAAEC,sBAAsB;IAAEC,kBAAkB;IAAEC;EAAc,CAAC,GAAGC,iBAAiB,CAAC3B,KAAK,CAAC;EAC9F,MAAM4B,YAAY,GAAGnF,OAAO,CAAC,MAAM,IAAI0B,YAAY,CAAC8C,eAAe,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;EACxF,MAAMY,cAAc,GAAGpF,OAAO,CAAC,MAAM,IAAI8B,cAAc,CAACmD,aAAa,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAExFlF,eAAe,CAAC,MAAM;IACpB,IAAI,CAACuE,YAAY,EAAE;MACjB,MAAMK,QAAQ,GAAGC,kBAAkB,CAACnB,KAAK,EAAE;QAAEe,eAAe;QAAE,GAAGvB,mBAAmB,CAACC,WAAW;MAAE,CAAC,CAAC;MACpGwB,cAAc,CAACC,QAAQ,CAACG,OAAO,CAAC;MAChCP,YAAY,CAACM,OAAO,GAAGF,QAAQ,CAACJ,YAAY;IAC9C;IAEA,OAAO,MAAM;MACXA,YAAY,CAACM,OAAO,CAACzB,OAAO,CAAEiC,CAAC,IAAK;QAClC,IAAI;UACFA,CAAC,EAAE;QACL,CAAC,CAAC,MAAM,CAAC;MACX,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,EAAE,CAAC5B,KAAK,EAAEe,eAAe,CAAC,CAAC;EAE5B,MAAMc,cAAc,GAAGA,CAAA,KAAM;IAC3B,IAAIxB,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEyB,QAAQ,EAAE;MAC3B,OAAO/B,QAAQ;IACjB,CAAC,MAAM;MACL,oBAAO1D,KAAA,CAAA0F,aAAA,CAACrD,8BAA8B,EAAK2B,aAAa,EAAGN,QAAQ,CAAkC;IACvG;EACF,CAAC;EAED,oBACE1D,KAAA,CAAA0F,aAAA,CAACpF,gBAAgB,qBACfN,KAAA,CAAA0F,aAAA,CAACvE,mBAAmB;IAClBwE,OAAO,EAAEjB,eAAgB;IACzBkB,YAAY,EAAE;MACZC,MAAM,EAAEjC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEiC,MAAM;MAC5BC,YAAY,EAAE;QACZC,OAAO,EAAEnC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEkC,YAAY;QACnCE,WAAW,EAAEpC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEqC,gBAAgB;QAC3CC,OAAO,EAAEtC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEuC;MACzB,CAAC;MACDC,WAAW,EAAE;QACXL,OAAO,EAAEnC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEwC;MACzB;IACF;EAAE,gBAEFpG,KAAA,CAAA0F,aAAA,CAAChE,oBAAoB;IACnBiD,WAAW,EAAEA,WAAY;IACzBU,YAAY,EAAEA,YAAa;IAC3BC,cAAc,EAAEA,cAAe;IAC/BL,sBAAsB,EAAEA,sBAAuB;IAC/CC,kBAAkB,EAAEA,kBAAmB;IACvCmB,+BAA+B,EAC7BjD,WAAW,CAACiD,+BAA+B,IAAI7D,aAAa,CAACM,OAAO,CAACC,4BACtE;IACDuD,0BAA0B,EACxBlD,WAAW,CAACkD,0BAA0B,IAAI9D,aAAa,CAACM,OAAO,CAACE,wBACjE;IACDuD,sBAAsB,EAAEnD,WAAW,CAACmD,sBAAsB,IAAI/D,aAAa,CAACM,OAAO,CAACG;EAAkB,gBAEtGjD,KAAA,CAAA0F,aAAA,CAACnE,oBAAoB;IAACgD,SAAS,EAAED;EAAiB,gBAChDtE,KAAA,CAAA0F,aAAA,CAAClE,uBAAuB;IACtBgF,WAAW,EAAE3C,gBAAgB,CAAC4C,IAAK;IACnCC,mBAAmB,EAAE7C,gBAAgB,CAAC8C,YAAa;IACnDC,gBAAgB,EAAE/C,gBAAgB,CAACgD,SAAU;IAC7CC,YAAY,EAAEjD,gBAAgB,CAACkD,KAAM;IACrCC,aAAa,EAAEnD,gBAAgB,CAACoD,MAAO;IACvCC,eAAe,EAAErD,gBAAgB,CAACsD,QAAS;IAC3CjC,kBAAkB,EAAEA;EAAmB,gBAEvClF,KAAA,CAAA0F,aAAA,CAACxE,kBAAkB;IAACkG,KAAK,EAAE,CAAArD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEqD,KAAK,KAAIpG;EAAgB,gBAC1DhB,KAAA,CAAA0F,aAAA,CAAC3E,mBAAmB;IAClBsG,eAAe,EAAE,CAAAtD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEsD,eAAe,KAAIvG,MAAO;IACnDwG,iBAAiB,EAAE,CAAAvD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEwD,uBAAuB,KAAI,MAAO;IAC7DC,oBAAoB,EAAE,CAAAzD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEyD,oBAAoB,KAAI;EAAK,gBAE3DxH,KAAA,CAAA0F,aAAA,CAACzE,aAAa;IAACwG,cAAc,EAAExD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEwD;EAAe,gBACnDzH,KAAA,CAAA0F,aAAA,CAAC/D,mBAAmB,EAAA+F,QAAA,KAAKxD,WAAW;IAAEsD,oBAAoB,EAAE,CAAAzD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEyD,oBAAoB,KAAI;EAAK,iBAC/FxH,KAAA,CAAA0F,aAAA,CAACjE,gBAAgB,EAAK0C,QAAQ,eAC5BnE,KAAA,CAAA0F,aAAA,CAACpE,mBAAmB,CAACqG,QAAQ,QACzBC,KAAK,IAAK;IACV,MAAMC,OAAO,GAAG,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,OAAO,KAAIvD,gBAAgB;IAClD,oBACEtE,KAAA,CAAA0F,aAAA,CAAC7E,cAAc;MACbiH,aAAa,EAAE;QACbC,KAAK,EAAE;UAAEC,EAAE,EAAEH,OAAO,CAACI,MAAM,CAACC;QAAiB,CAAC;QAC9CC,MAAM,EAAE;UACNH,EAAE,EAAEH,OAAO,CAACI,MAAM,CAACG,iBAAiB;UACpCC,MAAM,EAAER,OAAO,CAACI,MAAM,CAACK,qBAAqB;UAC5CC,WAAW,EAAEV,OAAO,CAACI,MAAM,CAACO;QAC9B;MACF;IAAE,GAEDhD,cAAc,EAAE,CACF;EAErB,CAAC,CAC4B,CACd,CACC,CACR,CACI,CACH,CACG,CACL,CACF,CACH,CACL;AAEvB,CAAC;AAMD,MAAMV,kBAAkB,GAAGA,CAACnB,KAAa,EAAE8E,OAAoB,KAAK;EAClE,IAAIzD,OAAwB;EAC5B,MAAMP,YAA+B,GAAG,EAAE;EAC1C,MAAM;IAAEC,eAAe;IAAEgE,aAAa;IAAE,GAAGC;EAAe,CAAC,GAAGF,OAAO;EAErEzD,OAAO,GAAGzE,YAAY,CAACqI,IAAI,CAAC;IAC1B,GAAGD,cAAc;IACjBhF,KAAK;IACLkF,WAAW,EAAE,IAAI;IACjBC,OAAO,EAAE,CAAC,IAAInI,kBAAkB,EAAE,EAAE,IAAIC,iBAAiB,EAAE,CAAC;IAC5DmI,iBAAiB,EAAE,IAAI;IACvBC,oBAAoB,EAAEtE;EACxB,CAAC,CAAC;EAEF,IAAIgE,aAAa,EAAE;IACjB1D,OAAO,GAAG0D,aAAa,CAAC1D,OAAO,CAAC;EAClC;EAEA,MAAMiE,QAAQ,GAAGC,mBAAmB,EAAE;EACtC,IAAI1G,aAAa,CAACJ,OAAO,IAAI6G,QAAQ,EAAE;IACrC,MAAME,YAAY,GAAG;MAAEF,QAAQ;MAAEG,OAAO,EAAEC,MAAM,CAAChJ,QAAQ,CAACiJ,OAAO;IAAE,CAAC;IACpE,MAAMC,UAAU,GAAG;MAAEC,gBAAgB,EAAEC,qBAAqB;IAAG,CAAC;IAChE,MAAMC,cAAc,GAAG;MACrBC,OAAO,EAAEjJ,eAAe,CAACkJ,UAAU;MACnCR,OAAO,EAAE5G,aAAa,CAACJ,OAAO;MAC9B6G,QAAQ,EAAExI,gBAAgB,CAACoJ;IAC7B,CAAC;IAED7E,OAAO,CAAC8E,qBAAqB,CAAC,CAACJ,cAAc,CAAC,EAAEP,YAAY,EAAEI,UAAU,CAAC;IACzEvE,OAAO,CAAC+E,YAAY,CAAC,UAAU,EAAEvH,aAAa,CAACJ,OAAO,CAAC;EACzD;EAEA,IAAII,aAAa,CAACG,QAAQ,EAAE;IAC1BqC,OAAO,CAAC+E,YAAY,CAAC,oBAAoB,EAAEvH,aAAa,CAACG,QAAQ,CAAC;EACpE;EAEA,IAAIL,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE0H,gBAAgB,EAAE;IAAA,IAAAC,qBAAA,EAAAC,QAAA,EAAAC,qBAAA,EAAAC,SAAA;IAC7B,IAAI;MACF;MACA;MACA;MACA;MACA;MACA9H,OAAO,CAAC0H,gBAAgB,CAAC5I,IAAI,CAAC,EAAE;IAClC,CAAC,CAAC,MAAM,CAAC;IAET,MAAMiJ,QAAQ,GAAGA,CAACC,QAAoB,EAAEC,YAAkC,KAAK;MAC7E,IAAIC,SAAS,GAAG,CAAC;MACjB,MAAMC,WAAW,GAAGnI,OAAO,CAAC0H,gBAAgB,CAAEU,KAAK,IAAK;QACtD,MAAMC,MAAM,GAAGC,OAAO,CAACF,KAAK,CAACG,WAAW,CAAC,IAAID,OAAO,CAACF,KAAK,CAACI,mBAAmB,CAAC;;QAE/E;QACA;QACA;QACA,IAAIN,SAAS,KAAK,CAAC,EAAE;UACnBA,SAAS,EAAE;UACX;QACF;QAEA,IAAIG,MAAM,IAAIJ,YAAY,KAAK,QAAQ,EAAED,QAAQ,EAAE;QACnD,IAAI,CAACK,MAAM,IAAIJ,YAAY,KAAK,SAAS,EAAED,QAAQ,EAAE;MACvD,CAAC,CAAC;MACF7F,YAAY,CAACsG,IAAI,CAACN,WAAW,CAAC;MAC9B,OAAOA,WAAW;IACpB,CAAC;IACD,CAAAR,qBAAA,IAAAC,QAAA,GAAAlF,OAAO,EAACgG,iBAAiB,cAAAf,qBAAA,uBAAzBA,qBAAA,CAAAgB,IAAA,CAAAf,QAAA,EAA6BgB,QAAQ,IAAKb,QAAQ,CAACa,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAAf,qBAAA,IAAAC,SAAA,GAAApF,OAAO,EAACmG,kBAAkB,cAAAhB,qBAAA,uBAA1BA,qBAAA,CAAAc,IAAA,CAAAb,SAAA,EAA8BgB,SAAS,IAAKf,QAAQ,CAACe,SAAS,EAAE,SAAS,CAAC,CAAC;EAC7E;EACA,OAAO;IAAEpG,OAAO;IAAEP;EAAa,CAAC;AAClC,CAAC;AAED,SAASyE,mBAAmBA,CAAA,EAAG;EAC7B,QAAQ7I,QAAQ,CAACuC,EAAE;IACjB,KAAK,SAAS;MACZ,OAAOpC,gBAAgB,CAAC6K,OAAO;IACjC,KAAK,KAAK;MACR,OAAO7K,gBAAgB,CAAC8K,GAAG;IAC7B,KAAK,KAAK;MACR,OAAO9K,gBAAgB,CAAC+K,GAAG;IAC7B,KAAK,SAAS;MACZ,OAAO/K,gBAAgB,CAACgL,OAAO;IACjC;MACE,OAAOC,SAAS;EAAC;AAEvB;AAEA,SAAShC,qBAAqBA,CAAA,EAAG;EAC/B,MAAM;IAAEiC,KAAK;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGvL,QAAQ,CAACwL,SAAS,CAACC,kBAAkB;EACrE,OAAQ,GAAEJ,KAAM,IAAGC,KAAM,IAAGC,KAAM,EAAC;AACrC;AAEA,MAAMxG,iBAAiB,GAAG2G,IAAA,IAAkF;EAAA,IAAAC,sBAAA,EAAAC,sBAAA;EAAA,IAAjF;IAAEC,gBAAgB;IAAEC,WAAW;IAAEC;EAA0C,CAAC,GAAAL,IAAA;EACrG,MAAM5G,aAAa,GAAGjF,OAAO,CAAC,MAAM;IAClC,OAAO,IAAI6B,aAAa,CAAC;MACvBsK,YAAY,EAAE,CAAAF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,YAAY,KAAItK,aAAa,CAACe,OAAO,CAACwJ,aAAa;MAC9EC,eAAe,EAAE,CAAAJ,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,eAAe,KAAIxK,aAAa,CAACe,OAAO,CAAC0J,gBAAgB;MACvFC,aAAa,EAAE,CAAAN,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEM,aAAa,KAAI1K,aAAa,CAACe,OAAO,CAAC4J,cAAc;MACjFC,SAAS,EAAE5K,aAAa,CAACe,OAAO,CAAC8J,SAAS;MAC1CC,OAAO,EAAE9K,aAAa,CAACe,OAAO,CAACgK;IACjC,CAAC,CAAC;EACJ,CAAC,EAAE,CAACX,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,YAAY,EAAEF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,eAAe,EAAEJ,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEM,aAAa,CAAC,CAAC;EAEzF,MAAMxH,sBAAsB,GAAG/E,OAAO,CAAC,MAAM;IAC3C,OAAO,IAAI2B,sBAAsB,CAAC;MAChCkL,eAAe,EAAE,CAAAb,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEa,eAAe,KAAIlL,sBAAsB,CAACiB,OAAO,CAACkK,gBAAgB;MACrGC,KAAK,EAAEf,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEe,KAAK;MAC9BC,MAAM,EAAEhB,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEgB;IAC5B,CAAC,CAAC;EACJ,CAAC,EAAE,CAAChB,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEa,eAAe,EAAEb,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEe,KAAK,EAAEf,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEgB,MAAM,CAAC,CAAC;EAE1F,MAAMhI,kBAAkB,GAAGhF,OAAO,CAAC,MAAM;IAAA,IAAAiN,qBAAA,EAAAC,sBAAA;IACvC,OAAO,IAAInL,kBAAkB,CAAC;MAC5BkF,QAAQ,EAAE;QACRkG,WAAW,EAAE,CAAAjB,YAAY,aAAZA,YAAY,wBAAAe,qBAAA,GAAZf,YAAY,CAAEjF,QAAQ,cAAAgG,qBAAA,uBAAtBA,qBAAA,CAAwBE,WAAW,KAAIpL,kBAAkB,CAACa,OAAO,CAACwK,QAAQ,CAACC,YAAY;QACpGC,WAAW,EAAE,CAAApB,YAAY,aAAZA,YAAY,wBAAAgB,sBAAA,GAAZhB,YAAY,CAAEjF,QAAQ,cAAAiG,sBAAA,uBAAtBA,sBAAA,CAAwBI,WAAW,KAAIvL,kBAAkB,CAACa,OAAO,CAACwK,QAAQ,CAACG;MAC1F;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACrB,YAAY,aAAZA,YAAY,wBAAAJ,sBAAA,GAAZI,YAAY,CAAEjF,QAAQ,cAAA6E,sBAAA,uBAAtBA,sBAAA,CAAwBqB,WAAW,EAAEjB,YAAY,aAAZA,YAAY,wBAAAH,sBAAA,GAAZG,YAAY,CAAEjF,QAAQ,cAAA8E,sBAAA,uBAAtBA,sBAAA,CAAwBuB,WAAW,CAAC,CAAC;EAE9E,OAAO;IACLrI,aAAa;IACbF,sBAAsB;IACtBC;EACF,CAAC;AACH,CAAC;AAED,eAAe1B,sBAAsB"}
|
|
1
|
+
{"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","SendbirdChat","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","VoiceMessageConfig","VoiceMessageStatusManager","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","USE_USER_ID_FOR_NICKNAME","IMAGE_COMPRESSION","chatOmitKeys","sanitizeChatOptions","chatOptions","opts","forEach","key","SendbirdUIKitContainer","props","children","appId","uikitOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","reaction","localCacheStorage","Error","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","sdkInstance","setSdkInstance","sendbird","initializeSendbird","current","chatSDK","imageCompressionConfig","voiceMessageConfig","mentionConfig","useConfigInstance","emojiManager","mentionManager","voiceMessageStatusManager","u","renderChildren","disabled","createElement","storage","localConfigs","common","groupChannel","channel","enableReactionsSupergroup","undefined","channelList","groupChannelList","setting","groupChannelSettings","openChannel","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","fileService","file","notificationService","notification","clipboardService","clipboard","mediaService","media","playerService","player","recorderService","recorder","theme","HeaderComponent","defaultTitleAlign","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","_extends","Consumer","value","STRINGS","defaultLabels","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","options","onInitialized","chatInitParams","init","newInstance","modules","localCacheEnabled","useAsyncStorageStore","platform","getDeviceOSPlatform","deviceOSInfo","version","String","Version","customData","platform_version","getReactNativeVersion","uikitExtension","product","UIKIT_CHAT","REACT_NATIVE","addSendbirdExtensions","addExtension","addEventListener","_chatSDK$setOnlineLis","_chatSDK","_chatSDK$setOfflineLi","_chatSDK2","listener","callback","callbackType","callCount","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","call","onOnline","setOfflineListener","onOffline","ANDROID","IOS","WEB","WINDOWS","major","minor","patch","constants","reactNativeVersion","_ref","_voiceMessage$recorde3","_voiceMessage$recorde4","imageCompression","userMention","voiceMessage","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","compressionRate","COMPRESSION_RATE","width","height","_voiceMessage$recorde","_voiceMessage$recorde2","minDuration","RECORDER","MIN_DURATION","maxDuration","MAX_DURATION"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport SendbirdChat, { DeviceOsPlatform, SendbirdChatParams, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';\nimport type {\n PartialDeep,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport VoiceMessageConfig, { VoiceMessageConfigInterface } from '../libs/VoiceMessageConfig';\nimport VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n PlayerServiceInterface,\n RecorderServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n USE_USER_ID_FOR_NICKNAME: false,\n IMAGE_COMPRESSION: true,\n },\n});\n\nexport type ChatOmittedInitParams = Omit<\n SendbirdChatParams<[GroupChannelModule, OpenChannelModule]>,\n (typeof chatOmitKeys)[number]\n>;\n\nconst chatOmitKeys = [\n 'appId',\n 'newInstance',\n 'modules',\n 'debugMode',\n 'appVersion',\n 'localCacheEnabled',\n 'useAsyncStorageStore',\n] as const;\nfunction sanitizeChatOptions<T extends Record<string, unknown>>(chatOptions: T): T {\n const opts = { ...chatOptions };\n chatOmitKeys.forEach((key) => delete opts[key]);\n return opts;\n}\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media: MediaServiceInterface;\n player: PlayerServiceInterface;\n recorder: RecorderServiceInterface;\n };\n chatOptions: {\n localCacheStorage: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<ChatOmittedInitParams> &\n Partial<ChatRelatedFeaturesInUIKit>;\n uikitOptions?: PartialDeep<{\n common: SBUConfig['common'];\n groupChannel: Omit<SBUConfig['groupChannel']['channel'], 'enableReactionsSupergroup'> & {\n /**\n * @deprecated Currently, this feature is turned off by default. If you wish to use this feature, contact us: {@link https://dashboard.sendbird.com/settings/contact_us?category=feedback_and_feature_requests&product=UIKit}\n */\n enableReactionsSupergroup: never;\n };\n groupChannelList: SBUConfig['groupChannel']['channelList'];\n groupChannelSettings: SBUConfig['groupChannel']['setting'];\n openChannel: SBUConfig['openChannel']['channel'];\n }>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n errorBoundary?: {\n disabled?: boolean;\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => React.ReactNode;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n reaction?: {\n onPressUserProfile?: (user: SendbirdUser | SendbirdMember) => void;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n voiceMessage?: PartialDeep<VoiceMessageConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = (props: SendbirdUIKitContainerProps) => {\n const {\n children,\n appId,\n chatOptions,\n uikitOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n reaction,\n } = props;\n\n if (!chatOptions.localCacheStorage) {\n throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');\n }\n\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n\n const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, { internalStorage, ...sanitizeChatOptions(chatOptions) });\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const { imageCompressionConfig, voiceMessageConfig, mentionConfig } = useConfigInstance(props);\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n const mentionManager = useMemo(() => new MentionManager(mentionConfig), [mentionConfig]);\n const voiceMessageStatusManager = useMemo(() => new VoiceMessageStatusManager(), []);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, { internalStorage, ...sanitizeChatOptions(chatOptions) });\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, internalStorage]);\n\n const renderChildren = () => {\n if (errorBoundary?.disabled) {\n return children;\n } else {\n return <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>;\n }\n };\n\n return (\n <SafeAreaProvider>\n <UIKitConfigProvider\n storage={internalStorage}\n localConfigs={{\n common: uikitOptions?.common,\n groupChannel: {\n channel: { ...uikitOptions?.groupChannel, enableReactionsSupergroup: undefined },\n channelList: uikitOptions?.groupChannelList,\n setting: uikitOptions?.groupChannelSettings,\n },\n openChannel: {\n channel: uikitOptions?.openChannel,\n },\n }}\n >\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n voiceMessageConfig={voiceMessageConfig}\n voiceMessageStatusManager={voiceMessageStatusManager}\n enableAutoPushTokenRegistration={\n chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableUseUserIdForNickname={\n chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableImageCompression={chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n playerService={platformServices.player}\n recorderService={platformServices.recorder}\n voiceMessageConfig={voiceMessageConfig}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider {...userProfile} statusBarTranslucent={styles?.statusBarTranslucent ?? true}>\n <ReactionProvider {...reaction}>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {renderChildren()}\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </UIKitConfigProvider>\n </SafeAreaProvider>\n );\n};\n\ninterface InitOptions extends ChatOmittedInitParams {\n internalStorage: InternalLocalCacheStorage;\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK;\n}\nconst initializeSendbird = (appId: string, options: InitOptions) => {\n let chatSDK: SendbirdChatSDK;\n const unsubscribes: Array<() => void> = [];\n const { internalStorage, onInitialized, ...chatInitParams } = options;\n\n chatSDK = SendbirdChat.init({\n ...chatInitParams,\n appId,\n newInstance: true,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: true,\n useAsyncStorageStore: internalStorage as never,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n const platform = getDeviceOSPlatform();\n if (SendbirdUIKit.VERSION && platform) {\n const deviceOSInfo = { platform, version: String(Platform.Version) };\n const customData = { platform_version: getReactNativeVersion() };\n const uikitExtension = {\n product: SendbirdProduct.UIKIT_CHAT,\n version: SendbirdUIKit.VERSION,\n platform: SendbirdPlatform.REACT_NATIVE,\n };\n\n chatSDK.addSendbirdExtensions([uikitExtension], deviceOSInfo, customData);\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n try {\n // NOTE: For removing buggy behavior of NetInfo.addEventListener\n // When you first add an event listener, it is assumed that the initialization of the internal event detector is done simultaneously.\n // In other words, when you call the first event listener two events are triggered immediately\n // - the one that is called when adding the event listener\n // - and the internal initialization event\n NetInfo.addEventListener(NOOP)();\n } catch {}\n\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n let callCount = 0;\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n\n // NOTE: When NetInfo.addEventListener is called\n // the event is immediately triggered regardless of whether the event actually occurred.\n // This is why it filters the first event.\n if (callCount === 0) {\n callCount++;\n return;\n }\n\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nfunction getDeviceOSPlatform() {\n switch (Platform.OS) {\n case 'android':\n return DeviceOsPlatform.ANDROID;\n case 'ios':\n return DeviceOsPlatform.IOS;\n case 'web':\n return DeviceOsPlatform.WEB;\n case 'windows':\n return DeviceOsPlatform.WINDOWS;\n default:\n return undefined;\n }\n}\n\nfunction getReactNativeVersion() {\n const { major, minor, patch } = Platform.constants.reactNativeVersion;\n return `${major}.${minor}.${patch}`;\n}\n\nconst useConfigInstance = ({ imageCompression, userMention, voiceMessage }: SendbirdUIKitContainerProps) => {\n const mentionConfig = useMemo(() => {\n return new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n const imageCompressionConfig = useMemo(() => {\n return new ImageCompressionConfig({\n compressionRate: imageCompression?.compressionRate || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,\n width: imageCompression?.width,\n height: imageCompression?.height,\n });\n }, [imageCompression?.compressionRate, imageCompression?.width, imageCompression?.height]);\n\n const voiceMessageConfig = useMemo(() => {\n return new VoiceMessageConfig({\n recorder: {\n minDuration: voiceMessage?.recorder?.minDuration ?? VoiceMessageConfig.DEFAULT.RECORDER.MIN_DURATION,\n maxDuration: voiceMessage?.recorder?.maxDuration ?? VoiceMessageConfig.DEFAULT.RECORDER.MAX_DURATION,\n },\n });\n }, [voiceMessage?.recorder?.minDuration, voiceMessage?.recorder?.maxDuration]);\n\n return {\n mentionConfig,\n imageCompressionConfig,\n voiceMessageConfig,\n };\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react';
|
|
|
2
2
|
import { useAppFeatures } from '@sendbird/uikit-chat-hooks';
|
|
3
3
|
import { useUIKitConfig } from '@sendbird/uikit-tools';
|
|
4
4
|
import { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';
|
|
5
|
+
import pubsub from '../utils/pubsub';
|
|
5
6
|
export const SendbirdChatContext = /*#__PURE__*/React.createContext(null);
|
|
6
7
|
export const SendbirdChatProvider = _ref => {
|
|
7
8
|
let {
|
|
@@ -9,6 +10,7 @@ export const SendbirdChatProvider = _ref => {
|
|
|
9
10
|
sdkInstance,
|
|
10
11
|
emojiManager,
|
|
11
12
|
mentionManager,
|
|
13
|
+
voiceMessageStatusManager,
|
|
12
14
|
imageCompressionConfig,
|
|
13
15
|
voiceMessageConfig,
|
|
14
16
|
enableAutoPushTokenRegistration,
|
|
@@ -67,10 +69,14 @@ export const SendbirdChatProvider = _ref => {
|
|
|
67
69
|
mentionManager,
|
|
68
70
|
imageCompressionConfig,
|
|
69
71
|
voiceMessageConfig,
|
|
72
|
+
voiceMessageStatusManager,
|
|
70
73
|
currentUser,
|
|
71
74
|
setCurrentUser,
|
|
72
75
|
updateCurrentUserInfo,
|
|
73
76
|
markAsDeliveredWithChannel,
|
|
77
|
+
groupChannelFragmentOptions: {
|
|
78
|
+
pubsub: pubsub()
|
|
79
|
+
},
|
|
74
80
|
// TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.
|
|
75
81
|
// For example, common -> chat context, common -> calls context
|
|
76
82
|
sbOptions: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","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","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 type { FileType } from '../platform/types';\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 imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\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 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 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 };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\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 currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\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","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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"}
|
|
@@ -2,7 +2,8 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
2
2
|
import React, { useContext, useEffect } from 'react';
|
|
3
3
|
import { useChannelHandler } from '@sendbird/uikit-chat-hooks';
|
|
4
4
|
import { useToast } from '@sendbird/uikit-react-native-foundation';
|
|
5
|
-
import {
|
|
5
|
+
import { useIsFirstMount } from '@sendbird/uikit-utils';
|
|
6
|
+
import { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';
|
|
6
7
|
import ChannelMessageList from '../../../components/ChannelMessageList';
|
|
7
8
|
import { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';
|
|
8
9
|
import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
|
|
@@ -13,7 +14,9 @@ const GroupChannelMessageList = props => {
|
|
|
13
14
|
STRINGS
|
|
14
15
|
} = useLocalization();
|
|
15
16
|
const {
|
|
16
|
-
sdk
|
|
17
|
+
sdk,
|
|
18
|
+
sbOptions,
|
|
19
|
+
groupChannelFragmentOptions
|
|
17
20
|
} = useSendbirdChat();
|
|
18
21
|
const {
|
|
19
22
|
setMessageToEdit,
|
|
@@ -25,7 +28,8 @@ const GroupChannelMessageList = props => {
|
|
|
25
28
|
const {
|
|
26
29
|
flatListRef,
|
|
27
30
|
lazyScrollToBottom,
|
|
28
|
-
lazyScrollToIndex
|
|
31
|
+
lazyScrollToIndex,
|
|
32
|
+
onPressReplyMessageInThread
|
|
29
33
|
} = useContext(GroupChannelContexts.MessageList);
|
|
30
34
|
const id = useUniqHandlerId('GroupChannelMessageList');
|
|
31
35
|
const isFirstMount = useIsFirstMount();
|
|
@@ -110,6 +114,17 @@ const GroupChannelMessageList = props => {
|
|
|
110
114
|
}
|
|
111
115
|
});
|
|
112
116
|
}, [props.scrolledAwayFromBottom]);
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
return groupChannelFragmentOptions.pubsub.subscribe(payload => {
|
|
119
|
+
switch (payload.type) {
|
|
120
|
+
case 'OVERRIDE_SEARCH_ITEM_STARTING_POINT':
|
|
121
|
+
{
|
|
122
|
+
scrollToMessageWithCreatedAt(payload.data.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}, []);
|
|
113
128
|
useEffect(() => {
|
|
114
129
|
// Only trigger once when message list mount with initial props.searchItem
|
|
115
130
|
// - Search screen + searchItem > mount message list
|
|
@@ -118,13 +133,22 @@ const GroupChannelMessageList = props => {
|
|
|
118
133
|
scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);
|
|
119
134
|
}
|
|
120
135
|
}, [isFirstMount]);
|
|
121
|
-
const onPressParentMessage = useFreshCallback(
|
|
122
|
-
|
|
123
|
-
|
|
136
|
+
const onPressParentMessage = useFreshCallback((parentMessage, childMessage) => {
|
|
137
|
+
if (onPressReplyMessageInThread && sbOptions.uikit.groupChannel.channel.replyType === 'thread' && sbOptions.uikit.groupChannel.channel.threadReplySelectType === 'thread') {
|
|
138
|
+
if (parentMessage.createdAt >= props.channel.messageOffsetTimestamp) {
|
|
139
|
+
onPressReplyMessageInThread(parentMessage, childMessage.createdAt);
|
|
140
|
+
} else {
|
|
141
|
+
toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
const canScrollToParent = scrollToMessageWithCreatedAt(parentMessage.createdAt, true, 0);
|
|
145
|
+
if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');
|
|
146
|
+
}
|
|
124
147
|
});
|
|
125
148
|
return /*#__PURE__*/React.createElement(ChannelMessageList, _extends({}, props, {
|
|
126
149
|
ref: flatListRef,
|
|
127
150
|
onReplyMessage: setMessageToReply,
|
|
151
|
+
onReplyInThreadMessage: setMessageToReply,
|
|
128
152
|
onEditMessage: setMessageToEdit,
|
|
129
153
|
onPressParentMessage: onPressParentMessage,
|
|
130
154
|
onPressNewMessagesButton: scrollToBottom,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","useEffect","useChannelHandler","useToast","isDifferentChannel","useFreshCallback","useIsFirstMount","useUniqHandlerId","ChannelMessageList","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","GroupChannelMessageList","props","toast","STRINGS","sdk","setMessageToEdit","setMessageToReply","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","MessageList","id","isFirstMount","scrollToMessageWithCreatedAt","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","scrollToBottom","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","onReactionUpdated","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","searchItem","onPressParentMessage","message","canScrollToParent","show","TOAST","FIND_PARENT_MSG_ERROR","createElement","_extends","ref","onReplyMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useFreshCallback, useIsFirstMount, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelMessageList = (props: GroupChannelProps['MessageList']) => {\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex } = useContext(GroupChannelContexts.MessageList);\n\n const id = useUniqHandlerId('GroupChannelMessageList');\n const isFirstMount = useIsFirstMount();\n\n const scrollToMessageWithCreatedAt = useFreshCallback(\n (createdAt: number, focusAnimated: boolean, timeout: number): boolean => {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === createdAt);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (focusAnimated) {\n setTimeout(() => props.onUpdateSearchItem({ startingPoint: createdAt }), MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout });\n } else {\n if (props.channel.messageOffsetTimestamp <= createdAt) {\n if (focusAnimated) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt);\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList();\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n useEffect(() => {\n // Only trigger once when message list mount with initial props.searchItem\n // - Search screen + searchItem > mount message list\n // - Reset message list + searchItem > re-mount message list\n if (isFirstMount && props.searchItem) {\n scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n }\n }, [isFirstMount]);\n\n const onPressParentMessage = useFreshCallback((message: SendbirdMessage) => {\n const canScrollToParent = scrollToMessageWithCreatedAt(message.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n });\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onReplyMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n />\n );\n};\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useContext","useEffect","useChannelHandler","useToast","useIsFirstMount","isDifferentChannel","useFreshCallback","useUniqHandlerId","ChannelMessageList","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","GroupChannelMessageList","props","toast","STRINGS","sdk","sbOptions","groupChannelFragmentOptions","setMessageToEdit","setMessageToReply","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","onPressReplyMessageInThread","MessageList","id","isFirstMount","scrollToMessageWithCreatedAt","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","scrollToBottom","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","onReactionUpdated","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","pubsub","payload","data","searchItem","onPressParentMessage","parentMessage","childMessage","uikit","groupChannel","replyType","threadReplySelectType","show","TOAST","FIND_PARENT_MSG_ERROR","canScrollToParent","createElement","_extends","ref","onReplyMessage","onReplyInThreadMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdMessage, SendbirdSendableMessage, useIsFirstMount } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\nimport { GroupChannelFragmentOptionsPubSubContextPayload } from '../../../contexts/SendbirdChatCtx';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelMessageList = (props: GroupChannelProps['MessageList']) => {\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const { sdk, sbOptions, groupChannelFragmentOptions } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex, onPressReplyMessageInThread } = useContext(\n GroupChannelContexts.MessageList,\n );\n\n const id = useUniqHandlerId('GroupChannelMessageList');\n const isFirstMount = useIsFirstMount();\n\n const scrollToMessageWithCreatedAt = useFreshCallback(\n (createdAt: number, focusAnimated: boolean, timeout: number): boolean => {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === createdAt);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (focusAnimated) {\n setTimeout(() => props.onUpdateSearchItem({ startingPoint: createdAt }), MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout });\n } else {\n if (props.channel.messageOffsetTimestamp <= createdAt) {\n if (focusAnimated) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt);\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList();\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n useEffect(() => {\n return groupChannelFragmentOptions.pubsub.subscribe((payload: GroupChannelFragmentOptionsPubSubContextPayload) => {\n switch (payload.type) {\n case 'OVERRIDE_SEARCH_ITEM_STARTING_POINT': {\n scrollToMessageWithCreatedAt(payload.data.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n break;\n }\n }\n });\n }, []);\n\n useEffect(() => {\n // Only trigger once when message list mount with initial props.searchItem\n // - Search screen + searchItem > mount message list\n // - Reset message list + searchItem > re-mount message list\n if (isFirstMount && props.searchItem) {\n scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n }\n }, [isFirstMount]);\n\n const onPressParentMessage = useFreshCallback(\n (parentMessage: SendbirdMessage, childMessage: SendbirdSendableMessage) => {\n if (\n onPressReplyMessageInThread &&\n sbOptions.uikit.groupChannel.channel.replyType === 'thread' &&\n sbOptions.uikit.groupChannel.channel.threadReplySelectType === 'thread'\n ) {\n if (parentMessage.createdAt >= props.channel.messageOffsetTimestamp) {\n onPressReplyMessageInThread(parentMessage as SendbirdSendableMessage, childMessage.createdAt);\n } else {\n toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n } else {\n const canScrollToParent = scrollToMessageWithCreatedAt(parentMessage.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n },\n );\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onReplyMessage={setMessageToReply}\n onReplyInThreadMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n />\n );\n};\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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"}
|
|
@@ -39,7 +39,8 @@ export const GroupChannelContextsProvider = _ref => {
|
|
|
39
39
|
keyboardAvoidOffset = 0,
|
|
40
40
|
groupChannelPubSub,
|
|
41
41
|
messages,
|
|
42
|
-
onUpdateSearchItem
|
|
42
|
+
onUpdateSearchItem,
|
|
43
|
+
onPressReplyMessageInThread
|
|
43
44
|
} = _ref;
|
|
44
45
|
if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');
|
|
45
46
|
const handlerId = useUniqHandlerId('GroupChannelContextsProvider');
|
|
@@ -48,7 +49,8 @@ export const GroupChannelContextsProvider = _ref => {
|
|
|
48
49
|
} = useLocalization();
|
|
49
50
|
const {
|
|
50
51
|
currentUser,
|
|
51
|
-
sdk
|
|
52
|
+
sdk,
|
|
53
|
+
sbOptions
|
|
52
54
|
} = useSendbirdChat();
|
|
53
55
|
const [typingUsers, setTypingUsers] = useState([]);
|
|
54
56
|
const [messageToEdit, setMessageToEdit] = useState();
|
|
@@ -77,6 +79,13 @@ export const GroupChannelContextsProvider = _ref => {
|
|
|
77
79
|
return;
|
|
78
80
|
}
|
|
79
81
|
};
|
|
82
|
+
const onPressMessageToReply = parentMessage => {
|
|
83
|
+
if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && parentMessage) {
|
|
84
|
+
onPressReplyMessageInThread === null || onPressReplyMessageInThread === void 0 ? void 0 : onPressReplyMessageInThread(parentMessage, Number.MAX_SAFE_INTEGER);
|
|
85
|
+
} else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {
|
|
86
|
+
updateInputMode('reply', parentMessage);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
80
89
|
useChannelHandler(sdk, handlerId, {
|
|
81
90
|
onMessageDeleted(_, messageId) {
|
|
82
91
|
if ((messageToReply === null || messageToReply === void 0 ? void 0 : messageToReply.messageId) === messageId) {
|
|
@@ -110,7 +119,7 @@ export const GroupChannelContextsProvider = _ref => {
|
|
|
110
119
|
messageToEdit,
|
|
111
120
|
setMessageToEdit: useCallback(message => updateInputMode('edit', message), []),
|
|
112
121
|
messageToReply,
|
|
113
|
-
setMessageToReply: useCallback(message =>
|
|
122
|
+
setMessageToReply: useCallback(message => onPressMessageToReply(message), [])
|
|
114
123
|
}
|
|
115
124
|
}, /*#__PURE__*/React.createElement(GroupChannelContexts.PubSub.Provider, {
|
|
116
125
|
value: groupChannelPubSub
|
|
@@ -123,7 +132,8 @@ export const GroupChannelContextsProvider = _ref => {
|
|
|
123
132
|
flatListRef,
|
|
124
133
|
scrollToMessage,
|
|
125
134
|
lazyScrollToIndex,
|
|
126
|
-
lazyScrollToBottom
|
|
135
|
+
lazyScrollToBottom,
|
|
136
|
+
onPressReplyMessageInThread
|
|
127
137
|
}
|
|
128
138
|
}, children)))));
|
|
129
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useCallback","useRef","useState","useChannelHandler","Logger","NOOP","getGroupChannelChatAvailableState","isDifferentChannel","useFreshCallback","useUniqHandlerId","ProviderLayout","MESSAGE_FOCUS_ANIMATION_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","Fragment","headerTitle","channel","setMessageToEdit","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","GroupChannelContextsProvider","_ref","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","Error","handlerId","STRINGS","currentUser","sdk","setTypingUsers","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","onMessageDeleted","_","messageId","onChannelFrozen","frozenChannel","url","isGroupChannel","frozen","onUserMuted","mutedChannel","user","_sdk$currentUser","userId","onTypingStatusUpdated","eventChannel","getTypingUsers","createElement","Provider","value","GROUP_CHANNEL","HEADER_TITLE","params","logFlatListRefWarning","setTimeout","_flatListRef$current","scrollToOffset","offset","animated","timeout","_flatListRef$current2","scrollToIndex","index","viewPosition","options","foundMessageIndex","findIndex","it","isIncludedInList","focusAnimated","startingPoint","createdAt","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY } from '../../../constants';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type { GroupChannelContextsType, GroupChannelModule, GroupChannelPubSubContextPayload } from '../types';\nimport { GroupChannelProps } from '../types';\n\nexport const GroupChannelContexts: GroupChannelContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n setMessageToEdit: NOOP,\n setMessageToReply: NOOP,\n }),\n TypingIndicator: createContext({\n typingUsers: [] as SendbirdUser[],\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelContextsProvider: GroupChannelModule['Provider'] = ({\n children,\n channel,\n enableTypingIndicator,\n keyboardAvoidOffset = 0,\n groupChannelPubSub,\n messages,\n onUpdateSearchItem,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');\n\n const handlerId = useUniqHandlerId('GroupChannelContextsProvider');\n const { STRINGS } = useLocalization();\n const { currentUser, sdk } = useSendbirdChat();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const [messageToReply, setMessageToReply] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n messages,\n onUpdateSearchItem,\n });\n\n const updateInputMode = (mode: 'send' | 'edit' | 'reply', message?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (mode === 'send' || !message) {\n setMessageToEdit(undefined);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'edit') {\n setMessageToEdit(message);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'reply') {\n setMessageToEdit(undefined);\n setMessageToReply(message);\n return;\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n onMessageDeleted(_, messageId) {\n if (messageToReply?.messageId === messageId) {\n setMessageToReply(undefined);\n }\n },\n onChannelFrozen(frozenChannel) {\n if (frozenChannel.url === channel.url) {\n if (frozenChannel.isGroupChannel() && getGroupChannelChatAvailableState(channel).frozen) {\n setMessageToReply(undefined);\n }\n }\n },\n onUserMuted(mutedChannel, user) {\n if (mutedChannel.url === channel.url && user.userId === sdk.currentUser?.userId) {\n setMessageToReply(undefined);\n }\n },\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n return (\n <ProviderLayout>\n <GroupChannelContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL.HEADER_TITLE(currentUser?.userId ?? '', channel),\n channel,\n keyboardAvoidOffset,\n messageToEdit,\n setMessageToEdit: useCallback((message) => updateInputMode('edit', message), []),\n messageToReply,\n setMessageToReply: useCallback((message) => updateInputMode('reply', message), []),\n }}\n >\n <GroupChannelContexts.PubSub.Provider value={groupChannelPubSub}>\n <GroupChannelContexts.TypingIndicator.Provider value={{ typingUsers }}>\n <GroupChannelContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n }}\n >\n {children}\n </GroupChannelContexts.MessageList.Provider>\n </GroupChannelContexts.TypingIndicator.Provider>\n </GroupChannelContexts.PubSub.Provider>\n </GroupChannelContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelProps['Provider'], 'messages' | 'onUpdateSearchItem'>) => {\n const { messages, onUpdateSearchItem } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({ offset: 0, animated: params?.animated ?? false });\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = messages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (options?.focusAnimated) {\n setTimeout(\n () => onUpdateSearchItem({ startingPoint: messages[foundMessageIndex].createdAt }),\n MESSAGE_FOCUS_ANIMATION_DELAY,\n );\n }\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","createContext","useCallback","useRef","useState","useChannelHandler","Logger","NOOP","getGroupChannelChatAvailableState","isDifferentChannel","useFreshCallback","useUniqHandlerId","ProviderLayout","MESSAGE_FOCUS_ANIMATION_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","Fragment","headerTitle","channel","setMessageToEdit","setMessageToReply","TypingIndicator","typingUsers","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","GroupChannelContextsProvider","_ref","children","enableTypingIndicator","keyboardAvoidOffset","groupChannelPubSub","messages","onUpdateSearchItem","onPressReplyMessageInThread","Error","handlerId","STRINGS","currentUser","sdk","sbOptions","setTypingUsers","messageToEdit","messageToReply","useScrollActions","updateInputMode","mode","message","undefined","onPressMessageToReply","parentMessage","uikit","groupChannel","replyType","Number","MAX_SAFE_INTEGER","onMessageDeleted","_","messageId","onChannelFrozen","frozenChannel","url","isGroupChannel","frozen","onUserMuted","mutedChannel","user","_sdk$currentUser","userId","onTypingStatusUpdated","eventChannel","getTypingUsers","createElement","Provider","value","GROUP_CHANNEL","HEADER_TITLE","params","logFlatListRefWarning","setTimeout","_flatListRef$current","scrollToOffset","offset","animated","timeout","_flatListRef$current2","scrollToIndex","index","viewPosition","options","foundMessageIndex","findIndex","it","isIncludedInList","focusAnimated","startingPoint","createdAt","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n isDifferentChannel,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY } from '../../../constants';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type { GroupChannelContextsType, GroupChannelModule, GroupChannelPubSubContextPayload } from '../types';\nimport { GroupChannelProps } from '../types';\n\nexport const GroupChannelContexts: GroupChannelContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n setMessageToEdit: NOOP,\n setMessageToReply: NOOP,\n }),\n TypingIndicator: createContext({\n typingUsers: [] as SendbirdUser[],\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelContextsProvider: GroupChannelModule['Provider'] = ({\n children,\n channel,\n enableTypingIndicator,\n keyboardAvoidOffset = 0,\n groupChannelPubSub,\n messages,\n onUpdateSearchItem,\n onPressReplyMessageInThread,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelModule');\n\n const handlerId = useUniqHandlerId('GroupChannelContextsProvider');\n const { STRINGS } = useLocalization();\n const { currentUser, sdk, sbOptions } = useSendbirdChat();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const [messageToReply, setMessageToReply] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n messages,\n onUpdateSearchItem,\n });\n\n const updateInputMode = (mode: 'send' | 'edit' | 'reply', message?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (mode === 'send' || !message) {\n setMessageToEdit(undefined);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'edit') {\n setMessageToEdit(message);\n setMessageToReply(undefined);\n return;\n } else if (mode === 'reply') {\n setMessageToEdit(undefined);\n setMessageToReply(message);\n return;\n }\n };\n\n const onPressMessageToReply = (parentMessage?: SendbirdUserMessage | SendbirdFileMessage) => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && parentMessage) {\n onPressReplyMessageInThread?.(parentMessage, Number.MAX_SAFE_INTEGER);\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n updateInputMode('reply', parentMessage);\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n onMessageDeleted(_, messageId) {\n if (messageToReply?.messageId === messageId) {\n setMessageToReply(undefined);\n }\n },\n onChannelFrozen(frozenChannel) {\n if (frozenChannel.url === channel.url) {\n if (frozenChannel.isGroupChannel() && getGroupChannelChatAvailableState(channel).frozen) {\n setMessageToReply(undefined);\n }\n }\n },\n onUserMuted(mutedChannel, user) {\n if (mutedChannel.url === channel.url && user.userId === sdk.currentUser?.userId) {\n setMessageToReply(undefined);\n }\n },\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n return (\n <ProviderLayout>\n <GroupChannelContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL.HEADER_TITLE(currentUser?.userId ?? '', channel),\n channel,\n keyboardAvoidOffset,\n messageToEdit,\n setMessageToEdit: useCallback((message) => updateInputMode('edit', message), []),\n messageToReply,\n setMessageToReply: useCallback((message) => onPressMessageToReply(message), []),\n }}\n >\n <GroupChannelContexts.PubSub.Provider value={groupChannelPubSub}>\n <GroupChannelContexts.TypingIndicator.Provider value={{ typingUsers }}>\n <GroupChannelContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n onPressReplyMessageInThread,\n }}\n >\n {children}\n </GroupChannelContexts.MessageList.Provider>\n </GroupChannelContexts.TypingIndicator.Provider>\n </GroupChannelContexts.PubSub.Provider>\n </GroupChannelContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelProps['Provider'], 'messages' | 'onUpdateSearchItem'>) => {\n const { messages, onUpdateSearchItem } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({ offset: 0, animated: params?.animated ?? false });\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = messages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (options?.focusAnimated) {\n setTimeout(\n () => onUpdateSearchItem({ startingPoint: messages[foundMessageIndex].createdAt }),\n MESSAGE_FOCUS_ANIMATION_DELAY,\n );\n }\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport type MessageListQueryParamsType = Omit<MessageCollectionParams, 'filter'> & MessageFilterParams;\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n /**\n * @description You can specify the query parameters for the message list.\n * @example\n * ```\n * <GroupChannelFragment messageListQueryParams={{ prevResultLimit: 20, customTypesFilter: ['filter'] }} />\n * ```\n * */\n messageListQueryParams?: MessageListQueryParamsType;\n /** @deprecated Please use `messageListQueryParams` instead */\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdSendableMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport type MessageListQueryParamsType = Omit<MessageCollectionParams, 'filter'> & MessageFilterParams;\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n onPressReplyMessageInThread?: GroupChannelProps['Provider']['onPressReplyMessageInThread'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n /**\n * @description You can specify the query parameters for the message list.\n * @example\n * ```\n * <GroupChannelFragment messageListQueryParams={{ prevResultLimit: 20, customTypesFilter: ['filter'] }} />\n * ```\n * */\n messageListQueryParams?: MessageListQueryParamsType;\n /** @deprecated Please use `messageListQueryParams` instead */\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n onPressReplyMessageInThread: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n\n onPressReplyMessageInThread?: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
|