@sendbird/uikit-react-native 3.7.3 → 3.7.5

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 (143) hide show
  1. package/README.md +5 -4
  2. package/lib/commonjs/components/ChannelInput/SendInput.js +2 -1
  3. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +33 -23
  5. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -1
  6. package/lib/commonjs/components/ChannelInput/index.js +11 -5
  7. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  8. package/lib/commonjs/components/ChannelMessageList/index.js +6 -1
  9. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  10. package/lib/commonjs/components/ChannelThreadMessageList/index.js +6 -1
  11. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -1
  12. package/lib/commonjs/components/FileViewer/FileViewerContent.js +1 -1
  13. package/lib/commonjs/components/FileViewer/FileViewerContent.js.map +1 -1
  14. package/lib/commonjs/components/FileViewer/FileViewerFooter.js +1 -0
  15. package/lib/commonjs/components/FileViewer/FileViewerFooter.js.map +1 -1
  16. package/lib/commonjs/components/FileViewer/FileViewerHeader.js +1 -0
  17. package/lib/commonjs/components/FileViewer/FileViewerHeader.js.map +1 -1
  18. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +1 -1
  19. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  20. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +9 -3
  21. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  22. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +9 -3
  23. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +1 -1
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -1
  26. package/lib/commonjs/containers/SendbirdUIKitContainer.js +0 -1
  27. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  28. package/lib/commonjs/contexts/PlatformServiceCtx.js +2 -1
  29. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  30. package/lib/commonjs/contexts/SBUHandlersCtx.js.map +1 -1
  31. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +17 -3
  32. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  33. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
  34. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  35. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +16 -2
  36. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
  38. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
  39. package/lib/commonjs/fragments/createGroupChannelFragment.js +3 -2
  40. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  41. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +3 -2
  42. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -1
  43. package/lib/commonjs/hooks/useConnection.js +2 -2
  44. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  45. package/lib/commonjs/hooks/usePushTokenRegistration.js +24 -6
  46. package/lib/commonjs/hooks/usePushTokenRegistration.js.map +1 -1
  47. package/lib/commonjs/platform/createFileService.native.js +2 -2
  48. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  49. package/lib/commonjs/platform/createPlayerService.expo.js +8 -2
  50. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -1
  51. package/lib/commonjs/platform/createPlayerService.native.js +12 -7
  52. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -1
  53. package/lib/commonjs/platform/createRecorderService.native.js +8 -2
  54. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -1
  55. package/lib/commonjs/version.js +1 -1
  56. package/lib/commonjs/version.js.map +1 -1
  57. package/lib/module/components/ChannelInput/SendInput.js +2 -1
  58. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  59. package/lib/module/components/ChannelInput/VoiceMessageInput.js +34 -24
  60. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -1
  61. package/lib/module/components/ChannelInput/index.js +12 -6
  62. package/lib/module/components/ChannelInput/index.js.map +1 -1
  63. package/lib/module/components/ChannelMessageList/index.js +6 -1
  64. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  65. package/lib/module/components/ChannelThreadMessageList/index.js +6 -1
  66. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -1
  67. package/lib/module/components/FileViewer/FileViewerContent.js +1 -1
  68. package/lib/module/components/FileViewer/FileViewerContent.js.map +1 -1
  69. package/lib/module/components/FileViewer/FileViewerFooter.js +1 -0
  70. package/lib/module/components/FileViewer/FileViewerFooter.js.map +1 -1
  71. package/lib/module/components/FileViewer/FileViewerHeader.js +1 -0
  72. package/lib/module/components/FileViewer/FileViewerHeader.js.map +1 -1
  73. package/lib/module/components/GroupChannelMessageRenderer/index.js +1 -1
  74. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  75. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +10 -4
  76. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  77. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +9 -3
  78. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
  79. package/lib/module/components/ThreadParentMessageRenderer/index.js +1 -1
  80. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -1
  81. package/lib/module/containers/SendbirdUIKitContainer.js +0 -1
  82. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  83. package/lib/module/contexts/PlatformServiceCtx.js +2 -1
  84. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  85. package/lib/module/contexts/SBUHandlersCtx.js.map +1 -1
  86. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +17 -3
  87. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  88. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
  89. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  90. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +16 -2
  91. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
  92. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
  93. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
  94. package/lib/module/fragments/createGroupChannelFragment.js +3 -2
  95. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  96. package/lib/module/fragments/createGroupChannelThreadFragment.js +3 -2
  97. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -1
  98. package/lib/module/hooks/useConnection.js +2 -2
  99. package/lib/module/hooks/useConnection.js.map +1 -1
  100. package/lib/module/hooks/usePushTokenRegistration.js +24 -6
  101. package/lib/module/hooks/usePushTokenRegistration.js.map +1 -1
  102. package/lib/module/platform/createFileService.native.js +2 -2
  103. package/lib/module/platform/createFileService.native.js.map +1 -1
  104. package/lib/module/platform/createPlayerService.expo.js +9 -3
  105. package/lib/module/platform/createPlayerService.expo.js.map +1 -1
  106. package/lib/module/platform/createPlayerService.native.js +13 -8
  107. package/lib/module/platform/createPlayerService.native.js.map +1 -1
  108. package/lib/module/platform/createRecorderService.native.js +9 -3
  109. package/lib/module/platform/createRecorderService.native.js.map +1 -1
  110. package/lib/module/version.js +1 -1
  111. package/lib/module/version.js.map +1 -1
  112. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  113. package/lib/typescript/src/contexts/SBUHandlersCtx.d.ts +1 -1
  114. package/lib/typescript/src/version.d.ts +1 -1
  115. package/package.json +6 -6
  116. package/src/components/ChannelInput/SendInput.tsx +2 -1
  117. package/src/components/ChannelInput/VoiceMessageInput.tsx +40 -24
  118. package/src/components/ChannelInput/index.tsx +16 -6
  119. package/src/components/ChannelMessageList/index.tsx +5 -1
  120. package/src/components/ChannelThreadMessageList/index.tsx +5 -1
  121. package/src/components/FileViewer/FileViewerContent.tsx +1 -1
  122. package/src/components/FileViewer/FileViewerFooter.tsx +1 -0
  123. package/src/components/FileViewer/FileViewerHeader.tsx +1 -0
  124. package/src/components/GroupChannelMessageRenderer/index.tsx +1 -1
  125. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +13 -5
  126. package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +11 -4
  127. package/src/components/ThreadParentMessageRenderer/index.tsx +1 -1
  128. package/src/containers/SendbirdUIKitContainer.tsx +0 -1
  129. package/src/contexts/PlatformServiceCtx.tsx +2 -1
  130. package/src/contexts/SBUHandlersCtx.tsx +1 -1
  131. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +19 -3
  132. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +8 -4
  133. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +17 -2
  134. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +7 -3
  135. package/src/fragments/createGroupChannelFragment.tsx +3 -2
  136. package/src/fragments/createGroupChannelThreadFragment.tsx +3 -2
  137. package/src/hooks/useConnection.ts +8 -2
  138. package/src/hooks/usePushTokenRegistration.ts +24 -6
  139. package/src/platform/createFileService.native.ts +2 -6
  140. package/src/platform/createPlayerService.expo.tsx +9 -3
  141. package/src/platform/createPlayerService.native.tsx +15 -8
  142. package/src/platform/createRecorderService.native.tsx +9 -3
  143. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","SendbirdChat","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","Logger","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SBUHandlersProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","SBUUtils","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","handlers","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","sbuHandlers","onOpenURL","openURL","onOpenFileURL","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 SBUHandlers, SBUHandlersProvider } from '../contexts/SBUHandlersCtx';\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 SBUUtils from '../libs/SBUUtils';\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 handlers?: Partial<SBUHandlers>;\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 handlers,\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 const sbuHandlers: SBUHandlers = {\n onOpenURL: SBUUtils.openURL,\n onOpenFileURL: SBUUtils.openURL,\n ...handlers,\n };\n\n return (\n <SBUHandlersProvider {...sbuHandlers}>\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 </SBUHandlersProvider>\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":"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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","SBUHandlersProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","SBUUtils","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","handlers","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","sbuHandlers","onOpenURL","openURL","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 SBUHandlers, SBUHandlersProvider } from '../contexts/SBUHandlersCtx';\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 SBUUtils from '../libs/SBUUtils';\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 handlers?: Partial<SBUHandlers>;\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 handlers,\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 const sbuHandlers: SBUHandlers = {\n onOpenURL: SBUUtils.openURL,\n ...handlers,\n };\n\n return (\n <SBUHandlersProvider {...sbuHandlers}>\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 </SBUHandlersProvider>\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":"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"}
@@ -13,7 +13,8 @@ export const PlatformServiceProvider = _ref => {
13
13
  }, [voiceMessageConfig]);
14
14
  useAppState('change', state => {
15
15
  if (state !== 'active') {
16
- Promise.allSettled([services.playerService.reset(), services.recorderService.reset()]);
16
+ services.playerService.reset().catch(() => {});
17
+ services.recorderService.reset().catch(() => {});
17
18
  }
18
19
  });
