@sendbird/uikit-react-native 3.6.0 → 3.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +11 -27
  2. package/lib/commonjs/containers/SendbirdUIKitContainer.js +9 -11
  3. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  4. package/lib/commonjs/contexts/SendbirdChatCtx.js +1 -1
  5. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  6. package/lib/commonjs/libs/EmojiManager.js.map +1 -1
  7. package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
  8. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
  9. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  10. package/lib/commonjs/types.js.map +1 -1
  11. package/lib/commonjs/version.js +1 -1
  12. package/lib/commonjs/version.js.map +1 -1
  13. package/lib/module/containers/SendbirdUIKitContainer.js +10 -12
  14. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  15. package/lib/module/contexts/SendbirdChatCtx.js +1 -1
  16. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  17. package/lib/module/libs/EmojiManager.js.map +1 -1
  18. package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
  19. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
  20. package/lib/module/platform/createMediaService.native.js.map +1 -1
  21. package/lib/module/types.js.map +1 -1
  22. package/lib/module/version.js +1 -1
  23. package/lib/module/version.js.map +1 -1
  24. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +7 -7
  25. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  26. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  27. package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +5 -4
  28. package/lib/typescript/src/types.d.ts +4 -1
  29. package/lib/typescript/src/version.d.ts +1 -1
  30. package/package.json +26 -21
  31. package/src/containers/SendbirdUIKitContainer.tsx +24 -14
  32. package/src/contexts/SendbirdChatCtx.tsx +1 -1
  33. package/src/libs/EmojiManager.ts +2 -2
  34. package/src/libs/InternalLocalCacheStorage.ts +70 -21
  35. package/src/platform/createMediaService.native.tsx +9 -1
  36. package/src/types.ts +6 -1
  37. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["TypingIndicatorType","exports"],"sources":["types.ts"],"sourcesContent":["import type { ComponentType, ErrorInfo, ReactNode } from 'react';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nexport type KeyValuePairGet = [string, string | null];\nexport type KeyValuePairSet = [string, string];\nexport interface LocalCacheStorage {\n getAllKeys(): Promise<readonly string[] | string[]>;\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n\n multiSet?(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;\n multiGet?(keys: string[]): Promise<readonly KeyValuePairGet[] | KeyValuePairGet[]>;\n multiRemove?(keys: string[]): Promise<void>;\n}\n\nexport type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };\n\nexport type CommonComponent<P = {}> = ComponentType<P & { children?: ReactNode | undefined }>;\n\nexport type MentionedUser = {\n range: Range;\n user: SendbirdUser;\n};\n\nexport type Range = {\n start: number;\n end: number;\n};\n\nexport enum TypingIndicatorType {\n Text = 'text',\n Bubble = 'bubble',\n}\n"],"mappings":";;;;;;IA+BYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAAC,OAAA,CAAAD,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["TypingIndicatorType","exports"],"sources":["types.ts"],"sourcesContent":["import type { ComponentType, ErrorInfo, ReactNode } from 'react';\nimport type { MMKV } from 'react-native-mmkv';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nexport type LocalCacheStorage = AsyncLocalCacheStorage | MMKVLocalCacheStorage;\n\nexport type KeyValuePairGet = [string, string | null];\nexport type KeyValuePairSet = [string, string];\nexport interface AsyncLocalCacheStorage {\n getAllKeys(): Promise<readonly string[] | string[]>;\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n\n multiSet?(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;\n multiGet?(keys: string[]): Promise<readonly KeyValuePairGet[] | KeyValuePairGet[]>;\n multiRemove?(keys: string[]): Promise<void>;\n}\n\nexport type MMKVLocalCacheStorage = Pick<MMKV, 'getString' | 'set' | 'delete' | 'getAllKeys'>;\n\nexport type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };\n\nexport type CommonComponent<P = {}> = ComponentType<P & { children?: ReactNode | undefined }>;\n\nexport type MentionedUser = {\n range: Range;\n user: SendbirdUser;\n};\n\nexport type Range = {\n start: number;\n end: number;\n};\n\nexport enum TypingIndicatorType {\n Text = 'text',\n Bubble = 'bubble',\n}\n"],"mappings":";;;;;;IAoCYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAAC,OAAA,CAAAD,mBAAA,GAAAA,mBAAA"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- const VERSION = '3.6.0';
7
+ const VERSION = '3.7.1';
8
8
  var _default = VERSION;
9
9
  exports.default = _default;
10
10
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.6.0';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,OAAO;AAAC,IAAAC,QAAA,GACTD,OAAO;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.7.1';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,OAAO;AAAC,IAAAC,QAAA,GACTD,OAAO;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -7,7 +7,7 @@ import { GroupChannelModule } from '@sendbird/chat/groupChannel';
7
7
  import { OpenChannelModule } from '@sendbird/chat/openChannel';
8
8
  import { DialogProvider, Header, HeaderStyleProvider, LightUIKitTheme, ToastProvider, UIKitThemeProvider } from '@sendbird/uikit-react-native-foundation';
9
9
  import { UIKitConfigProvider } from '@sendbird/uikit-tools';
