@sendbird/uikit-react-native 3.0.4 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/lib/commonjs/components/ChannelInput/SendInput.js +151 -19
  2. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/index.js +5 -13
  4. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  5. package/lib/commonjs/components/ChannelMessageList/index.js +34 -20
  6. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  7. package/lib/commonjs/components/ChatFlatList/index.js +1 -1
  8. package/lib/commonjs/components/ChatFlatList/index.js.map +1 -1
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +4 -1
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +191 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -0
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +12 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  15. package/lib/commonjs/components/MessageSearchResultItem.js +2 -8
  16. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  17. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +8 -7
  18. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  19. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +3 -9
  20. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  21. package/lib/commonjs/containers/SendbirdUIKitContainer.js +43 -9
  22. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  23. package/lib/commonjs/contexts/SendbirdChatCtx.js +5 -0
  24. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  25. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +5 -1
  26. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  27. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +47 -10
  28. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  29. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +38 -3
  30. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  31. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  32. package/lib/commonjs/domain/openChannel/types.js.map +1 -1
  33. package/lib/commonjs/fragments/createGroupChannelFragment.js +19 -0
  34. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  35. package/lib/commonjs/hooks/useConnection.js +2 -1
  36. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  37. package/lib/commonjs/hooks/useMentionSuggestion.js +1 -1
  38. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  39. package/lib/commonjs/hooks/useMentionTextInput.js +4 -3
  40. package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -1
  41. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  42. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  43. package/lib/commonjs/localization/createBaseStringSet.js +29 -0
  44. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  45. package/lib/commonjs/platform/createMediaService.native.js +1 -1
  46. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  47. package/lib/commonjs/platform/types.js.map +1 -1
  48. package/lib/commonjs/utils/pubsub.js +3 -1
  49. package/lib/commonjs/utils/pubsub.js.map +1 -1
  50. package/lib/commonjs/version.js +1 -1
  51. package/lib/commonjs/version.js.map +1 -1
  52. package/lib/module/components/ChannelInput/SendInput.js +153 -21
  53. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  54. package/lib/module/components/ChannelInput/index.js +6 -14
  55. package/lib/module/components/ChannelInput/index.js.map +1 -1
  56. package/lib/module/components/ChannelMessageList/index.js +34 -20
  57. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  58. package/lib/module/components/ChatFlatList/index.js +1 -1
  59. package/lib/module/components/ChatFlatList/index.js.map +1 -1
  60. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +4 -1
  61. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -1
  62. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +182 -0
  63. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -0
  64. package/lib/module/components/GroupChannelMessageRenderer/index.js +13 -2
  65. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  66. package/lib/module/components/MessageSearchResultItem.js +3 -9
  67. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  68. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +8 -7
  69. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  70. package/lib/module/containers/GroupChannelPreviewContainer.js +4 -10
  71. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  72. package/lib/module/containers/SendbirdUIKitContainer.js +43 -9
  73. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  74. package/lib/module/contexts/SendbirdChatCtx.js +6 -1
  75. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  76. package/lib/module/domain/groupChannel/component/GroupChannelInput.js +5 -1
  77. package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  78. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +50 -13
  79. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  80. package/lib/module/domain/groupChannel/module/moduleContext.js +39 -4
  81. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  82. package/lib/module/domain/groupChannel/types.js.map +1 -1
  83. package/lib/module/domain/openChannel/types.js.map +1 -1
  84. package/lib/module/fragments/createGroupChannelFragment.js +19 -0
  85. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  86. package/lib/module/hooks/useConnection.js +2 -1
  87. package/lib/module/hooks/useConnection.js.map +1 -1
  88. package/lib/module/hooks/useMentionSuggestion.js +1 -1
  89. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  90. package/lib/module/hooks/useMentionTextInput.js +4 -3
  91. package/lib/module/hooks/useMentionTextInput.js.map +1 -1
  92. package/lib/module/libs/MentionManager.js.map +1 -1
  93. package/lib/module/localization/StringSet.type.js.map +1 -1
  94. package/lib/module/localization/createBaseStringSet.js +30 -1
  95. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  96. package/lib/module/platform/createMediaService.native.js +1 -1
  97. package/lib/module/platform/createMediaService.native.js.map +1 -1
  98. package/lib/module/platform/types.js.map +1 -1
  99. package/lib/module/utils/pubsub.js +3 -1
  100. package/lib/module/utils/pubsub.js.map +1 -1
  101. package/lib/module/version.js +1 -1
  102. package/lib/module/version.js.map +1 -1
  103. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -0
  104. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -1
  105. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +9 -0
  106. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +1 -0
  107. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
  108. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +4 -2
  109. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +4 -0
  110. package/lib/typescript/src/domain/groupChannel/types.d.ts +6 -2
  111. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  112. package/lib/typescript/src/domain/openChannel/types.d.ts +1 -2
  113. package/lib/typescript/src/libs/MentionManager.d.ts +1 -4
  114. package/lib/typescript/src/localization/StringSet.type.d.ts +7 -1
  115. package/lib/typescript/src/platform/types.d.ts +10 -11
  116. package/lib/typescript/src/version.d.ts +1 -1
  117. package/package.json +6 -6
  118. package/src/components/ChannelInput/SendInput.tsx +184 -51
  119. package/src/components/ChannelInput/index.tsx +11 -15
  120. package/src/components/ChannelMessageList/index.tsx +45 -27
  121. package/src/components/ChatFlatList/index.tsx +1 -1
  122. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.tsx +5 -1
  123. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +177 -0
  124. package/src/components/GroupChannelMessageRenderer/index.tsx +16 -1
  125. package/src/components/MessageSearchResultItem.tsx +3 -5
  126. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +6 -7
  127. package/src/containers/GroupChannelPreviewContainer.tsx +6 -7
  128. package/src/containers/SendbirdUIKitContainer.tsx +40 -10
  129. package/src/contexts/SendbirdChatCtx.tsx +7 -1
  130. package/src/domain/groupChannel/component/GroupChannelInput.tsx +5 -1
  131. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +46 -13
  132. package/src/domain/groupChannel/module/moduleContext.tsx +38 -3
  133. package/src/domain/groupChannel/types.ts +8 -2
  134. package/src/domain/openChannel/types.ts +1 -2
  135. package/src/fragments/createGroupChannelFragment.tsx +15 -0
  136. package/src/hooks/useConnection.ts +1 -1
  137. package/src/hooks/useMentionSuggestion.ts +2 -1
  138. package/src/hooks/useMentionTextInput.ts +2 -2
  139. package/src/libs/MentionManager.tsx +1 -8
  140. package/src/localization/StringSet.type.ts +11 -0
  141. package/src/localization/createBaseStringSet.ts +30 -0
  142. package/src/platform/createMediaService.native.tsx +1 -1
  143. package/src/platform/types.ts +9 -9
  144. package/src/utils/pubsub.ts +3 -1
  145. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","Avatar","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","getFileExtension","getFileType","useIIFE","useLocalization","iconMapper","audio","image","video","file","MessageSearchResultItem","_ref","onPress","message","colors","select","palette","STRINGS","fileIcon","isFileMessage","undefined","type","name","createElement","style","styles","container","size","avatarSize","width","uri","getSenderProfile","containerStyle","avatar","flex","paddingRight","titleLine","marginRight","justifyContent","subtitle2","color","onBackground01","numberOfLines","MESSAGE_SEARCH","SEARCH_RESULT_ITEM_TITLE","paddingTop","caption2","onBackground02","SEARCH_RESULT_ITEM_TITLE_CAPTION","alignItems","flexDirection","icon","bodyIcon","backgroundColor","light","background100","dark","background500","body3","ellipsizeMode","bodyText","onBackground03","SEARCH_RESULT_ITEM_BODY","separator","onBackground04","isUserMessage","sender","profileUrl","height","marginHorizontal","marginTop","marginBottom","borderRadius","lineHeight","position","left","right","bottom"],"sources":["MessageSearchResultItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Avatar,\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { getFileExtension, getFileType, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { MessageSearchProps } from '../domain/messageSearch/types';\nimport { useLocalization } from '../hooks/useContext';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\nconst MessageSearchResultItem: MessageSearchProps['List']['renderSearchResultItem'] = ({ onPress, message }) => {\n const { colors, select, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n\n const fileIcon = useIIFE(() => {\n if (!message?.isFileMessage()) return undefined;\n return iconMapper[getFileType(message.type || getFileExtension(message.name))];\n });\n\n return (\n <PressBox onPress={onPress}>\n <Box style={styles.container}>\n <Avatar size={styles.avatarSize.width} uri={getSenderProfile(message)} containerStyle={styles.avatar} />\n\n <Box flex={1} paddingRight={16}>\n <Box style={styles.titleLine}>\n <Box flex={1} marginRight={4} justifyContent={'center'}>\n <Text subtitle2 color={colors.onBackground01} numberOfLines={1}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE(message)}\n </Text>\n </Box>\n <Box paddingTop={2}>\n <Text caption2 color={colors.onBackground02}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE_CAPTION(message)}\n </Text>\n </Box>\n </Box>\n\n <Box flex={1}>\n <Box alignItems={'center'} flexDirection={'row'}>\n {fileIcon && (\n <Icon\n size={18}\n icon={fileIcon}\n color={colors.onBackground02}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: select({ light: palette.background100, dark: palette.background500 }) },\n ]}\n />\n )}\n\n <Text\n body3\n numberOfLines={fileIcon ? 1 : 2}\n ellipsizeMode={fileIcon ? 'middle' : 'tail'}\n style={styles.bodyText}\n color={colors.onBackground03}\n >\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_BODY(message)}\n </Text>\n </Box>\n </Box>\n\n <Box style={styles.separator} backgroundColor={colors.onBackground04} />\n </Box>\n </Box>\n </PressBox>\n );\n};\n\nfunction getSenderProfile(message: SendbirdBaseMessage) {\n if (message.isUserMessage() || message.isFileMessage()) {\n return message.sender.profileUrl;\n } else {\n return undefined;\n }\n}\n\nconst styles = createStyleSheet({\n container: {\n height: 76,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatar: {\n marginHorizontal: 16,\n },\n avatarSize: {\n width: 56,\n },\n titleLine: {\n flexDirection: 'row',\n marginTop: 10,\n marginBottom: 4,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n bodyText: {\n flex: 1,\n lineHeight: 16,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default MessageSearchResultItem;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Avatar","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","getFileIconFromMessage","useIIFE","useLocalization","MessageSearchResultItem","_ref","onPress","message","colors","select","palette","STRINGS","fileIcon","isFileMessage","undefined","createElement","style","styles","container","size","avatarSize","width","uri","getSenderProfile","containerStyle","avatar","flex","paddingRight","titleLine","marginRight","justifyContent","subtitle2","color","onBackground01","numberOfLines","MESSAGE_SEARCH","SEARCH_RESULT_ITEM_TITLE","paddingTop","caption2","onBackground02","SEARCH_RESULT_ITEM_TITLE_CAPTION","alignItems","flexDirection","icon","bodyIcon","backgroundColor","light","background100","dark","background500","body3","ellipsizeMode","bodyText","onBackground03","SEARCH_RESULT_ITEM_BODY","separator","onBackground04","isUserMessage","sender","profileUrl","height","marginHorizontal","marginTop","marginBottom","borderRadius","lineHeight","position","left","right","bottom"],"sources":["MessageSearchResultItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Avatar,\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { getFileIconFromMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { MessageSearchProps } from '../domain/messageSearch/types';\nimport { useLocalization } from '../hooks/useContext';\n\nconst MessageSearchResultItem: MessageSearchProps['List']['renderSearchResultItem'] = ({ onPress, message }) => {\n const { colors, select, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n\n const fileIcon = useIIFE(() => {\n if (!message?.isFileMessage()) return undefined;\n return getFileIconFromMessage(message);\n });\n\n return (\n <PressBox onPress={onPress}>\n <Box style={styles.container}>\n <Avatar size={styles.avatarSize.width} uri={getSenderProfile(message)} containerStyle={styles.avatar} />\n\n <Box flex={1} paddingRight={16}>\n <Box style={styles.titleLine}>\n <Box flex={1} marginRight={4} justifyContent={'center'}>\n <Text subtitle2 color={colors.onBackground01} numberOfLines={1}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE(message)}\n </Text>\n </Box>\n <Box paddingTop={2}>\n <Text caption2 color={colors.onBackground02}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE_CAPTION(message)}\n </Text>\n </Box>\n </Box>\n\n <Box flex={1}>\n <Box alignItems={'center'} flexDirection={'row'}>\n {fileIcon && (\n <Icon\n icon={fileIcon}\n size={18}\n color={colors.onBackground02}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: select({ light: palette.background100, dark: palette.background500 }) },\n ]}\n />\n )}\n\n <Text\n body3\n numberOfLines={fileIcon ? 1 : 2}\n ellipsizeMode={fileIcon ? 'middle' : 'tail'}\n style={styles.bodyText}\n color={colors.onBackground03}\n >\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_BODY(message)}\n </Text>\n </Box>\n </Box>\n\n <Box style={styles.separator} backgroundColor={colors.onBackground04} />\n </Box>\n </Box>\n </PressBox>\n );\n};\n\nfunction getSenderProfile(message: SendbirdBaseMessage) {\n if (message.isUserMessage() || message.isFileMessage()) {\n return message.sender.profileUrl;\n } else {\n return undefined;\n }\n}\n\nconst styles = createStyleSheet({\n container: {\n height: 76,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatar: {\n marginHorizontal: 16,\n },\n avatarSize: {\n width: 56,\n },\n titleLine: {\n flexDirection: 'row',\n marginTop: 10,\n marginBottom: 4,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n bodyText: {\n flex: 1,\n lineHeight: 16,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default MessageSearchResultItem;\n"],"mappings":"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"}
@@ -32,13 +32,14 @@ const BottomSheetReactionAddon = _ref => {
32
32
  useChannelHandler(sdk, handlerId, {
33
33
  async onReactionUpdated(eventChannel, event) {
34
34
  if ((channel === null || channel === void 0 ? void 0 : channel.url) === eventChannel.url && event.messageId === (message === null || message === void 0 ? void 0 : message.messageId)) {
35
- updateReactionFocusedItem({
36
- message: await sdk.message.getMessage({
37
- includeReactions: true,
38
- messageId: message.messageId,
39
- channelUrl: message.channelUrl,
40
- channelType: message.channelType
41
- })
35
+ const msg = await sdk.message.getMessage({
36
+ includeReactions: true,
37
+ messageId: message.messageId,
38
+ channelUrl: message.channelUrl,
39
+ channelType: message.channelType
40
+ });
41
+ if (msg) updateReactionFocusedItem({
42
+ message: msg
42
43
  });
43
44
  }
44
45
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","Pressable","View","useSafeAreaInsets","useChannelHandler","Icon","Image","createStyleSheet","useUIKitTheme","useUniqHandlerId","UNKNOWN_USER_ID","useReaction","useSendbirdChat","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","updateReactionFocusedItem","openReactionList","colors","handlerId","left","right","onReactionUpdated","eventChannel","event","url","messageId","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","default","createElement","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","reacted","onPress","deleteReaction","addReaction","_ref3","pressed","button","backgroundColor","selected","background","enabled","source","uri","emoji","_ref4","icon","onBackground03","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n updateReactionFocusedItem({\n message: await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n }),\n });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Pressable","View","useSafeAreaInsets","useChannelHandler","Icon","Image","createStyleSheet","useUIKitTheme","useUniqHandlerId","UNKNOWN_USER_ID","useReaction","useSendbirdChat","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","updateReactionFocusedItem","openReactionList","colors","handlerId","left","right","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","default","createElement","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","reacted","onPress","deleteReaction","addReaction","_ref3","pressed","button","backgroundColor","selected","background","enabled","source","uri","emoji","_ref4","icon","onBackground03","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n });\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"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"}
@@ -2,16 +2,10 @@ import React, { useState } from 'react';
2
2
  import { Pressable } from 'react-native';
3
3
  import { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';
4
4
  import { GroupChannelPreview, Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
5
- import { getFileExtension, getFileType, isDifferentChannel, isMyMessage, useIIFE, useUniqHandlerId } from '@sendbird/uikit-utils';
5
+ import { convertFileTypeToMessageType, getFileIconFromMessageType, getFileTypeFromMessage, isDifferentChannel, isMyMessage, useIIFE, useUniqHandlerId } from '@sendbird/uikit-utils';
6
6
  import ChannelCover from '../components/ChannelCover';
7
7
  import { DEFAULT_LONG_PRESS_DELAY } from '../constants';
8
8
  import { useLocalization, useSendbirdChat } from '../hooks/useContext';
9
- const iconMapper = {
10
- audio: 'file-audio',
11
- image: 'photo',
12
- video: 'play',
13
- file: 'file-document'
14
- };
15
9
  const GroupChannelPreviewContainer = _ref => {
16
10
  let {
17
11
  onPress,
@@ -43,11 +37,11 @@ const GroupChannelPreviewContainer = _ref => {
43
37
  const bodyText = useIIFE(() => {
44
38
  if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);
45
39
  });
46
- const fileIcon = useIIFE(() => {
40
+ const fileType = useIIFE(() => {
47
41
  var _channel$lastMessage;
48
42
  if (!((_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage())) return undefined;
49
43
  if (typingUsers.length > 0) return undefined;
50
- return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];
44
+ return getFileTypeFromMessage(channel.lastMessage);
51
45
  });
52
46
  const titleCaptionIcon = useIIFE(() => {
53
47
  if (!channel.lastMessage || channel.isEphemeral) return undefined;
@@ -108,7 +102,7 @@ const GroupChannelPreviewContainer = _ref => {
108
102
  titleCaptionLeft: titleCaptionIcon,
109
103
  titleCaption: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel),
110
104
  body: bodyText,
111
- bodyIcon: fileIcon,
105
+ bodyIcon: fileType && getFileIconFromMessageType(convertFileTypeToMessageType(fileType)),
112
106
  badgeCount: unreadMessageCount,
113
107
  mentioned: channel.unreadMentionCount > 0,
114
108
  mentionTrigger: mentionManager.config.trigger,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","getFileExtension","getFileType","isDifferentChannel","isMyMessage","useIIFE","useUniqHandlerId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","iconMapper","audio","image","video","file","GroupChannelPreviewContainer","_ref","onPress","onLongPress","channel","currentUser","sdk","sbOptions","mentionManager","STRINGS","colors","typingUsers","setTypingUsers","handlerId","onTypingStatusUpdated","eventChannel","uikit","groupChannel","channelList","enableTypingIndicator","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","fileIcon","_channel$lastMessage","isFileMessage","undefined","type","name","titleCaptionIcon","isEphemeral","enableMessageReceiptStatus","userId","createElement","size","style","styles","icon","color","error","onBackground03","containerStyle","secondary","unreadMessageCount","delayLongPress","customCover","coverUrl","title","CHANNEL_PREVIEW_TITLE","titleCaptionLeft","titleCaption","CHANNEL_PREVIEW_TITLE_CAPTION","body","bodyIcon","badgeCount","mentioned","unreadMentionCount","mentionTrigger","config","trigger","memberCount","frozen","isFrozen","broadcast","isBroadcast","notificationOff","myPushTriggerOption","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');\n useChannelHandler(sdk, handlerId, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const fileIcon = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage || channel.isEphemeral) return undefined;\n if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={fileIcon}\n badgeCount={unreadMessageCount}\n mentioned={channel.unreadMentionCount > 0}\n mentionTrigger={mentionManager.config.trigger}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","convertFileTypeToMessageType","getFileIconFromMessageType","getFileTypeFromMessage","isDifferentChannel","isMyMessage","useIIFE","useUniqHandlerId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","GroupChannelPreviewContainer","_ref","onPress","onLongPress","channel","currentUser","sdk","sbOptions","mentionManager","STRINGS","colors","typingUsers","setTypingUsers","handlerId","onTypingStatusUpdated","eventChannel","uikit","groupChannel","channelList","enableTypingIndicator","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","fileType","_channel$lastMessage","isFileMessage","undefined","titleCaptionIcon","isEphemeral","enableMessageReceiptStatus","userId","createElement","size","style","styles","icon","color","error","onBackground03","containerStyle","secondary","unreadMessageCount","delayLongPress","customCover","coverUrl","title","CHANNEL_PREVIEW_TITLE","titleCaptionLeft","titleCaption","CHANNEL_PREVIEW_TITLE_CAPTION","body","bodyIcon","badgeCount","mentioned","unreadMentionCount","mentionTrigger","config","trigger","memberCount","frozen","isFrozen","broadcast","isBroadcast","notificationOff","myPushTriggerOption","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n convertFileTypeToMessageType,\n getFileIconFromMessageType,\n getFileTypeFromMessage,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');\n useChannelHandler(sdk, handlerId, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const fileType = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return getFileTypeFromMessage(channel.lastMessage);\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage || channel.isEphemeral) return undefined;\n if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={fileType && getFileIconFromMessageType(convertFileTypeToMessageType(fileType))}\n badgeCount={unreadMessageCount}\n mentioned={channel.unreadMentionCount > 0}\n mentionTrigger={mentionManager.config.trigger}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
2
2
  import { Platform } from 'react-native';
3
3
  import { SafeAreaProvider } from 'react-native-safe-area-context';
4
- import Sendbird from '@sendbird/chat';
4
+ import Sendbird, { DeviceOsPlatform, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';
5
5
  import { GroupChannelModule } from '@sendbird/chat/groupChannel';
6
6
  import { OpenChannelModule } from '@sendbird/chat/openChannel';
7
7
  import { DialogProvider, Header, HeaderStyleProvider, LightUIKitTheme, ToastProvider, UIKitThemeProvider } from '@sendbird/uikit-react-native-foundation';
@@ -83,13 +83,11 @@ const SendbirdUIKitContainer = _ref => {
83
83
  unsubscribes.current = sendbird.unsubscribes;
84
84
  }
85
85
  return () => {
86
- if (!isFirstMount) {
87
- unsubscribes.current.forEach(u => {
88
- try {
89
- u();
90
- } catch {}
91
- });
92
- }
86
+ unsubscribes.current.forEach(u => {
87
+ try {
88
+ u();
89
+ } catch {}
90
+ });
93
91
  };
94
92
  }, [appId, internalStorage]);
95
93
  const renderChildren = () => {
@@ -168,7 +166,21 @@ const initializeSendbird = (appId, internalStorage, onInitialized) => {
168
166
  if (onInitialized) {
169
167
  chatSDK = onInitialized(chatSDK);
170
168
  }
171
- if (SendbirdUIKit.VERSION) {
169
+ const platform = getDeviceOSPlatform();
170
+ if (SendbirdUIKit.VERSION && platform) {
171
+ const deviceOSInfo = {
172
+ platform,
173
+ version: String(Platform.Version)
174
+ };
175
+ const customData = {
176
+ platform_version: getReactNativeVersion()
177
+ };
178
+ const uikitExtension = {
179
+ product: SendbirdProduct.UIKIT_CHAT,
180
+ version: SendbirdUIKit.VERSION,
181
+ platform: SendbirdPlatform.REACT_NATIVE
182
+ };
183
+ chatSDK.addSendbirdExtensions([uikitExtension], deviceOSInfo, customData);
172
184
  chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);
173
185
  }
174
186
  if (SendbirdUIKit.PLATFORM) {
@@ -210,5 +222,27 @@ const initializeSendbird = (appId, internalStorage, onInitialized) => {
210
222
  unsubscribes
211
223
  };
212
224
  };
225
+ function getDeviceOSPlatform() {
226
+ switch (Platform.OS) {
227
+ case 'android':
228
+ return DeviceOsPlatform.ANDROID;
229
+ case 'ios':
230
+ return DeviceOsPlatform.IOS;
231
+ case 'web':
232
+ return DeviceOsPlatform.WEB;
233
+ case 'windows':
234
+ return DeviceOsPlatform.WINDOWS;
235
+ default:
236
+ return undefined;
237
+ }
238
+ }
239
+ function getReactNativeVersion() {
240
+ const {
241
+ major,
242
+ minor,
243
+ patch
244
+ } = Platform.constants.reactNativeVersion;
245
+ return `${major}.${minor}.${patch}`;
246
+ }
213
247
  export default SendbirdUIKitContainer;
214
248
  //# sourceMappingURL=SendbirdUIKitContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","Sendbird","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","USE_USER_ID_FOR_NICKNAME","IMAGE_COMPRESSION","SendbirdUIKitContainer","_ref","children","appId","chatOptions","uikitOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","userMention","imageCompression","localCacheStorage","Error","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","sdkInstance","setSdkInstance","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","mentionManager","config","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","imageCompressionConfig","compressionRate","COMPRESSION_RATE","width","height","forEach","u","renderChildren","disabled","createElement","storage","localConfigs","common","groupChannel","channel","channelList","groupChannelList","setting","groupChannelSettings","openChannel","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","fileService","file","notificationService","notification","clipboardService","clipboard","mediaService","media","theme","HeaderComponent","defaultTitleAlign","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","Consumer","value","STRINGS","defaultLabels","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","init","modules","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","addExtension","addEventListener","_chatSDK$setOnlineLis","_chatSDK","_chatSDK$setOfflineLi","_chatSDK2","listener","callback","callbackType","callCount","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","call","onOnline","setOfflineListener","onOffline"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';\nimport type {\n PartialDeep,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\ntype UnimplementedFeatures = 'enableVoiceMessage' | 'threadReplySelectType' | 'replyType';\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 SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media: MediaServiceInterface;\n };\n chatOptions: {\n localCacheStorage: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<ChatRelatedFeaturesInUIKit>;\n uikitOptions?: PartialDeep<{\n common: SBUConfig['common'];\n groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures>;\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) => JSX.Element;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n uikitOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n userMention,\n imageCompression,\n}: SendbirdUIKitContainerProps) => {\n if (!chatOptions.localCacheStorage) {\n throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');\n }\n\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n\n const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n\n const mentionManager = useMemo(() => {\n const config = new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n return new MentionManager(config);\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 useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n if (!isFirstMount) {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n }\n };\n }, [appId, internalStorage]);\n\n const renderChildren = () => {\n if (errorBoundary?.disabled) {\n return children;\n } else {\n return <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>;\n }\n };\n\n return (\n <SafeAreaProvider>\n <UIKitConfigProvider\n storage={internalStorage}\n localConfigs={{\n common: uikitOptions?.common,\n groupChannel: {\n channel: uikitOptions?.groupChannel,\n channelList: uikitOptions?.groupChannelList,\n setting: uikitOptions?.groupChannelSettings,\n },\n openChannel: {\n channel: uikitOptions?.openChannel,\n },\n }}\n >\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n 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 >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ReactionProvider>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {renderChildren()}\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </UIKitConfigProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n if (SendbirdUIKit.VERSION) {\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n 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\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useLayoutEffect","useMemo","useRef","useState","Platform","SafeAreaProvider","Sendbird","DeviceOsPlatform","SendbirdPlatform","SendbirdProduct","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","UIKitConfigProvider","NOOP","useIsFirstMount","LocalizationContext","LocalizationProvider","PlatformServiceProvider","ReactionProvider","SendbirdChatProvider","UserProfileProvider","EmojiManager","ImageCompressionConfig","InternalLocalCacheStorage","MentionConfig","MentionManager","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","USE_USER_ID_FOR_NICKNAME","IMAGE_COMPRESSION","SendbirdUIKitContainer","_ref","children","appId","chatOptions","uikitOptions","platformServices","localization","styles","errorBoundary","toast","userProfile","userMention","imageCompression","localCacheStorage","Error","defaultStringSet","stringSet","isFirstMount","unsubscribes","internalStorage","sdkInstance","setSdkInstance","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","mentionManager","config","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","imageCompressionConfig","compressionRate","COMPRESSION_RATE","width","height","forEach","u","renderChildren","disabled","createElement","storage","localConfigs","common","groupChannel","channel","channelList","groupChannelList","setting","groupChannelSettings","openChannel","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","fileService","file","notificationService","notification","clipboardService","clipboard","mediaService","media","theme","HeaderComponent","defaultTitleAlign","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","Consumer","value","STRINGS","defaultLabels","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","init","modules","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","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","isConnected","isInternetReachable","push","setOnlineListener","call","onOnline","setOfflineListener","onOffline","ANDROID","IOS","WEB","WINDOWS","undefined","major","minor","patch","constants","reactNativeVersion"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird, { DeviceOsPlatform, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';\nimport type {\n PartialDeep,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport type { ImageCompressionConfigInterface } from '../libs/ImageCompressionConfig';\nimport ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\ntype UnimplementedFeatures = 'enableVoiceMessage' | 'threadReplySelectType' | 'replyType';\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 SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media: MediaServiceInterface;\n };\n chatOptions: {\n localCacheStorage: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<ChatRelatedFeaturesInUIKit>;\n uikitOptions?: PartialDeep<{\n common: SBUConfig['common'];\n groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures> & {\n replyType: Extract<SBUConfig['groupChannel']['channel']['replyType'], 'none' | 'quote_reply'>;\n };\n groupChannelList: SBUConfig['groupChannel']['channelList'];\n groupChannelSettings: SBUConfig['groupChannel']['setting'];\n openChannel: SBUConfig['openChannel']['channel'];\n }>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n errorBoundary?: {\n disabled?: boolean;\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n imageCompression?: Partial<ImageCompressionConfigInterface>;\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n uikitOptions,\n platformServices,\n localization,\n styles,\n errorBoundary,\n toast,\n userProfile,\n userMention,\n imageCompression,\n}: SendbirdUIKitContainerProps) => {\n if (!chatOptions.localCacheStorage) {\n throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');\n }\n\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n\n const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n\n const mentionManager = useMemo(() => {\n const config = new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n return new MentionManager(config);\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 useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, internalStorage]);\n\n const renderChildren = () => {\n if (errorBoundary?.disabled) {\n return children;\n } else {\n return <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>;\n }\n };\n\n return (\n <SafeAreaProvider>\n <UIKitConfigProvider\n storage={internalStorage}\n localConfigs={{\n common: uikitOptions?.common,\n groupChannel: {\n channel: uikitOptions?.groupChannel,\n channelList: uikitOptions?.groupChannelList,\n setting: uikitOptions?.groupChannelSettings,\n },\n openChannel: {\n channel: uikitOptions?.openChannel,\n },\n }}\n >\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n imageCompressionConfig={imageCompressionConfig}\n 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 >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ReactionProvider>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {renderChildren()}\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </UIKitConfigProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n 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\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useState } from 'react';
1
+ import React, { useCallback, useEffect, useState } from 'react';
2
2
  import { useAppFeatures } from '@sendbird/uikit-chat-hooks';
3
3
  import { useUIKitConfig } from '@sendbird/uikit-tools';
4
4
  import { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';
@@ -55,6 +55,11 @@ export const SendbirdChatProvider = _ref => {
55
55
  // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';
56
56
  if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();
57
57
  });
58
+ useEffect(() => {
59
+ return () => {
60
+ sdkInstance.disconnect().then(() => _setCurrentUser(undefined));
61
+ };
62
+ }, [sdkInstance]);
58
63
  const value = {
59
64
  sdk: sdkInstance,
60
65
  emojiManager,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","imageCompressionConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","value","sdk","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type { FileType } from '../platform/types';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n}\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n enableReactions: boolean;\n enableOgtag: boolean;\n };\n setting: {\n enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useState","useAppFeatures","useUIKitConfig","confirmAndMarkAsDelivered","useAppState","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","_ref","children","sdkInstance","emojiManager","mentionManager","imageCompressionConfig","enableAutoPushTokenRegistration","enableUseUserIdForNickname","enableImageCompression","currentUser","_setCurrentUser","forceUpdate","appFeatures","configs","configsWithAppAttr","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","status","connectionState","setForegroundState","setBackgroundState","disconnect","then","undefined","value","sdk","sbOptions","appInfo","uikit","uikitWithAppInfo","chat","autoPushTokenRegistrationEnabled","useUserIdForNicknameEnabled","imageCompressionEnabled","createElement","Provider"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAppState, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type ImageCompressionConfig from '../libs/ImageCompressionConfig';\nimport type MentionManager from '../libs/MentionManager';\nimport type { FileType } from '../platform/types';\n\nexport interface ChatRelatedFeaturesInUIKit {\n enableAutoPushTokenRegistration: boolean;\n enableUseUserIdForNickname: boolean;\n enableImageCompression: boolean;\n}\n\ninterface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n}\n\nexport type SendbirdChatContextType = {\n sdk: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n imageCompressionConfig: ImageCompressionConfig;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n sbOptions: {\n // UIKit options\n uikit: SBUConfig;\n uikitWithAppInfo: {\n groupChannel: {\n channel: {\n enableReactions: boolean;\n enableOgtag: boolean;\n };\n setting: {\n enableMessageSearch: boolean;\n };\n };\n openChannel: {\n channel: {\n enableOgtag: boolean;\n };\n };\n };\n\n // Chat related options in UIKit\n chat: {\n imageCompressionEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n autoPushTokenRegistrationEnabled: boolean; // RN only\n };\n\n // Sendbird application options\n appInfo: {\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n };\n};\n\nexport const SendbirdChatContext = React.createContext<SendbirdChatContextType | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n enableAutoPushTokenRegistration,\n enableUseUserIdForNickname,\n enableImageCompression,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n const { configs, configsWithAppAttr } = useUIKitConfig();\n\n const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: SendbirdChatContextType['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: SendbirdChatContextType['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useAppState('change', (status) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n });\n\n useEffect(() => {\n return () => {\n sdkInstance.disconnect().then(() => _setCurrentUser(undefined));\n };\n }, [sdkInstance]);\n\n const value: SendbirdChatContextType = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n imageCompressionConfig,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.\n // For example, common -> chat context, common -> calls context\n sbOptions: {\n appInfo: appFeatures,\n uikit: configs,\n uikitWithAppInfo: configsWithAppAttr(sdkInstance),\n chat: {\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n imageCompressionEnabled: enableImageCompression,\n },\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
@@ -6,15 +6,19 @@ import { GroupChannelContexts } from '../module/moduleContext';
6
6
  const GroupChannelInput = props => {
7
7
  const {
8
8
  channel,
9
+ keyboardAvoidOffset = 0,
9
10
  messageToEdit,
10
11
  setMessageToEdit,
11
- keyboardAvoidOffset = 0
12
+ messageToReply,
13
+ setMessageToReply
12
14
  } = useContext(GroupChannelContexts.Fragment);
13
15
  const chatAvailableState = getGroupChannelChatAvailableState(channel);
14
16
  return /*#__PURE__*/React.createElement(ChannelInput, _extends({
15
17
  channel: channel,
16
18
  messageToEdit: messageToEdit,
17
19
  setMessageToEdit: setMessageToEdit,
20
+ messageToReply: messageToReply,
21
+ setMessageToReply: setMessageToReply,
18
22
  inputMuted: chatAvailableState.muted,
19
23
  inputFrozen: chatAvailableState.frozen,
20
24
  inputDisabled: chatAvailableState.disabled,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","getGroupChannelChatAvailableState","ChannelInput","GroupChannelContexts","GroupChannelInput","props","channel","messageToEdit","setMessageToEdit","keyboardAvoidOffset","Fragment","chatAvailableState","createElement","_extends","inputMuted","muted","inputFrozen","frozen","inputDisabled","disabled","memo"],"sources":["GroupChannelInput.tsx"],"sourcesContent":["import React, { useContext } from 'react';\n\nimport { getGroupChannelChatAvailableState } from '@sendbird/uikit-utils';\n\nimport ChannelInput from '../../../components/ChannelInput';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelInput = (props: GroupChannelProps['Input']) => {\n const {\n channel,\n messageToEdit,\n setMessageToEdit,\n keyboardAvoidOffset = 0,\n } = useContext(GroupChannelContexts.Fragment);\n\n const chatAvailableState = getGroupChannelChatAvailableState(channel);\n\n return (\n <ChannelInput\n channel={channel}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n inputMuted={chatAvailableState.muted}\n inputFrozen={chatAvailableState.frozen}\n inputDisabled={chatAvailableState.disabled}\n keyboardAvoidOffset={keyboardAvoidOffset}\n {...props}\n />\n );\n};\n\nexport default React.memo(GroupChannelInput);\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AAEzC,SAASC,iCAAiC,QAAQ,uBAAuB;AAEzE,OAAOC,YAAY,MAAM,kCAAkC;AAC3D,SAASC,oBAAoB,QAAQ,yBAAyB;AAG9D,MAAMC,iBAAiB,GAAIC,KAAiC,IAAK;EAC/D,MAAM;IACJC,OAAO;IACPC,aAAa;IACbC,gBAAgB;IAChBC,mBAAmB,GAAG;EACxB,CAAC,GAAGT,UAAU,CAACG,oBAAoB,CAACO,QAAQ,CAAC;EAE7C,MAAMC,kBAAkB,GAAGV,iCAAiC,CAACK,OAAO,CAAC;EAErE,oBACEP,KAAA,CAAAa,aAAA,CAACV,YAAY,EAAAW,QAAA;IACXP,OAAO,EAAEA,OAAQ;IACjBC,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCM,UAAU,EAAEH,kBAAkB,CAACI,KAAM;IACrCC,WAAW,EAAEL,kBAAkB,CAACM,MAAO;IACvCC,aAAa,EAAEP,kBAAkB,CAACQ,QAAS;IAC3CV,mBAAmB,EAAEA;EAAoB,GACrCJ,KAAK,EACT;AAEN,CAAC;AAED,4BAAeN,KAAK,CAACqB,IAAI,CAAChB,iBAAiB,CAAC"}
1
+ {"version":3,"names":["React","useContext","getGroupChannelChatAvailableState","ChannelInput","GroupChannelContexts","GroupChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","messageToReply","setMessageToReply","Fragment","chatAvailableState","createElement","_extends","inputMuted","muted","inputFrozen","frozen","inputDisabled","disabled","memo"],"sources":["GroupChannelInput.tsx"],"sourcesContent":["import React, { useContext } from 'react';\n\nimport { getGroupChannelChatAvailableState } from '@sendbird/uikit-utils';\n\nimport ChannelInput from '../../../components/ChannelInput';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst GroupChannelInput = (props: GroupChannelProps['Input']) => {\n const {\n channel,\n keyboardAvoidOffset = 0,\n messageToEdit,\n setMessageToEdit,\n messageToReply,\n setMessageToReply,\n } = useContext(GroupChannelContexts.Fragment);\n\n const chatAvailableState = getGroupChannelChatAvailableState(channel);\n\n return (\n <ChannelInput\n channel={channel}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n messageToReply={messageToReply}\n setMessageToReply={setMessageToReply}\n inputMuted={chatAvailableState.muted}\n inputFrozen={chatAvailableState.frozen}\n inputDisabled={chatAvailableState.disabled}\n keyboardAvoidOffset={keyboardAvoidOffset}\n {...props}\n />\n );\n};\n\nexport default React.memo(GroupChannelInput);\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AAEzC,SAASC,iCAAiC,QAAQ,uBAAuB;AAEzE,OAAOC,YAAY,MAAM,kCAAkC;AAC3D,SAASC,oBAAoB,QAAQ,yBAAyB;AAG9D,MAAMC,iBAAiB,GAAIC,KAAiC,IAAK;EAC/D,MAAM;IACJC,OAAO;IACPC,mBAAmB,GAAG,CAAC;IACvBC,aAAa;IACbC,gBAAgB;IAChBC,cAAc;IACdC;EACF,CAAC,GAAGX,UAAU,CAACG,oBAAoB,CAACS,QAAQ,CAAC;EAE7C,MAAMC,kBAAkB,GAAGZ,iCAAiC,CAACK,OAAO,CAAC;EAErE,oBACEP,KAAA,CAAAe,aAAA,CAACZ,YAAY,EAAAa,QAAA;IACXT,OAAO,EAAEA,OAAQ;IACjBE,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCC,cAAc,EAAEA,cAAe;IAC/BC,iBAAiB,EAAEA,iBAAkB;IACrCK,UAAU,EAAEH,kBAAkB,CAACI,KAAM;IACrCC,WAAW,EAAEL,kBAAkB,CAACM,MAAO;IACvCC,aAAa,EAAEP,kBAAkB,CAACQ,QAAS;IAC3Cd,mBAAmB,EAAEA;EAAoB,GACrCF,KAAK,EACT;AAEN,CAAC;AAED,4BAAeN,KAAK,CAACuB,IAAI,CAAClB,iBAAiB,CAAC"}