19
20
  return /*#__PURE__*/React.createElement(PlatformServiceContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useAppState","PlatformServiceContext","createContext","PlatformServiceProvider","_ref","children","voiceMessageConfig","services","recorderService","options","minDuration","recorder","maxDuration","state","Promise","allSettled","playerService","reset","createElement","Provider","value"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { useAppState } from '@sendbird/uikit-utils';\n\nimport VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n PlayerServiceInterface,\n RecorderServiceInterface,\n} from '../platform/types';\n\nexport type PlatformServiceContextType = {\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n recorderService: RecorderServiceInterface;\n playerService: PlayerServiceInterface;\n};\ntype Props = React.PropsWithChildren<PlatformServiceContextType & { voiceMessageConfig: VoiceMessageConfig }>;\n\nexport const PlatformServiceContext = React.createContext<PlatformServiceContextType | null>(null);\nexport const PlatformServiceProvider = ({ children, voiceMessageConfig, ...services }: Props) => {\n useEffect(() => {\n services.recorderService.options.minDuration = voiceMessageConfig.recorder.minDuration;\n services.recorderService.options.maxDuration = voiceMessageConfig.recorder.maxDuration;\n }, [voiceMessageConfig]);\n\n useAppState('change', (state) => {\n if (state !== 'active') {\n Promise.allSettled([services.playerService.reset(), services.recorderService.reset()]);\n }\n });\n\n return <PlatformServiceContext.Provider value={services}>{children}</PlatformServiceContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SAASC,WAAW,QAAQ,uBAAuB;AAsBnD,OAAO,MAAMC,sBAAsB,gBAAGH,KAAK,CAACI,aAAa,CAAoC,IAAI,CAAC;AAClG,OAAO,MAAMC,uBAAuB,GAAGC,IAAA,IAA0D;EAAA,IAAzD;IAAEC,QAAQ;IAAEC,kBAAkB;IAAE,GAAGC;EAAgB,CAAC,GAAAH,IAAA;EAC1FL,SAAS,CAAC,MAAM;IACdQ,QAAQ,CAACC,eAAe,CAACC,OAAO,CAACC,WAAW,GAAGJ,kBAAkB,CAACK,QAAQ,CAACD,WAAW;IACtFH,QAAQ,CAACC,eAAe,CAACC,OAAO,CAACG,WAAW,GAAGN,kBAAkB,CAACK,QAAQ,CAACC,WAAW;EACxF,CAAC,EAAE,CAACN,kBAAkB,CAAC,CAAC;EAExBN,WAAW,CAAC,QAAQ,EAAGa,KAAK,IAAK;IAC/B,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtBC,OAAO,CAACC,UAAU,CAAC,CAACR,QAAQ,CAACS,aAAa,CAACC,KAAK,EAAE,EAAEV,QAAQ,CAACC,eAAe,CAACS,KAAK,EAAE,CAAC,CAAC;IACxF;EACF,CAAC,CAAC;EAEF,oBAAOnB,KAAA,CAAAoB,aAAA,CAACjB,sBAAsB,CAACkB,QAAQ;IAACC,KAAK,EAAEb;EAAS,GAAEF,QAAQ,CAAmC;AACvG,CAAC"}
