@sendbird/uikit-react-native 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -17
- package/lib/commonjs/components/FileViewer.js +2 -5
- package/lib/commonjs/components/FileViewer.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +1 -6
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +2 -2
- package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +5 -3
- package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +14 -3
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js +10 -14
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +68 -13
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +1 -0
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +3 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +2 -2
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +4 -14
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/hooks/useKeyboardStatus.js +13 -9
- package/lib/commonjs/hooks/useKeyboardStatus.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/libs/ImageCompressionConfig.js +38 -0
- package/lib/commonjs/libs/ImageCompressionConfig.js.map +1 -0
- package/lib/commonjs/libs/SBUUtils.js +27 -0
- package/lib/commonjs/libs/SBUUtils.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js +3 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/platform/createMediaService.expo.js +35 -1
- package/lib/commonjs/platform/createMediaService.expo.js.map +1 -1
- package/lib/commonjs/platform/createMediaService.native.js +41 -6
- package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
- package/lib/commonjs/platform/dynamicModule.js +9 -57
- package/lib/commonjs/platform/dynamicModule.js.map +1 -1
- package/lib/commonjs/platform/types.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/FileViewer.js +2 -5
- package/lib/module/components/FileViewer.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/index.js +1 -5
- package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +2 -2
- package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +4 -4
- package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +13 -3
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
- package/lib/module/contexts/SendbirdChatCtx.js +12 -14
- package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +69 -14
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +1 -0
- package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +3 -2
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js +2 -2
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +5 -9
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/hooks/useKeyboardStatus.js +12 -9
- package/lib/module/hooks/useKeyboardStatus.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/libs/ImageCompressionConfig.js +30 -0
- package/lib/module/libs/ImageCompressionConfig.js.map +1 -0
- package/lib/module/libs/SBUUtils.js +26 -1
- package/lib/module/libs/SBUUtils.js.map +1 -1
- package/lib/module/localization/StringSet.type.js +3 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/platform/createMediaService.expo.js +33 -1
- package/lib/module/platform/createMediaService.expo.js.map +1 -1
- package/lib/module/platform/createMediaService.native.js +38 -5
- package/lib/module/platform/createMediaService.native.js.map +1 -1
- package/lib/module/platform/dynamicModule.js +10 -56
- package/lib/module/platform/dynamicModule.js.map +1 -1
- package/lib/module/platform/types.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +10 -7
- package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -2
- package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +8 -3
- package/lib/typescript/src/hooks/useContext.d.ts +2 -29
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/libs/ImageCompressionConfig.d.ts +16 -0
- package/lib/typescript/src/libs/SBUUtils.d.ts +6 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
- package/lib/typescript/src/platform/createMediaService.expo.d.ts +5 -1
- package/lib/typescript/src/platform/createMediaService.native.d.ts +7 -5
- package/lib/typescript/src/platform/dynamicModule.d.ts +7 -12
- package/lib/typescript/src/platform/types.d.ts +28 -3
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +15 -5
- package/src/components/FileViewer.tsx +2 -5
- package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +6 -1
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +1 -1
- package/src/components/MessageRenderer/FileMessage/index.tsx +1 -4
- package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +2 -2
- package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +4 -4
- package/src/containers/SendbirdUIKitContainer.tsx +25 -6
- package/src/contexts/PlatformServiceCtx.tsx +9 -2
- package/src/contexts/SendbirdChatCtx.tsx +22 -19
- package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +82 -14
- package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +1 -0
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +3 -2
- package/src/domain/groupChannelSettings/module/moduleContext.tsx +8 -2
- package/src/fragments/createGroupChannelListFragment.tsx +5 -9
- package/src/hooks/useKeyboardStatus.ts +10 -5
- package/src/index.ts +1 -0
- package/src/libs/ImageCompressionConfig.ts +31 -0
- package/src/libs/SBUUtils.ts +28 -1
- package/src/localization/StringSet.type.ts +7 -0
- package/src/platform/createMediaService.expo.tsx +24 -1
- package/src/platform/createMediaService.native.tsx +31 -9
- package/src/platform/dynamicModule.ts +17 -59
- package/src/platform/types.ts +29 -7
- package/src/version.ts +1 -1
- package/lib/commonjs/utils/common.js +0 -19
- package/lib/commonjs/utils/common.js.map +0 -1
- package/lib/module/utils/common.js +0 -7
- package/lib/module/utils/common.js.map +0 -1
- package/lib/typescript/src/utils/common.d.ts +0 -1
- package/src/utils/common.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","CHANNEL_LIST_TYPING_INDICATOR","CHANNEL_LIST_MESSAGE_RECEIPT_STATUS","USE_USER_ID_FOR_NICKNAME","USER_MENTION","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","userProfile","userMention","errorBoundary","defaultStringSet","stringSet","StringSetEn","isFirstMount","useIsFirstMount","unsubscribes","useRef","internalStorage","useMemo","localCacheStorage","InternalLocalCacheStorage","undefined","sdkInstance","setSdkInstance","useState","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","EmojiManager","mentionManager","config","MentionConfig","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","MentionManager","enableUserMention","useLayoutEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","value","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline"],"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 Sendbird 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 type {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\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} 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');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n CHANNEL_LIST_TYPING_INDICATOR: false,\n CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,\n USE_USER_ID_FOR_NICKNAME: false,\n USER_MENTION: false,\n },\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 };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<UIKitFeaturesInSendbirdChatContext>;\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 toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n userProfile,\n userMention,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n const internalStorage = useMemo(\n () => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),\n [chatOptions?.localCacheStorage],\n );\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n const mentionManager = useMemo(() => {\n const config = 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 return new MentionManager(config, chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION);\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n if (!isFirstMount) {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n }\n };\n }, [appId, internalStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n enableAutoPushTokenRegistration={\n chatOptions?.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableChannelListTypingIndicator={\n chatOptions?.enableChannelListTypingIndicator ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR\n }\n enableChannelListMessageReceiptStatus={\n chatOptions?.enableChannelListMessageReceiptStatus ??\n SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS\n }\n enableUseUserIdForNickname={\n chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\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\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <ReactionProvider>\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 <InternalErrorBoundaryContainer {...errorBoundary}>\n {children}\n </InternalErrorBoundaryContainer>\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n if (SendbirdUIKit.VERSION) {\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 const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\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\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","CHANNEL_LIST_TYPING_INDICATOR","CHANNEL_LIST_MESSAGE_RECEIPT_STATUS","USE_USER_ID_FOR_NICKNAME","USER_MENTION","IMAGE_COMPRESSION","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","userMention","imageCompression","defaultStringSet","stringSet","StringSetEn","isFirstMount","useIsFirstMount","unsubscribes","useRef","internalStorage","useMemo","localCacheStorage","InternalLocalCacheStorage","undefined","sdkInstance","setSdkInstance","useState","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","EmojiManager","mentionManager","config","MentionConfig","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","MentionManager","enableUserMention","imageCompressionConfig","ImageCompressionConfig","compressionRate","COMPRESSION_RATE","width","height","useLayoutEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","enableImageCompression","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","value","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline"],"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 Sendbird 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 type {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } 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 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} 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');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n CHANNEL_LIST_TYPING_INDICATOR: false,\n CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,\n USE_USER_ID_FOR_NICKNAME: false,\n USER_MENTION: false,\n IMAGE_COMPRESSION: true,\n },\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 };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<UIKitFeaturesInSendbirdChatContext>;\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 onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n userMention,\n imageCompression,\n}: SendbirdUIKitContainerProps) => {\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n const internalStorage = useMemo(\n () => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),\n [chatOptions?.localCacheStorage],\n );\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n\n const mentionManager = useMemo(() => {\n const config = 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 return new MentionManager(config, chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION);\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n const imageCompressionConfig = useMemo(\n () =>\n 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\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n if (!isFirstMount) {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n }\n };\n }, [appId, internalStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n enableAutoPushTokenRegistration={\n chatOptions?.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableChannelListTypingIndicator={\n chatOptions?.enableChannelListTypingIndicator ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR\n }\n enableChannelListMessageReceiptStatus={\n chatOptions?.enableChannelListMessageReceiptStatus ??\n SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS\n }\n enableUseUserIdForNickname={\n chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}\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 >\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\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <ReactionProvider>\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 <InternalErrorBoundaryContainer {...errorBoundary}>\n {children}\n </InternalErrorBoundaryContainer>\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n if (SendbirdUIKit.VERSION) {\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 const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\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\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService
|
|
1
|
+
{"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n}>;\n\nexport type PlatformServiceContextType = {\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n};\n\nexport const PlatformServiceContext = React.createContext<PlatformServiceContextType | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;;;AAuBO,MAAMA,sBAAsB,gBAAGC,cAAA,CAAMC,aAAN,CAAuD,IAAvD,CAA/B;;;;AACA,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,6BAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
|
|
@@ -7,8 +7,6 @@ exports.SendbirdChatProvider = exports.SendbirdChatContext = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
|
-
var _reactNative = require("react-native");
|
|
11
|
-
|
|
12
10
|
var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
|
|
13
11
|
|
|
14
12
|
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
@@ -27,11 +25,13 @@ const SendbirdChatProvider = _ref => {
|
|
|
27
25
|
sdkInstance,
|
|
28
26
|
emojiManager,
|
|
29
27
|
mentionManager,
|
|
28
|
+
imageCompressionConfig,
|
|
30
29
|
enableAutoPushTokenRegistration,
|
|
31
30
|
enableChannelListMessageReceiptStatus,
|
|
32
31
|
enableChannelListTypingIndicator,
|
|
33
32
|
enableUseUserIdForNickname,
|
|
34
|
-
enableUserMention
|
|
33
|
+
enableUserMention,
|
|
34
|
+
enableImageCompression
|
|
35
35
|
} = _ref;
|
|
36
36
|
const [currentUser, _setCurrentUser] = (0, _react.useState)();
|
|
37
37
|
const forceUpdate = (0, _uikitUtils.useForceUpdate)();
|
|
@@ -70,20 +70,15 @@ const SendbirdChatProvider = _ref => {
|
|
|
70
70
|
const markAsDeliveredWithChannel = (0, _react.useCallback)(channel => {
|
|
71
71
|
if (appFeatures.deliveryReceiptEnabled) (0, _uikitUtils.confirmAndMarkAsDelivered)([channel]);
|
|
72
72
|
}, [sdkInstance, appFeatures.deliveryReceiptEnabled]);
|
|
73
|
-
(0,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const subscriber = _reactNative.AppState.addEventListener('change', listener);
|
|
80
|
-
|
|
81
|
-
return () => subscriber.remove();
|
|
82
|
-
}, [sdkInstance]);
|
|
73
|
+
(0, _uikitUtils.useAppState)('change', status => {
|
|
74
|
+
// 'active' | 'background' | 'inactive' | 'unknown' | 'extension';
|
|
75
|
+
if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();
|
|
76
|
+
});
|
|
83
77
|
const value = {
|
|
84
78
|
sdk: sdkInstance,
|
|
85
79
|
emojiManager,
|
|
86
80
|
mentionManager,
|
|
81
|
+
imageCompressionConfig,
|
|
87
82
|
currentUser,
|
|
88
83
|
setCurrentUser,
|
|
89
84
|
updateCurrentUserInfo,
|
|
@@ -93,7 +88,8 @@ const SendbirdChatProvider = _ref => {
|
|
|
93
88
|
channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,
|
|
94
89
|
channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,
|
|
95
90
|
useUserIdForNicknameEnabled: enableUseUserIdForNickname,
|
|
96
|
-
userMentionEnabled: enableUserMention
|
|
91
|
+
userMentionEnabled: enableUserMention,
|
|
92
|
+
imageCompressionEnabled: enableImageCompression
|
|
97
93
|
}
|
|
98
94
|
};
|
|
99
95
|
return /*#__PURE__*/_react.default.createElement(SendbirdChatContext.Provider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","emojiManager","mentionManager","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","enableUserMention","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","
|
|
1
|
+
{"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","emojiManager","mentionManager","imageCompressionConfig","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","enableUserMention","enableImageCompression","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","useAppState","status","connectionState","setForegroundState","setBackgroundState","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled","useUserIdForNicknameEnabled","userMentionEnabled","imageCompressionEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\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 { FileType } from '../platform/types';\n\nexport interface UIKitFeaturesInSendbirdChatContext {\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n enableUseUserIdForNickname: boolean;\n enableUserMention: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n}\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n userMentionEnabled: boolean;\n imageCompressionEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n enableUseUserIdForNickname,\n enableUserMention,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\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 const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n userMentionEnabled: enableUserMention,\n imageCompressionEnabled: enableImageCompression,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
|
|
@@ -40,13 +40,16 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput(_ref, r
|
|
|
40
40
|
mentionedUsers
|
|
41
41
|
} = _ref;
|
|
42
42
|
const {
|
|
43
|
-
mentionManager
|
|
43
|
+
mentionManager,
|
|
44
|
+
imageCompressionConfig,
|
|
45
|
+
features
|
|
44
46
|
} = (0, _useContext.useSendbirdChat)();
|
|
45
47
|
const {
|
|
46
48
|
STRINGS
|
|
47
49
|
} = (0, _useContext.useLocalization)();
|
|
48
50
|
const {
|
|
49
|
-
fileService
|
|
51
|
+
fileService,
|
|
52
|
+
mediaService
|
|
50
53
|
} = (0, _useContext.usePlatformService)();
|
|
51
54
|
const {
|
|
52
55
|
colors
|
|
@@ -75,13 +78,13 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput(_ref, r
|
|
|
75
78
|
title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,
|
|
76
79
|
icon: 'camera',
|
|
77
80
|
onPress: async () => {
|
|
78
|
-
const
|
|
81
|
+
const mediaFile = await fileService.openCamera({
|
|
79
82
|
mediaType: 'all',
|
|
80
83
|
onOpenFailure: error => {
|
|
81
84
|
if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
|
|
82
85
|
alert({
|
|
83
86
|
title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
|
|
84
|
-
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
|
|
87
|
+
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_CAMERA, STRINGS.LABELS.PERMISSION_APP_NAME),
|
|
85
88
|
buttons: [{
|
|
86
89
|
text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
|
|
87
90
|
onPress: () => _SBUUtils.default.openSettings()
|
|
@@ -93,22 +96,39 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput(_ref, r
|
|
|
93
96
|
}
|
|
94
97
|
});
|
|
95
98
|
|
|
96
|
-
if (
|
|
97
|
-
|
|
99
|
+
if (mediaFile) {
|
|
100
|
+
// Image compression
|
|
101
|
+
if ((0, _uikitUtils.isImage)(mediaFile.uri, mediaFile.type) && (0, _uikitUtils.shouldCompressImage)(mediaFile.uri, features.imageCompressionEnabled)) {
|
|
102
|
+
await _SBUUtils.default.safeRun(async () => {
|
|
103
|
+
const compressed = await mediaService.compressImage({
|
|
104
|
+
uri: mediaFile.uri,
|
|
105
|
+
maxWidth: imageCompressionConfig.width,
|
|
106
|
+
maxHeight: imageCompressionConfig.height,
|
|
107
|
+
compressionRate: imageCompressionConfig.compressionRate
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (compressed) {
|
|
111
|
+
mediaFile.uri = compressed.uri;
|
|
112
|
+
mediaFile.size = compressed.size;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
onSendFileMessage(mediaFile).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));
|
|
98
118
|
}
|
|
99
119
|
}
|
|
100
120
|
}, {
|
|
101
121
|
title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,
|
|
102
122
|
icon: 'photo',
|
|
103
123
|
onPress: async () => {
|
|
104
|
-
const
|
|
124
|
+
const mediaFiles = await fileService.openMediaLibrary({
|
|
105
125
|
selectionLimit: 1,
|
|
106
126
|
mediaType: 'all',
|
|
107
127
|
onOpenFailure: error => {
|
|
108
128
|
if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
|
|
109
129
|
alert({
|
|
110
130
|
title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
|
|
111
|
-
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
|
|
131
|
+
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_DEVICE_STORAGE, STRINGS.LABELS.PERMISSION_APP_NAME),
|
|
112
132
|
buttons: [{
|
|
113
133
|
text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
|
|
114
134
|
onPress: () => _SBUUtils.default.openSettings()
|
|
@@ -120,20 +140,55 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput(_ref, r
|
|
|
120
140
|
}
|
|
121
141
|
});
|
|
122
142
|
|
|
123
|
-
if (
|
|
124
|
-
|
|
143
|
+
if (mediaFiles && mediaFiles[0]) {
|
|
144
|
+
const mediaFile = mediaFiles[0]; // Image compression
|
|
145
|
+
|
|
146
|
+
if ((0, _uikitUtils.isImage)(mediaFile.uri, mediaFile.type) && (0, _uikitUtils.shouldCompressImage)(mediaFile.uri, features.imageCompressionEnabled)) {
|
|
147
|
+
await _SBUUtils.default.safeRun(async () => {
|
|
148
|
+
const compressed = await mediaService.compressImage({
|
|
149
|
+
uri: mediaFile.uri,
|
|
150
|
+
maxWidth: imageCompressionConfig.width,
|
|
151
|
+
maxHeight: imageCompressionConfig.height,
|
|
152
|
+
compressionRate: imageCompressionConfig.compressionRate
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
if (compressed) {
|
|
156
|
+
mediaFile.uri = compressed.uri;
|
|
157
|
+
mediaFile.size = compressed.size;
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
onSendFileMessage(mediaFiles[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));
|
|
125
163
|
}
|
|
126
164
|
}
|
|
127
165
|
}, {
|
|
128
166
|
title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,
|
|
129
167
|
icon: 'document',
|
|
130
168
|
onPress: async () => {
|
|
131
|
-
const
|
|
169
|
+
const documentFile = await fileService.openDocument({
|
|
132
170
|
onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error')
|
|
133
171
|
});
|
|
134
172
|
|
|
135
|
-
if (
|
|
136
|
-
|
|
173
|
+
if (documentFile) {
|
|
174
|
+
// Image compression
|
|
175
|
+
if ((0, _uikitUtils.isImage)(documentFile.uri, documentFile.type) && (0, _uikitUtils.shouldCompressImage)(documentFile.uri, features.imageCompressionEnabled)) {
|
|
176
|
+
await _SBUUtils.default.safeRun(async () => {
|
|
177
|
+
const compressed = await mediaService.compressImage({
|
|
178
|
+
uri: documentFile.uri,
|
|
179
|
+
maxWidth: imageCompressionConfig.width,
|
|
180
|
+
maxHeight: imageCompressionConfig.height,
|
|
181
|
+
compressionRate: imageCompressionConfig.compressionRate
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
if (compressed) {
|
|
185
|
+
documentFile.uri = compressed.uri;
|
|
186
|
+
documentFile.size = compressed.size;
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
onSendFileMessage(documentFile).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));
|
|
137
192
|
}
|
|
138
193
|
}
|
|
139
194
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SendInput","forwardRef","ref","onSendUserMessage","onSendFileMessage","text","onChangeText","disabled","frozen","muted","onSelectionChange","mentionedUsers","mentionManager","useSendbirdChat","STRINGS","useLocalization","fileService","usePlatformService","colors","useUIKitTheme","openSheet","useBottomSheet","alert","useAlert","toast","useToast","onPressSend","mention","userIds","map","it","user","userId","messageTemplate","textToMentionedMessageTemplate","type","MentionType","USERS","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","conditionChaining","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_MUTED","INPUT_PLACEHOLDER_ACTIVE","textToMentionedComponents","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n Platform,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../../hooks/useContext';\nimport SBUError from '../../../../libs/SBUError';\nimport SBUUtils from '../../../../libs/SBUUtils';\nimport type { MentionedUser } from '../../../../types';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n onChangeText: (val: string) => void;\n frozen: boolean;\n muted: boolean;\n disabled: boolean;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n mentionedUsers: MentionedUser[];\n};\nconst SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(\n {\n onSendUserMessage,\n onSendFileMessage,\n text,\n onChangeText,\n disabled,\n frozen,\n muted,\n onSelectionChange,\n mentionedUsers,\n },\n ref,\n) {\n const { mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const toast = useToast();\n\n const onPressSend = () => {\n const mention = {\n userIds: mentionedUsers.map((it) => it.user.userId),\n messageTemplate: mentionManager.textToMentionedMessageTemplate(text, mentionedUsers),\n type: MentionType.USERS,\n };\n\n onSendUserMessage(text, mention).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n onChangeText('');\n };\n\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!disabled}\n onChangeText={onChangeText}\n style={styles.input}\n placeholder={conditionChaining(\n [frozen, muted],\n [\n STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED,\n STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_MUTED,\n STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE,\n ],\n )}\n >\n {mentionManager.textToMentionedComponents(text, mentionedUsers)}\n </TextInput>\n\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":";;;;;;;AAAA;;AACA;;AASA;;AACA;;AASA;;AAEA;;AACA;;AACA;;;;;;;;AAaA,MAAMA,SAAS,gBAAG,IAAAC,iBAAA,EAAwC,SAASD,SAAT,OAYxDE,GAZwD,EAaxD;EAAA,IAZA;IACEC,iBADF;IAEEC,iBAFF;IAGEC,IAHF;IAIEC,YAJF;IAKEC,QALF;IAMEC,MANF;IAOEC,KAPF;IAQEC,iBARF;IASEC;EATF,CAYA;EACA,MAAM;IAAEC;EAAF,IAAqB,IAAAC,2BAAA,GAA3B;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAkB,IAAAC,8BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EACA,MAAM;IAAEC;EAAF,IAAgB,IAAAC,0CAAA,GAAtB;EACA,MAAM;IAAEC;EAAF,IAAY,IAAAC,oCAAA,GAAlB;EACA,MAAMC,KAAK,GAAG,IAAAC,oCAAA,GAAd;;EAEA,MAAMC,WAAW,GAAG,MAAM;IACxB,MAAMC,OAAO,GAAG;MACdC,OAAO,EAAEjB,cAAc,CAACkB,GAAf,CAAoBC,EAAD,IAAQA,EAAE,CAACC,IAAH,CAAQC,MAAnC,CADK;MAEdC,eAAe,EAAErB,cAAc,CAACsB,8BAAf,CAA8C7B,IAA9C,EAAoDM,cAApD,CAFH;MAGdwB,IAAI,EAAEC,oBAAA,CAAYC;IAHJ,CAAhB;IAMAlC,iBAAiB,CAACE,IAAD,EAAOsB,OAAP,CAAjB,CAAiCW,KAAjC,CAAuC,MAAMd,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAcC,cAAzB,EAAyC,OAAzC,CAA7C;IACAnC,YAAY,CAAC,EAAD,CAAZ;EACD,CATD;;EAWA,MAAMoC,iBAAiB,GAAG,MAAM;IAC9BtB,SAAS,CAAC;MACRuB,UAAU,EAAE,CACV;QACEC,KAAK,EAAE9B,OAAO,CAAC+B,aAAR,CAAsBC,wBAD/B;QAEEC,IAAI,EAAE,QAFR;QAGEC,OAAO,EAAE,YAAY;UACnB,MAAMC,KAAK,GAAG,MAAMjC,WAAW,CAACkC,UAAZ,CAAuB;YACzCC,SAAS,EAAE,KAD8B;YAEzCC,aAAa,EAAGC,KAAD,IAAW;cACxB,IAAIA,KAAK,CAACC,IAAN,KAAeC,iBAAA,CAASC,IAAT,CAAcC,sBAAjC,EAAyD;gBACvDnC,KAAK,CAAC;kBACJsB,KAAK,EAAE9B,OAAO,CAAC4C,MAAR,CAAeC,uBADlB;kBAEJC,OAAO,EAAE9C,OAAO,CAAC4C,MAAR,CAAeG,yBAAf,CAAyC,QAAzC,EAAmD,aAAnD,CAFL;kBAGJC,OAAO,EAAE,CAAC;oBAAEzD,IAAI,EAAES,OAAO,CAAC4C,MAAR,CAAeK,oBAAvB;oBAA6Cf,OAAO,EAAE,MAAMgB,iBAAA,CAASC,YAAT;kBAA5D,CAAD;gBAHL,CAAD,CAAL;cAKD,CAND,MAMO;gBACLzC,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAc0B,iBAAzB,EAA4C,OAA5C;cACD;YACF;UAZwC,CAAvB,CAApB;;UAeA,IAAIjB,KAAJ,EAAW;YACT7C,iBAAiB,CAAC6C,KAAD,CAAjB,CAAyBX,KAAzB,CAA+B,MAAMd,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAcC,cAAzB,EAAyC,OAAzC,CAArC;UACD;QACF;MAtBH,CADU,EAyBV;QACEG,KAAK,EAAE9B,OAAO,CAAC+B,aAAR,CAAsBsB,+BAD/B;QAEEpB,IAAI,EAAE,OAFR;QAGEC,OAAO,EAAE,YAAY;UACnB,MAAMC,KAAK,GAAG,MAAMjC,WAAW,CAACoD,gBAAZ,CAA6B;YAC/CC,cAAc,EAAE,CAD+B;YAE/ClB,SAAS,EAAE,KAFoC;YAG/CC,aAAa,EAAGC,KAAD,IAAW;cACxB,IAAIA,KAAK,CAACC,IAAN,KAAeC,iBAAA,CAASC,IAAT,CAAcC,sBAAjC,EAAyD;gBACvDnC,KAAK,CAAC;kBACJsB,KAAK,EAAE9B,OAAO,CAAC4C,MAAR,CAAeC,uBADlB;kBAEJC,OAAO,EAAE9C,OAAO,CAAC4C,MAAR,CAAeG,yBAAf,CAAyC,gBAAzC,EAA2D,aAA3D,CAFL;kBAGJC,OAAO,EAAE,CAAC;oBAAEzD,IAAI,EAAES,OAAO,CAAC4C,MAAR,CAAeK,oBAAvB;oBAA6Cf,OAAO,EAAE,MAAMgB,iBAAA,CAASC,YAAT;kBAA5D,CAAD;gBAHL,CAAD,CAAL;cAKD,CAND,MAMO;gBACLzC,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAc8B,wBAAzB,EAAmD,OAAnD;cACD;YACF;UAb8C,CAA7B,CAApB;;UAgBA,IAAIrB,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;YACrB7C,iBAAiB,CAAC6C,KAAK,CAAC,CAAD,CAAN,CAAjB,CAA4BX,KAA5B,CAAkC,MAAMd,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAcC,cAAzB,EAAyC,OAAzC,CAAxC;UACD;QACF;MAvBH,CAzBU,EAkDV;QACEG,KAAK,EAAE9B,OAAO,CAAC+B,aAAR,CAAsB0B,uBAD/B;QAEExB,IAAI,EAAE,UAFR;QAGEC,OAAO,EAAE,YAAY;UACnB,MAAMwB,IAAI,GAAG,MAAMxD,WAAW,CAACyD,YAAZ,CAAyB;YAC1CrB,aAAa,EAAE,MAAM5B,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAckC,gBAAzB,EAA2C,OAA3C;UADqB,CAAzB,CAAnB;;UAIA,IAAIF,IAAJ,EAAU;YACRpE,iBAAiB,CAACoE,IAAD,CAAjB,CAAwBlC,KAAxB,CAA8B,MAAMd,KAAK,CAACe,IAAN,CAAWzB,OAAO,CAAC0B,KAAR,CAAcC,cAAzB,EAAyC,OAAzC,CAApC;UACD;QACF;MAXH,CAlDU;IADJ,CAAD,CAAT;EAkED,CAnED;;EAqEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEkC,MAAM,CAACC;EAApB,gBACE,6BAAC,6BAAD;IAAkB,OAAO,EAAElC,iBAA3B;IAA8C,QAAQ,EAAEnC;EAAxD,gBACE,6BAAC,gCAAD;IACE,KAAK,EAAEA,QAAQ,GAAGW,MAAM,CAAC2D,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBxE,QAAxB,CAAiCyE,SAApC,GAAgD9D,MAAM,CAAC2D,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBE,MAAxB,CAA+BD,SADhG;IAEE,IAAI,EAAE,KAFR;IAGE,IAAI,EAAE,EAHR;IAIE,cAAc,EAAEL,MAAM,CAACO;EAJzB,EADF,CADF,eASE,6BAAC,qCAAD;IACE,GAAG,EAAEhF,GADP;IAEE,SAAS,MAFX;IAGE,mBAAmB,MAHrB;IAIE,iBAAiB,EAAEQ,iBAJrB;IAKE,QAAQ,EAAE,CAACH,QALb;IAME,YAAY,EAAED,YANhB;IAOE,KAAK,EAAEqE,MAAM,CAACG,KAPhB;IAQE,WAAW,EAAE,IAAAK,6BAAA,EACX,CAAC3E,MAAD,EAASC,KAAT,CADW,EAEX,CACEK,OAAO,CAAC+B,aAAR,CAAsBuC,0BADxB,EAEEtE,OAAO,CAAC+B,aAAR,CAAsBwC,uBAFxB,EAGEvE,OAAO,CAAC+B,aAAR,CAAsByC,wBAHxB,CAFW;EARf,GAiBG1E,cAAc,CAAC2E,yBAAf,CAAyClF,IAAzC,EAA+CM,cAA/C,CAjBH,CATF,EA6BG6E,OAAO,CAACnF,IAAI,CAACoF,IAAL,EAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAE/D,WAA3B;IAAwC,QAAQ,EAAEnB;EAAlD,gBACE,6BAAC,gCAAD;IACE,KAAK,EAAEA,QAAQ,GAAGW,MAAM,CAAC2D,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBxE,QAAxB,CAAiCyE,SAApC,GAAgD9D,MAAM,CAAC2D,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBE,MAAxB,CAA+BD,SADhG;IAEE,IAAI,EAAE,MAFR;IAGE,IAAI,EAAE,EAHR;IAIE,cAAc,EAAEL,MAAM,CAACe;EAJzB,EADF,CA9BJ,CADF;AA0CD,CAhJiB,CAAlB;AAkJA,MAAMf,MAAM,GAAG,IAAAgB,4CAAA,EAAiB;EAC9Bf,kBAAkB,EAAE;IAClBgB,eAAe,EAAE,EADC;IAElBC,iBAAiB,EAAE,EAFD;IAGlBC,UAAU,EAAE,QAHM;IAIlBC,aAAa,EAAE;EAJG,CADU;EAO9BjB,KAAK,EAAE;IACLkB,IAAI,EAAE,CADD;IAELC,WAAW,EAAE,CAFR;IAGLC,SAAS,EAAE,EAHN;IAILC,SAAS,EAAE,KAAKC,qBAAA,CAASC,MAAT,CAAgB;MAAEC,GAAG,EAAE,GAAP;MAAYvB,OAAO,EAAE;IAArB,CAAhB,CAJX;IAKLwB,YAAY,EAAE;EALT,CAPuB;EAc9BrB,UAAU,EAAE;IACVe,WAAW,EAAE,CADH;IAEVO,OAAO,EAAE;EAFC,CAdkB;EAkB9Bd,QAAQ,EAAE;IACRe,UAAU,EAAE,CADJ;IAERD,OAAO,EAAE;EAFD;AAlBoB,CAAjB,CAAf;eAwBexG,S"}
|
|
1
|
+
{"version":3,"names":["SendInput","forwardRef","ref","onSendUserMessage","onSendFileMessage","text","onChangeText","disabled","frozen","muted","onSelectionChange","mentionedUsers","mentionManager","imageCompressionConfig","features","useSendbirdChat","STRINGS","useLocalization","fileService","mediaService","usePlatformService","colors","useUIKitTheme","openSheet","useBottomSheet","alert","useAlert","toast","useToast","onPressSend","mention","userIds","map","it","user","userId","messageTemplate","textToMentionedMessageTemplate","type","MentionType","USERS","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","mediaFile","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","LABELS","PERMISSION_CAMERA","PERMISSION_APP_NAME","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","OPEN_CAMERA_ERROR","isImage","uri","shouldCompressImage","imageCompressionEnabled","safeRun","compressed","compressImage","maxWidth","width","maxHeight","height","compressionRate","size","DIALOG_ATTACHMENT_PHOTO_LIBRARY","mediaFiles","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","documentFile","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","conditionChaining","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_MUTED","INPUT_PLACEHOLDER_ACTIVE","textToMentionedComponents","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","Platform","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n Platform,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining, isImage, shouldCompressImage } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../../hooks/useContext';\nimport SBUError from '../../../../libs/SBUError';\nimport SBUUtils from '../../../../libs/SBUUtils';\nimport type { MentionedUser } from '../../../../types';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n onChangeText: (val: string) => void;\n frozen: boolean;\n muted: boolean;\n disabled: boolean;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n mentionedUsers: MentionedUser[];\n};\nconst SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(\n {\n onSendUserMessage,\n onSendFileMessage,\n text,\n onChangeText,\n disabled,\n frozen,\n muted,\n onSelectionChange,\n mentionedUsers,\n },\n ref,\n) {\n const { mentionManager, imageCompressionConfig, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { fileService, mediaService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const toast = useToast();\n\n const onPressSend = () => {\n const mention = {\n userIds: mentionedUsers.map((it) => it.user.userId),\n messageTemplate: mentionManager.textToMentionedMessageTemplate(text, mentionedUsers),\n type: MentionType.USERS,\n };\n\n onSendUserMessage(text, mention).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n onChangeText('');\n };\n\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) {\n // Image compression\n if (\n isImage(mediaFile.uri, mediaFile.type) &&\n shouldCompressImage(mediaFile.uri, features.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: mediaFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n mediaFile.uri = compressed.uri;\n mediaFile.size = compressed.size;\n }\n });\n }\n\n onSendFileMessage(mediaFile).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const mediaFiles = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (mediaFiles && mediaFiles[0]) {\n const mediaFile = mediaFiles[0];\n\n // Image compression\n if (\n isImage(mediaFile.uri, mediaFile.type) &&\n shouldCompressImage(mediaFile.uri, features.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: mediaFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n mediaFile.uri = compressed.uri;\n mediaFile.size = compressed.size;\n }\n });\n }\n\n onSendFileMessage(mediaFiles[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const documentFile = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (documentFile) {\n // Image compression\n if (\n isImage(documentFile.uri, documentFile.type) &&\n shouldCompressImage(documentFile.uri, features.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: documentFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n documentFile.uri = compressed.uri;\n documentFile.size = compressed.size;\n }\n });\n }\n\n onSendFileMessage(documentFile).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!disabled}\n onChangeText={onChangeText}\n style={styles.input}\n placeholder={conditionChaining(\n [frozen, muted],\n [\n STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED,\n STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_MUTED,\n STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE,\n ],\n )}\n >\n {mentionManager.textToMentionedComponents(text, mentionedUsers)}\n </TextInput>\n\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
|
|
@@ -44,6 +44,7 @@ const KEYBOARD_AVOID_VIEW_BEHAVIOR = _reactNative.Platform.select({
|
|
|
44
44
|
default: undefined
|
|
45
45
|
}); // FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)
|
|
46
46
|
// To workaround temporarily, change the key for re-mount the component.
|
|
47
|
+
// -> This will affect to keyboard blur when add/remove first mentioned user.
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
const GET_INPUT_KEY = shouldReset => shouldReset ? 'uikit-input-clear' : 'uikit-input'; // TODO: Refactor 'Edit' mode to clearly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AUTO_FOCUS","Platform","select","ios","android","default","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","GET_INPUT_KEY","shouldReset","GroupChannelInput","props","top","left","right","bottom","useSafeAreaInsets","colors","useUIKitTheme","features","mentionManager","useSendbirdChat","channel","messageToEdit","setMessageToEdit","keyboardAvoidOffset","useContext","GroupChannelContexts","Fragment","chatAvailableState","getGroupChannelChatAvailableState","mentionAvailable","userMentionEnabled","isGroupChannel","isBroadcast","inputMode","useIIFE","isFileMessage","inputHeight","setInputHeight","useState","styles","inputDefault","height","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","useTypingTrigger","useTextPersistenceOnDisabled","disabled","useAutoFocusOnEditMode","onPressToMention","user","searchStringRange","mentionedMessageText","asMentionedMessageText","range","start","end","length","replace","shouldRenderInput","paddingLeft","paddingRight","backgroundColor","background","e","nativeEvent","layout","inputContainer","useEffect","endTyping","startTyping","setText","chatDisabled","textTmpRef","useRef","current","isUserMessage","setTimeout","focus","SafeAreaBottom","createStyleSheet","justifyContent","width","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { MutableRefObject, useContext, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, TextInput, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n replace,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../../../hooks/useContext';\nimport useMentionTextInput from '../../../../hooks/useMentionTextInput';\nimport { GroupChannelContexts } from '../../module/moduleContext';\nimport type { GroupChannelProps } from '../../types';\nimport EditInput from './EditInput';\nimport SendInput from './SendInput';\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({ ios: 'padding' as const, default: undefined });\n\n// FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)\n// To workaround temporarily, change the key for re-mount the component.\nconst GET_INPUT_KEY = (shouldReset: boolean) => (shouldReset ? 'uikit-input-clear' : 'uikit-input');\n\n// TODO: Refactor 'Edit' mode to clearly\nconst GroupChannelInput = (props: GroupChannelProps['Input']) => {\n const { top, left, right, bottom } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n const { features, mentionManager } = useSendbirdChat();\n const {\n channel,\n messageToEdit,\n setMessageToEdit,\n keyboardAvoidOffset = 0,\n } = useContext(GroupChannelContexts.Fragment);\n\n const chatAvailableState = getGroupChannelChatAvailableState(channel);\n const mentionAvailable = features.userMentionEnabled && channel.isGroupChannel() && !channel.isBroadcast;\n const inputMode = useIIFE(() => {\n if (!messageToEdit) return 'send';\n if (messageToEdit.isFileMessage()) return 'send';\n return 'edit';\n });\n\n const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit: messageToEdit,\n });\n\n useTypingTrigger(text, channel);\n useTextPersistenceOnDisabled(text, onChangeText, chatAvailableState.disabled);\n useAutoFocusOnEditMode(textInputRef, messageToEdit);\n\n const onPressToMention: GroupChannelProps['SuggestedMentionList']['onPressToMention'] = (user, searchStringRange) => {\n const mentionedMessageText = mentionManager.asMentionedMessageText(user, true);\n const range = { start: searchStringRange.start, end: searchStringRange.start + mentionedMessageText.length - 1 };\n\n onChangeText(replace(text, searchStringRange.start, searchStringRange.end, mentionedMessageText), { user, range });\n };\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={bottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView\n keyboardVerticalOffset={-bottom + keyboardAvoidOffset}\n behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}\n >\n <View style={{ paddingLeft: left, paddingRight: right, backgroundColor: colors.background }}>\n <View onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)} style={styles.inputContainer}>\n {inputMode === 'send' && (\n <SendInput\n {...props}\n {...chatAvailableState}\n key={GET_INPUT_KEY(mentionedUsers.length === 0)}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n />\n )}\n {inputMode === 'edit' && messageToEdit && (\n <EditInput\n {...props}\n key={GET_INPUT_KEY(mentionedUsers.length === 0)}\n ref={textInputRef as never}\n autoFocus={AUTO_FOCUS}\n text={text}\n onChangeText={onChangeText}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n disabled={chatAvailableState.disabled}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n />\n )}\n </View>\n <SafeAreaBottom height={bottom} />\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={top}\n bottomInset={bottom}\n onPressToMention={onPressToMention}\n mentionedUsers={mentionedUsers}\n />\n )}\n </>\n );\n};\n\nconst useTypingTrigger = (text: string, channel: SendbirdGroupChannel) => {\n useEffect(() => {\n if (text.length === 0) channel.endTyping();\n else channel.startTyping();\n }, [text]);\n};\n\nconst useTextPersistenceOnDisabled = (text: string, setText: (val: string) => void, chatDisabled: boolean) => {\n const textTmpRef = useRef('');\n\n useEffect(() => {\n if (chatDisabled) {\n textTmpRef.current = text;\n setText('');\n } else {\n setText(textTmpRef.current);\n }\n }, [chatDisabled]);\n};\n\nconst useAutoFocusOnEditMode = (\n textInputRef: MutableRefObject<TextInput | undefined>,\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage,\n) => {\n useEffect(() => {\n if (messageToEdit?.isUserMessage()) {\n if (!AUTO_FOCUS) setTimeout(() => textInputRef.current?.focus(), 500);\n }\n }, [messageToEdit]);\n};\n\nconst SafeAreaBottom = ({ height }: { height: number }) => {\n return <View style={{ height }} />;\n};\n\nconst styles = createStyleSheet({\n inputContainer: {\n justifyContent: 'center',\n width: '100%',\n },\n inputDefault: {\n height: 56,\n },\n});\n\nexport default React.memo(GroupChannelInput);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AUTO_FOCUS","Platform","select","ios","android","default","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","GET_INPUT_KEY","shouldReset","GroupChannelInput","props","top","left","right","bottom","useSafeAreaInsets","colors","useUIKitTheme","features","mentionManager","useSendbirdChat","channel","messageToEdit","setMessageToEdit","keyboardAvoidOffset","useContext","GroupChannelContexts","Fragment","chatAvailableState","getGroupChannelChatAvailableState","mentionAvailable","userMentionEnabled","isGroupChannel","isBroadcast","inputMode","useIIFE","isFileMessage","inputHeight","setInputHeight","useState","styles","inputDefault","height","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","useTypingTrigger","useTextPersistenceOnDisabled","disabled","useAutoFocusOnEditMode","onPressToMention","user","searchStringRange","mentionedMessageText","asMentionedMessageText","range","start","end","length","replace","shouldRenderInput","paddingLeft","paddingRight","backgroundColor","background","e","nativeEvent","layout","inputContainer","useEffect","endTyping","startTyping","setText","chatDisabled","textTmpRef","useRef","current","isUserMessage","setTimeout","focus","SafeAreaBottom","createStyleSheet","justifyContent","width","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { MutableRefObject, useContext, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, TextInput, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n getGroupChannelChatAvailableState,\n replace,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../../../hooks/useContext';\nimport useMentionTextInput from '../../../../hooks/useMentionTextInput';\nimport { GroupChannelContexts } from '../../module/moduleContext';\nimport type { GroupChannelProps } from '../../types';\nimport EditInput from './EditInput';\nimport SendInput from './SendInput';\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({ ios: 'padding' as const, default: undefined });\n\n// FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)\n// To workaround temporarily, change the key for re-mount the component.\n// -> This will affect to keyboard blur when add/remove first mentioned user.\nconst GET_INPUT_KEY = (shouldReset: boolean) => (shouldReset ? 'uikit-input-clear' : 'uikit-input');\n\n// TODO: Refactor 'Edit' mode to clearly\nconst GroupChannelInput = (props: GroupChannelProps['Input']) => {\n const { top, left, right, bottom } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n const { features, mentionManager } = useSendbirdChat();\n const {\n channel,\n messageToEdit,\n setMessageToEdit,\n keyboardAvoidOffset = 0,\n } = useContext(GroupChannelContexts.Fragment);\n\n const chatAvailableState = getGroupChannelChatAvailableState(channel);\n const mentionAvailable = features.userMentionEnabled && channel.isGroupChannel() && !channel.isBroadcast;\n const inputMode = useIIFE(() => {\n if (!messageToEdit) return 'send';\n if (messageToEdit.isFileMessage()) return 'send';\n return 'edit';\n });\n\n const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit: messageToEdit,\n });\n\n useTypingTrigger(text, channel);\n useTextPersistenceOnDisabled(text, onChangeText, chatAvailableState.disabled);\n useAutoFocusOnEditMode(textInputRef, messageToEdit);\n\n const onPressToMention: GroupChannelProps['SuggestedMentionList']['onPressToMention'] = (user, searchStringRange) => {\n const mentionedMessageText = mentionManager.asMentionedMessageText(user, true);\n const range = { start: searchStringRange.start, end: searchStringRange.start + mentionedMessageText.length - 1 };\n\n onChangeText(replace(text, searchStringRange.start, searchStringRange.end, mentionedMessageText), { user, range });\n };\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={bottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView\n keyboardVerticalOffset={-bottom + keyboardAvoidOffset}\n behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}\n >\n <View style={{ paddingLeft: left, paddingRight: right, backgroundColor: colors.background }}>\n <View onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)} style={styles.inputContainer}>\n {inputMode === 'send' && (\n <SendInput\n {...props}\n {...chatAvailableState}\n key={GET_INPUT_KEY(mentionedUsers.length === 0)}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n />\n )}\n {inputMode === 'edit' && messageToEdit && (\n <EditInput\n {...props}\n key={GET_INPUT_KEY(mentionedUsers.length === 0)}\n ref={textInputRef as never}\n autoFocus={AUTO_FOCUS}\n text={text}\n onChangeText={onChangeText}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n disabled={chatAvailableState.disabled}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n />\n )}\n </View>\n <SafeAreaBottom height={bottom} />\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={top}\n bottomInset={bottom}\n onPressToMention={onPressToMention}\n mentionedUsers={mentionedUsers}\n />\n )}\n </>\n );\n};\n\nconst useTypingTrigger = (text: string, channel: SendbirdGroupChannel) => {\n useEffect(() => {\n if (text.length === 0) channel.endTyping();\n else channel.startTyping();\n }, [text]);\n};\n\nconst useTextPersistenceOnDisabled = (text: string, setText: (val: string) => void, chatDisabled: boolean) => {\n const textTmpRef = useRef('');\n\n useEffect(() => {\n if (chatDisabled) {\n textTmpRef.current = text;\n setText('');\n } else {\n setText(textTmpRef.current);\n }\n }, [chatDisabled]);\n};\n\nconst useAutoFocusOnEditMode = (\n textInputRef: MutableRefObject<TextInput | undefined>,\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage,\n) => {\n useEffect(() => {\n if (messageToEdit?.isUserMessage()) {\n if (!AUTO_FOCUS) setTimeout(() => textInputRef.current?.focus(), 500);\n }\n }, [messageToEdit]);\n};\n\nconst SafeAreaBottom = ({ height }: { height: number }) => {\n return <View style={{ height }} />;\n};\n\nconst styles = createStyleSheet({\n inputContainer: {\n justifyContent: 'center',\n width: '100%',\n },\n inputDefault: {\n height: 56,\n },\n});\n\nexport default React.memo(GroupChannelInput);\n"],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ var _constants = require("../../../constants");
|
|
|
23
23
|
|
|
24
24
|
var _useContext = require("../../../hooks/useContext");
|
|
25
25
|
|
|
26
|
+
var _SBUUtils = _interopRequireDefault(require("../../../libs/SBUUtils"));
|
|
27
|
+
|
|
26
28
|
var _moduleContext = require("../module/moduleContext");
|
|
27
29
|
|
|
28
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -312,7 +314,7 @@ const useGetMessagePressActions = _ref3 => {
|
|
|
312
314
|
|
|
313
315
|
default:
|
|
314
316
|
{
|
|
315
|
-
response.onPress = () =>
|
|
317
|
+
response.onPress = () => _SBUUtils.default.openURL(msg.url);
|
|
316
318
|
|
|
317
319
|
break;
|
|
318
320
|
}
|