10
- import { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';
10
+ import { Logger, NOOP, useIsFirstMount } from '@sendbird/uikit-utils';
11
11
  import { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';
12
12
  import { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';
13
13
  import { ReactionProvider } from '../contexts/ReactionCtx';
@@ -34,7 +34,7 @@ export const SendbirdUIKit = Object.freeze({
34
34
  IMAGE_COMPRESSION: true
35
35
  }
36
36
  });
37
- const chatOmitKeys = ['appId', 'newInstance', 'modules', 'debugMode', 'appVersion', 'localCacheEnabled', 'useAsyncStorageStore'];
37
+ const chatOmitKeys = ['appId', 'newInstance', 'modules', 'debugMode', 'appVersion', 'localCacheEnabled', 'useAsyncStorageStore', 'useMMKVStorageStore'];
38
38
  function sanitizeChatOptions(chatOptions) {
39
39
  const opts = {
40
40
  ...chatOptions
@@ -58,16 +58,15 @@ const SendbirdUIKitContainer = props => {
58
58
  } = props;
59
59
  if (!chatOptions.localCacheStorage) {
60
60
  throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');
61
+ } else if ('getItem' in chatOptions.localCacheStorage) {
62
+ Logger.warn('SendbirdUIKitContainer: localCacheStorage for `AsyncStorage` is deprecated. Please use `MMKV` instead.');
61
63
  }
62
64
  const defaultStringSet = (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? StringSetEn;
63
65
  const isFirstMount = useIsFirstMount();
64
66
  const unsubscribes = useRef([]);
65
67
  const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));
66
68
  const [sdkInstance, setSdkInstance] = useState(() => {
67
- const sendbird = initializeSendbird(appId, {
68
- internalStorage,
69
- ...sanitizeChatOptions(chatOptions)
70
- });
69
+ const sendbird = initializeSendbird(appId, sanitizeChatOptions(chatOptions));
71
70
  unsubscribes.current = sendbird.unsubscribes;
72
71
  return sendbird.chatSDK;
73
72
  });
@@ -81,10 +80,7 @@ const SendbirdUIKitContainer = props => {
81
80
  const voiceMessageStatusManager = useMemo(() => new VoiceMessageStatusManager(), []);
82
81
  useLayoutEffect(() => {
83
82
  if (!isFirstMount) {
84
- const sendbird = initializeSendbird(appId, {
85
- internalStorage,
86
- ...sanitizeChatOptions(chatOptions)
87
- });
83
+ const sendbird = initializeSendbird(appId, sanitizeChatOptions(chatOptions));
88
84
  setSdkInstance(sendbird.chatSDK);
89
85
  unsubscribes.current = sendbird.unsubscribes;
90
86
  }
@@ -169,17 +165,19 @@ const initializeSendbird = (appId, options) => {
169
165
  let chatSDK;
170
166
  const unsubscribes = [];
171
167
  const {
172
- internalStorage,
168
+ localCacheStorage,
173
169
  onInitialized,
174
170
  ...chatInitParams
175
171
  } = options;
172
+ const isMMKVStorage = ('getString' in localCacheStorage);
176
173
  chatSDK = SendbirdChat.init({
177
174
  ...chatInitParams,
178
175
  appId,
179
176
  newInstance: true,
180
177
  modules: [new GroupChannelModule(), new OpenChannelModule()],
181
178
  localCacheEnabled: true,
182
- useAsyncStorageStore: internalStorage
179
+ useMMKVStorageStore: isMMKVStorage ? localCacheStorage : undefined,
180
+ useAsyncStorageStore: !isMMKVStorage ? localCacheStorage : undefined
183
181
  });
184
182
  if (onInitialized) {
185
183
  chatSDK = onInitialized(chatSDK);
@@ -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","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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"}
1
+ {"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","SendbirdChat","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","Logger","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","warn","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","isMMKVStorage","init","newInstance","modules","localCacheEnabled","useMMKVStorageStore","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 type { AsyncStorageStatic } from '@react-native-async-storage/async-storage';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport type { MMKV } from 'react-native-mmkv';\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 {\n Logger,\n NOOP,\n PartialDeep,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n useIsFirstMount,\n} 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 { 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 'useMMKVStorageStore',\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}\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: Partial<ChatOmittedInitParams> &\n Partial<ChatRelatedFeaturesInUIKit> & {\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n localCacheStorage: LocalCacheStorage;\n };\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 } else if ('getItem' in chatOptions.localCacheStorage) {\n Logger.warn(\n 'SendbirdUIKitContainer: localCacheStorage for `AsyncStorage` is deprecated. Please use `MMKV` instead.',\n );\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, 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, 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 localCacheStorage: LocalCacheStorage;\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK;\n}\nconst initializeSendbird = (appId: string, options: InitOptions) => {\n let chatSDK: SendbirdChatSDK;\n const unsubscribes: Array<() => void> = [];\n const { localCacheStorage, onInitialized, ...chatInitParams } = options;\n\n const isMMKVStorage = 'getString' in localCacheStorage;\n chatSDK = SendbirdChat.init({\n ...chatInitParams,\n appId,\n newInstance: true,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: true,\n useMMKVStorageStore: isMMKVStorage ? (localCacheStorage as MMKV) : undefined,\n useAsyncStorageStore: !isMMKVStorage ? (localCacheStorage as AsyncStorageStatic) : undefined,\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":";AACA,OAAOA,KAAK,IAAIC,eAAe,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACzE,SAASC,QAAQ,QAAQ,cAAc;AAEvC,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;AACtE,SACEC,MAAM,EACNC,IAAI,EAOJC,eAAe,QACV,uBAAuB;AAE9B,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,yBAAyB,MAAM,mCAAmC;AACzE,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,EAAExC,QAAQ,CAACyC,EAAE,CAACC,WAAW,EAAE;EACnCC,OAAO,EAAE;IACPC,4BAA4B,EAAE,IAAI;IAClCC,wBAAwB,EAAE,KAAK;IAC/BC,iBAAiB,EAAE;EACrB;AACF,CAAC,CAAC;AAOF,MAAMC,YAAY,GAAG,CACnB,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,CACb;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;AA6DA,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,CAAC,MAAM,IAAI,SAAS,IAAIjB,WAAW,CAACgB,iBAAiB,EAAE;IACrDlD,MAAM,CAACoD,IAAI,CACT,wGAAwG,CACzG;EACH;EAEA,MAAMC,gBAAgB,GAAG,CAAAT,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEU,SAAS,KAAItC,WAAW;EAE/D,MAAMuC,YAAY,GAAGrD,eAAe,EAAE;EACtC,MAAMsD,YAAY,GAAGzE,MAAM,CAAoB,EAAE,CAAC;EAElD,MAAM,CAAC0E,eAAe,CAAC,GAAGzE,QAAQ,CAAC,MAAM,IAAI2B,yBAAyB,CAACuB,WAAW,CAACgB,iBAAiB,CAAC,CAAC;EACtG,MAAM,CAACQ,WAAW,EAAEC,cAAc,CAAC,GAAG3E,QAAQ,CAAkB,MAAM;IACpE,MAAM4E,QAAQ,GAAGC,kBAAkB,CAACpB,KAAK,EAAER,mBAAmB,CAACC,WAAW,CAAC,CAAC;IAC5EsB,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,CAAC5B,KAAK,CAAC;EAC9F,MAAM6B,YAAY,GAAGtF,OAAO,CAAC,MAAM,IAAI2B,YAAY,CAACgD,eAAe,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;EACxF,MAAMY,cAAc,GAAGvF,OAAO,CAAC,MAAM,IAAI+B,cAAc,CAACqD,aAAa,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EACxF,MAAMI,yBAAyB,GAAGxF,OAAO,CAAC,MAAM,IAAIiC,yBAAyB,EAAE,EAAE,EAAE,CAAC;EAEpFlC,eAAe,CAAC,MAAM;IACpB,IAAI,CAAC0E,YAAY,EAAE;MACjB,MAAMK,QAAQ,GAAGC,kBAAkB,CAACpB,KAAK,EAAER,mBAAmB,CAACC,WAAW,CAAC,CAAC;MAC5EyB,cAAc,CAACC,QAAQ,CAACG,OAAO,CAAC;MAChCP,YAAY,CAACM,OAAO,GAAGF,QAAQ,CAACJ,YAAY;IAC9C;IAEA,OAAO,MAAM;MACXA,YAAY,CAACM,OAAO,CAAC1B,OAAO,CAAEmC,CAAC,IAAK;QAClC,IAAI;UACFA,CAAC,EAAE;QACL,CAAC,CAAC,MAAM,CAAC;MACX,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,EAAE,CAAC9B,KAAK,EAAEgB,eAAe,CAAC,CAAC;EAE5B,MAAMe,cAAc,GAAGA,CAAA,KAAM;IAC3B,IAAI1B,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE2B,QAAQ,EAAE;MAC3B,OAAOjC,QAAQ;IACjB,CAAC,MAAM;MACL,oBAAO5D,KAAA,CAAA8F,aAAA,CAACvD,8BAA8B,EAAK2B,aAAa,EAAGN,QAAQ,CAAkC;IACvG;EACF,CAAC;EAED,oBACE5D,KAAA,CAAA8F,aAAA,CAACxF,gBAAgB,qBACfN,KAAA,CAAA8F,aAAA,CAAC3E,mBAAmB;IAClB4E,OAAO,EAAElB,eAAgB;IACzBmB,YAAY,EAAE;MACZC,MAAM,EAAEnC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEmC,MAAM;MAC5BC,YAAY,EAAE;QACZC,OAAO,EAAE;UAAE,IAAGrC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEoC,YAAY;UAAEE,yBAAyB,EAAEC;QAAU,CAAC;QAChFC,WAAW,EAAExC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEyC,gBAAgB;QAC3CC,OAAO,EAAE1C,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE2C;MACzB,CAAC;MACDC,WAAW,EAAE;QACXP,OAAO,EAAErC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE4C;MACzB;IACF;EAAE,gBAEF1G,KAAA,CAAA8F,aAAA,CAACnE,oBAAoB;IACnBmD,WAAW,EAAEA,WAAY;IACzBU,YAAY,EAAEA,YAAa;IAC3BC,cAAc,EAAEA,cAAe;IAC/BL,sBAAsB,EAAEA,sBAAuB;IAC/CC,kBAAkB,EAAEA,kBAAmB;IACvCK,yBAAyB,EAAEA,yBAA0B;IACrDiB,+BAA+B,EAC7BrD,WAAW,CAACqD,+BAA+B,IAAIjE,aAAa,CAACM,OAAO,CAACC,4BACtE;IACD2D,0BAA0B,EACxBtD,WAAW,CAACsD,0BAA0B,IAAIlE,aAAa,CAACM,OAAO,CAACE,wBACjE;IACD2D,sBAAsB,EAAEvD,WAAW,CAACuD,sBAAsB,IAAInE,aAAa,CAACM,OAAO,CAACG;EAAkB,gBAEtGnD,KAAA,CAAA8F,aAAA,CAACtE,oBAAoB;IAACkD,SAAS,EAAED;EAAiB,gBAChDzE,KAAA,CAAA8F,aAAA,CAACrE,uBAAuB;IACtBqF,WAAW,EAAE/C,gBAAgB,CAACgD,IAAK;IACnCC,mBAAmB,EAAEjD,gBAAgB,CAACkD,YAAa;IACnDC,gBAAgB,EAAEnD,gBAAgB,CAACoD,SAAU;IAC7CC,YAAY,EAAErD,gBAAgB,CAACsD,KAAM;IACrCC,aAAa,EAAEvD,gBAAgB,CAACwD,MAAO;IACvCC,eAAe,EAAEzD,gBAAgB,CAAC0D,QAAS;IAC3CpC,kBAAkB,EAAEA;EAAmB,gBAEvCrF,KAAA,CAAA8F,aAAA,CAAC5E,kBAAkB;IAACwG,KAAK,EAAE,CAAAzD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEyD,KAAK,KAAI1G;EAAgB,gBAC1DhB,KAAA,CAAA8F,aAAA,CAAC/E,mBAAmB;IAClB4G,eAAe,EAAE,CAAA1D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE0D,eAAe,KAAI7G,MAAO;IACnD8G,iBAAiB,EAAE,CAAA3D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE4D,uBAAuB,KAAI,MAAO;IAC7DC,oBAAoB,EAAE,CAAA7D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE6D,oBAAoB,KAAI;EAAK,gBAE3D9H,KAAA,CAAA8F,aAAA,CAAC7E,aAAa;IAAC8G,cAAc,EAAE5D,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE4D;EAAe,gBACnD/H,KAAA,CAAA8F,aAAA,CAAClE,mBAAmB,EAAAoG,QAAA,KAAK5D,WAAW;IAAE0D,oBAAoB,EAAE,CAAA7D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE6D,oBAAoB,KAAI;EAAK,iBAC/F9H,KAAA,CAAA8F,aAAA,CAACpE,gBAAgB,EAAK2C,QAAQ,eAC5BrE,KAAA,CAAA8F,aAAA,CAACvE,mBAAmB,CAAC0G,QAAQ,QACzBC,KAAK,IAAK;IACV,MAAMC,OAAO,GAAG,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,OAAO,KAAI1D,gBAAgB;IAClD,oBACEzE,KAAA,CAAA8F,aAAA,CAACjF,cAAc;MACbuH,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,GAEDlD,cAAc,EAAE,CACF;EAErB,CAAC,CAC4B,CACd,CACC,CACR,CACI,CACH,CACG,CACL,CACF,CACH,CACL;AAEvB,CAAC;AAMD,MAAMX,kBAAkB,GAAGA,CAACpB,KAAa,EAAEkF,OAAoB,KAAK;EAClE,IAAI5D,OAAwB;EAC5B,MAAMP,YAA+B,GAAG,EAAE;EAC1C,MAAM;IAAEN,iBAAiB;IAAE0E,aAAa;IAAE,GAAGC;EAAe,CAAC,GAAGF,OAAO;EAEvE,MAAMG,aAAa,IAAG,WAAW,IAAI5E,iBAAiB;EACtDa,OAAO,GAAG5E,YAAY,CAAC4I,IAAI,CAAC;IAC1B,GAAGF,cAAc;IACjBpF,KAAK;IACLuF,WAAW,EAAE,IAAI;IACjBC,OAAO,EAAE,CAAC,IAAI1I,kBAAkB,EAAE,EAAE,IAAIC,iBAAiB,EAAE,CAAC;IAC5D0I,iBAAiB,EAAE,IAAI;IACvBC,mBAAmB,EAAEL,aAAa,GAAI5E,iBAAiB,GAAY+B,SAAS;IAC5EmD,oBAAoB,EAAE,CAACN,aAAa,GAAI5E,iBAAiB,GAA0B+B;EACrF,CAAC,CAAC;EAEF,IAAI2C,aAAa,EAAE;IACjB7D,OAAO,GAAG6D,aAAa,CAAC7D,OAAO,CAAC;EAClC;EAEA,MAAMsE,QAAQ,GAAGC,mBAAmB,EAAE;EACtC,IAAIhH,aAAa,CAACJ,OAAO,IAAImH,QAAQ,EAAE;IACrC,MAAME,YAAY,GAAG;MAAEF,QAAQ;MAAEG,OAAO,EAAEC,MAAM,CAACxJ,QAAQ,CAACyJ,OAAO;IAAE,CAAC;IACpE,MAAMC,UAAU,GAAG;MAAEC,gBAAgB,EAAEC,qBAAqB;IAAG,CAAC;IAChE,MAAMC,cAAc,GAAG;MACrBC,OAAO,EAAEzJ,eAAe,CAAC0J,UAAU;MACnCR,OAAO,EAAElH,aAAa,CAACJ,OAAO;MAC9BmH,QAAQ,EAAEhJ,gBAAgB,CAAC4J;IAC7B,CAAC;IAEDlF,OAAO,CAACmF,qBAAqB,CAAC,CAACJ,cAAc,CAAC,EAAEP,YAAY,EAAEI,UAAU,CAAC;IACzE5E,OAAO,CAACoF,YAAY,CAAC,UAAU,EAAE7H,aAAa,CAACJ,OAAO,CAAC;EACzD;EAEA,IAAII,aAAa,CAACG,QAAQ,EAAE;IAC1BsC,OAAO,CAACoF,YAAY,CAAC,oBAAoB,EAAE7H,aAAa,CAACG,QAAQ,CAAC;EACpE;EAEA,IAAIL,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEgI,gBAAgB,EAAE;IAAA,IAAAC,qBAAA,EAAAC,QAAA,EAAAC,qBAAA,EAAAC,SAAA;IAC7B,IAAI;MACF;MACA;MACA;MACA;MACA;MACApI,OAAO,CAACgI,gBAAgB,CAACnJ,IAAI,CAAC,EAAE;IAClC,CAAC,CAAC,MAAM,CAAC;IAET,MAAMwJ,QAAQ,GAAGA,CAACC,QAAoB,EAAEC,YAAkC,KAAK;MAC7E,IAAIC,SAAS,GAAG,CAAC;MACjB,MAAMC,WAAW,GAAGzI,OAAO,CAACgI,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;MACFlG,YAAY,CAAC2G,IAAI,CAACN,WAAW,CAAC;MAC9B,OAAOA,WAAW;IACpB,CAAC;IACD,CAAAR,qBAAA,IAAAC,QAAA,GAAAvF,OAAO,EAACqG,iBAAiB,cAAAf,qBAAA,uBAAzBA,qBAAA,CAAAgB,IAAA,CAAAf,QAAA,EAA6BgB,QAAQ,IAAKb,QAAQ,CAACa,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAAf,qBAAA,IAAAC,SAAA,GAAAzF,OAAO,EAACwG,kBAAkB,cAAAhB,qBAAA,uBAA1BA,qBAAA,CAAAc,IAAA,CAAAb,SAAA,EAA8BgB,SAAS,IAAKf,QAAQ,CAACe,SAAS,EAAE,SAAS,CAAC,CAAC;EAC7E;EACA,OAAO;IAAEzG,OAAO;IAAEP;EAAa,CAAC;AAClC,CAAC;AAED,SAAS8E,mBAAmBA,CAAA,EAAG;EAC7B,QAAQrJ,QAAQ,CAACyC,EAAE;IACjB,KAAK,SAAS;MACZ,OAAOtC,gBAAgB,CAACqL,OAAO;IACjC,KAAK,KAAK;MACR,OAAOrL,gBAAgB,CAACsL,GAAG;IAC7B,KAAK,KAAK;MACR,OAAOtL,gBAAgB,CAACuL,GAAG;IAC7B,KAAK,SAAS;MACZ,OAAOvL,gBAAgB,CAACwL,OAAO;IACjC;MACE,OAAO3F,SAAS;EAAC;AAEvB;AAEA,SAAS4D,qBAAqBA,CAAA,EAAG;EAC/B,MAAM;IAAEgC,KAAK;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAG9L,QAAQ,CAAC+L,SAAS,CAACC,kBAAkB;EACrE,OAAQ,GAAEJ,KAAM,IAAGC,KAAM,IAAGC,KAAM,EAAC;AACrC;AAEA,MAAM5G,iBAAiB,GAAG+G,IAAA,IAAkF;EAAA,IAAAC,sBAAA,EAAAC,sBAAA;EAAA,IAAjF;IAAEC,gBAAgB;IAAEC,WAAW;IAAEC;EAA0C,CAAC,GAAAL,IAAA;EACrG,MAAMhH,aAAa,GAAGpF,OAAO,CAAC,MAAM;IAClC,OAAO,IAAI8B,aAAa,CAAC;MACvB4K,YAAY,EAAE,CAAAF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,YAAY,KAAI5K,aAAa,CAACgB,OAAO,CAAC6J,aAAa;MAC9EC,eAAe,EAAE,CAAAJ,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,eAAe,KAAI9K,aAAa,CAACgB,OAAO,CAAC+J,gBAAgB;MACvFC,aAAa,EAAE,CAAAN,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEM,aAAa,KAAIhL,aAAa,CAACgB,OAAO,CAACiK,cAAc;MACjFC,SAAS,EAAElL,aAAa,CAACgB,OAAO,CAACmK,SAAS;MAC1CC,OAAO,EAAEpL,aAAa,CAACgB,OAAO,CAACqK;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,MAAM5H,sBAAsB,GAAGlF,OAAO,CAAC,MAAM;IAC3C,OAAO,IAAI4B,sBAAsB,CAAC;MAChCwL,eAAe,EAAE,CAAAb,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEa,eAAe,KAAIxL,sBAAsB,CAACkB,OAAO,CAACuK,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,MAAMpI,kBAAkB,GAAGnF,OAAO,CAAC,MAAM;IAAA,IAAAwN,qBAAA,EAAAC,sBAAA;IACvC,OAAO,IAAIzL,kBAAkB,CAAC;MAC5BuF,QAAQ,EAAE;QACRmG,WAAW,EAAE,CAAAjB,YAAY,aAAZA,YAAY,wBAAAe,qBAAA,GAAZf,YAAY,CAAElF,QAAQ,cAAAiG,qBAAA,uBAAtBA,qBAAA,CAAwBE,WAAW,KAAI1L,kBAAkB,CAACc,OAAO,CAAC6K,QAAQ,CAACC,YAAY;QACpGC,WAAW,EAAE,CAAApB,YAAY,aAAZA,YAAY,wBAAAgB,sBAAA,GAAZhB,YAAY,CAAElF,QAAQ,cAAAkG,sBAAA,uBAAtBA,sBAAA,CAAwBI,WAAW,KAAI7L,kBAAkB,CAACc,OAAO,CAAC6K,QAAQ,CAACG;MAC1F;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACrB,YAAY,aAAZA,YAAY,wBAAAJ,sBAAA,GAAZI,YAAY,CAAElF,QAAQ,cAAA8E,sBAAA,uBAAtBA,sBAAA,CAAwBqB,WAAW,EAAEjB,YAAY,aAAZA,YAAY,wBAAAH,sBAAA,GAAZG,YAAY,CAAElF,QAAQ,cAAA+E,sBAAA,uBAAtBA,sBAAA,CAAwBuB,WAAW,CAAC,CAAC;EAE9E,OAAO;IACLzI,aAAa;IACbF,sBAAsB;IACtBC;EACF,CAAC;AACH,CAAC;AAED,eAAe3B,sBAAsB"}
@@ -60,7 +60,7 @@ export const SendbirdChatProvider = _ref => {
60
60
  });
61
61
  useEffect(() => {
62
62
  return () => {
63
- sdkInstance.disconnect().then(() => _setCurrentUser(undefined));
63
+ sdkInstance.disconnectWebSocket().then(() => _setCurrentUser(undefined));
64
64
  };
65
65
  }, [sdkInstance]);
66
66
  const value = {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","pubsub","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","voiceMessageStatusManager","imageCompressionConfig","voiceMessageConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnect","then","undefined","value","sdk","groupChannelFragmentOptions","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';\nimport type { FileType } from '../platform/types';\nimport pubsub, { type PubSub } from '../utils/pubsub';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n}\n\nexport type GroupChannelFragmentOptionsPubSubContextPayload = {\n type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT';\n data: {\n startingPoint: number;\n };\n};\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // feature related instances\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n groupChannelFragmentOptions: {\n pubsub: PubSub<GroupChannelFragmentOptionsPubSubContextPayload>;\n };\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n readonly enableReactions: boolean;\n readonly enableReactionsSupergroup: boolean;\n readonly enableOgtag: boolean;\n };\n setting: {\n readonly enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n readonly enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n uploadSizeLimit: number | undefined;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n voiceMessageStatusManager,\n imageCompressionConfig,\n voiceMessageConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n useEffect(() => {\n return () => {\n sdkInstance.disconnect().then(() => _setCurrentUser(undefined));\n };\n }, [sdkInstance]);\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n voiceMessageConfig,\n voiceMessageStatusManager,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n groupChannelFragmentOptions: {\n pubsub: pubsub<GroupChannelFragmentOptionsPubSubContextPayload>(),\n },\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","pubsub","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","voiceMessageStatusManager","imageCompressionConfig","voiceMessageConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnectWebSocket","then","undefined","value","sdk","groupChannelFragmentOptions","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';\nimport type { FileType } from '../platform/types';\nimport pubsub, { type PubSub } from '../utils/pubsub';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n}\n\nexport type GroupChannelFragmentOptionsPubSubContextPayload = {\n type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT';\n data: {\n startingPoint: number;\n };\n};\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // feature related instances\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n voiceMessageStatusManager: VoiceMessageStatusManager;\n imageCompressionConfig: ImageCompressionConfig;\n voiceMessageConfig: VoiceMessageConfig;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n groupChannelFragmentOptions: {\n pubsub: PubSub<GroupChannelFragmentOptionsPubSubContextPayload>;\n };\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n readonly enableReactions: boolean;\n readonly enableReactionsSupergroup: boolean;\n readonly enableOgtag: boolean;\n };\n setting: {\n readonly enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n readonly enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n uploadSizeLimit: number | undefined;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n voiceMessageStatusManager,\n imageCompressionConfig,\n voiceMessageConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n useEffect(() => {\n return () => {\n sdkInstance.disconnectWebSocket().then(() => _setCurrentUser(undefined));\n };\n }, [sdkInstance]);\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n voiceMessageConfig,\n voiceMessageStatusManager,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n groupChannelFragmentOptions: {\n pubsub: pubsub<GroupChannelFragmentOptionsPubSubContextPayload>(),\n },\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["InternalLocalCacheStorage","MemoryStorage","constructor","_defineProperty","getAllKeys","Object","keys","_data","getItem","key","removeItem","setItem","value","EmojiManager","internalStorage","arguments","length","undefined","container","get","emojiStorage","strItem","freeze","JSON","parse","set","stringify","emojiContainer","category","emojiCategories","_emojiCategoryMap","id","emoji","emojis","_allEmojiMap","_allEmoji","values","emojiCategoryMap","allEmojiMap","allEmoji","emojiHash","_this$emojiStorage$co"],"sources":["EmojiManager.ts"],"sourcesContent":["import type { SendbirdEmoji, SendbirdEmojiCategory, SendbirdEmojiContainer } from '@sendbird/uikit-utils';\n\nimport type { LocalCacheStorage } from '../types';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\n\nclass MemoryStorage implements LocalCacheStorage {\n _data: Record<string, string> = {};\n\n async getAllKeys(): Promise<readonly string[] | string[]> {\n return Object.keys(this._data);\n }\n\n async getItem(key: string): Promise<string | null> {\n return this._data[key];\n }\n\n async removeItem(key: string): Promise<void> {\n delete this._data[key];\n }\n\n async setItem(key: string, value: string): Promise<void> {\n this._data[key] = value;\n }\n}\n\nclass EmojiManager {\n static key = 'sendbird-uikit@emoji-manager';\n\n constructor(\n private internalStorage: InternalLocalCacheStorage = new InternalLocalCacheStorage(new MemoryStorage()),\n ) {}\n\n private emojiStorage = {\n container: null as null | SendbirdEmojiContainer,\n get: async () => {\n if (!this.emojiStorage.container) {\n const strItem = await this.internalStorage.getItem(EmojiManager.key);\n if (strItem) this.emojiStorage.container = Object.freeze(JSON.parse(strItem));\n }\n return this.emojiStorage.container;\n },\n set: async (container: SendbirdEmojiContainer) => {\n this.emojiStorage.container = Object.freeze(container);\n await this.internalStorage.setItem(EmojiManager.key, JSON.stringify(container));\n },\n };\n\n private _emojiCategoryMap: Record<string, SendbirdEmojiCategory> = {};\n public get emojiCategoryMap() {\n return this._emojiCategoryMap;\n }\n\n private _allEmojiMap: Record<string, SendbirdEmoji> = {};\n public get allEmojiMap() {\n return this._allEmojiMap;\n }\n\n private _allEmoji: SendbirdEmoji[] = [];\n public get allEmoji() {\n return this._allEmoji;\n }\n\n public init = async (emojiContainer?: SendbirdEmojiContainer) => {\n if (emojiContainer) await this.emojiStorage.set(emojiContainer);\n\n const container = await this.emojiStorage.get();\n\n if (container) {\n for (const category of container.emojiCategories) {\n this._emojiCategoryMap[category.id] = category;\n for (const emoji of category.emojis) {\n this._allEmojiMap[emoji.key] = emoji;\n }\n }\n this._allEmoji = Object.values(this._allEmojiMap);\n }\n };\n\n public get emojiHash() {\n return this.emojiStorage.container?.emojiHash;\n }\n}\n\nexport default EmojiManager;\n"],"mappings":"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"}
1
+ {"version":3,"names":["InternalLocalCacheStorage","MemoryStorage","constructor","_defineProperty","getAllKeys","Object","keys","_data","getItem","key","removeItem","setItem","value","EmojiManager","internalStorage","arguments","length","undefined","container","get","emojiStorage","strItem","freeze","JSON","parse","set","stringify","emojiContainer","category","emojiCategories","_emojiCategoryMap","id","emoji","emojis","_allEmojiMap","_allEmoji","values","emojiCategoryMap","allEmojiMap","allEmoji","emojiHash","_this$emojiStorage$co"],"sources":["EmojiManager.ts"],"sourcesContent":["import type { SendbirdEmoji, SendbirdEmojiCategory, SendbirdEmojiContainer } from '@sendbird/uikit-utils';\n\nimport type { AsyncLocalCacheStorage } from '../types';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\n\nclass MemoryStorage implements AsyncLocalCacheStorage {\n _data: Record<string, string> = {};\n\n async getAllKeys(): Promise<readonly string[] | string[]> {\n return Object.keys(this._data);\n }\n\n async getItem(key: string): Promise<string | null> {\n return this._data[key];\n }\n\n async removeItem(key: string): Promise<void> {\n delete this._data[key];\n }\n\n async setItem(key: string, value: string): Promise<void> {\n this._data[key] = value;\n }\n}\n\nclass EmojiManager {\n static key = 'sendbird-uikit@emoji-manager';\n\n constructor(\n private internalStorage: InternalLocalCacheStorage = new InternalLocalCacheStorage(new MemoryStorage()),\n ) {}\n\n private emojiStorage = {\n container: null as null | SendbirdEmojiContainer,\n get: async () => {\n if (!this.emojiStorage.container) {\n const strItem = await this.internalStorage.getItem(EmojiManager.key);\n if (strItem) this.emojiStorage.container = Object.freeze(JSON.parse(strItem));\n }\n return this.emojiStorage.container;\n },\n set: async (container: SendbirdEmojiContainer) => {\n this.emojiStorage.container = Object.freeze(container);\n await this.internalStorage.setItem(EmojiManager.key, JSON.stringify(container));\n },\n };\n\n private _emojiCategoryMap: Record<string, SendbirdEmojiCategory> = {};\n public get emojiCategoryMap() {\n return this._emojiCategoryMap;\n }\n\n private _allEmojiMap: Record<string, SendbirdEmoji> = {};\n public get allEmojiMap() {\n return this._allEmojiMap;\n }\n\n private _allEmoji: SendbirdEmoji[] = [];\n public get allEmoji() {\n return this._allEmoji;\n }\n\n public init = async (emojiContainer?: SendbirdEmojiContainer) => {\n if (emojiContainer) await this.emojiStorage.set(emojiContainer);\n\n const container = await this.emojiStorage.get();\n\n if (container) {\n for (const category of container.emojiCategories) {\n this._emojiCategoryMap[category.id] = category;\n for (const emoji of category.emojis) {\n this._allEmojiMap[emoji.key] = emoji;\n }\n }\n this._allEmoji = Object.values(this._allEmojiMap);\n }\n };\n\n public get emojiHash() {\n return this.emojiStorage.container?.emojiHash;\n }\n}\n\nexport default EmojiManager;\n"],"mappings":"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"}
@@ -4,44 +4,90 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
4
4
  import { ASYNC_NOOP } from '@sendbird/uikit-utils';
5
5
  export default class InternalLocalCacheStorage {
6
6
  constructor(storage) {
7
- this.storage = storage;
7
+ _defineProperty(this, "_mmkv", void 0);
8
+ _defineProperty(this, "_async", void 0);
8
9
  _defineProperty(this, "clear", ASYNC_NOOP);
9
10
  _defineProperty(this, "flushGetRequests", ASYNC_NOOP);
11
+ if ('getString' in storage) {
12
+ this._mmkv = storage;
13
+ } else {
14
+ this._async = storage;
15
+ }
10
16
  }
11
- getAllKeys() {
12
- return this.storage.getAllKeys();
17
+ async getAllKeys() {
18
+ if (this._mmkv) {
19
+ return this._mmkv.getAllKeys();
20
+ } else if (this._async) {
21
+ return this._async.getAllKeys();
22
+ } else {
23
+ return [];
24
+ }
13
25
  }
14
- getItem(key) {
15
- return this.storage.getItem(key);
26
+ async getItem(key) {
27
+ if (this._mmkv) {
28
+ return this._mmkv.getString(key) ?? null;
29
+ } else if (this._async) {
30
+ return this._async.getItem(key);
31
+ } else {
32
+ return null;
33
+ }
16
34
  }
17
- removeItem(key) {
18
- return this.storage.removeItem(key);
35
+ async removeItem(key) {
36
+ if (this._mmkv) {
37
+ this._mmkv.delete(key);
38
+ } else if (this._async) {
39
+ return this._async.removeItem(key);
40
+ }
19
41
  }
20
- setItem(key, value) {
21
- return this.storage.setItem(key, value);
42
+ async setItem(key, value) {
43
+ if (this._mmkv) {
44
+ this._mmkv.set(key, value);
45
+ } else if (this._async) {
46
+ return this._async.setItem(key, value);
47
+ }
22
48
  }
23
49
  async multiGet(keys) {
24
- if (this.storage.multiGet) {
25
- return this.storage.multiGet(keys);
26
- } else {
50
+ if (this._mmkv) {
27
51
  return Promise.all(keys.map(async key => [key, await this.getItem(key)]));
52
+ } else if (this._async) {
53
+ var _this$_async;
54
+ if ((_this$_async = this._async) !== null && _this$_async !== void 0 && _this$_async.multiGet) {
55
+ return this._async.multiGet(keys);
56
+ } else {
57
+ return Promise.all(keys.map(async key => [key, await this.getItem(key)]));
58
+ }
59
+ } else {
60
+ return [];
28
61
  }
29
62
  }
30
63
  async multiRemove(keys) {
31
- if (this.storage.multiRemove) {
32
- await this.storage.multiRemove(keys);
33
- } else {
64
+ if (this._mmkv) {
34
65
  await Promise.all(keys.map(async key => this.removeItem(key)));
66
+ } else if (this._async) {
67
+ var _this$_async2;
68
+ if ((_this$_async2 = this._async) !== null && _this$_async2 !== void 0 && _this$_async2.multiRemove) {
69
+ await this._async.multiRemove(keys);
70
+ } else {
71
+ await Promise.all(keys.map(async key => this.removeItem(key)));
72
+ }
35
73
  }
36
74
  }
37
75
  async multiSet(keyValuePairs) {
38
- if (this.storage.multiSet) {
39
- await this.storage.multiSet(keyValuePairs);
40
- } else {
76
+ if (this._mmkv) {
41
77
  await Promise.all(keyValuePairs.map(_ref => {
42
78
  let [key, value] = _ref;
43
- return this.storage.setItem(key, value);
79
+ return this.setItem(key, value);
44
80
  }));
81
+ } else if (this._async) {
82
+ var _this$_async3;
83
+ if ((_this$_async3 = this._async) !== null && _this$_async3 !== void 0 && _this$_async3.multiSet) {
84
+ await this._async.multiSet(keyValuePairs);
85
+ } else {
86
+ await Promise.all(keyValuePairs.map(_ref2 => {
87
+ let [key, value] = _ref2;
88
+ return this.setItem(key, value);
89
+ }));
90
+ }
45
91
  }
46
92
  }
47
93
  }
@@ -1 +1 @@
1
- {"version":3,"names":["ASYNC_NOOP","InternalLocalCacheStorage","constructor","storage","_defineProperty","getAllKeys","getItem","key","removeItem","setItem","value","multiGet","keys","Promise","all","map","multiRemove","multiSet","keyValuePairs","_ref"],"sources":["InternalLocalCacheStorage.ts"],"sourcesContent":["import { ASYNC_NOOP } from '@sendbird/uikit-utils';\n\nimport type { KeyValuePairGet, KeyValuePairSet, LocalCacheStorage } from '../types';\n\nexport default class InternalLocalCacheStorage implements LocalCacheStorage {\n constructor(private storage: LocalCacheStorage) {}\n\n getAllKeys() {\n return this.storage.getAllKeys();\n }\n\n getItem(key: string) {\n return this.storage.getItem(key);\n }\n\n removeItem(key: string) {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string) {\n return this.storage.setItem(key, value);\n }\n\n async multiGet(keys: string[]) {\n if (this.storage.multiGet) {\n return this.storage.multiGet(keys);\n } else {\n return Promise.all(keys.map(async (key) => [key, await this.getItem(key)] as KeyValuePairGet));\n }\n }\n\n async multiRemove(keys: string[]) {\n if (this.storage.multiRemove) {\n await this.storage.multiRemove(keys);\n } else {\n await Promise.all(keys.map(async (key) => this.removeItem(key)));\n }\n }\n\n async multiSet(keyValuePairs: Array<KeyValuePairSet>) {\n if (this.storage.multiSet) {\n await this.storage.multiSet(keyValuePairs);\n } else {\n await Promise.all(keyValuePairs.map(([key, value]) => this.storage.setItem(key, value)));\n }\n }\n\n clear = ASYNC_NOOP;\n flushGetRequests = ASYNC_NOOP;\n}\n"],"mappings":";;;AAAA,SAASA,UAAU,QAAQ,uBAAuB;AAIlD,eAAe,MAAMC,yBAAyB,CAA8B;EAC1EC,WAAWA,CAASC,OAA0B,EAAE;IAAA,KAA5BA,OAA0B,GAA1BA,OAA0B;IAAAC,eAAA,gBA0CtCJ,UAAU;IAAAI,eAAA,2BACCJ,UAAU;EA3CoB;EAEjDK,UAAUA,CAAA,EAAG;IACX,OAAO,IAAI,CAACF,OAAO,CAACE,UAAU,EAAE;EAClC;EAEAC,OAAOA,CAACC,GAAW,EAAE;IACnB,OAAO,IAAI,CAACJ,OAAO,CAACG,OAAO,CAACC,GAAG,CAAC;EAClC;EAEAC,UAAUA,CAACD,GAAW,EAAE;IACtB,OAAO,IAAI,CAACJ,OAAO,CAACK,UAAU,CAACD,GAAG,CAAC;EACrC;EAEAE,OAAOA,CAACF,GAAW,EAAEG,KAAa,EAAE;IAClC,OAAO,IAAI,CAACP,OAAO,CAACM,OAAO,CAACF,GAAG,EAAEG,KAAK,CAAC;EACzC;EAEA,MAAMC,QAAQA,CAACC,IAAc,EAAE;IAC7B,IAAI,IAAI,CAACT,OAAO,CAACQ,QAAQ,EAAE;MACzB,OAAO,IAAI,CAACR,OAAO,CAACQ,QAAQ,CAACC,IAAI,CAAC;IACpC,CAAC,MAAM;MACL,OAAOC,OAAO,CAACC,GAAG,CAACF,IAAI,CAACG,GAAG,CAAC,MAAOR,GAAG,IAAK,CAACA,GAAG,EAAE,MAAM,IAAI,CAACD,OAAO,CAACC,GAAG,CAAC,CAAoB,CAAC,CAAC;IAChG;EACF;EAEA,MAAMS,WAAWA,CAACJ,IAAc,EAAE;IAChC,IAAI,IAAI,CAACT,OAAO,CAACa,WAAW,EAAE;MAC5B,MAAM,IAAI,CAACb,OAAO,CAACa,WAAW,CAACJ,IAAI,CAAC;IACtC,CAAC,MAAM;MACL,MAAMC,OAAO,CAACC,GAAG,CAACF,IAAI,CAACG,GAAG,CAAC,MAAOR,GAAG,IAAK,IAAI,CAACC,UAAU,CAACD,GAAG,CAAC,CAAC,CAAC;IAClE;EACF;EAEA,MAAMU,QAAQA,CAACC,aAAqC,EAAE;IACpD,IAAI,IAAI,CAACf,OAAO,CAACc,QAAQ,EAAE;MACzB,MAAM,IAAI,CAACd,OAAO,CAACc,QAAQ,CAACC,aAAa,CAAC;IAC5C,CAAC,MAAM;MACL,MAAML,OAAO,CAACC,GAAG,CAACI,aAAa,CAACH,GAAG,CAACI,IAAA;QAAA,IAAC,CAACZ,GAAG,EAAEG,KAAK,CAAC,GAAAS,IAAA;QAAA,OAAK,IAAI,CAAChB,OAAO,CAACM,OAAO,CAACF,GAAG,EAAEG,KAAK,CAAC;MAAA,EAAC,CAAC;IAC1F;EACF;AAIF"}
1
+ {"version":3,"names":["ASYNC_NOOP","InternalLocalCacheStorage","constructor","storage","_defineProperty","_mmkv","_async","getAllKeys","getItem","key","getString","removeItem","delete","setItem","value","set","multiGet","keys","Promise","all","map","_this$_async","multiRemove","_this$_async2","multiSet","keyValuePairs","_ref","_this$_async3","_ref2"],"sources":["InternalLocalCacheStorage.ts"],"sourcesContent":["import { ASYNC_NOOP } from '@sendbird/uikit-utils';\n\nimport type {\n AsyncLocalCacheStorage,\n KeyValuePairGet,\n KeyValuePairSet,\n LocalCacheStorage,\n MMKVLocalCacheStorage,\n} from '../types';\n\nexport default class InternalLocalCacheStorage implements AsyncLocalCacheStorage {\n private readonly _mmkv?: MMKVLocalCacheStorage;\n private readonly _async?: AsyncLocalCacheStorage;\n\n constructor(storage: LocalCacheStorage) {\n if ('getString' in storage) {\n this._mmkv = storage;\n } else {\n this._async = storage;\n }\n }\n\n async getAllKeys() {\n if (this._mmkv) {\n return this._mmkv.getAllKeys();\n } else if (this._async) {\n return this._async.getAllKeys();\n } else {\n return [];\n }\n }\n\n async getItem(key: string) {\n if (this._mmkv) {\n return this._mmkv.getString(key) ?? null;\n } else if (this._async) {\n return this._async.getItem(key);\n } else {\n return null;\n }\n }\n\n async removeItem(key: string) {\n if (this._mmkv) {\n this._mmkv.delete(key);\n } else if (this._async) {\n return this._async.removeItem(key);\n }\n }\n\n async setItem(key: string, value: string) {\n if (this._mmkv) {\n this._mmkv.set(key, value);\n } else if (this._async) {\n return this._async.setItem(key, value);\n }\n }\n\n async multiGet(keys: string[]) {\n if (this._mmkv) {\n return Promise.all(keys.map(async (key) => [key, await this.getItem(key)] as KeyValuePairGet));\n } else if (this._async) {\n if (this._async?.multiGet) {\n return this._async.multiGet(keys);\n } else {\n return Promise.all(keys.map(async (key) => [key, await this.getItem(key)] as KeyValuePairGet));\n }\n } else {\n return [];\n }\n }\n\n async multiRemove(keys: string[]) {\n if (this._mmkv) {\n await Promise.all(keys.map(async (key) => this.removeItem(key)));\n } else if (this._async) {\n if (this._async?.multiRemove) {\n await this._async.multiRemove(keys);\n } else {\n await Promise.all(keys.map(async (key) => this.removeItem(key)));\n }\n }\n }\n\n async multiSet(keyValuePairs: Array<KeyValuePairSet>) {\n if (this._mmkv) {\n await Promise.all(keyValuePairs.map(([key, value]) => this.setItem(key, value)));\n } else if (this._async) {\n if (this._async?.multiSet) {\n await this._async.multiSet(keyValuePairs);\n } else {\n await Promise.all(keyValuePairs.map(([key, value]) => this.setItem(key, value)));\n }\n }\n }\n\n clear = ASYNC_NOOP;\n flushGetRequests = ASYNC_NOOP;\n}\n"],"mappings":";;;AAAA,SAASA,UAAU,QAAQ,uBAAuB;AAUlD,eAAe,MAAMC,yBAAyB,CAAmC;EAI/EC,WAAWA,CAACC,OAA0B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA,gBAkFhCJ,UAAU;IAAAI,eAAA,2BACCJ,UAAU;IAlF3B,IAAI,WAAW,IAAIG,OAAO,EAAE;MAC1B,IAAI,CAACE,KAAK,GAAGF,OAAO;IACtB,CAAC,MAAM;MACL,IAAI,CAACG,MAAM,GAAGH,OAAO;IACvB;EACF;EAEA,MAAMI,UAAUA,CAAA,EAAG;IACjB,IAAI,IAAI,CAACF,KAAK,EAAE;MACd,OAAO,IAAI,CAACA,KAAK,CAACE,UAAU,EAAE;IAChC,CAAC,MAAM,IAAI,IAAI,CAACD,MAAM,EAAE;MACtB,OAAO,IAAI,CAACA,MAAM,CAACC,UAAU,EAAE;IACjC,CAAC,MAAM;MACL,OAAO,EAAE;IACX;EACF;EAEA,MAAMC,OAAOA,CAACC,GAAW,EAAE;IACzB,IAAI,IAAI,CAACJ,KAAK,EAAE;MACd,OAAO,IAAI,CAACA,KAAK,CAACK,SAAS,CAACD,GAAG,CAAC,IAAI,IAAI;IAC1C,CAAC,MAAM,IAAI,IAAI,CAACH,MAAM,EAAE;MACtB,OAAO,IAAI,CAACA,MAAM,CAACE,OAAO,CAACC,GAAG,CAAC;IACjC,CAAC,MAAM;MACL,OAAO,IAAI;IACb;EACF;EAEA,MAAME,UAAUA,CAACF,GAAW,EAAE;IAC5B,IAAI,IAAI,CAACJ,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACO,MAAM,CAACH,GAAG,CAAC;IACxB,CAAC,MAAM,IAAI,IAAI,CAACH,MAAM,EAAE;MACtB,OAAO,IAAI,CAACA,MAAM,CAACK,UAAU,CAACF,GAAG,CAAC;IACpC;EACF;EAEA,MAAMI,OAAOA,CAACJ,GAAW,EAAEK,KAAa,EAAE;IACxC,IAAI,IAAI,CAACT,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACU,GAAG,CAACN,GAAG,EAAEK,KAAK,CAAC;IAC5B,CAAC,MAAM,IAAI,IAAI,CAACR,MAAM,EAAE;MACtB,OAAO,IAAI,CAACA,MAAM,CAACO,OAAO,CAACJ,GAAG,EAAEK,KAAK,CAAC;IACxC;EACF;EAEA,MAAME,QAAQA,CAACC,IAAc,EAAE;IAC7B,IAAI,IAAI,CAACZ,KAAK,EAAE;MACd,OAAOa,OAAO,CAACC,GAAG,CAACF,IAAI,CAACG,GAAG,CAAC,MAAOX,GAAG,IAAK,CAACA,GAAG,EAAE,MAAM,IAAI,CAACD,OAAO,CAACC,GAAG,CAAC,CAAoB,CAAC,CAAC;IAChG,CAAC,MAAM,IAAI,IAAI,CAACH,MAAM,EAAE;MAAA,IAAAe,YAAA;MACtB,KAAAA,YAAA,GAAI,IAAI,CAACf,MAAM,cAAAe,YAAA,eAAXA,YAAA,CAAaL,QAAQ,EAAE;QACzB,OAAO,IAAI,CAACV,MAAM,CAACU,QAAQ,CAACC,IAAI,CAAC;MACnC,CAAC,MAAM;QACL,OAAOC,OAAO,CAACC,GAAG,CAACF,IAAI,CAACG,GAAG,CAAC,MAAOX,GAAG,IAAK,CAACA,GAAG,EAAE,MAAM,IAAI,CAACD,OAAO,CAACC,GAAG,CAAC,CAAoB,CAAC,CAAC;MAChG;IACF,CAAC,MAAM;MACL,OAAO,EAAE;IACX;EACF;EAEA,MAAMa,WAAWA,CAACL,IAAc,EAAE;IAChC,IAAI,IAAI,CAACZ,KAAK,EAAE;MACd,MAAMa,OAAO,CAACC,GAAG,CAACF,IAAI,CAACG,GAAG,CAAC,MAAOX,GAAG,IAAK,IAAI,CAACE,UAAU,CAACF,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC,MAAM,IAAI,IAAI,CAACH,MAAM,EAAE;MAAA,IAAAiB,aAAA;MACtB,KAAAA,aAAA,GAAI,IAAI,CAACjB,MAAM,cAAAiB,aAAA,eAAXA,aAAA,CAAaD,WAAW,EAAE;QAC5B,MAAM,IAAI,CAAChB,MAAM,CAACgB,WAAW,CAACL,IAAI,CAAC;MACrC,CAAC,MAAM;QACL,MAAMC,OAAO,CAACC,GAAG,CAACF,IAAI,CAACG,GAAG,CAAC,MAAOX,GAAG,IAAK,IAAI,CAACE,UAAU,CAACF,GAAG,CAAC,CAAC,CAAC;MAClE;IACF;EACF;EAEA,MAAMe,QAAQA,CAACC,aAAqC,EAAE;IACpD,IAAI,IAAI,CAACpB,KAAK,EAAE;MACd,MAAMa,OAAO,CAACC,GAAG,CAACM,aAAa,CAACL,GAAG,CAACM,IAAA;QAAA,IAAC,CAACjB,GAAG,EAAEK,KAAK,CAAC,GAAAY,IAAA;QAAA,OAAK,IAAI,CAACb,OAAO,CAACJ,GAAG,EAAEK,KAAK,CAAC;MAAA,EAAC,CAAC;IAClF,CAAC,MAAM,IAAI,IAAI,CAACR,MAAM,EAAE;MAAA,IAAAqB,aAAA;MACtB,KAAAA,aAAA,GAAI,IAAI,CAACrB,MAAM,cAAAqB,aAAA,eAAXA,aAAA,CAAaH,QAAQ,EAAE;QACzB,MAAM,IAAI,CAAClB,MAAM,CAACkB,QAAQ,CAACC,aAAa,CAAC;MAC3C,CAAC,MAAM;QACL,MAAMP,OAAO,CAACC,GAAG,CAACM,aAAa,CAACL,GAAG,CAACQ,KAAA;UAAA,IAAC,CAACnB,GAAG,EAAEK,KAAK,CAAC,GAAAc,KAAA;UAAA,OAAK,IAAI,CAACf,OAAO,CAACJ,GAAG,EAAEK,KAAK,CAAC;QAAA,EAAC,CAAC;MAClF;IACF;EACF;AAIF"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","getDownscaleSize","getFileExtension","hash","SBUUtils","createNativeMediaService","_ref","VideoComponent","thumbnailModule","imageResizerModule","_ref2","source","resizeMode","onLoad","props","createElement","_extends","controls","getVideoThumbnail","_ref3","url","timeMills","path","createThumbnail","format","timeStamp","cacheName","split","compressImage","_ref4","uri","maxWidth","maxHeight","compressionRate","originSize","getImageSize","width","height","extension","size","resizedSize","compressedURI","default","createResizedImage","Math","min","max"],"sources":["createMediaService.native.tsx"],"sourcesContent":["import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';\nimport React from 'react';\nimport type * as RNCreateThumbnail from 'react-native-create-thumbnail';\nimport type RNVideo from 'react-native-video';\n\nimport { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport type { MediaServiceInterface } from './types';\n\ntype Modules = {\n VideoComponent: typeof RNVideo;\n thumbnailModule: typeof RNCreateThumbnail;\n imageResizerModule: typeof RNImageResizer;\n};\n\nconst createNativeMediaService = ({\n VideoComponent,\n thumbnailModule,\n imageResizerModule,\n}: Modules): MediaServiceInterface => {\n return {\n VideoComponent({ source, resizeMode, onLoad, ...props }) {\n return <VideoComponent {...props} source={source} resizeMode={resizeMode} onLoad={onLoad} controls />;\n },\n async getVideoThumbnail({ url, timeMills }) {\n try {\n const { path } = await thumbnailModule.createThumbnail({\n url,\n format: 'jpeg',\n timeStamp: timeMills,\n cacheName: hash(url.split('?')[0]),\n });\n return { path };\n } catch {\n return null;\n }\n },\n async compressImage({ uri, maxWidth, maxHeight, compressionRate = 1 }) {\n const originSize = await SBUUtils.getImageSize(uri);\n const { width, height } = getDownscaleSize(originSize, { width: maxWidth, height: maxHeight });\n const extension = (() => {\n return { 'png': 'PNG', 'jpeg': 'JPEG', 'jpg': 'JPEG' }[getFileExtension(uri)] ?? 'JPEG';\n })() as 'PNG' | 'JPEG';\n\n const { size: resizedSize, uri: compressedURI } = await imageResizerModule.default.createResizedImage(\n uri,\n width,\n height,\n extension,\n Math.min(Math.max(0, compressionRate), 1) * 100,\n );\n\n return { uri: compressedURI, size: resizedSize };\n },\n };\n};\n\nexport default createNativeMediaService;\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AAIzB,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,uBAAuB;AAEhF,OAAOC,QAAQ,MAAM,kBAAkB;AASvC,MAAMC,wBAAwB,GAAGC,IAAA,IAIK;EAAA,IAJJ;IAChCC,cAAc;IACdC,eAAe;IACfC;EACO,CAAC,GAAAH,IAAA;EACR,OAAO;IACLC,cAAcA,CAAAG,KAAA,EAA2C;MAAA,IAA1C;QAAEC,MAAM;QAAEC,UAAU;QAAEC,MAAM;QAAE,GAAGC;MAAM,CAAC,GAAAJ,KAAA;MACrD,oBAAOV,KAAA,CAAAe,aAAA,CAACR,cAAc,EAAAS,QAAA,KAAKF,KAAK;QAAEH,MAAM,EAAEA,MAAO;QAACC,UAAU,EAAEA,UAAW;QAACC,MAAM,EAAEA,MAAO;QAACI,QAAQ;MAAA,GAAG;IACvG,CAAC;IACD,MAAMC,iBAAiBA,CAAAC,KAAA,EAAqB;MAAA,IAApB;QAAEC,GAAG;QAAEC;MAAU,CAAC,GAAAF,KAAA;MACxC,IAAI;QACF,MAAM;UAAEG;QAAK,CAAC,GAAG,MAAMd,eAAe,CAACe,eAAe,CAAC;UACrDH,GAAG;UACHI,MAAM,EAAE,MAAM;UACdC,SAAS,EAAEJ,SAAS;UACpBK,SAAS,EAAEvB,IAAI,CAACiB,GAAG,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,OAAO;UAAEL;QAAK,CAAC;MACjB,CAAC,CAAC,MAAM;QACN,OAAO,IAAI;MACb;IACF,CAAC;IACD,MAAMM,aAAaA,CAAAC,KAAA,EAAoD;MAAA,IAAnD;QAAEC,GAAG;QAAEC,QAAQ;QAAEC,SAAS;QAAEC,eAAe,GAAG;MAAE,CAAC,GAAAJ,KAAA;MACnE,MAAMK,UAAU,GAAG,MAAM9B,QAAQ,CAAC+B,YAAY,CAACL,GAAG,CAAC;MACnD,MAAM;QAAEM,KAAK;QAAEC;MAAO,CAAC,GAAGpC,gBAAgB,CAACiC,UAAU,EAAE;QAAEE,KAAK,EAAEL,QAAQ;QAAEM,MAAM,EAAEL;MAAU,CAAC,CAAC;MAC9F,MAAMM,SAAS,GAAG,CAAC,MAAM;QACvB,OAAO;UAAE,KAAK,EAAE,KAAK;UAAE,MAAM,EAAE,MAAM;UAAE,KAAK,EAAE;QAAO,CAAC,CAACpC,gBAAgB,CAAC4B,GAAG,CAAC,CAAC,IAAI,MAAM;MACzF,CAAC,GAAqB;MAEtB,MAAM;QAAES,IAAI,EAAEC,WAAW;QAAEV,GAAG,EAAEW;MAAc,CAAC,GAAG,MAAMhC,kBAAkB,CAACiC,OAAO,CAACC,kBAAkB,CACnGb,GAAG,EACHM,KAAK,EACLC,MAAM,EACNC,SAAS,EACTM,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEb,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAChD;MAED,OAAO;QAAEH,GAAG,EAAEW,aAAa;QAAEF,IAAI,EAAEC;MAAY,CAAC;IAClD;EACF,CAAC;AACH,CAAC;AAED,eAAenC,wBAAwB"}
1
+ {"version":3,"names":["React","getDownscaleSize","getFileExtension","hash","SBUUtils","createNativeMediaService","_ref","VideoComponent","thumbnailModule","imageResizerModule","_ref2","source","resizeMode","onLoad","props","createElement","_extends","controls","getVideoThumbnail","_ref3","url","timeMills","path","createThumbnail","format","timeStamp","cacheName","split","compressImage","_ref4","uri","maxWidth","maxHeight","compressionRate","originSize","getImageSize","width","height","extension","size","resizedSize","compressedURI","default","createResizedImage","Math","min","max"],"sources":["createMediaService.native.tsx"],"sourcesContent":["import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';\nimport React from 'react';\nimport type * as RNCreateThumbnail from 'react-native-create-thumbnail';\nimport type RNVideo from 'react-native-video';\n\nimport { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport type { MediaServiceInterface } from './types';\n\ntype Modules = {\n VideoComponent: typeof RNVideo;\n thumbnailModule: typeof RNCreateThumbnail;\n imageResizerModule: typeof RNImageResizer;\n};\n\nconst createNativeMediaService = ({\n VideoComponent,\n thumbnailModule,\n imageResizerModule,\n}: Modules): MediaServiceInterface => {\n return {\n VideoComponent({ source, resizeMode, onLoad, ...props }) {\n return (\n <VideoComponent\n {...props}\n source={source as { uri: string }}\n resizeMode={resizeMode}\n onLoad={onLoad}\n controls\n />\n );\n },\n async getVideoThumbnail({ url, timeMills }) {\n try {\n const { path } = await thumbnailModule.createThumbnail({\n url,\n format: 'jpeg',\n timeStamp: timeMills,\n cacheName: hash(url.split('?')[0]),\n });\n return { path };\n } catch {\n return null;\n }\n },\n async compressImage({ uri, maxWidth, maxHeight, compressionRate = 1 }) {\n const originSize = await SBUUtils.getImageSize(uri);\n const { width, height } = getDownscaleSize(originSize, { width: maxWidth, height: maxHeight });\n const extension = (() => {\n return { 'png': 'PNG', 'jpeg': 'JPEG', 'jpg': 'JPEG' }[getFileExtension(uri)] ?? 'JPEG';\n })() as 'PNG' | 'JPEG';\n\n const { size: resizedSize, uri: compressedURI } = await imageResizerModule.default.createResizedImage(\n uri,\n width,\n height,\n extension,\n Math.min(Math.max(0, compressionRate), 1) * 100,\n );\n\n return { uri: compressedURI, size: resizedSize };\n },\n };\n};\n\nexport default createNativeMediaService;\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AAIzB,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,uBAAuB;AAEhF,OAAOC,QAAQ,MAAM,kBAAkB;AASvC,MAAMC,wBAAwB,GAAGC,IAAA,IAIK;EAAA,IAJJ;IAChCC,cAAc;IACdC,eAAe;IACfC;EACO,CAAC,GAAAH,IAAA;EACR,OAAO;IACLC,cAAcA,CAAAG,KAAA,EAA2C;MAAA,IAA1C;QAAEC,MAAM;QAAEC,UAAU;QAAEC,MAAM;QAAE,GAAGC;MAAM,CAAC,GAAAJ,KAAA;MACrD,oBACEV,KAAA,CAAAe,aAAA,CAACR,cAAc,EAAAS,QAAA,KACTF,KAAK;QACTH,MAAM,EAAEA,MAA0B;QAClCC,UAAU,EAAEA,UAAW;QACvBC,MAAM,EAAEA,MAAO;QACfI,QAAQ;MAAA,GACR;IAEN,CAAC;IACD,MAAMC,iBAAiBA,CAAAC,KAAA,EAAqB;MAAA,IAApB;QAAEC,GAAG;QAAEC;MAAU,CAAC,GAAAF,KAAA;MACxC,IAAI;QACF,MAAM;UAAEG;QAAK,CAAC,GAAG,MAAMd,eAAe,CAACe,eAAe,CAAC;UACrDH,GAAG;UACHI,MAAM,EAAE,MAAM;UACdC,SAAS,EAAEJ,SAAS;UACpBK,SAAS,EAAEvB,IAAI,CAACiB,GAAG,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,OAAO;UAAEL;QAAK,CAAC;MACjB,CAAC,CAAC,MAAM;QACN,OAAO,IAAI;MACb;IACF,CAAC;IACD,MAAMM,aAAaA,CAAAC,KAAA,EAAoD;MAAA,IAAnD;QAAEC,GAAG;QAAEC,QAAQ;QAAEC,SAAS;QAAEC,eAAe,GAAG;MAAE,CAAC,GAAAJ,KAAA;MACnE,MAAMK,UAAU,GAAG,MAAM9B,QAAQ,CAAC+B,YAAY,CAACL,GAAG,CAAC;MACnD,MAAM;QAAEM,KAAK;QAAEC;MAAO,CAAC,GAAGpC,gBAAgB,CAACiC,UAAU,EAAE;QAAEE,KAAK,EAAEL,QAAQ;QAAEM,MAAM,EAAEL;MAAU,CAAC,CAAC;MAC9F,MAAMM,SAAS,GAAG,CAAC,MAAM;QACvB,OAAO;UAAE,KAAK,EAAE,KAAK;UAAE,MAAM,EAAE,MAAM;UAAE,KAAK,EAAE;QAAO,CAAC,CAACpC,gBAAgB,CAAC4B,GAAG,CAAC,CAAC,IAAI,MAAM;MACzF,CAAC,GAAqB;MAEtB,MAAM;QAAES,IAAI,EAAEC,WAAW;QAAEV,GAAG,EAAEW;MAAc,CAAC,GAAG,MAAMhC,kBAAkB,CAACiC,OAAO,CAACC,kBAAkB,CACnGb,GAAG,EACHM,KAAK,EACLC,MAAM,EACNC,SAAS,EACTM,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEb,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAChD;MAED,OAAO;QAAEH,GAAG,EAAEW,aAAa;QAAEF,IAAI,EAAEC;MAAY,CAAC;IAClD;EACF,CAAC;AACH,CAAC;AAED,eAAenC,wBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"names":["TypingIndicatorType"],"sources":["types.ts"],"sourcesContent":["import type { ComponentType, ErrorInfo, ReactNode } from 'react';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nexport type KeyValuePairGet = [string, string | null];\nexport type KeyValuePairSet = [string, string];\nexport interface LocalCacheStorage {\n getAllKeys(): Promise<readonly string[] | string[]>;\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n\n multiSet?(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;\n multiGet?(keys: string[]): Promise<readonly KeyValuePairGet[] | KeyValuePairGet[]>;\n multiRemove?(keys: string[]): Promise<void>;\n}\n\nexport type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };\n\nexport type CommonComponent<P = {}> = ComponentType<P & { children?: ReactNode | undefined }>;\n\nexport type MentionedUser = {\n range: Range;\n user: SendbirdUser;\n};\n\nexport type Range = {\n start: number;\n end: number;\n};\n\nexport enum TypingIndicatorType {\n Text = 'text',\n Bubble = 'bubble',\n}\n"],"mappings":"AA+BA,WAAYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA"}
1
+ {"version":3,"names":["TypingIndicatorType"],"sources":["types.ts"],"sourcesContent":["import type { ComponentType, ErrorInfo, ReactNode } from 'react';\nimport type { MMKV } from 'react-native-mmkv';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nexport type LocalCacheStorage = AsyncLocalCacheStorage | MMKVLocalCacheStorage;\n\nexport type KeyValuePairGet = [string, string | null];\nexport type KeyValuePairSet = [string, string];\nexport interface AsyncLocalCacheStorage {\n getAllKeys(): Promise<readonly string[] | string[]>;\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n\n multiSet?(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;\n multiGet?(keys: string[]): Promise<readonly KeyValuePairGet[] | KeyValuePairGet[]>;\n multiRemove?(keys: string[]): Promise<void>;\n}\n\nexport type MMKVLocalCacheStorage = Pick<MMKV, 'getString' | 'set' | 'delete' | 'getAllKeys'>;\n\nexport type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void };\n\nexport type CommonComponent<P = {}> = ComponentType<P & { children?: ReactNode | undefined }>;\n\nexport type MentionedUser = {\n range: Range;\n user: SendbirdUser;\n};\n\nexport type Range = {\n start: number;\n end: number;\n};\n\nexport enum TypingIndicatorType {\n Text = 'text',\n Bubble = 'bubble',\n}\n"],"mappings":"AAoCA,WAAYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA"}
@@ -1,3 +1,3 @@
1
- const VERSION = '3.6.0';
1
+ const VERSION = '3.7.1';
2
2
  export default VERSION;
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.6.0';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,OAAO;AACvB,eAAeA,OAAO"}
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.7.1';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,OAAO;AACvB,eAAeA,OAAO"}
@@ -4,16 +4,16 @@ import { GroupChannelModule } from '@sendbird/chat/groupChannel';
4
4
  import { OpenChannelModule } from '@sendbird/chat/openChannel';
5
5
  import type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';
6
6
  import { SBUConfig } from '@sendbird/uikit-tools';
7
- import type { PartialDeep, SendbirdChatSDK, SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
7
+ import { PartialDeep, SendbirdChatSDK, SendbirdGroupChannel, SendbirdGroupChannelCreateParams, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
8
8
  import type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';
9
9
  import type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';
10
10
  import { MentionConfigInterface } from '../libs/MentionConfig';
11
11
  import { VoiceMessageConfigInterface } from '../libs/VoiceMessageConfig';
12
12
  import type { StringSet } from '../localization/StringSet.type';
13
13
  import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface, PlayerServiceInterface, RecorderServiceInterface } from '../platform/types';
14
- import type { ErrorBoundaryProps, LocalCacheStorage } from '../types';
14
+ import { ErrorBoundaryProps, LocalCacheStorage } from '../types';
15
15
  export declare const SendbirdUIKit: Readonly<{
16
- VERSION: "3.6.0";
16
+ VERSION: "3.7.1";
17
17
  PLATFORM: string;
18
18
  DEFAULT: {
19
19
  AUTO_PUSH_TOKEN_REGISTRATION: boolean;
@@ -22,7 +22,7 @@ export declare const SendbirdUIKit: Readonly<{
22
22
  };
23
23
  }>;
24
24
  export type ChatOmittedInitParams = Omit<SendbirdChatParams<[GroupChannelModule, OpenChannelModule]>, (typeof chatOmitKeys)[number]>;
25
- declare const chatOmitKeys: readonly ["appId", "newInstance", "modules", "debugMode", "appVersion", "localCacheEnabled", "useAsyncStorageStore"];
25
+ declare const chatOmitKeys: readonly ["appId", "newInstance", "modules", "debugMode", "appVersion", "localCacheEnabled", "useAsyncStorageStore", "useMMKVStorageStore"];
26
26
  export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
27
27
  appId: string;
28
28
  platformServices: {
@@ -33,10 +33,10 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
33
33
  player: PlayerServiceInterface;
34
34
  recorder: RecorderServiceInterface;
35
35
  };
36
- chatOptions: {
37
- localCacheStorage: LocalCacheStorage;
36
+ chatOptions: Partial<ChatOmittedInitParams> & Partial<ChatRelatedFeaturesInUIKit> & {
38
37
  onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;
39
- } & Partial<ChatOmittedInitParams> & Partial<ChatRelatedFeaturesInUIKit>;
38
+ localCacheStorage: LocalCacheStorage;
39
+ };
40
40
  uikitOptions?: PartialDeep<{
41
41
  common: SBUConfig['common'];
42
42
  groupChannel: Omit<SBUConfig['groupChannel']['channel'], 'enableReactionsSupergroup'> & {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  declare const _default: React.MemoExoticComponent<({ onPressHeaderLeft, onPressHeaderRight, rightIconName }: {
3
- rightIconName: "search" | "stop" | "photo" | "recording" | "message" | "done" | "user" | "add" | "chat-hide" | "chat-show" | "archive" | "arrow-left" | "audio-off-filled" | "audio-off" | "audio-on-filled" | "audio-on" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "delete" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "error" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "pause" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thread" | "thumbnail-none" | "unarchive";
3
+ rightIconName: "search" | "stop" | "photo" | "recording" | "delete" | "message" | "done" | "user" | "add" | "chat-hide" | "chat-show" | "archive" | "arrow-left" | "audio-off-filled" | "audio-off" | "audio-on-filled" | "audio-on" | "ban" | "broadcast" | "camera" | "channels" | "chat-filled" | "chat" | "checkbox-off" | "checkbox-on" | "chevron-down" | "chevron-right" | "close" | "copy" | "create" | "document" | "done-all" | "download" | "edit" | "emoji-more" | "error" | "file-audio" | "file-document" | "freeze" | "gif" | "info" | "leave" | "members" | "moderation" | "more" | "mute" | "notifications-filled" | "notifications-off-filled" | "notifications" | "operator" | "pause" | "play" | "plus" | "question" | "radio-off" | "radio-on" | "refresh" | "remove" | "reply-filled" | "reply" | "send" | "settings-filled" | "spinner" | "streaming" | "supergroup" | "theme" | "thread" | "thumbnail-none" | "unarchive";
4
4
  onPressHeaderLeft: () => void;
5
5
  onPressHeaderRight: () => void;
6
6
  }) => React.JSX.Element>;