1
+ {"version":3,"names":["React","useEffect","useAppState","PlatformServiceContext","createContext","PlatformServiceProvider","_ref","children","voiceMessageConfig","services","recorderService","options","minDuration","recorder","maxDuration","state","playerService","reset","catch","createElement","Provider","value"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { useAppState } from '@sendbird/uikit-utils';\n\nimport VoiceMessageConfig from '../libs/VoiceMessageConfig';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n PlayerServiceInterface,\n RecorderServiceInterface,\n} from '../platform/types';\n\nexport type PlatformServiceContextType = {\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService: MediaServiceInterface;\n recorderService: RecorderServiceInterface;\n playerService: PlayerServiceInterface;\n};\ntype Props = React.PropsWithChildren<PlatformServiceContextType & { voiceMessageConfig: VoiceMessageConfig }>;\n\nexport const PlatformServiceContext = React.createContext<PlatformServiceContextType | null>(null);\nexport const PlatformServiceProvider = ({ children, voiceMessageConfig, ...services }: Props) => {\n useEffect(() => {\n services.recorderService.options.minDuration = voiceMessageConfig.recorder.minDuration;\n services.recorderService.options.maxDuration = voiceMessageConfig.recorder.maxDuration;\n }, [voiceMessageConfig]);\n\n useAppState('change', (state) => {\n if (state !== 'active') {\n services.playerService.reset().catch(() => {});\n services.recorderService.reset().catch(() => {});\n }\n });\n\n return <PlatformServiceContext.Provider value={services}>{children}</PlatformServiceContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SAASC,WAAW,QAAQ,uBAAuB;AAsBnD,OAAO,MAAMC,sBAAsB,gBAAGH,KAAK,CAACI,aAAa,CAAoC,IAAI,CAAC;AAClG,OAAO,MAAMC,uBAAuB,GAAGC,IAAA,IAA0D;EAAA,IAAzD;IAAEC,QAAQ;IAAEC,kBAAkB;IAAE,GAAGC;EAAgB,CAAC,GAAAH,IAAA;EAC1FL,SAAS,CAAC,MAAM;IACdQ,QAAQ,CAACC,eAAe,CAACC,OAAO,CAACC,WAAW,GAAGJ,kBAAkB,CAACK,QAAQ,CAACD,WAAW;IACtFH,QAAQ,CAACC,eAAe,CAACC,OAAO,CAACG,WAAW,GAAGN,kBAAkB,CAACK,QAAQ,CAACC,WAAW;EACxF,CAAC,EAAE,CAACN,kBAAkB,CAAC,CAAC;EAExBN,WAAW,CAAC,QAAQ,EAAGa,KAAK,IAAK;IAC/B,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtBN,QAAQ,CAACO,aAAa,CAACC,KAAK,EAAE,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAC9CT,QAAQ,CAACC,eAAe,CAACO,KAAK,EAAE,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD;EACF,CAAC,CAAC;EAEF,oBAAOlB,KAAA,CAAAmB,aAAA,CAAChB,sBAAsB,CAACiB,QAAQ;IAACC,KAAK,EAAEZ;EAAS,GAAEF,QAAQ,CAAmC;AACvG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","SBUHandlersContext","createContext","SBUHandlersProvider","_ref","children","onOpenURL","onOpenFileURL","createElement","Provider","value"],"sources":["SBUHandlersCtx.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface SBUHandlers {\n /**\n * Callback function to handle opening a URL.\n * This is triggered when a URL needs to be opened.\n */\n onOpenURL: (url: string) => void;\n\n /**\n * Callback function to handle opening a file URL.\n * This is triggered when a file URL needs to be opened.\n *\n * Note that this function is also called redundantly\n * when `onPressMediaMessage` handler is triggered by clicking on media messages containing images, videos, or audio.\n */\n onOpenFileURL: (url: string) => void;\n}\n\ntype Props = React.PropsWithChildren<SBUHandlers>;\n\nexport type SBUHandlersContextType = SBUHandlers;\n\nexport const SBUHandlersContext = React.createContext<SBUHandlersContextType | null>(null);\nexport const SBUHandlersProvider = ({ children, onOpenURL, onOpenFileURL }: Props) => {\n return <SBUHandlersContext.Provider value={{ onOpenURL, onOpenFileURL }}>{children}</SBUHandlersContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAuBzB,OAAO,MAAMC,kBAAkB,gBAAGD,KAAK,CAACE,aAAa,CAAgC,IAAI,CAAC;AAC1F,OAAO,MAAMC,mBAAmB,GAAGC,IAAA,IAAmD;EAAA,IAAlD;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAqB,CAAC,GAAAH,IAAA;EAC/E,oBAAOJ,KAAA,CAAAQ,aAAA,CAACP,kBAAkB,CAACQ,QAAQ;IAACC,KAAK,EAAE;MAAEJ,SAAS;MAAEC;IAAc;EAAE,GAAEF,QAAQ,CAA+B;AACnH,CAAC"}
1
+ {"version":3,"names":["React","SBUHandlersContext","createContext","SBUHandlersProvider","_ref","children","onOpenURL","onOpenFileURL","createElement","Provider","value"],"sources":["SBUHandlersCtx.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface SBUHandlers {\n /**\n * Callback function to handle opening a URL.\n * This is triggered when a URL needs to be opened.\n */\n onOpenURL: (url: string) => void;\n\n /**\n * Callback function to handle opening a file URL.\n * This is triggered when a file URL needs to be opened.\n *\n * Note that this function is also called redundantly\n * when `onPressMediaMessage` handler is triggered by clicking on media messages containing images, videos, or audio.\n */\n onOpenFileURL?: (url: string) => void;\n}\n\ntype Props = React.PropsWithChildren<SBUHandlers>;\n\nexport type SBUHandlersContextType = SBUHandlers;\n\nexport const SBUHandlersContext = React.createContext<SBUHandlersContextType | null>(null);\nexport const SBUHandlersProvider = ({ children, onOpenURL, onOpenFileURL }: Props) => {\n return <SBUHandlersContext.Provider value={{ onOpenURL, onOpenFileURL }}>{children}</SBUHandlersContext.Provider>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAuBzB,OAAO,MAAMC,kBAAkB,gBAAGD,KAAK,CAACE,aAAa,CAAgC,IAAI,CAAC;AAC1F,OAAO,MAAMC,mBAAmB,GAAGC,IAAA,IAAmD;EAAA,IAAlD;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAqB,CAAC,GAAAH,IAAA;EAC/E,oBAAOJ,KAAA,CAAAQ,aAAA,CAACP,kBAAkB,CAACQ,QAAQ;IAACC,KAAK,EAAE;MAAEJ,SAAS;MAAEC;IAAc;EAAE,GAAEF,QAAQ,CAA+B;AACnH,CAAC"}
@@ -54,7 +54,7 @@ const GroupChannelMessageList = props => {
54
54
  startingPoint: createdAt
55
55
  });
56
56
  }
57
- props.onResetMessageListWithStartingPoint(createdAt);
57
+ props.onResetMessageListWithStartingPoint(createdAt).catch(_ => {});
58
58
  } else {
59
59
  return false;
60
60
  }
@@ -66,7 +66,7 @@ const GroupChannelMessageList = props => {
66
66
  if (props.hasNext()) {
67
67
  props.onUpdateSearchItem(undefined);
68
68
  props.onScrolledAwayFromBottom(false);
69
- await props.onResetMessageList();
69
+ await props.onResetMessageList().catch(_ => {});
70
70
  props.onScrolledAwayFromBottom(false);
71
71
  lazyScrollToBottom({
72
72
  animated
@@ -94,7 +94,8 @@ const GroupChannelMessageList = props => {
94
94
  useEffect(() => {
95
95
  return subscribe(_ref => {
96
96
  let {
97
- type
97
+ type,
98
+ data
98
99
  } = _ref;
99
100
  switch (type) {
100
101
  case 'TYPING_BUBBLE_RENDERED':
@@ -105,6 +106,19 @@ const GroupChannelMessageList = props => {
105
106
  }
106
107
  break;
107
108
  }
109
+ case 'MESSAGES_UPDATED':
110
+ {
111
+ const lastMessage = props.channel.lastMessage;
112
+ const [updatedMessage] = data.messages;
113
+ const lastMessageUpdated = updatedMessage && lastMessage && lastMessage.messageId === updatedMessage.messageId;
114
+ const isMaybeStreaming = props.channel.hasAiBot && lastMessageUpdated;
115
+ if (isMaybeStreaming) {
116
+ scrollToBottom(false);
117
+ } else if (!props.scrolledAwayFromBottom && lastMessageUpdated) {
118
+ scrollToBottom(true);
119
+ }
120
+ break;
121
+ }
108
122
  case 'MESSAGE_SENT_SUCCESS':
109
123
  case 'MESSAGE_SENT_PENDING':
110
124
  {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useEffect","useChannelHandler","useToast","useIsFirstMount","isDifferentChannel","useFreshCallback","useUniqHandlerId","ChannelMessageList","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","GroupChannelMessageList","props","toast","STRINGS","sdk","sbOptions","groupChannelFragmentOptions","setMessageToEdit","setMessageToReply","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","onPressReplyMessageInThread","MessageList","id","isFirstMount","scrollToMessageWithCreatedAt","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","scrollToBottom","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","onReactionUpdated","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","pubsub","payload","data","searchItem","onPressParentMessage","parentMessage","childMessage","uikit","groupChannel","replyType","threadReplySelectType","show","TOAST","FIND_PARENT_MSG_ERROR","canScrollToParent","createElement","_extends","ref","onReplyMessage","onReplyInThreadMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdMessage, SendbirdSendableMessage, useIsFirstMount } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\nimport { GroupChannelFragmentOptionsPubSubContextPayload } from '../../../contexts/SendbirdChatCtx';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelMessageList = (props: GroupChannelProps['MessageList']) => {\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const { sdk, sbOptions, groupChannelFragmentOptions } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex, onPressReplyMessageInThread } = useContext(\n GroupChannelContexts.MessageList,\n );\n\n const id = useUniqHandlerId('GroupChannelMessageList');\n const isFirstMount = useIsFirstMount();\n\n const scrollToMessageWithCreatedAt = useFreshCallback(\n (createdAt: number, focusAnimated: boolean, timeout: number): boolean => {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === createdAt);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (focusAnimated) {\n setTimeout(() => props.onUpdateSearchItem({ startingPoint: createdAt }), MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout });\n } else {\n if (props.channel.messageOffsetTimestamp <= createdAt) {\n if (focusAnimated) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt);\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList();\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n useEffect(() => {\n return groupChannelFragmentOptions.pubsub.subscribe((payload: GroupChannelFragmentOptionsPubSubContextPayload) => {\n switch (payload.type) {\n case 'OVERRIDE_SEARCH_ITEM_STARTING_POINT': {\n scrollToMessageWithCreatedAt(payload.data.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n break;\n }\n }\n });\n }, []);\n\n useEffect(() => {\n // Only trigger once when message list mount with initial props.searchItem\n // - Search screen + searchItem > mount message list\n // - Reset message list + searchItem > re-mount message list\n if (isFirstMount && props.searchItem) {\n scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n }\n }, [isFirstMount]);\n\n const onPressParentMessage = useFreshCallback(\n (parentMessage: SendbirdMessage, childMessage: SendbirdSendableMessage) => {\n if (\n onPressReplyMessageInThread &&\n sbOptions.uikit.groupChannel.channel.replyType === 'thread' &&\n sbOptions.uikit.groupChannel.channel.threadReplySelectType === 'thread'\n ) {\n if (parentMessage.createdAt >= props.channel.messageOffsetTimestamp) {\n onPressReplyMessageInThread(parentMessage as SendbirdSendableMessage, childMessage.createdAt);\n } else {\n toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n } else {\n const canScrollToParent = scrollToMessageWithCreatedAt(parentMessage.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n },\n );\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onReplyMessage={setMessageToReply}\n onReplyInThreadMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n />\n );\n};\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,QAAQ,OAAO;AAEpD,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,QAAQ,QAAQ,yCAAyC;AAClE,SAAmDC,eAAe,QAAQ,uBAAuB;AACjG,SAASC,kBAAkB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,uBAAuB;AAE9F,OAAOC,kBAAkB,MAAM,wCAAwC;AACvE,SAASC,6BAA6B,EAAEC,gCAAgC,QAAQ,oBAAoB;AAEpG,SAASC,eAAe,EAAEC,eAAe,QAAQ,2BAA2B;AAC5E,SAASC,oBAAoB,QAAQ,yBAAyB;AAG9D,MAAMC,uBAAuB,GAAIC,KAAuC,IAAK;EAC3E,MAAMC,KAAK,GAAGb,QAAQ,EAAE;EACxB,MAAM;IAAEc;EAAQ,CAAC,GAAGN,eAAe,EAAE;EACrC,MAAM;IAAEO,GAAG;IAAEC,SAAS;IAAEC;EAA4B,CAAC,GAAGR,eAAe,EAAE;EACzE,MAAM;IAAES,gBAAgB;IAAEC;EAAkB,CAAC,GAAGtB,UAAU,CAACa,oBAAoB,CAACU,QAAQ,CAAC;EACzF,MAAM;IAAEC;EAAU,CAAC,GAAGxB,UAAU,CAACa,oBAAoB,CAACY,MAAM,CAAC;EAC7D,MAAM;IAAEC,WAAW;IAAEC,kBAAkB;IAAEC,iBAAiB;IAAEC;EAA4B,CAAC,GAAG7B,UAAU,CACpGa,oBAAoB,CAACiB,WAAW,CACjC;EAED,MAAMC,EAAE,GAAGxB,gBAAgB,CAAC,yBAAyB,CAAC;EACtD,MAAMyB,YAAY,GAAG5B,eAAe,EAAE;EAEtC,MAAM6B,4BAA4B,GAAG3B,gBAAgB,CACnD,CAAC4B,SAAiB,EAAEC,aAAsB,EAAEC,OAAe,KAAc;IACvE,MAAMC,iBAAiB,GAAGtB,KAAK,CAACuB,QAAQ,CAACC,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACN,SAAS,KAAKA,SAAS,CAAC;IACtF,MAAMO,gBAAgB,GAAGJ,iBAAiB,GAAG,CAAC,CAAC;IAE/C,IAAII,gBAAgB,EAAE;MACpB,IAAIN,aAAa,EAAE;QACjBO,UAAU,CAAC,MAAM3B,KAAK,CAAC4B,kBAAkB,CAAC;UAAEC,aAAa,EAAEV;QAAU,CAAC,CAAC,EAAEzB,6BAA6B,CAAC;MACzG;MACAmB,iBAAiB,CAAC;QAAEiB,KAAK,EAAER,iBAAiB;QAAES,QAAQ,EAAE,IAAI;QAAEV;MAAQ,CAAC,CAAC;IAC1E,CAAC,MAAM;MACL,IAAIrB,KAAK,CAACgC,OAAO,CAACC,sBAAsB,IAAId,SAAS,EAAE;QACrD,IAAIC,aAAa,EAAE;UACjBpB,KAAK,CAAC4B,kBAAkB,CAAC;YAAEC,aAAa,EAAEV;UAAU,CAAC,CAAC;QACxD;QACAnB,KAAK,CAACkC,mCAAmC,CAACf,SAAS,CAAC;MACtD,CAAC,MAAM;QACL,OAAO,KAAK;MACd;IACF;IACA,OAAO,IAAI;EACb,CAAC,CACF;EAED,MAAMgB,cAAc,GAAG5C,gBAAgB,CAAC,kBAA4B;IAAA,IAArBwC,QAAQ,GAAAK,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAC7D,IAAIpC,KAAK,CAACuC,OAAO,EAAE,EAAE;MACnBvC,KAAK,CAAC4B,kBAAkB,CAACU,SAAS,CAAC;MACnCtC,KAAK,CAACwC,wBAAwB,CAAC,KAAK,CAAC;MAErC,MAAMxC,KAAK,CAACyC,kBAAkB,EAAE;MAChCzC,KAAK,CAACwC,wBAAwB,CAAC,KAAK,CAAC;MACrC5B,kBAAkB,CAAC;QAAEmB;MAAS,CAAC,CAAC;IAClC,CAAC,MAAM;MACLnB,kBAAkB,CAAC;QAAEmB;MAAS,CAAC,CAAC;IAClC;EACF,CAAC,CAAC;EAEF5C,iBAAiB,CAACgB,GAAG,EAAEa,EAAE,EAAE;IACzB0B,iBAAiBA,CAACV,OAAO,EAAEW,KAAK,EAAE;MAChC,IAAIrD,kBAAkB,CAAC0C,OAAO,EAAEhC,KAAK,CAACgC,OAAO,CAAC,EAAE;MAChD,MAAMY,aAAa,GAAG5C,KAAK,CAACuB,QAAQ,CAAC,CAAC,CAAC;MACvC,MAAMsB,eAAe,GAAGD,aAAa,IAAIA,aAAa,CAACE,SAAS,KAAKH,KAAK,CAACG,SAAS;MACpF,MAAMC,+BAA+B,GAAG,CAAC/C,KAAK,CAACgD,sBAAsB,IAAI,CAAChD,KAAK,CAACuC,OAAO,EAAE;MACzF,IAAIM,eAAe,IAAIE,+BAA+B,EAAE;QACtDnC,kBAAkB,CAAC;UAAEmB,QAAQ,EAAE,IAAI;UAAEV,OAAO,EAAE;QAAI,CAAC,CAAC;MACtD;IACF;EACF,CAAC,CAAC;EAEFnC,SAAS,CAAC,MAAM;IACd,OAAOuB,SAAS,CAACwC,IAAA,IAAc;MAAA,IAAb;QAAEC;MAAK,CAAC,GAAAD,IAAA;MACxB,QAAQC,IAAI;QACV,KAAK,wBAAwB;QAC7B,KAAK,mBAAmB;UAAE;YACxB,IAAI,CAAClD,KAAK,CAACgD,sBAAsB,EAAE;cACjCb,cAAc,CAAC,IAAI,CAAC;YACtB;YACA;UACF;QACA,KAAK,sBAAsB;QAC3B,KAAK,sBAAsB;UAAE;YAC3BA,cAAc,CAAC,KAAK,CAAC;YACrB;UACF;MAAC;IAEL,CAAC,CAAC;EACJ,CAAC,EAAE,CAACnC,KAAK,CAACgD,sBAAsB,CAAC,CAAC;EAElC9D,SAAS,CAAC,MAAM;IACd,OAAOmB,2BAA2B,CAAC8C,MAAM,CAAC1C,SAAS,CAAE2C,OAAwD,IAAK;MAChH,QAAQA,OAAO,CAACF,IAAI;QAClB,KAAK,qCAAqC;UAAE;YAC1ChC,4BAA4B,CAACkC,OAAO,CAACC,IAAI,CAACxB,aAAa,EAAE,KAAK,EAAElC,gCAAgC,CAAC;YACjG;UACF;MAAC;IAEL,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAENT,SAAS,CAAC,MAAM;IACd;IACA;IACA;IACA,IAAI+B,YAAY,IAAIjB,KAAK,CAACsD,UAAU,EAAE;MACpCpC,4BAA4B,CAAClB,KAAK,CAACsD,UAAU,CAACzB,aAAa,EAAE,KAAK,EAAElC,gCAAgC,CAAC;IACvG;EACF,CAAC,EAAE,CAACsB,YAAY,CAAC,CAAC;EAElB,MAAMsC,oBAAoB,GAAGhE,gBAAgB,CAC3C,CAACiE,aAA8B,EAAEC,YAAqC,KAAK;IACzE,IACE3C,2BAA2B,IAC3BV,SAAS,CAACsD,KAAK,CAACC,YAAY,CAAC3B,OAAO,CAAC4B,SAAS,KAAK,QAAQ,IAC3DxD,SAAS,CAACsD,KAAK,CAACC,YAAY,CAAC3B,OAAO,CAAC6B,qBAAqB,KAAK,QAAQ,EACvE;MACA,IAAIL,aAAa,CAACrC,SAAS,IAAInB,KAAK,CAACgC,OAAO,CAACC,sBAAsB,EAAE;QACnEnB,2BAA2B,CAAC0C,aAAa,EAA6BC,YAAY,CAACtC,SAAS,CAAC;MAC/F,CAAC,MAAM;QACLlB,KAAK,CAAC6D,IAAI,CAAC5D,OAAO,CAAC6D,KAAK,CAACC,qBAAqB,EAAE,OAAO,CAAC;MAC1D;IACF,CAAC,MAAM;MACL,MAAMC,iBAAiB,GAAG/C,4BAA4B,CAACsC,aAAa,CAACrC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;MACxF,IAAI,CAAC8C,iBAAiB,EAAEhE,KAAK,CAAC6D,IAAI,CAAC5D,OAAO,CAAC6D,KAAK,CAACC,qBAAqB,EAAE,OAAO,CAAC;IAClF;EACF,CAAC,CACF;EAED,oBACEhF,KAAA,CAAAkF,aAAA,CAACzE,kBAAkB,EAAA0E,QAAA,KACbnE,KAAK;IACToE,GAAG,EAAEzD,WAAY;IACjB0D,cAAc,EAAE9D,iBAAkB;IAClC+D,sBAAsB,EAAE/D,iBAAkB;IAC1CgE,aAAa,EAAEjE,gBAAiB;IAChCiD,oBAAoB,EAAEA,oBAAqB;IAC3CiB,wBAAwB,EAAErC,cAAe;IACzCsC,2BAA2B,EAAEtC;EAAe,GAC5C;AAEN,CAAC;AAED,4BAAenD,KAAK,CAAC0F,IAAI,CAAC3E,uBAAuB,CAAC"}
1
+ {"version":3,"names":["React","useContext","useEffect","useChannelHandler","useToast","useIsFirstMount","isDifferentChannel","useFreshCallback","useUniqHandlerId","ChannelMessageList","MESSAGE_FOCUS_ANIMATION_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","useLocalization","useSendbirdChat","GroupChannelContexts","GroupChannelMessageList","props","toast","STRINGS","sdk","sbOptions","groupChannelFragmentOptions","setMessageToEdit","setMessageToReply","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","onPressReplyMessageInThread","MessageList","id","isFirstMount","scrollToMessageWithCreatedAt","createdAt","focusAnimated","timeout","foundMessageIndex","messages","findIndex","it","isIncludedInList","setTimeout","onUpdateSearchItem","startingPoint","index","animated","channel","messageOffsetTimestamp","onResetMessageListWithStartingPoint","catch","_","scrollToBottom","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","onReactionUpdated","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","data","lastMessage","updatedMessage","lastMessageUpdated","isMaybeStreaming","hasAiBot","pubsub","payload","searchItem","onPressParentMessage","parentMessage","childMessage","uikit","groupChannel","replyType","threadReplySelectType","show","TOAST","FIND_PARENT_MSG_ERROR","canScrollToParent","createElement","_extends","ref","onReplyMessage","onReplyInThreadMessage","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useToast } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdMessage, SendbirdSendableMessage, useIsFirstMount } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelMessageList from '../../../components/ChannelMessageList';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../../../constants';\nimport { GroupChannelFragmentOptionsPubSubContextPayload } from '../../../contexts/SendbirdChatCtx';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelMessageList = (props: GroupChannelProps['MessageList']) => {\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const { sdk, sbOptions, groupChannelFragmentOptions } = useSendbirdChat();\n const { setMessageToEdit, setMessageToReply } = useContext(GroupChannelContexts.Fragment);\n const { subscribe } = useContext(GroupChannelContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex, onPressReplyMessageInThread } = useContext(\n GroupChannelContexts.MessageList,\n );\n\n const id = useUniqHandlerId('GroupChannelMessageList');\n const isFirstMount = useIsFirstMount();\n\n const scrollToMessageWithCreatedAt = useFreshCallback(\n (createdAt: number, focusAnimated: boolean, timeout: number): boolean => {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === createdAt);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n if (focusAnimated) {\n setTimeout(() => props.onUpdateSearchItem({ startingPoint: createdAt }), MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout });\n } else {\n if (props.channel.messageOffsetTimestamp <= createdAt) {\n if (focusAnimated) {\n props.onUpdateSearchItem({ startingPoint: createdAt });\n }\n props.onResetMessageListWithStartingPoint(createdAt).catch((_) => {});\n } else {\n return false;\n }\n }\n return true;\n },\n );\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onUpdateSearchItem(undefined);\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList().catch((_) => {});\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type, data }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGES_UPDATED': {\n const lastMessage = props.channel.lastMessage;\n const [updatedMessage] = data.messages;\n\n const lastMessageUpdated =\n updatedMessage && lastMessage && lastMessage.messageId === updatedMessage.messageId;\n\n const isMaybeStreaming = props.channel.hasAiBot && lastMessageUpdated;\n\n if (isMaybeStreaming) {\n scrollToBottom(false);\n } else if (!props.scrolledAwayFromBottom && lastMessageUpdated) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n useEffect(() => {\n return groupChannelFragmentOptions.pubsub.subscribe((payload: GroupChannelFragmentOptionsPubSubContextPayload) => {\n switch (payload.type) {\n case 'OVERRIDE_SEARCH_ITEM_STARTING_POINT': {\n scrollToMessageWithCreatedAt(payload.data.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n break;\n }\n }\n });\n }, []);\n\n useEffect(() => {\n // Only trigger once when message list mount with initial props.searchItem\n // - Search screen + searchItem > mount message list\n // - Reset message list + searchItem > re-mount message list\n if (isFirstMount && props.searchItem) {\n scrollToMessageWithCreatedAt(props.searchItem.startingPoint, false, MESSAGE_SEARCH_SAFE_SCROLL_DELAY);\n }\n }, [isFirstMount]);\n\n const onPressParentMessage = useFreshCallback(\n (parentMessage: SendbirdMessage, childMessage: SendbirdSendableMessage) => {\n if (\n onPressReplyMessageInThread &&\n sbOptions.uikit.groupChannel.channel.replyType === 'thread' &&\n sbOptions.uikit.groupChannel.channel.threadReplySelectType === 'thread'\n ) {\n if (parentMessage.createdAt >= props.channel.messageOffsetTimestamp) {\n onPressReplyMessageInThread(parentMessage as SendbirdSendableMessage, childMessage.createdAt);\n } else {\n toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n } else {\n const canScrollToParent = scrollToMessageWithCreatedAt(parentMessage.createdAt, true, 0);\n if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');\n }\n },\n );\n\n return (\n <ChannelMessageList\n {...props}\n ref={flatListRef}\n onReplyMessage={setMessageToReply}\n onReplyInThreadMessage={setMessageToReply}\n onEditMessage={setMessageToEdit}\n onPressParentMessage={onPressParentMessage}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n />\n );\n};\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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"}
@@ -38,10 +38,14 @@ const GroupChannelSettingsMenu = _ref => {
38
38
  WARN_onPressMenuSearchInChannel = true;
39
39
  }
40
40
  const toggleNotification = async () => {
41
- if (channel.myPushTriggerOption === 'off') {
42
- await channel.setMyPushTriggerOption(PushTriggerOption.DEFAULT);
43
- } else {
44
- await channel.setMyPushTriggerOption(PushTriggerOption.OFF);
41
+ try {
42
+ if (channel.myPushTriggerOption === 'off') {
43
+ await channel.setMyPushTriggerOption(PushTriggerOption.DEFAULT);
44
+ } else {
45
+ await channel.setMyPushTriggerOption(PushTriggerOption.OFF);
46
+ }
47
+ } catch (error) {
48
+ Logger.warn('Failed to toggle notification', error);
45
49
  }
46
50
  };
47
51
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","View","PushTriggerOption","Icon","MenuBar","Switch","useUIKitTheme","Logger","conditionChaining","useIIFE","useLocalization","useSendbirdChat","GroupChannelSettingsContexts","WARN_onPressMenuNotification","WARN_onPressMenuSearchInChannel","GroupChannelSettingsMenu","_ref","onPressMenuModeration","onPressMenuMembers","onPressMenuSearchInChannel","onPressMenuLeaveChannel","onPressMenuNotification","menuItemsCreator","menu","sdk","sbOptions","channel","Fragment","STRINGS","colors","__DEV__","uikit","groupChannel","enableMention","warn","uikitWithAppInfo","setting","enableMessageSearch","toggleNotification","myPushTriggerOption","setMyPushTriggerOption","DEFAULT","OFF","onPressNotificationMenu","actionLabelNotificationMenu","actionItemNotificationMenu","getNotificationsLabel","ALL","GROUP_CHANNEL_SETTINGS","MENU_NOTIFICATION_LABEL_ON","MENU_NOTIFICATION_LABEL_OFF","MENTION_ONLY","MENU_NOTIFICATION_LABEL_MENTION_ONLY","createElement","icon","color","onBackground01","value","onChangeValue","defaultMenuItems","visible","myRole","name","MENU_MODERATION","onPress","actionItem","MENU_NOTIFICATION","actionLabel","MENU_MEMBERS","String","memberCount","isEphemeral","push","MENU_SEARCH","iconColor","error","MENU_LEAVE_CHANNEL","leave","then","clearCachedMessages","url","catch","menuItems","map","key","disabled","iconBackgroundColor"],"sources":["GroupChannelSettingsMenu.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { PushTriggerOption } from '@sendbird/chat';\nimport type { MenuBarProps } from '@sendbird/uikit-react-native-foundation';\nimport { Icon, MenuBar, Switch, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, conditionChaining, useIIFE } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nlet WARN_onPressMenuNotification = false;\nlet WARN_onPressMenuSearchInChannel = false;\n\nconst GroupChannelSettingsMenu = ({\n onPressMenuModeration,\n onPressMenuMembers,\n onPressMenuSearchInChannel,\n onPressMenuLeaveChannel,\n onPressMenuNotification,\n menuItemsCreator = (menu) => menu,\n}: GroupChannelSettingsProps['Menu']) => {\n const { sdk, sbOptions } = useSendbirdChat();\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n if (\n __DEV__ &&\n !WARN_onPressMenuNotification &&\n !onPressMenuNotification &&\n sbOptions.uikit.groupChannel.channel.enableMention\n ) {\n Logger.warn('If you are using mention, make sure to pass the `onPressMenuNotification` prop');\n WARN_onPressMenuNotification = true;\n }\n\n if (\n __DEV__ &&\n !WARN_onPressMenuSearchInChannel &&\n !onPressMenuSearchInChannel &&\n sbOptions.uikitWithAppInfo.groupChannel.setting.enableMessageSearch\n ) {\n Logger.warn('If you are using message search, make sure to pass the `onPressMenuSearchInChannel` prop');\n WARN_onPressMenuSearchInChannel = true;\n }\n\n const toggleNotification = async () => {\n if (channel.myPushTriggerOption === 'off') {\n await channel.setMyPushTriggerOption(PushTriggerOption.DEFAULT);\n } else {\n await channel.setMyPushTriggerOption(PushTriggerOption.OFF);\n }\n };\n\n const { onPressNotificationMenu, actionLabelNotificationMenu, actionItemNotificationMenu } = useIIFE(() => {\n const getNotificationsLabel = () => {\n switch (channel.myPushTriggerOption) {\n case PushTriggerOption.ALL:\n case PushTriggerOption.DEFAULT:\n return STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION_LABEL_ON;\n case PushTriggerOption.OFF:\n return STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION_LABEL_OFF;\n case PushTriggerOption.MENTION_ONLY:\n return STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION_LABEL_MENTION_ONLY;\n }\n };\n\n return {\n actionLabelNotificationMenu: getNotificationsLabel(),\n actionItemNotificationMenu: conditionChaining(\n [sbOptions.uikit.groupChannel.channel.enableMention],\n [\n <Icon icon={'chevron-right'} color={colors.onBackground01} />,\n <Switch value={channel.myPushTriggerOption !== 'off'} onChangeValue={toggleNotification} />,\n ],\n ),\n onPressNotificationMenu: () => {\n if (sbOptions.uikit.groupChannel.channel.enableMention) onPressMenuNotification?.();\n else toggleNotification();\n },\n };\n });\n\n const defaultMenuItems: MenuBarProps[] = [\n {\n icon: 'moderation',\n visible: channel.myRole === 'operator',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_MODERATION,\n onPress: () => onPressMenuModeration(),\n actionItem: <Icon icon={'chevron-right'} color={colors.onBackground01} />,\n },\n {\n icon: 'notifications',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION,\n onPress: onPressNotificationMenu,\n actionLabel: actionLabelNotificationMenu,\n actionItem: actionItemNotificationMenu,\n },\n {\n icon: 'members',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_MEMBERS,\n onPress: () => onPressMenuMembers(),\n actionLabel: String(channel.memberCount),\n actionItem: <Icon icon={'chevron-right'} color={colors.onBackground01} />,\n },\n ];\n\n if (sbOptions.uikitWithAppInfo.groupChannel.setting.enableMessageSearch && !channel.isEphemeral) {\n defaultMenuItems.push({\n icon: 'search',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_SEARCH,\n onPress: () => onPressMenuSearchInChannel?.(),\n });\n }\n\n defaultMenuItems.push({\n icon: 'leave',\n iconColor: colors.error,\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_LEAVE_CHANNEL,\n onPress: () => {\n channel.leave().then(() => {\n onPressMenuLeaveChannel();\n sdk.clearCachedMessages([channel.url]).catch();\n });\n },\n });\n\n const menuItems = menuItemsCreator(defaultMenuItems);\n\n return (\n <View>\n {menuItems.map((menu) => {\n return (\n <MenuBar\n key={menu.name}\n onPress={menu.onPress}\n name={menu.name}\n disabled={menu.disabled}\n visible={menu.visible}\n icon={menu.icon}\n iconColor={menu.iconColor}\n iconBackgroundColor={menu.iconBackgroundColor}\n actionLabel={menu.actionLabel}\n actionItem={menu.actionItem}\n />\n );\n })}\n </View>\n );\n};\n\nexport default GroupChannelSettingsMenu;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useContext","View","PushTriggerOption","Icon","MenuBar","Switch","useUIKitTheme","Logger","conditionChaining","useIIFE","useLocalization","useSendbirdChat","GroupChannelSettingsContexts","WARN_onPressMenuNotification","WARN_onPressMenuSearchInChannel","GroupChannelSettingsMenu","_ref","onPressMenuModeration","onPressMenuMembers","onPressMenuSearchInChannel","onPressMenuLeaveChannel","onPressMenuNotification","menuItemsCreator","menu","sdk","sbOptions","channel","Fragment","STRINGS","colors","__DEV__","uikit","groupChannel","enableMention","warn","uikitWithAppInfo","setting","enableMessageSearch","toggleNotification","myPushTriggerOption","setMyPushTriggerOption","DEFAULT","OFF","error","onPressNotificationMenu","actionLabelNotificationMenu","actionItemNotificationMenu","getNotificationsLabel","ALL","GROUP_CHANNEL_SETTINGS","MENU_NOTIFICATION_LABEL_ON","MENU_NOTIFICATION_LABEL_OFF","MENTION_ONLY","MENU_NOTIFICATION_LABEL_MENTION_ONLY","createElement","icon","color","onBackground01","value","onChangeValue","defaultMenuItems","visible","myRole","name","MENU_MODERATION","onPress","actionItem","MENU_NOTIFICATION","actionLabel","MENU_MEMBERS","String","memberCount","isEphemeral","push","MENU_SEARCH","iconColor","MENU_LEAVE_CHANNEL","leave","then","clearCachedMessages","url","catch","menuItems","map","key","disabled","iconBackgroundColor"],"sources":["GroupChannelSettingsMenu.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { PushTriggerOption } from '@sendbird/chat';\nimport type { MenuBarProps } from '@sendbird/uikit-react-native-foundation';\nimport { Icon, MenuBar, Switch, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, conditionChaining, useIIFE } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nlet WARN_onPressMenuNotification = false;\nlet WARN_onPressMenuSearchInChannel = false;\n\nconst GroupChannelSettingsMenu = ({\n onPressMenuModeration,\n onPressMenuMembers,\n onPressMenuSearchInChannel,\n onPressMenuLeaveChannel,\n onPressMenuNotification,\n menuItemsCreator = (menu) => menu,\n}: GroupChannelSettingsProps['Menu']) => {\n const { sdk, sbOptions } = useSendbirdChat();\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n if (\n __DEV__ &&\n !WARN_onPressMenuNotification &&\n !onPressMenuNotification &&\n sbOptions.uikit.groupChannel.channel.enableMention\n ) {\n Logger.warn('If you are using mention, make sure to pass the `onPressMenuNotification` prop');\n WARN_onPressMenuNotification = true;\n }\n\n if (\n __DEV__ &&\n !WARN_onPressMenuSearchInChannel &&\n !onPressMenuSearchInChannel &&\n sbOptions.uikitWithAppInfo.groupChannel.setting.enableMessageSearch\n ) {\n Logger.warn('If you are using message search, make sure to pass the `onPressMenuSearchInChannel` prop');\n WARN_onPressMenuSearchInChannel = true;\n }\n\n const toggleNotification = async () => {\n try {\n if (channel.myPushTriggerOption === 'off') {\n await channel.setMyPushTriggerOption(PushTriggerOption.DEFAULT);\n } else {\n await channel.setMyPushTriggerOption(PushTriggerOption.OFF);\n }\n } catch (error) {\n Logger.warn('Failed to toggle notification', error);\n }\n };\n\n const { onPressNotificationMenu, actionLabelNotificationMenu, actionItemNotificationMenu } = useIIFE(() => {\n const getNotificationsLabel = () => {\n switch (channel.myPushTriggerOption) {\n case PushTriggerOption.ALL:\n case PushTriggerOption.DEFAULT:\n return STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION_LABEL_ON;\n case PushTriggerOption.OFF:\n return STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION_LABEL_OFF;\n case PushTriggerOption.MENTION_ONLY:\n return STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION_LABEL_MENTION_ONLY;\n }\n };\n\n return {\n actionLabelNotificationMenu: getNotificationsLabel(),\n actionItemNotificationMenu: conditionChaining(\n [sbOptions.uikit.groupChannel.channel.enableMention],\n [\n <Icon icon={'chevron-right'} color={colors.onBackground01} />,\n <Switch value={channel.myPushTriggerOption !== 'off'} onChangeValue={toggleNotification} />,\n ],\n ),\n onPressNotificationMenu: () => {\n if (sbOptions.uikit.groupChannel.channel.enableMention) onPressMenuNotification?.();\n else toggleNotification();\n },\n };\n });\n\n const defaultMenuItems: MenuBarProps[] = [\n {\n icon: 'moderation',\n visible: channel.myRole === 'operator',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_MODERATION,\n onPress: () => onPressMenuModeration(),\n actionItem: <Icon icon={'chevron-right'} color={colors.onBackground01} />,\n },\n {\n icon: 'notifications',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_NOTIFICATION,\n onPress: onPressNotificationMenu,\n actionLabel: actionLabelNotificationMenu,\n actionItem: actionItemNotificationMenu,\n },\n {\n icon: 'members',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_MEMBERS,\n onPress: () => onPressMenuMembers(),\n actionLabel: String(channel.memberCount),\n actionItem: <Icon icon={'chevron-right'} color={colors.onBackground01} />,\n },\n ];\n\n if (sbOptions.uikitWithAppInfo.groupChannel.setting.enableMessageSearch && !channel.isEphemeral) {\n defaultMenuItems.push({\n icon: 'search',\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_SEARCH,\n onPress: () => onPressMenuSearchInChannel?.(),\n });\n }\n\n defaultMenuItems.push({\n icon: 'leave',\n iconColor: colors.error,\n name: STRINGS.GROUP_CHANNEL_SETTINGS.MENU_LEAVE_CHANNEL,\n onPress: () => {\n channel.leave().then(() => {\n onPressMenuLeaveChannel();\n sdk.clearCachedMessages([channel.url]).catch();\n });\n },\n });\n\n const menuItems = menuItemsCreator(defaultMenuItems);\n\n return (\n <View>\n {menuItems.map((menu) => {\n return (\n <MenuBar\n key={menu.name}\n onPress={menu.onPress}\n name={menu.name}\n disabled={menu.disabled}\n visible={menu.visible}\n icon={menu.icon}\n iconColor={menu.iconColor}\n iconBackgroundColor={menu.iconBackgroundColor}\n actionLabel={menu.actionLabel}\n actionItem={menu.actionItem}\n />\n );\n })}\n </View>\n );\n};\n\nexport default GroupChannelSettingsMenu;\n"],"mappings":"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"}
@@ -36,7 +36,7 @@ const GroupChannelThreadMessageList = props => {
36
36
  let animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
37
37
  if (props.hasNext()) {
38
38
  props.onScrolledAwayFromBottom(false);
39
- await props.onResetMessageList();
39
+ await props.onResetMessageList().catch(_ => {});
40
40
  props.onScrolledAwayFromBottom(false);
41
41
  lazyScrollToBottom({
42
42
  animated
@@ -82,7 +82,8 @@ const GroupChannelThreadMessageList = props => {
82
82
  useEffect(() => {
83
83
  return subscribe(_ref => {
84
84
  let {
85
- type
85
+ type,
86
+ data
86
87
  } = _ref;
87
88
  switch (type) {
88
89
  case 'TYPING_BUBBLE_RENDERED':
@@ -93,6 +94,19 @@ const GroupChannelThreadMessageList = props => {
93
94
  }
94
95
  break;
95
96
  }
97
+ case 'MESSAGES_UPDATED':
98
+ {
99
+ const lastMessage = props.channel.lastMessage;
100
+ const [updatedMessage] = data.messages;
101
+ const lastMessageUpdated = updatedMessage && lastMessage && lastMessage.messageId === updatedMessage.messageId;
102
+ const isMaybeStreaming = props.channel.hasAiBot && lastMessageUpdated;
103
+ if (isMaybeStreaming) {
104
+ scrollToBottom(false);
105
+ } else if (!props.scrolledAwayFromBottom && lastMessageUpdated) {
106
+ scrollToBottom(true);
107
+ }
108
+ break;
109
+ }
96
110
  case 'MESSAGE_SENT_SUCCESS':
97
111
  case 'MESSAGE_SENT_PENDING':
98
112
  {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useEffect","useLayoutEffect","useRef","useChannelHandler","isDifferentChannel","useFreshCallback","useUniqHandlerId","ChannelThreadMessageList","useSendbirdChat","GroupChannelThreadContexts","GroupChannelThreadMessageList","props","sdk","setMessageToEdit","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","MessageList","id","ignorePropReached","_onTopReached","current","onTopReached","_onBottomReached","onBottomReached","scrollToBottom","animated","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","startingPoint","foundMessageIndex","messages","findIndex","it","createdAt","isIncludedInList","timeout","index","setTimeout","onReactionUpdated","channel","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","createElement","_extends","ref","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","renderNewMessagesButton","renderScrollToBottomButton","memo"],"sources":["GroupChannelThreadMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelThreadMessageList from '../../../components/ChannelThreadMessageList';\nimport { useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\n\nconst GroupChannelThreadMessageList = (props: GroupChannelThreadProps['MessageList']) => {\n const { sdk } = useSendbirdChat();\n const { setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { subscribe } = useContext(GroupChannelThreadContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex } = useContext(GroupChannelThreadContexts.MessageList);\n\n const id = useUniqHandlerId('GroupChannelThreadMessageList');\n const ignorePropReached = useRef(false);\n\n const _onTopReached = () => {\n if (!ignorePropReached.current) {\n props.onTopReached();\n }\n };\n\n const _onBottomReached = () => {\n if (!ignorePropReached.current) {\n props.onBottomReached();\n }\n };\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList();\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useLayoutEffect(() => {\n if (props.startingPoint) {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === props.startingPoint);\n const isIncludedInList = foundMessageIndex > -1;\n if (isIncludedInList) {\n ignorePropReached.current = true;\n const timeout = 300;\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout: timeout });\n setTimeout(() => {\n ignorePropReached.current = false;\n }, timeout + 50);\n }\n }\n }, [props.startingPoint]);\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n return (\n <ChannelThreadMessageList\n {...props}\n ref={flatListRef}\n onTopReached={_onTopReached}\n onBottomReached={_onBottomReached}\n onEditMessage={setMessageToEdit}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n renderNewMessagesButton={null}\n renderScrollToBottomButton={null}\n />\n );\n};\n\nexport default React.memo(GroupChannelThreadMessageList);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useContext","useEffect","useLayoutEffect","useRef","useChannelHandler","isDifferentChannel","useFreshCallback","useUniqHandlerId","ChannelThreadMessageList","useSendbirdChat","GroupChannelThreadContexts","GroupChannelThreadMessageList","props","sdk","setMessageToEdit","Fragment","subscribe","PubSub","flatListRef","lazyScrollToBottom","lazyScrollToIndex","MessageList","id","ignorePropReached","_onTopReached","current","onTopReached","_onBottomReached","onBottomReached","scrollToBottom","animated","arguments","length","undefined","hasNext","onScrolledAwayFromBottom","onResetMessageList","catch","_","startingPoint","foundMessageIndex","messages","findIndex","it","createdAt","isIncludedInList","timeout","index","setTimeout","onReactionUpdated","channel","event","recentMessage","isRecentMessage","messageId","scrollReachedBottomAndCanScroll","scrolledAwayFromBottom","_ref","type","data","lastMessage","updatedMessage","lastMessageUpdated","isMaybeStreaming","hasAiBot","createElement","_extends","ref","onEditMessage","onPressNewMessagesButton","onPressScrollToBottomButton","renderNewMessagesButton","renderScrollToBottomButton","memo"],"sources":["GroupChannelThreadMessageList.tsx"],"sourcesContent":["import React, { useContext, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { isDifferentChannel, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport ChannelThreadMessageList from '../../../components/ChannelThreadMessageList';\nimport { useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\n\nconst GroupChannelThreadMessageList = (props: GroupChannelThreadProps['MessageList']) => {\n const { sdk } = useSendbirdChat();\n const { setMessageToEdit } = useContext(GroupChannelThreadContexts.Fragment);\n const { subscribe } = useContext(GroupChannelThreadContexts.PubSub);\n const { flatListRef, lazyScrollToBottom, lazyScrollToIndex } = useContext(GroupChannelThreadContexts.MessageList);\n\n const id = useUniqHandlerId('GroupChannelThreadMessageList');\n const ignorePropReached = useRef(false);\n\n const _onTopReached = () => {\n if (!ignorePropReached.current) {\n props.onTopReached();\n }\n };\n\n const _onBottomReached = () => {\n if (!ignorePropReached.current) {\n props.onBottomReached();\n }\n };\n\n const scrollToBottom = useFreshCallback(async (animated = false) => {\n if (props.hasNext()) {\n props.onScrolledAwayFromBottom(false);\n\n await props.onResetMessageList().catch((_) => {});\n props.onScrolledAwayFromBottom(false);\n lazyScrollToBottom({ animated });\n } else {\n lazyScrollToBottom({ animated });\n }\n });\n\n useLayoutEffect(() => {\n if (props.startingPoint) {\n const foundMessageIndex = props.messages.findIndex((it) => it.createdAt === props.startingPoint);\n const isIncludedInList = foundMessageIndex > -1;\n if (isIncludedInList) {\n ignorePropReached.current = true;\n const timeout = 300;\n lazyScrollToIndex({ index: foundMessageIndex, animated: true, timeout: timeout });\n setTimeout(() => {\n ignorePropReached.current = false;\n }, timeout + 50);\n }\n }\n }, [props.startingPoint]);\n\n useChannelHandler(sdk, id, {\n onReactionUpdated(channel, event) {\n if (isDifferentChannel(channel, props.channel)) return;\n const recentMessage = props.messages[0];\n const isRecentMessage = recentMessage && recentMessage.messageId === event.messageId;\n const scrollReachedBottomAndCanScroll = !props.scrolledAwayFromBottom && !props.hasNext();\n if (isRecentMessage && scrollReachedBottomAndCanScroll) {\n lazyScrollToBottom({ animated: true, timeout: 250 });\n }\n },\n });\n\n useEffect(() => {\n return subscribe(({ type, data }) => {\n switch (type) {\n case 'TYPING_BUBBLE_RENDERED':\n case 'MESSAGES_RECEIVED': {\n if (!props.scrolledAwayFromBottom) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGES_UPDATED': {\n const lastMessage = props.channel.lastMessage;\n const [updatedMessage] = data.messages;\n\n const lastMessageUpdated =\n updatedMessage && lastMessage && lastMessage.messageId === updatedMessage.messageId;\n const isMaybeStreaming = props.channel.hasAiBot && lastMessageUpdated;\n\n if (isMaybeStreaming) {\n scrollToBottom(false);\n } else if (!props.scrolledAwayFromBottom && lastMessageUpdated) {\n scrollToBottom(true);\n }\n break;\n }\n case 'MESSAGE_SENT_SUCCESS':\n case 'MESSAGE_SENT_PENDING': {\n scrollToBottom(false);\n break;\n }\n }\n });\n }, [props.scrolledAwayFromBottom]);\n\n return (\n <ChannelThreadMessageList\n {...props}\n ref={flatListRef}\n onTopReached={_onTopReached}\n onBottomReached={_onBottomReached}\n onEditMessage={setMessageToEdit}\n onPressNewMessagesButton={scrollToBottom}\n onPressScrollToBottomButton={scrollToBottom}\n renderNewMessagesButton={null}\n renderScrollToBottomButton={null}\n />\n );\n};\n\nexport default React.memo(GroupChannelThreadMessageList);\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,EAAEC,eAAe,EAAEC,MAAM,QAAQ,OAAO;AAE7E,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SAASC,kBAAkB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,uBAAuB;AAE9F,OAAOC,wBAAwB,MAAM,8CAA8C;AACnF,SAASC,eAAe,QAAQ,2BAA2B;AAC3D,SAASC,0BAA0B,QAAQ,yBAAyB;AAGpE,MAAMC,6BAA6B,GAAIC,KAA6C,IAAK;EACvF,MAAM;IAAEC;EAAI,CAAC,GAAGJ,eAAe,EAAE;EACjC,MAAM;IAAEK;EAAiB,CAAC,GAAGd,UAAU,CAACU,0BAA0B,CAACK,QAAQ,CAAC;EAC5E,MAAM;IAAEC;EAAU,CAAC,GAAGhB,UAAU,CAACU,0BAA0B,CAACO,MAAM,CAAC;EACnE,MAAM;IAAEC,WAAW;IAAEC,kBAAkB;IAAEC;EAAkB,CAAC,GAAGpB,UAAU,CAACU,0BAA0B,CAACW,WAAW,CAAC;EAEjH,MAAMC,EAAE,GAAGf,gBAAgB,CAAC,+BAA+B,CAAC;EAC5D,MAAMgB,iBAAiB,GAAGpB,MAAM,CAAC,KAAK,CAAC;EAEvC,MAAMqB,aAAa,GAAGA,CAAA,KAAM;IAC1B,IAAI,CAACD,iBAAiB,CAACE,OAAO,EAAE;MAC9Bb,KAAK,CAACc,YAAY,EAAE;IACtB;EACF,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,IAAI,CAACJ,iBAAiB,CAACE,OAAO,EAAE;MAC9Bb,KAAK,CAACgB,eAAe,EAAE;IACzB;EACF,CAAC;EAED,MAAMC,cAAc,GAAGvB,gBAAgB,CAAC,kBAA4B;IAAA,IAArBwB,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAC7D,IAAInB,KAAK,CAACsB,OAAO,EAAE,EAAE;MACnBtB,KAAK,CAACuB,wBAAwB,CAAC,KAAK,CAAC;MAErC,MAAMvB,KAAK,CAACwB,kBAAkB,EAAE,CAACC,KAAK,CAAEC,CAAC,IAAK,CAAC,CAAC,CAAC;MACjD1B,KAAK,CAACuB,wBAAwB,CAAC,KAAK,CAAC;MACrChB,kBAAkB,CAAC;QAAEW;MAAS,CAAC,CAAC;IAClC,CAAC,MAAM;MACLX,kBAAkB,CAAC;QAAEW;MAAS,CAAC,CAAC;IAClC;EACF,CAAC,CAAC;EAEF5B,eAAe,CAAC,MAAM;IACpB,IAAIU,KAAK,CAAC2B,aAAa,EAAE;MACvB,MAAMC,iBAAiB,GAAG5B,KAAK,CAAC6B,QAAQ,CAACC,SAAS,CAAEC,EAAE,IAAKA,EAAE,CAACC,SAAS,KAAKhC,KAAK,CAAC2B,aAAa,CAAC;MAChG,MAAMM,gBAAgB,GAAGL,iBAAiB,GAAG,CAAC,CAAC;MAC/C,IAAIK,gBAAgB,EAAE;QACpBtB,iBAAiB,CAACE,OAAO,GAAG,IAAI;QAChC,MAAMqB,OAAO,GAAG,GAAG;QACnB1B,iBAAiB,CAAC;UAAE2B,KAAK,EAAEP,iBAAiB;UAAEV,QAAQ,EAAE,IAAI;UAAEgB,OAAO,EAAEA;QAAQ,CAAC,CAAC;QACjFE,UAAU,CAAC,MAAM;UACfzB,iBAAiB,CAACE,OAAO,GAAG,KAAK;QACnC,CAAC,EAAEqB,OAAO,GAAG,EAAE,CAAC;MAClB;IACF;EACF,CAAC,EAAE,CAAClC,KAAK,CAAC2B,aAAa,CAAC,CAAC;EAEzBnC,iBAAiB,CAACS,GAAG,EAAES,EAAE,EAAE;IACzB2B,iBAAiBA,CAACC,OAAO,EAAEC,KAAK,EAAE;MAChC,IAAI9C,kBAAkB,CAAC6C,OAAO,EAAEtC,KAAK,CAACsC,OAAO,CAAC,EAAE;MAChD,MAAME,aAAa,GAAGxC,KAAK,CAAC6B,QAAQ,CAAC,CAAC,CAAC;MACvC,MAAMY,eAAe,GAAGD,aAAa,IAAIA,aAAa,CAACE,SAAS,KAAKH,KAAK,CAACG,SAAS;MACpF,MAAMC,+BAA+B,GAAG,CAAC3C,KAAK,CAAC4C,sBAAsB,IAAI,CAAC5C,KAAK,CAACsB,OAAO,EAAE;MACzF,IAAImB,eAAe,IAAIE,+BAA+B,EAAE;QACtDpC,kBAAkB,CAAC;UAAEW,QAAQ,EAAE,IAAI;UAAEgB,OAAO,EAAE;QAAI,CAAC,CAAC;MACtD;IACF;EACF,CAAC,CAAC;EAEF7C,SAAS,CAAC,MAAM;IACd,OAAOe,SAAS,CAACyC,IAAA,IAAoB;MAAA,IAAnB;QAAEC,IAAI;QAAEC;MAAK,CAAC,GAAAF,IAAA;MAC9B,QAAQC,IAAI;QACV,KAAK,wBAAwB;QAC7B,KAAK,mBAAmB;UAAE;YACxB,IAAI,CAAC9C,KAAK,CAAC4C,sBAAsB,EAAE;cACjC3B,cAAc,CAAC,IAAI,CAAC;YACtB;YACA;UACF;QACA,KAAK,kBAAkB;UAAE;YACvB,MAAM+B,WAAW,GAAGhD,KAAK,CAACsC,OAAO,CAACU,WAAW;YAC7C,MAAM,CAACC,cAAc,CAAC,GAAGF,IAAI,CAAClB,QAAQ;YAEtC,MAAMqB,kBAAkB,GACtBD,cAAc,IAAID,WAAW,IAAIA,WAAW,CAACN,SAAS,KAAKO,cAAc,CAACP,SAAS;YACrF,MAAMS,gBAAgB,GAAGnD,KAAK,CAACsC,OAAO,CAACc,QAAQ,IAAIF,kBAAkB;YAErE,IAAIC,gBAAgB,EAAE;cACpBlC,cAAc,CAAC,KAAK,CAAC;YACvB,CAAC,MAAM,IAAI,CAACjB,KAAK,CAAC4C,sBAAsB,IAAIM,kBAAkB,EAAE;cAC9DjC,cAAc,CAAC,IAAI,CAAC;YACtB;YACA;UACF;QACA,KAAK,sBAAsB;QAC3B,KAAK,sBAAsB;UAAE;YAC3BA,cAAc,CAAC,KAAK,CAAC;YACrB;UACF;MAAC;IAEL,CAAC,CAAC;EACJ,CAAC,EAAE,CAACjB,KAAK,CAAC4C,sBAAsB,CAAC,CAAC;EAElC,oBACEzD,KAAA,CAAAkE,aAAA,CAACzD,wBAAwB,EAAA0D,QAAA,KACnBtD,KAAK;IACTuD,GAAG,EAAEjD,WAAY;IACjBQ,YAAY,EAAEF,aAAc;IAC5BI,eAAe,EAAED,gBAAiB;IAClCyC,aAAa,EAAEtD,gBAAiB;IAChCuD,wBAAwB,EAAExC,cAAe;IACzCyC,2BAA2B,EAAEzC,cAAe;IAC5C0C,uBAAuB,EAAE,IAAK;IAC9BC,0BAA0B,EAAE;EAAK,GACjC;AAEN,CAAC;AAED,4BAAezE,KAAK,CAAC0E,IAAI,CAAC9D,6BAA6B,CAAC"}
@@ -4,6 +4,7 @@ import { Avatar, Divider, Icon, Text, createStyleSheet, useAlert, useBottomSheet
4
4
  import { Logger, getAvailableUriFromFileMessage, getFileExtension, getFileType, isMyMessage, isVoiceMessage, shouldRenderReaction, toMegabyte } from '@sendbird/uikit-utils';
5
5
  import ThreadParentMessageRenderer from '../../../components/ThreadParentMessageRenderer';
6
6
  import { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../../hooks/useContext';
7
+ import SBUUtils from '../../../libs/SBUUtils';
7
8
  import { GroupChannelThreadContexts } from '../module/moduleContext';
8
9
  import { ReactionAddons } from './../../../components/ReactionAddons';
9
10
  const GroupChannelThreadParentMessageInfo = props => {
@@ -204,9 +205,13 @@ const useCreateMessagePressActions = _ref => {
204
205
  if (message.isFileMessage()) {
205
206
  const fileType = getFileType(message.type || getFileExtension(message.name));
206
207
  if (['image', 'video', 'audio'].includes(fileType)) {
207
- onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage === null || onDeleteMessage === void 0 ? void 0 : onDeleteMessage(message), getAvailableUriFromFileMessage(message));
208
+ var _handlers$onOpenFileU;
209
+ onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));
210
+ (_handlers$onOpenFileU = handlers.onOpenFileURL) === null || _handlers$onOpenFileU === void 0 ? void 0 : _handlers$onOpenFileU.call(handlers, message.url);
211
+ } else {
212
+ const openFile = handlers.onOpenFileURL ?? SBUUtils.openURL;
213
+ openFile(message.url);
208
214
  }
209
- handlers.onOpenFileURL(message.url);
210
215
  }
211
216
  };
212
217
  const alertForMessageDelete = message => {
@@ -218,7 +223,7 @@ const useCreateMessagePressActions = _ref => {
218
223
  text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,
219
224
  style: 'destructive',
220
225
  onPress: () => {
221
- onDeleteMessage === null || onDeleteMessage === void 0 ? void 0 : onDeleteMessage(message).catch(onDeleteFailure);
226
+ onDeleteMessage(message).catch(onDeleteFailure);
222
227
  }
223
228
  }]
224
229
  });