@sendbird/uikit-react-native 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +42 -17
  2. package/lib/commonjs/components/FileViewer.js +2 -5
  3. package/lib/commonjs/components/FileViewer.js.map +1 -1
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +1 -1
  7. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  8. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +1 -6
  9. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
  10. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +2 -2
  11. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  12. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +5 -3
  13. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  14. package/lib/commonjs/containers/SendbirdUIKitContainer.js +14 -3
  15. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  16. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  17. package/lib/commonjs/contexts/SendbirdChatCtx.js +10 -14
  18. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  19. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +68 -13
  20. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  21. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +1 -0
  22. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  23. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +3 -1
  24. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  25. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +2 -2
  26. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  27. package/lib/commonjs/fragments/createGroupChannelListFragment.js +4 -14
  28. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  29. package/lib/commonjs/hooks/useKeyboardStatus.js +13 -9
  30. package/lib/commonjs/hooks/useKeyboardStatus.js.map +1 -1
  31. package/lib/commonjs/index.js.map +1 -1
  32. package/lib/commonjs/libs/ImageCompressionConfig.js +38 -0
  33. package/lib/commonjs/libs/ImageCompressionConfig.js.map +1 -0
  34. package/lib/commonjs/libs/SBUUtils.js +27 -0
  35. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  36. package/lib/commonjs/localization/StringSet.type.js +3 -0
  37. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  38. package/lib/commonjs/platform/createMediaService.expo.js +35 -1
  39. package/lib/commonjs/platform/createMediaService.expo.js.map +1 -1
  40. package/lib/commonjs/platform/createMediaService.native.js +41 -6
  41. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  42. package/lib/commonjs/platform/dynamicModule.js +9 -57
  43. package/lib/commonjs/platform/dynamicModule.js.map +1 -1
  44. package/lib/commonjs/platform/types.js.map +1 -1
  45. package/lib/commonjs/version.js +1 -1
  46. package/lib/commonjs/version.js.map +1 -1
  47. package/lib/module/components/FileViewer.js +2 -5
  48. package/lib/module/components/FileViewer.js.map +1 -1
  49. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +1 -1
  50. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  51. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +1 -1
  52. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  53. package/lib/module/components/MessageRenderer/FileMessage/index.js +1 -5
  54. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
  55. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +2 -2
  56. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  57. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +4 -4
  58. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  59. package/lib/module/containers/SendbirdUIKitContainer.js +13 -3
  60. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  61. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  62. package/lib/module/contexts/SendbirdChatCtx.js +12 -14
  63. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  64. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +69 -14
  65. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  66. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +1 -0
  67. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  68. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +3 -2
  69. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  70. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +2 -2
  71. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  72. package/lib/module/fragments/createGroupChannelListFragment.js +5 -9
  73. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  74. package/lib/module/hooks/useKeyboardStatus.js +12 -9
  75. package/lib/module/hooks/useKeyboardStatus.js.map +1 -1
  76. package/lib/module/index.js.map +1 -1
  77. package/lib/module/libs/ImageCompressionConfig.js +30 -0
  78. package/lib/module/libs/ImageCompressionConfig.js.map +1 -0
  79. package/lib/module/libs/SBUUtils.js +26 -1
  80. package/lib/module/libs/SBUUtils.js.map +1 -1
  81. package/lib/module/localization/StringSet.type.js +3 -0
  82. package/lib/module/localization/StringSet.type.js.map +1 -1
  83. package/lib/module/platform/createMediaService.expo.js +33 -1
  84. package/lib/module/platform/createMediaService.expo.js.map +1 -1
  85. package/lib/module/platform/createMediaService.native.js +38 -5
  86. package/lib/module/platform/createMediaService.native.js.map +1 -1
  87. package/lib/module/platform/dynamicModule.js +10 -56
  88. package/lib/module/platform/dynamicModule.js.map +1 -1
  89. package/lib/module/platform/types.js.map +1 -1
  90. package/lib/module/version.js +1 -1
  91. package/lib/module/version.js.map +1 -1
  92. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +10 -7
  93. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -2
  94. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +8 -3
  95. package/lib/typescript/src/hooks/useContext.d.ts +2 -29
  96. package/lib/typescript/src/index.d.ts +1 -1
  97. package/lib/typescript/src/libs/ImageCompressionConfig.d.ts +16 -0
  98. package/lib/typescript/src/libs/SBUUtils.d.ts +6 -0
  99. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  100. package/lib/typescript/src/platform/createMediaService.expo.d.ts +5 -1
  101. package/lib/typescript/src/platform/createMediaService.native.d.ts +7 -5
  102. package/lib/typescript/src/platform/dynamicModule.d.ts +7 -12
  103. package/lib/typescript/src/platform/types.d.ts +28 -3
  104. package/lib/typescript/src/version.d.ts +1 -1
  105. package/package.json +15 -5
  106. package/src/components/FileViewer.tsx +2 -5
  107. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +6 -1
  108. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +1 -1
  109. package/src/components/MessageRenderer/FileMessage/index.tsx +1 -4
  110. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +2 -2
  111. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +4 -4
  112. package/src/containers/SendbirdUIKitContainer.tsx +25 -6
  113. package/src/contexts/PlatformServiceCtx.tsx +9 -2
  114. package/src/contexts/SendbirdChatCtx.tsx +22 -19
  115. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +82 -14
  116. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +1 -0
  117. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +3 -2
  118. package/src/domain/groupChannelSettings/module/moduleContext.tsx +8 -2
  119. package/src/fragments/createGroupChannelListFragment.tsx +5 -9
  120. package/src/hooks/useKeyboardStatus.ts +10 -5
  121. package/src/index.ts +1 -0
  122. package/src/libs/ImageCompressionConfig.ts +31 -0
  123. package/src/libs/SBUUtils.ts +28 -1
  124. package/src/localization/StringSet.type.ts +7 -0
  125. package/src/platform/createMediaService.expo.tsx +24 -1
  126. package/src/platform/createMediaService.native.tsx +31 -9
  127. package/src/platform/dynamicModule.ts +17 -59
  128. package/src/platform/types.ts +29 -7
  129. package/src/version.ts +1 -1
  130. package/lib/commonjs/utils/common.js +0 -19
  131. package/lib/commonjs/utils/common.js.map +0 -1
  132. package/lib/module/utils/common.js +0 -7
  133. package/lib/module/utils/common.js.map +0 -1
  134. package/lib/typescript/src/utils/common.d.ts +0 -1
  135. package/src/utils/common.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"names":["HANDLE_NEXT_MSG_SEPARATELY","Platform","select","default","GroupChannelMessageList","currentUserId","channel","messages","renderMessage","nextMessages","newMessagesFromMembers","onBottomReached","onTopReached","renderNewMessagesButton","renderScrollToBottomButton","onResendFailedMessage","onDeleteMessage","onPressImageMessage","onPressMediaMessage","flatListProps","enableMessageGrouping","STRINGS","useLocalization","colors","useUIKitTheme","left","right","useSafeAreaInsets","scrollLeaveBottom","setScrollLeaveBottom","useState","scrollRef","useRef","newMessagesInternalBuffer","setNewMessagesInternalBuffer","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","item","index","onPress","onLongPress","message","prevMessage","nextMessage","useEffect","length","prev","concat","onLeaveScrollBottom","useCallback","val","flex","backgroundColor","background","isFrozen","styles","frozenBanner","GROUP_CHANNEL","LIST_BANNER_FROZEN","url","messageKeyExtractor","frozenListPadding","contentContainerStyle","newMsgButton","visible","current","scrollToBottom","newMessages","scrollButton","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","features","useSendbirdChat","setMessageToEdit","useContext","GroupChannelContexts","Fragment","handleFailedMessage","sheetItems","title","DIALOG_MESSAGE_FAILED_RETRY","catch","show","TOAST","RESEND_MSG_ERROR","DIALOG_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_DELETE_CONFIRM_OK","style","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","DIALOG_MESSAGE_COPY","setString","COPY_OK","isMyMessage","sendingStatus","DIALOG_MESSAGE_EDIT","DIALOG_MESSAGE_DELETE","DIALOG_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","fileName","name","fileType","type","then","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","getFileType","getFileExtension","warn","DEPRECATION_WARNING","ON_PRESS_IMAGE_MESSAGE","getAvailableUriFromFileMessage","Linking","openURL","HeaderComponent","shouldRenderReaction","reactionEnabled","onClose","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","React","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Linking, ListRenderItem, Platform, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BottomSheetItem } from '@sendbird/uikit-react-native-foundation';\nimport {\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport {\n Logger,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { ChatFlatListRef } from '../../../components/ChatFlatList';\nimport ChatFlatList from '../../../components/ChatFlatList';\nimport { ReactionAddons } from '../../../components/ReactionAddons';\nimport { DEPRECATION_WARNING } from '../../../constants';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst HANDLE_NEXT_MSG_SEPARATELY = Platform.select({ default: true });\n\nconst GroupChannelMessageList = ({\n currentUserId,\n channel,\n messages,\n renderMessage,\n nextMessages,\n newMessagesFromMembers,\n onBottomReached,\n onTopReached,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n onResendFailedMessage,\n onDeleteMessage,\n onPressImageMessage,\n onPressMediaMessage,\n flatListProps,\n enableMessageGrouping,\n}: GroupChannelProps['MessageList']) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n const [scrollLeaveBottom, setScrollLeaveBottom] = useState(false);\n const scrollRef = useRef<ChatFlatListRef>(null);\n const [newMessagesInternalBuffer, setNewMessagesInternalBuffer] = useState(() => newMessagesFromMembers);\n const getMessagePressActions = useGetMessagePressActions({\n channel,\n currentUserId,\n onDeleteMessage,\n onResendFailedMessage,\n onPressImageMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress } = getMessagePressActions(item);\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n enableMessageGrouping,\n channel,\n currentUserId,\n });\n });\n\n if (!HANDLE_NEXT_MSG_SEPARATELY) {\n useEffect(() => {\n if (newMessagesInternalBuffer.length !== 0) {\n setNewMessagesInternalBuffer((prev) => prev.concat(newMessagesFromMembers));\n }\n onBottomReached();\n }, [newMessagesFromMembers]);\n }\n\n const onLeaveScrollBottom = useCallback((val: boolean) => {\n if (!HANDLE_NEXT_MSG_SEPARATELY) setNewMessagesInternalBuffer([]);\n setScrollLeaveBottom(val);\n }, []);\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.GROUP_CHANNEL.LIST_BANNER_FROZEN} />\n )}\n <ChatFlatList\n nextMessages={nextMessages}\n onBottomReached={onBottomReached}\n onTopReached={onTopReached}\n onLeaveScrollBottom={onLeaveScrollBottom}\n currentUserId={currentUserId}\n {...flatListProps}\n listKey={`group-channel-messages-${channel.url}`}\n ref={scrollRef}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: scrollLeaveBottom,\n onPress: () => scrollRef.current?.scrollToBottom(false),\n newMessages: !HANDLE_NEXT_MSG_SEPARATELY ? newMessagesInternalBuffer : newMessagesFromMembers,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View pointerEvents={scrollLeaveBottom ? 'auto' : 'none'} style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: scrollLeaveBottom,\n onPress: () => scrollRef.current?.scrollToBottom(false),\n })}\n </View>\n )}\n </View>\n );\n};\n\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\nconst useGetMessagePressActions = ({\n channel,\n currentUserId,\n onResendFailedMessage,\n onDeleteMessage,\n onPressImageMessage,\n onPressMediaMessage,\n}: Pick<\n GroupChannelProps['MessageList'],\n | 'channel'\n | 'currentUserId'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressImageMessage'\n | 'onPressMediaMessage'\n>) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { features } = useSendbirdChat();\n const { setMessageToEdit } = useContext(GroupChannelContexts.Fragment);\n\n const handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_FAILED_RETRY,\n onPress: () =>\n onResendFailedMessage(message).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error')),\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error')),\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: { onPress?: () => void; onLongPress?: () => void } = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push(\n {\n icon: 'edit',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_EDIT,\n onPress: () => setMessageToEdit(msg),\n },\n {\n icon: 'delete',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n },\n );\n }\n }\n\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n },\n });\n\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push({\n icon: 'delete',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n if (onPressImageMessage && fileType === 'image') {\n Logger.warn(DEPRECATION_WARNING.GROUP_CHANNEL.ON_PRESS_IMAGE_MESSAGE);\n onPressImageMessage(msg, getAvailableUriFromFileMessage(msg));\n }\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => Linking.openURL(msg.url).catch();\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(channel, features.reactionEnabled)\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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"}
1
+ {"version":3,"names":["HANDLE_NEXT_MSG_SEPARATELY","Platform","select","default","GroupChannelMessageList","currentUserId","channel","messages","renderMessage","nextMessages","newMessagesFromMembers","onBottomReached","onTopReached","renderNewMessagesButton","renderScrollToBottomButton","onResendFailedMessage","onDeleteMessage","onPressImageMessage","onPressMediaMessage","flatListProps","enableMessageGrouping","STRINGS","useLocalization","colors","useUIKitTheme","left","right","useSafeAreaInsets","scrollLeaveBottom","setScrollLeaveBottom","useState","scrollRef","useRef","newMessagesInternalBuffer","setNewMessagesInternalBuffer","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","item","index","onPress","onLongPress","message","prevMessage","nextMessage","useEffect","length","prev","concat","onLeaveScrollBottom","useCallback","val","flex","backgroundColor","background","isFrozen","styles","frozenBanner","GROUP_CHANNEL","LIST_BANNER_FROZEN","url","messageKeyExtractor","frozenListPadding","contentContainerStyle","newMsgButton","visible","current","scrollToBottom","newMessages","scrollButton","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","features","useSendbirdChat","setMessageToEdit","useContext","GroupChannelContexts","Fragment","handleFailedMessage","sheetItems","title","DIALOG_MESSAGE_FAILED_RETRY","catch","show","TOAST","RESEND_MSG_ERROR","DIALOG_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_DELETE_CONFIRM_OK","style","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","DIALOG_MESSAGE_COPY","setString","COPY_OK","isMyMessage","sendingStatus","DIALOG_MESSAGE_EDIT","DIALOG_MESSAGE_DELETE","DIALOG_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","fileName","name","fileType","type","then","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","getFileType","getFileExtension","warn","DEPRECATION_WARNING","ON_PRESS_IMAGE_MESSAGE","getAvailableUriFromFileMessage","SBUUtils","openURL","HeaderComponent","shouldRenderReaction","reactionEnabled","onClose","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","React","memo"],"sources":["GroupChannelMessageList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { ListRenderItem, Platform, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BottomSheetItem } from '@sendbird/uikit-react-native-foundation';\nimport {\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport {\n Logger,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { ChatFlatListRef } from '../../../components/ChatFlatList';\nimport ChatFlatList from '../../../components/ChatFlatList';\nimport { ReactionAddons } from '../../../components/ReactionAddons';\nimport { DEPRECATION_WARNING } from '../../../constants';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport { GroupChannelContexts } from '../module/moduleContext';\nimport type { GroupChannelProps } from '../types';\n\nconst HANDLE_NEXT_MSG_SEPARATELY = Platform.select({ default: true });\n\nconst GroupChannelMessageList = ({\n currentUserId,\n channel,\n messages,\n renderMessage,\n nextMessages,\n newMessagesFromMembers,\n onBottomReached,\n onTopReached,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n onResendFailedMessage,\n onDeleteMessage,\n onPressImageMessage,\n onPressMediaMessage,\n flatListProps,\n enableMessageGrouping,\n}: GroupChannelProps['MessageList']) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n const [scrollLeaveBottom, setScrollLeaveBottom] = useState(false);\n const scrollRef = useRef<ChatFlatListRef>(null);\n const [newMessagesInternalBuffer, setNewMessagesInternalBuffer] = useState(() => newMessagesFromMembers);\n const getMessagePressActions = useGetMessagePressActions({\n channel,\n currentUserId,\n onDeleteMessage,\n onResendFailedMessage,\n onPressImageMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress } = getMessagePressActions(item);\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n enableMessageGrouping,\n channel,\n currentUserId,\n });\n });\n\n if (!HANDLE_NEXT_MSG_SEPARATELY) {\n useEffect(() => {\n if (newMessagesInternalBuffer.length !== 0) {\n setNewMessagesInternalBuffer((prev) => prev.concat(newMessagesFromMembers));\n }\n onBottomReached();\n }, [newMessagesFromMembers]);\n }\n\n const onLeaveScrollBottom = useCallback((val: boolean) => {\n if (!HANDLE_NEXT_MSG_SEPARATELY) setNewMessagesInternalBuffer([]);\n setScrollLeaveBottom(val);\n }, []);\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.GROUP_CHANNEL.LIST_BANNER_FROZEN} />\n )}\n <ChatFlatList\n nextMessages={nextMessages}\n onBottomReached={onBottomReached}\n onTopReached={onTopReached}\n onLeaveScrollBottom={onLeaveScrollBottom}\n currentUserId={currentUserId}\n {...flatListProps}\n listKey={`group-channel-messages-${channel.url}`}\n ref={scrollRef}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: scrollLeaveBottom,\n onPress: () => scrollRef.current?.scrollToBottom(false),\n newMessages: !HANDLE_NEXT_MSG_SEPARATELY ? newMessagesInternalBuffer : newMessagesFromMembers,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View pointerEvents={scrollLeaveBottom ? 'auto' : 'none'} style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: scrollLeaveBottom,\n onPress: () => scrollRef.current?.scrollToBottom(false),\n })}\n </View>\n )}\n </View>\n );\n};\n\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\nconst useGetMessagePressActions = ({\n channel,\n currentUserId,\n onResendFailedMessage,\n onDeleteMessage,\n onPressImageMessage,\n onPressMediaMessage,\n}: Pick<\n GroupChannelProps['MessageList'],\n | 'channel'\n | 'currentUserId'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressImageMessage'\n | 'onPressMediaMessage'\n>) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { features } = useSendbirdChat();\n const { setMessageToEdit } = useContext(GroupChannelContexts.Fragment);\n\n const handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_FAILED_RETRY,\n onPress: () =>\n onResendFailedMessage(message).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error')),\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error')),\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: { onPress?: () => void; onLongPress?: () => void } = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push(\n {\n icon: 'edit',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_EDIT,\n onPress: () => setMessageToEdit(msg),\n },\n {\n icon: 'delete',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n },\n );\n }\n }\n\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n },\n });\n\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push({\n icon: 'delete',\n title: STRINGS.GROUP_CHANNEL.DIALOG_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n if (onPressImageMessage && fileType === 'image') {\n Logger.warn(DEPRECATION_WARNING.GROUP_CHANNEL.ON_PRESS_IMAGE_MESSAGE);\n onPressImageMessage(msg, getAvailableUriFromFileMessage(msg));\n }\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => SBUUtils.openURL(msg.url);\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(channel, features.reactionEnabled)\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\nexport default React.memo(GroupChannelMessageList);\n"],"mappings":"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"}
@@ -106,7 +106,7 @@ const GroupChannelSettingsContextsProvider = _ref => {
106
106
  if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
107
107
  alert({
108
108
  title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
109
- message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),
109
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_CAMERA, STRINGS.LABELS.PERMISSION_APP_NAME),
110
110
  buttons: [{
111
111
  text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
112
112
  onPress: () => _SBUUtils.default.openSettings()
@@ -132,7 +132,7 @@ const GroupChannelSettingsContextsProvider = _ref => {
132
132
  if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
133
133
  alert({
134
134
  title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
135
- message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),
135
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_DEVICE_STORAGE, STRINGS.LABELS.PERMISSION_APP_NAME),
136
136
  buttons: [{
137
137
  text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
138
138
  onPress: () => _SBUUtils.default.openSettings()
@@ -1 +1 @@
1
- {"version":3,"names":["GroupChannelSettingsContexts","Fragment","createContext","channel","headerTitle","headerRight","onPressHeaderRight","NOOP","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","useUniqId","forceUpdate","useForceUpdate","STRINGS","useLocalization","sdk","useSendbirdChat","fileService","usePlatformService","alert","useAlert","onChannelChanged","eventChannel","isDifferentChannel","useChannelHandler","onChannelFrozen","onChannelUnfrozen","onUserBanned","toast","useToast","openSheet","useBottomSheet","openPrompt","usePrompt","openMenu","useActionMenu","updateChannel","useCallback","params","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","text","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useAlert, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdGroupChannelUpdateParams,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUError from '../../../libs/SBUError';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n const { alert } = useAlert();\n\n const onChannelChanged = (eventChannel: SendbirdBaseChannel) => {\n if (isDifferentChannel(eventChannel, channel)) return;\n forceUpdate();\n };\n\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n onUserBanned: onChannelChanged,\n });\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelUpdateParams) => {\n await channel.updateChannel(params);\n forceUpdate();\n },\n [channel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: channel.name,\n onSubmit: (channelName) => updateChannel({ name: channelName }),\n });\n }, [STRINGS, updateChannel, channel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n if (!file) return;\n\n await updateChannel({ coverImage: file });\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n if (!files || !files[0]) return;\n\n await updateChannel({ coverImage: files[0] });\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["GroupChannelSettingsContexts","Fragment","createContext","channel","headerTitle","headerRight","onPressHeaderRight","NOOP","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","useUniqId","forceUpdate","useForceUpdate","STRINGS","useLocalization","sdk","useSendbirdChat","fileService","usePlatformService","alert","useAlert","onChannelChanged","eventChannel","isDifferentChannel","useChannelHandler","onChannelFrozen","onChannelUnfrozen","onUserBanned","toast","useToast","openSheet","useBottomSheet","openPrompt","usePrompt","openMenu","useActionMenu","updateChannel","useCallback","params","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","LABELS","PERMISSION_CAMERA","PERMISSION_APP_NAME","buttons","text","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useAlert, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdGroupChannelUpdateParams,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUError from '../../../libs/SBUError';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n const { alert } = useAlert();\n\n const onChannelChanged = (eventChannel: SendbirdBaseChannel) => {\n if (isDifferentChannel(eventChannel, channel)) return;\n forceUpdate();\n };\n\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n onUserBanned: onChannelChanged,\n });\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelUpdateParams) => {\n await channel.updateChannel(params);\n forceUpdate();\n },\n [channel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: channel.name,\n onSubmit: (channelName) => updateChannel({ name: channelName }),\n });\n }, [STRINGS, updateChannel, channel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n if (!file) return;\n\n await updateChannel({ coverImage: file });\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n if (!files || !files[0]) return;\n\n await updateChannel({ coverImage: files[0] });\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AAUA;;AACA;;AACA;;AACA;;;;;;;;AAGO,MAAMA,4BAA8D,GAAG;EAC5EC,QAAQ,eAAE,IAAAC,oBAAA,EAAc;IACtBC,OAAO,EAAE,EADa;IAEtBC,WAAW,EAAE,EAFS;IAGtBC,WAAW,EAAE,EAHS;IAItBC,kBAAkB,EAAEC;EAJE,CAAd;AADkE,CAAvE;;AASP,MAAMC,SAAS,GAAG,sCAAlB;;AACO,MAAMC,oCAA4E,GAAG,QAA2B;EAAA,IAA1B;IAAEC,QAAF;IAAYP;EAAZ,CAA0B;EACrH,MAAMQ,MAAM,GAAG,IAAAC,qBAAA,EAAUJ,SAAV,CAAf;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;EACA,MAAM;IAAEC;EAAF,IAAU,IAAAC,2BAAA,GAAhB;EACA,MAAM;IAAEC;EAAF,IAAkB,IAAAC,8BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAY,IAAAC,oCAAA,GAAlB;;EAEA,MAAMC,gBAAgB,GAAIC,YAAD,IAAuC;IAC9D,IAAI,IAAAC,8BAAA,EAAmBD,YAAnB,EAAiCrB,OAAjC,CAAJ,EAA+C;IAC/CU,WAAW;EACZ,CAHD;;EAKA,IAAAa,iCAAA,EAAkBT,GAAlB,EAAwB,GAAET,SAAU,IAAGG,MAAO,EAA9C,EAAiD;IAC/CY,gBAAgB,EAAEA,gBAD6B;IAE/CI,eAAe,EAAEJ,gBAF8B;IAG/CK,iBAAiB,EAAEL,gBAH4B;IAI/CM,YAAY,EAAEN;EAJiC,CAAjD;EAOA,MAAMO,KAAK,GAAG,IAAAC,oCAAA,GAAd;EACA,MAAM;IAAEC;EAAF,IAAgB,IAAAC,0CAAA,GAAtB;EACA,MAAM;IAAEC;EAAF,IAAiB,IAAAC,qCAAA,GAAvB;EACA,MAAM;IAAEC;EAAF,IAAe,IAAAC,yCAAA,GAArB;EAEA,MAAMC,aAAa,GAAG,IAAAC,kBAAA,EACpB,MAAOC,MAAP,IAAoD;IAClD,MAAMrC,OAAO,CAACmC,aAAR,CAAsBE,MAAtB,CAAN;IACA3B,WAAW;EACZ,CAJmB,EAKpB,CAACV,OAAD,CALoB,CAAtB;EAQA,MAAMsC,iBAAiB,GAAG,IAAAF,kBAAA,EAAY,MAAM;IAC1CL,UAAU,CAAC;MACTQ,KAAK,EAAE3B,OAAO,CAAC4B,sBAAR,CAA+BC,+BAD7B;MAETC,WAAW,EAAE9B,OAAO,CAAC4B,sBAAR,CAA+BG,4BAFnC;MAGTC,WAAW,EAAEhC,OAAO,CAAC4B,sBAAR,CAA+BK,qCAHnC;MAITC,YAAY,EAAE9C,OAAO,CAAC+C,IAJb;MAKTC,QAAQ,EAAGC,WAAD,IAAiBd,aAAa,CAAC;QAAEY,IAAI,EAAEE;MAAR,CAAD;IAL/B,CAAD,CAAV;EAOD,CARyB,EAQvB,CAACrC,OAAD,EAAUuB,aAAV,EAAyBnC,OAAO,CAAC+C,IAAjC,CARuB,CAA1B;EAUA,MAAMG,kBAAkB,GAAG,IAAAd,kBAAA,EAAY,MAAM;IAC3CH,QAAQ,CAAC;MACPM,KAAK,EAAE3B,OAAO,CAAC4B,sBAAR,CAA+BW,8BAD/B;MAEPC,SAAS,EAAE,CACT;QACEb,KAAK,EAAE3B,OAAO,CAAC4B,sBAAR,CAA+Ba,+BADxC;QAEEC,OAAO,EAAE,YAAY;UACnB,MAAMC,IAAI,GAAG,MAAMvC,WAAW,CAACwC,UAAZ,CAAuB;YACxCC,SAAS,EAAE,OAD6B;YAExCC,aAAa,EAAGC,KAAD,IAAW;cACxB,IAAIA,KAAK,CAACC,IAAN,KAAeC,iBAAA,CAASC,IAAT,CAAcC,sBAAjC,EAAyD;gBACvD7C,KAAK,CAAC;kBACJqB,KAAK,EAAE3B,OAAO,CAACoD,MAAR,CAAeC,uBADlB;kBAEJC,OAAO,EAAEtD,OAAO,CAACoD,MAAR,CAAeG,yBAAf,CACPvD,OAAO,CAACwD,MAAR,CAAeC,iBADR,EAEPzD,OAAO,CAACwD,MAAR,CAAeE,mBAFR,CAFL;kBAMJC,OAAO,EAAE,CAAC;oBAAEC,IAAI,EAAE5D,OAAO,CAACoD,MAAR,CAAeS,oBAAvB;oBAA6CnB,OAAO,EAAE,MAAMoB,iBAAA,CAASC,YAAT;kBAA5D,CAAD;gBANL,CAAD,CAAL;cAQD,CATD,MASO;gBACLhD,KAAK,CAACiD,IAAN,CAAWhE,OAAO,CAACiE,KAAR,CAAcC,iBAAzB,EAA4C,OAA5C;cACD;YACF;UAfuC,CAAvB,CAAnB;UAiBA,IAAI,CAACvB,IAAL,EAAW;UAEX,MAAMpB,aAAa,CAAC;YAAE4C,UAAU,EAAExB;UAAd,CAAD,CAAnB;QACD;MAvBH,CADS,EA0BT;QACEhB,KAAK,EAAE3B,OAAO,CAAC4B,sBAAR,CAA+BwC,sCADxC;QAEE1B,OAAO,EAAE,YAAY;UACnB,MAAM2B,KAAK,GAAG,MAAMjE,WAAW,CAACkE,gBAAZ,CAA6B;YAC/CC,cAAc,EAAE,CAD+B;YAE/C1B,SAAS,EAAE,OAFoC;YAG/CC,aAAa,EAAGC,KAAD,IAAW;cACxB,IAAIA,KAAK,CAACC,IAAN,KAAeC,iBAAA,CAASC,IAAT,CAAcC,sBAAjC,EAAyD;gBACvD7C,KAAK,CAAC;kBACJqB,KAAK,EAAE3B,OAAO,CAACoD,MAAR,CAAeC,uBADlB;kBAEJC,OAAO,EAAEtD,OAAO,CAACoD,MAAR,CAAeG,yBAAf,CACPvD,OAAO,CAACwD,MAAR,CAAegB,yBADR,EAEPxE,OAAO,CAACwD,MAAR,CAAeE,mBAFR,CAFL;kBAMJC,OAAO,EAAE,CAAC;oBAAEC,IAAI,EAAE5D,OAAO,CAACoD,MAAR,CAAeS,oBAAvB;oBAA6CnB,OAAO,EAAE,MAAMoB,iBAAA,CAASC,YAAT;kBAA5D,CAAD;gBANL,CAAD,CAAL;cAQD,CATD,MASO;gBACLhD,KAAK,CAACiD,IAAN,CAAWhE,OAAO,CAACiE,KAAR,CAAcQ,wBAAzB,EAAmD,OAAnD;cACD;YACF;UAhB8C,CAA7B,CAApB;UAkBA,IAAI,CAACJ,KAAD,IAAU,CAACA,KAAK,CAAC,CAAD,CAApB,EAAyB;UAEzB,MAAM9C,aAAa,CAAC;YAAE4C,UAAU,EAAEE,KAAK,CAAC,CAAD;UAAnB,CAAD,CAAnB;QACD;MAxBH,CA1BS;IAFJ,CAAD,CAAR;EAwDD,CAzD0B,EAyDxB,CAACrE,OAAD,EAAUuB,aAAV,CAzDwB,CAA3B;EA2DA,MAAMhC,kBAAkB,GAAG,IAAAiC,kBAAA,EAAY,MAAM;IAC3CP,SAAS,CAAC;MACRyD,UAAU,EAAE,CACV;QAAE/C,KAAK,EAAE3B,OAAO,CAAC4B,sBAAR,CAA+B+C,kBAAxC;QAA4DjC,OAAO,EAAEhB;MAArE,CADU,EAEV;QAAEC,KAAK,EAAE3B,OAAO,CAAC4B,sBAAR,CAA+BgD,mBAAxC;QAA6DlC,OAAO,EAAEJ;MAAtE,CAFU;IADJ,CAAD,CAAT;EAMD,CAP0B,EAOxB,CAACtC,OAAD,EAAUsC,kBAAV,EAA8BZ,iBAA9B,CAPwB,CAA3B;EASA,oBACE,6BAAC,uBAAD,qBACE,6BAAC,4BAAD,CAA8B,QAA9B,CAAuC,QAAvC;IACE,KAAK,EAAE;MACLtC,OADK;MAELC,WAAW,EAAEW,OAAO,CAAC4B,sBAAR,CAA+BiD,YAFvC;MAGLvF,WAAW,EAAEU,OAAO,CAAC4B,sBAAR,CAA+BkD,YAHvC;MAILvF;IAJK;EADT,GAQGI,QARH,CADF,CADF;AAcD,CA7HM"}
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireWildcard(require("react"));
9
-
10
- var _reactNative = require("react-native");
8
+ var _react = _interopRequireDefault(require("react"));
11
9
 
12
10
  var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
13
11
 
@@ -23,10 +21,6 @@ var _useContext = require("../hooks/useContext");
23
21
 
24
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
23
 
26
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
-
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
-
30
24
  const createGroupChannelListFragment = initModule => {
31
25
  const GroupChannelListModule = (0, _createGroupChannelListModule.default)(initModule);
32
26
  return _ref => {
@@ -57,13 +51,9 @@ const createGroupChannelListFragment = initModule => {
57
51
  });
58
52
 
59
53
  if (features.deliveryReceiptEnabled) {
60
- (0, _react.useEffect)(() => {
61
- const listener = _reactNative.AppState.addEventListener('change', status => {
62
- if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);
63
- });
64
-
65
- return () => listener.remove();
66
- }, []);
54
+ (0, _uikitUtils.useAppState)('change', status => {
55
+ if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);
56
+ });
67
57
  }
68
58
 
69
59
  const _renderGroupChannelPreview = (0, _uikitUtils.useFreshCallback)((channel, onLongPressChannel) => {
@@ -1 +1 @@
1
- {"version":3,"names":["createGroupChannelListFragment","initModule","GroupChannelListModule","createGroupChannelListModule","onPressChannel","onPressCreateChannel","queryCreator","collectionCreator","renderGroupChannelPreview","skipTypeSelection","flatListProps","menuItemCreator","PASS","sdk","currentUser","features","markAsDeliveredWithChannel","useSendbirdChat","groupChannels","next","loading","useGroupChannelList","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","useEffect","listener","AppState","addEventListener","status","forEach","remove","_renderGroupChannelPreview","useFreshCallback","channel","onLongPressChannel","isChannelTypeAvailable","broadcastChannelEnabled","superGroupChannelEnabled","ListEmptyComponent","contentContainerStyle","flexGrow"],"sources":["createGroupChannelListFragment.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from 'react-native';\n\nimport { useGroupChannelList } from '@sendbird/uikit-chat-hooks';\nimport { PASS, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport StatusComposition from '../components/StatusComposition';\nimport GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer';\nimport createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule';\nimport type {\n GroupChannelListFragment,\n GroupChannelListModule,\n GroupChannelListProps,\n} from '../domain/groupChannelList/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelListFragment = (initModule?: Partial<GroupChannelListModule>): GroupChannelListFragment => {\n const GroupChannelListModule = createGroupChannelListModule(initModule);\n return ({\n onPressChannel,\n onPressCreateChannel,\n queryCreator,\n collectionCreator,\n renderGroupChannelPreview,\n skipTypeSelection = false,\n flatListProps = {},\n menuItemCreator = PASS,\n }) => {\n const { sdk, currentUser, features, markAsDeliveredWithChannel } = useSendbirdChat();\n const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser?.userId, {\n queryCreator,\n collectionCreator,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n if (features.deliveryReceiptEnabled) {\n useEffect(() => {\n const listener = AppState.addEventListener('change', (status) => {\n if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);\n });\n return () => listener.remove();\n }, []);\n }\n\n const _renderGroupChannelPreview: GroupChannelListProps['List']['renderGroupChannelPreview'] = useFreshCallback(\n (channel, onLongPressChannel) => {\n if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);\n return (\n <GroupChannelPreviewContainer\n channel={channel}\n onPress={() => onPressChannel(channel)}\n onLongPress={() => onLongPressChannel()}\n />\n );\n },\n );\n\n const isChannelTypeAvailable = features.broadcastChannelEnabled || features.superGroupChannelEnabled;\n\n return (\n <GroupChannelListModule.Provider>\n <GroupChannelListModule.Header />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelListModule.StatusLoading />}>\n <GroupChannelListModule.List\n menuItemCreator={menuItemCreator}\n renderGroupChannelPreview={_renderGroupChannelPreview}\n groupChannels={groupChannels}\n onLoadNext={next}\n flatListProps={{\n ListEmptyComponent: <GroupChannelListModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }}\n />\n </StatusComposition>\n <GroupChannelListModule.TypeSelector\n skipTypeSelection={isChannelTypeAvailable ? skipTypeSelection : true}\n onSelectType={onPressCreateChannel}\n />\n </GroupChannelListModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelListFragment;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AAMA;;;;;;;;AAEA,MAAMA,8BAA8B,GAAIC,UAAD,IAA4E;EACjH,MAAMC,sBAAsB,GAAG,IAAAC,qCAAA,EAA6BF,UAA7B,CAA/B;EACA,OAAO,QASD;IAAA,IATE;MACNG,cADM;MAENC,oBAFM;MAGNC,YAHM;MAINC,iBAJM;MAKNC,yBALM;MAMNC,iBAAiB,GAAG,KANd;MAONC,aAAa,GAAG,EAPV;MAQNC,eAAe,GAAGC;IARZ,CASF;IACJ,MAAM;MAAEC,GAAF;MAAOC,WAAP;MAAoBC,QAApB;MAA8BC;IAA9B,IAA6D,IAAAC,2BAAA,GAAnE;IACA,MAAM;MAAEC,aAAF;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAmC,IAAAC,mCAAA,EAAoBR,GAApB,EAAyBC,WAAzB,aAAyBA,WAAzB,uBAAyBA,WAAW,CAAEQ,MAAtC,EAA8C;MACrFhB,YADqF;MAErFC,iBAFqF;MAGrFgB,iCAAiC,EAAE,CAACjB;IAHiD,CAA9C,CAAzC;;IAMA,IAAIS,QAAQ,CAACS,sBAAb,EAAqC;MACnC,IAAAC,gBAAA,EAAU,MAAM;QACd,MAAMC,QAAQ,GAAGC,qBAAA,CAASC,gBAAT,CAA0B,QAA1B,EAAqCC,MAAD,IAAY;UAC/D,IAAIA,MAAM,KAAK,QAAf,EAAyBX,aAAa,CAACY,OAAd,CAAsBd,0BAAtB;QAC1B,CAFgB,CAAjB;;QAGA,OAAO,MAAMU,QAAQ,CAACK,MAAT,EAAb;MACD,CALD,EAKG,EALH;IAMD;;IAED,MAAMC,0BAAsF,GAAG,IAAAC,4BAAA,EAC7F,CAACC,OAAD,EAAUC,kBAAV,KAAiC;MAC/B,IAAI3B,yBAAJ,EAA+B,OAAOA,yBAAyB,CAAC0B,OAAD,EAAUC,kBAAV,CAAhC;MAC/B,oBACE,6BAAC,qCAAD;QACE,OAAO,EAAED,OADX;QAEE,OAAO,EAAE,MAAM9B,cAAc,CAAC8B,OAAD,CAF/B;QAGE,WAAW,EAAE,MAAMC,kBAAkB;MAHvC,EADF;IAOD,CAV4F,CAA/F;;IAaA,MAAMC,sBAAsB,GAAGrB,QAAQ,CAACsB,uBAAT,IAAoCtB,QAAQ,CAACuB,wBAA5E;IAEA,oBACE,6BAAC,sBAAD,CAAwB,QAAxB,qBACE,6BAAC,sBAAD,CAAwB,MAAxB,OADF,eAEE,6BAAC,0BAAD;MAAmB,OAAO,EAAElB,OAA5B;MAAqC,gBAAgB,eAAE,6BAAC,sBAAD,CAAwB,aAAxB;IAAvD,gBACE,6BAAC,sBAAD,CAAwB,IAAxB;MACE,eAAe,EAAET,eADnB;MAEE,yBAAyB,EAAEqB,0BAF7B;MAGE,aAAa,EAAEd,aAHjB;MAIE,UAAU,EAAEC,IAJd;MAKE,aAAa,EAAE;QACboB,kBAAkB,eAAE,6BAAC,sBAAD,CAAwB,WAAxB,OADP;QAEbC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE;QAAZ,CAFV;QAGb,GAAG/B;MAHU;IALjB,EADF,CAFF,eAeE,6BAAC,sBAAD,CAAwB,YAAxB;MACE,iBAAiB,EAAE0B,sBAAsB,GAAG3B,iBAAH,GAAuB,IADlE;MAEE,YAAY,EAAEJ;IAFhB,EAfF,CADF;EAsBD,CA/DD;AAgED,CAlED;;eAoEeL,8B"}
1
+ {"version":3,"names":["createGroupChannelListFragment","initModule","GroupChannelListModule","createGroupChannelListModule","onPressChannel","onPressCreateChannel","queryCreator","collectionCreator","renderGroupChannelPreview","skipTypeSelection","flatListProps","menuItemCreator","PASS","sdk","currentUser","features","markAsDeliveredWithChannel","useSendbirdChat","groupChannels","next","loading","useGroupChannelList","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","useAppState","status","forEach","_renderGroupChannelPreview","useFreshCallback","channel","onLongPressChannel","isChannelTypeAvailable","broadcastChannelEnabled","superGroupChannelEnabled","ListEmptyComponent","contentContainerStyle","flexGrow"],"sources":["createGroupChannelListFragment.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useGroupChannelList } from '@sendbird/uikit-chat-hooks';\nimport { PASS, useAppState, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport StatusComposition from '../components/StatusComposition';\nimport GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer';\nimport createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule';\nimport type {\n GroupChannelListFragment,\n GroupChannelListModule,\n GroupChannelListProps,\n} from '../domain/groupChannelList/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelListFragment = (initModule?: Partial<GroupChannelListModule>): GroupChannelListFragment => {\n const GroupChannelListModule = createGroupChannelListModule(initModule);\n return ({\n onPressChannel,\n onPressCreateChannel,\n queryCreator,\n collectionCreator,\n renderGroupChannelPreview,\n skipTypeSelection = false,\n flatListProps = {},\n menuItemCreator = PASS,\n }) => {\n const { sdk, currentUser, features, markAsDeliveredWithChannel } = useSendbirdChat();\n const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser?.userId, {\n queryCreator,\n collectionCreator,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n if (features.deliveryReceiptEnabled) {\n useAppState('change', (status) => {\n if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);\n });\n }\n\n const _renderGroupChannelPreview: GroupChannelListProps['List']['renderGroupChannelPreview'] = useFreshCallback(\n (channel, onLongPressChannel) => {\n if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);\n return (\n <GroupChannelPreviewContainer\n channel={channel}\n onPress={() => onPressChannel(channel)}\n onLongPress={() => onLongPressChannel()}\n />\n );\n },\n );\n\n const isChannelTypeAvailable = features.broadcastChannelEnabled || features.superGroupChannelEnabled;\n\n return (\n <GroupChannelListModule.Provider>\n <GroupChannelListModule.Header />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelListModule.StatusLoading />}>\n <GroupChannelListModule.List\n menuItemCreator={menuItemCreator}\n renderGroupChannelPreview={_renderGroupChannelPreview}\n groupChannels={groupChannels}\n onLoadNext={next}\n flatListProps={{\n ListEmptyComponent: <GroupChannelListModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }}\n />\n </StatusComposition>\n <GroupChannelListModule.TypeSelector\n skipTypeSelection={isChannelTypeAvailable ? skipTypeSelection : true}\n onSelectType={onPressCreateChannel}\n />\n </GroupChannelListModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelListFragment;\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AAMA;;;;AAEA,MAAMA,8BAA8B,GAAIC,UAAD,IAA4E;EACjH,MAAMC,sBAAsB,GAAG,IAAAC,qCAAA,EAA6BF,UAA7B,CAA/B;EACA,OAAO,QASD;IAAA,IATE;MACNG,cADM;MAENC,oBAFM;MAGNC,YAHM;MAINC,iBAJM;MAKNC,yBALM;MAMNC,iBAAiB,GAAG,KANd;MAONC,aAAa,GAAG,EAPV;MAQNC,eAAe,GAAGC;IARZ,CASF;IACJ,MAAM;MAAEC,GAAF;MAAOC,WAAP;MAAoBC,QAApB;MAA8BC;IAA9B,IAA6D,IAAAC,2BAAA,GAAnE;IACA,MAAM;MAAEC,aAAF;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAmC,IAAAC,mCAAA,EAAoBR,GAApB,EAAyBC,WAAzB,aAAyBA,WAAzB,uBAAyBA,WAAW,CAAEQ,MAAtC,EAA8C;MACrFhB,YADqF;MAErFC,iBAFqF;MAGrFgB,iCAAiC,EAAE,CAACjB;IAHiD,CAA9C,CAAzC;;IAMA,IAAIS,QAAQ,CAACS,sBAAb,EAAqC;MACnC,IAAAC,uBAAA,EAAY,QAAZ,EAAuBC,MAAD,IAAY;QAChC,IAAIA,MAAM,KAAK,QAAf,EAAyBR,aAAa,CAACS,OAAd,CAAsBX,0BAAtB;MAC1B,CAFD;IAGD;;IAED,MAAMY,0BAAsF,GAAG,IAAAC,4BAAA,EAC7F,CAACC,OAAD,EAAUC,kBAAV,KAAiC;MAC/B,IAAIvB,yBAAJ,EAA+B,OAAOA,yBAAyB,CAACsB,OAAD,EAAUC,kBAAV,CAAhC;MAC/B,oBACE,6BAAC,qCAAD;QACE,OAAO,EAAED,OADX;QAEE,OAAO,EAAE,MAAM1B,cAAc,CAAC0B,OAAD,CAF/B;QAGE,WAAW,EAAE,MAAMC,kBAAkB;MAHvC,EADF;IAOD,CAV4F,CAA/F;;IAaA,MAAMC,sBAAsB,GAAGjB,QAAQ,CAACkB,uBAAT,IAAoClB,QAAQ,CAACmB,wBAA5E;IAEA,oBACE,6BAAC,sBAAD,CAAwB,QAAxB,qBACE,6BAAC,sBAAD,CAAwB,MAAxB,OADF,eAEE,6BAAC,0BAAD;MAAmB,OAAO,EAAEd,OAA5B;MAAqC,gBAAgB,eAAE,6BAAC,sBAAD,CAAwB,aAAxB;IAAvD,gBACE,6BAAC,sBAAD,CAAwB,IAAxB;MACE,eAAe,EAAET,eADnB;MAEE,yBAAyB,EAAEiB,0BAF7B;MAGE,aAAa,EAAEV,aAHjB;MAIE,UAAU,EAAEC,IAJd;MAKE,aAAa,EAAE;QACbgB,kBAAkB,eAAE,6BAAC,sBAAD,CAAwB,WAAxB,OADP;QAEbC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE;QAAZ,CAFV;QAGb,GAAG3B;MAHU;IALjB,EADF,CAFF,eAeE,6BAAC,sBAAD,CAAwB,YAAxB;MACE,iBAAiB,EAAEsB,sBAAsB,GAAGvB,iBAAH,GAAuB,IADlE;MAEE,YAAY,EAAEJ;IAFhB,EAfF,CADF;EAsBD,CA5DD;AA6DD,CA/DD;;eAiEeL,8B"}
@@ -13,10 +13,18 @@ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
13
13
 
14
14
  var _uikitUtils = require("@sendbird/uikit-utils");
15
15
 
16
+ let isLayoutAnimationConfigured = false;
17
+
16
18
  const configureNextLayoutAnimation = event => {
17
- const config = _reactNative.LayoutAnimation.create(event.duration, event.easing);
19
+ if (isLayoutAnimationConfigured) return;
20
+
21
+ const config = _reactNative.LayoutAnimation.create(event.duration, event.easing, _reactNative.LayoutAnimation.Properties.scaleY);
22
+
23
+ isLayoutAnimationConfigured = true;
18
24
 
19
- _reactNative.LayoutAnimation.configureNext(config);
25
+ const onEnd = () => isLayoutAnimationConfigured = false;
26
+
27
+ _reactNative.LayoutAnimation.configureNext(config, onEnd, onEnd);
20
28
  };
21
29
 
22
30
  const {
@@ -62,19 +70,15 @@ const useKeyboardStatus = () => {
62
70
  height,
63
71
  bottomSpace
64
72
  });
65
- }), _reactNative.Keyboard.addListener(hideEvent, event => {
73
+ }), _reactNative.Keyboard.addListener(hideEvent, () => {
66
74
  const height = 0;
67
75
 
68
76
  const bottomSpace = _reactNative.Platform.select({
69
77
  default: height
70
- });
78
+ }); // const nextLayoutAnimation = Platform.select({ ios: configureNextLayoutAnimation, default: NOOP });
79
+ // nextLayoutAnimation(event);
71
80
 
72
- const nextLayoutAnimation = _reactNative.Platform.select({
73
- ios: configureNextLayoutAnimation,
74
- default: _uikitUtils.NOOP
75
- });
76
81
 
77
- nextLayoutAnimation(event);
78
82
  setKeyboardStatus({
79
83
  visible: false,
80
84
  height,
@@ -1 +1 @@
1
- {"version":3,"names":["configureNextLayoutAnimation","event","config","LayoutAnimation","create","duration","easing","configureNext","showEvent","hideEvent","Platform","select","android","default","useKeyboardStatus","keyboardStatus","setKeyboardStatus","useState","visible","height","bottomSpace","bottom","bottomInset","useSafeAreaInsets","useEffect","subscriptions","Keyboard","addListener","endCoordinates","ios","nextLayoutAnimation","NOOP","forEach","it","remove"],"sources":["useKeyboardStatus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { Keyboard, KeyboardEvent, KeyboardEventName, LayoutAnimation, Platform } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { NOOP } from '@sendbird/uikit-utils';\n\ntype KeyboardEvents = {\n showEvent: KeyboardEventName;\n hideEvent: KeyboardEventName;\n};\n\nconst configureNextLayoutAnimation = (event: KeyboardEvent) => {\n const config = LayoutAnimation.create(event.duration, event.easing);\n LayoutAnimation.configureNext(config);\n};\n\nconst { showEvent, hideEvent } = Platform.select<KeyboardEvents>({\n android: { showEvent: 'keyboardDidShow', hideEvent: 'keyboardDidHide' },\n default: { showEvent: 'keyboardWillShow', hideEvent: 'keyboardWillHide' },\n});\n\nconst useKeyboardStatus = () => {\n const [keyboardStatus, setKeyboardStatus] = useState({ visible: false, height: 0, bottomSpace: 0 });\n const { bottom: bottomInset } = useSafeAreaInsets();\n\n useEffect(() => {\n const subscriptions = [\n Keyboard.addListener(showEvent, (event) => {\n const height = event.endCoordinates.height;\n const bottomSpace = Platform.select({ ios: height - bottomInset, default: 0 });\n const nextLayoutAnimation = Platform.select({ ios: configureNextLayoutAnimation, default: NOOP });\n\n nextLayoutAnimation(event);\n setKeyboardStatus({ visible: true, height, bottomSpace });\n }),\n\n Keyboard.addListener(hideEvent, (event) => {\n const height = 0;\n const bottomSpace = Platform.select({ default: height });\n const nextLayoutAnimation = Platform.select({ ios: configureNextLayoutAnimation, default: NOOP });\n\n nextLayoutAnimation(event);\n setKeyboardStatus({ visible: false, height, bottomSpace });\n }),\n ];\n return () => {\n subscriptions.forEach((it) => it.remove());\n };\n }, []);\n\n return keyboardStatus;\n};\n\nexport default useKeyboardStatus;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAOA,MAAMA,4BAA4B,GAAIC,KAAD,IAA0B;EAC7D,MAAMC,MAAM,GAAGC,4BAAA,CAAgBC,MAAhB,CAAuBH,KAAK,CAACI,QAA7B,EAAuCJ,KAAK,CAACK,MAA7C,CAAf;;EACAH,4BAAA,CAAgBI,aAAhB,CAA8BL,MAA9B;AACD,CAHD;;AAKA,MAAM;EAAEM,SAAF;EAAaC;AAAb,IAA2BC,qBAAA,CAASC,MAAT,CAAgC;EAC/DC,OAAO,EAAE;IAAEJ,SAAS,EAAE,iBAAb;IAAgCC,SAAS,EAAE;EAA3C,CADsD;EAE/DI,OAAO,EAAE;IAAEL,SAAS,EAAE,kBAAb;IAAiCC,SAAS,EAAE;EAA5C;AAFsD,CAAhC,CAAjC;;AAKA,MAAMK,iBAAiB,GAAG,MAAM;EAC9B,MAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsC,IAAAC,eAAA,EAAS;IAAEC,OAAO,EAAE,KAAX;IAAkBC,MAAM,EAAE,CAA1B;IAA6BC,WAAW,EAAE;EAA1C,CAAT,CAA5C;EACA,MAAM;IAAEC,MAAM,EAAEC;EAAV,IAA0B,IAAAC,6CAAA,GAAhC;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACd,MAAMC,aAAa,GAAG,CACpBC,qBAAA,CAASC,WAAT,CAAqBnB,SAArB,EAAiCP,KAAD,IAAW;MACzC,MAAMkB,MAAM,GAAGlB,KAAK,CAAC2B,cAAN,CAAqBT,MAApC;;MACA,MAAMC,WAAW,GAAGV,qBAAA,CAASC,MAAT,CAAgB;QAAEkB,GAAG,EAAEV,MAAM,GAAGG,WAAhB;QAA6BT,OAAO,EAAE;MAAtC,CAAhB,CAApB;;MACA,MAAMiB,mBAAmB,GAAGpB,qBAAA,CAASC,MAAT,CAAgB;QAAEkB,GAAG,EAAE7B,4BAAP;QAAqCa,OAAO,EAAEkB;MAA9C,CAAhB,CAA5B;;MAEAD,mBAAmB,CAAC7B,KAAD,CAAnB;MACAe,iBAAiB,CAAC;QAAEE,OAAO,EAAE,IAAX;QAAiBC,MAAjB;QAAyBC;MAAzB,CAAD,CAAjB;IACD,CAPD,CADoB,EAUpBM,qBAAA,CAASC,WAAT,CAAqBlB,SAArB,EAAiCR,KAAD,IAAW;MACzC,MAAMkB,MAAM,GAAG,CAAf;;MACA,MAAMC,WAAW,GAAGV,qBAAA,CAASC,MAAT,CAAgB;QAAEE,OAAO,EAAEM;MAAX,CAAhB,CAApB;;MACA,MAAMW,mBAAmB,GAAGpB,qBAAA,CAASC,MAAT,CAAgB;QAAEkB,GAAG,EAAE7B,4BAAP;QAAqCa,OAAO,EAAEkB;MAA9C,CAAhB,CAA5B;;MAEAD,mBAAmB,CAAC7B,KAAD,CAAnB;MACAe,iBAAiB,CAAC;QAAEE,OAAO,EAAE,KAAX;QAAkBC,MAAlB;QAA0BC;MAA1B,CAAD,CAAjB;IACD,CAPD,CAVoB,CAAtB;IAmBA,OAAO,MAAM;MACXK,aAAa,CAACO,OAAd,CAAuBC,EAAD,IAAQA,EAAE,CAACC,MAAH,EAA9B;IACD,CAFD;EAGD,CAvBD,EAuBG,EAvBH;EAyBA,OAAOnB,cAAP;AACD,CA9BD;;eAgCeD,iB"}
1
+ {"version":3,"names":["isLayoutAnimationConfigured","configureNextLayoutAnimation","event","config","LayoutAnimation","create","duration","easing","Properties","scaleY","onEnd","configureNext","showEvent","hideEvent","Platform","select","android","default","useKeyboardStatus","keyboardStatus","setKeyboardStatus","useState","visible","height","bottomSpace","bottom","bottomInset","useSafeAreaInsets","useEffect","subscriptions","Keyboard","addListener","endCoordinates","ios","nextLayoutAnimation","NOOP","forEach","it","remove"],"sources":["useKeyboardStatus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { Keyboard, KeyboardEvent, KeyboardEventName, LayoutAnimation, Platform } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { NOOP } from '@sendbird/uikit-utils';\n\ntype KeyboardEvents = {\n showEvent: KeyboardEventName;\n hideEvent: KeyboardEventName;\n};\n\nlet isLayoutAnimationConfigured = false;\n\nconst configureNextLayoutAnimation = (event: KeyboardEvent) => {\n if (isLayoutAnimationConfigured) return;\n const config = LayoutAnimation.create(event.duration, event.easing, LayoutAnimation.Properties.scaleY);\n isLayoutAnimationConfigured = true;\n const onEnd = () => (isLayoutAnimationConfigured = false);\n LayoutAnimation.configureNext(config, onEnd, onEnd);\n};\n\nconst { showEvent, hideEvent } = Platform.select<KeyboardEvents>({\n android: { showEvent: 'keyboardDidShow', hideEvent: 'keyboardDidHide' },\n default: { showEvent: 'keyboardWillShow', hideEvent: 'keyboardWillHide' },\n});\n\nconst useKeyboardStatus = () => {\n const [keyboardStatus, setKeyboardStatus] = useState({ visible: false, height: 0, bottomSpace: 0 });\n const { bottom: bottomInset } = useSafeAreaInsets();\n\n useEffect(() => {\n const subscriptions = [\n Keyboard.addListener(showEvent, (event) => {\n const height = event.endCoordinates.height;\n const bottomSpace = Platform.select({ ios: height - bottomInset, default: 0 });\n const nextLayoutAnimation = Platform.select({ ios: configureNextLayoutAnimation, default: NOOP });\n\n nextLayoutAnimation(event);\n setKeyboardStatus({ visible: true, height, bottomSpace });\n }),\n\n Keyboard.addListener(hideEvent, () => {\n const height = 0;\n const bottomSpace = Platform.select({ default: height });\n // const nextLayoutAnimation = Platform.select({ ios: configureNextLayoutAnimation, default: NOOP });\n\n // nextLayoutAnimation(event);\n setKeyboardStatus({ visible: false, height, bottomSpace });\n }),\n ];\n return () => {\n subscriptions.forEach((it) => it.remove());\n };\n }, []);\n\n return keyboardStatus;\n};\n\nexport default useKeyboardStatus;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAOA,IAAIA,2BAA2B,GAAG,KAAlC;;AAEA,MAAMC,4BAA4B,GAAIC,KAAD,IAA0B;EAC7D,IAAIF,2BAAJ,EAAiC;;EACjC,MAAMG,MAAM,GAAGC,4BAAA,CAAgBC,MAAhB,CAAuBH,KAAK,CAACI,QAA7B,EAAuCJ,KAAK,CAACK,MAA7C,EAAqDH,4BAAA,CAAgBI,UAAhB,CAA2BC,MAAhF,CAAf;;EACAT,2BAA2B,GAAG,IAA9B;;EACA,MAAMU,KAAK,GAAG,MAAOV,2BAA2B,GAAG,KAAnD;;EACAI,4BAAA,CAAgBO,aAAhB,CAA8BR,MAA9B,EAAsCO,KAAtC,EAA6CA,KAA7C;AACD,CAND;;AAQA,MAAM;EAAEE,SAAF;EAAaC;AAAb,IAA2BC,qBAAA,CAASC,MAAT,CAAgC;EAC/DC,OAAO,EAAE;IAAEJ,SAAS,EAAE,iBAAb;IAAgCC,SAAS,EAAE;EAA3C,CADsD;EAE/DI,OAAO,EAAE;IAAEL,SAAS,EAAE,kBAAb;IAAiCC,SAAS,EAAE;EAA5C;AAFsD,CAAhC,CAAjC;;AAKA,MAAMK,iBAAiB,GAAG,MAAM;EAC9B,MAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsC,IAAAC,eAAA,EAAS;IAAEC,OAAO,EAAE,KAAX;IAAkBC,MAAM,EAAE,CAA1B;IAA6BC,WAAW,EAAE;EAA1C,CAAT,CAA5C;EACA,MAAM;IAAEC,MAAM,EAAEC;EAAV,IAA0B,IAAAC,6CAAA,GAAhC;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACd,MAAMC,aAAa,GAAG,CACpBC,qBAAA,CAASC,WAAT,CAAqBnB,SAArB,EAAiCV,KAAD,IAAW;MACzC,MAAMqB,MAAM,GAAGrB,KAAK,CAAC8B,cAAN,CAAqBT,MAApC;;MACA,MAAMC,WAAW,GAAGV,qBAAA,CAASC,MAAT,CAAgB;QAAEkB,GAAG,EAAEV,MAAM,GAAGG,WAAhB;QAA6BT,OAAO,EAAE;MAAtC,CAAhB,CAApB;;MACA,MAAMiB,mBAAmB,GAAGpB,qBAAA,CAASC,MAAT,CAAgB;QAAEkB,GAAG,EAAEhC,4BAAP;QAAqCgB,OAAO,EAAEkB;MAA9C,CAAhB,CAA5B;;MAEAD,mBAAmB,CAAChC,KAAD,CAAnB;MACAkB,iBAAiB,CAAC;QAAEE,OAAO,EAAE,IAAX;QAAiBC,MAAjB;QAAyBC;MAAzB,CAAD,CAAjB;IACD,CAPD,CADoB,EAUpBM,qBAAA,CAASC,WAAT,CAAqBlB,SAArB,EAAgC,MAAM;MACpC,MAAMU,MAAM,GAAG,CAAf;;MACA,MAAMC,WAAW,GAAGV,qBAAA,CAASC,MAAT,CAAgB;QAAEE,OAAO,EAAEM;MAAX,CAAhB,CAApB,CAFoC,CAGpC;MAEA;;;MACAH,iBAAiB,CAAC;QAAEE,OAAO,EAAE,KAAX;QAAkBC,MAAlB;QAA0BC;MAA1B,CAAD,CAAjB;IACD,CAPD,CAVoB,CAAtB;IAmBA,OAAO,MAAM;MACXK,aAAa,CAACO,OAAd,CAAuBC,EAAD,IAAQA,EAAE,CAACC,MAAH,EAA9B;IACD,CAFD;EAGD,CAvBD,EAuBG,EAvBH;EAyBA,OAAOnB,cAAP;AACD,CA9BD;;eAgCeD,iB"}
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","setLogLevel","__DEV__","setTitle","Platform","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport {\n GroupChannelNotificationsProps,\n GroupChannelNotificationsContextsType,\n GroupChannelNotificationsFragment,\n GroupChannelNotificationsModule,\n} from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoBA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AASA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAOA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAIA;;AAEA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;;;;;AAvHA;;AAmBA;;AAcA;;AAMA;;AAKA;;AAKA;;AA2BA;;AAsCA;AAOAA,kBAAA,CAAOC,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;;AACAF,kBAAA,CAAOG,QAAP,CAAiB,UAASC,qBAAA,CAASC,EAAG,GAAtC"}
1
+ {"version":3,"names":["Logger","setLogLevel","__DEV__","setTitle","Platform","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n MediaServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport {\n GroupChannelNotificationsProps,\n GroupChannelNotificationsContextsType,\n GroupChannelNotificationsFragment,\n GroupChannelNotificationsModule,\n} from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAqBA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AASA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAOA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAIA;;AAEA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;;;;;AAxHA;;AAmBA;;AAcA;;AAMA;;AAKA;;AAKA;;AA4BA;;AAsCA;AAOAA,kBAAA,CAAOC,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;;AACAF,kBAAA,CAAOG,QAAP,CAAiB,UAASC,qBAAA,CAASC,EAAG,GAAtC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _uikitUtils = require("@sendbird/uikit-utils");
9
+
10
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+
12
+ class ImageCompressionConfig {
13
+ constructor(_config) {
14
+ this._config = _config;
15
+ if (_config.compressionRate > 1) _uikitUtils.Logger.warn('Compression rate must be in the range of 0.0 - 1.0');
16
+ }
17
+
18
+ get compressionRate() {
19
+ return Math.min(Math.max(0, this._config.compressionRate), 1);
20
+ }
21
+
22
+ get width() {
23
+ return this._config.width;
24
+ }
25
+
26
+ get height() {
27
+ return this._config.height;
28
+ }
29
+
30
+ }
31
+
32
+ _defineProperty(ImageCompressionConfig, "DEFAULT", {
33
+ COMPRESSION_RATE: 0.7
34
+ });
35
+
36
+ var _default = ImageCompressionConfig;
37
+ exports.default = _default;
38
+ //# sourceMappingURL=ImageCompressionConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ImageCompressionConfig","constructor","_config","compressionRate","Logger","warn","Math","min","max","width","height","COMPRESSION_RATE"],"sources":["ImageCompressionConfig.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nexport interface ImageCompressionConfigInterface {\n compressionRate: number;\n width?: number;\n height?: number;\n}\n\nclass ImageCompressionConfig {\n static DEFAULT = {\n COMPRESSION_RATE: 0.7,\n };\n\n constructor(private _config: ImageCompressionConfigInterface) {\n if (_config.compressionRate > 1) Logger.warn('Compression rate must be in the range of 0.0 - 1.0');\n }\n\n get compressionRate() {\n return Math.min(Math.max(0, this._config.compressionRate), 1);\n }\n\n get width() {\n return this._config.width;\n }\n\n get height() {\n return this._config.height;\n }\n}\n\nexport default ImageCompressionConfig;\n"],"mappings":";;;;;;;AAAA;;;;AAQA,MAAMA,sBAAN,CAA6B;EAK3BC,WAAW,CAASC,OAAT,EAAmD;IAAA,KAA1CA,OAA0C,GAA1CA,OAA0C;IAC5D,IAAIA,OAAO,CAACC,eAAR,GAA0B,CAA9B,EAAiCC,kBAAA,CAAOC,IAAP,CAAY,oDAAZ;EAClC;;EAEkB,IAAfF,eAAe,GAAG;IACpB,OAAOG,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY,KAAKN,OAAL,CAAaC,eAAzB,CAAT,EAAoD,CAApD,CAAP;EACD;;EAEQ,IAALM,KAAK,GAAG;IACV,OAAO,KAAKP,OAAL,CAAaO,KAApB;EACD;;EAES,IAANC,MAAM,GAAG;IACX,OAAO,KAAKR,OAAL,CAAaQ,MAApB;EACD;;AAnB0B;;gBAAvBV,sB,aACa;EACfW,gBAAgB,EAAE;AADH,C;;eAqBJX,sB"}
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _reactNative = require("react-native");
9
9
 
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+
10
12
  class SBUUtils {
11
13
  static openSettings() {
12
14
  _reactNative.Linking.openSettings().catch(() => {
@@ -14,6 +16,31 @@ class SBUUtils {
14
16
  });
15
17
  }
16
18
 
19
+ static openURL(url) {
20
+ const targetUrl = url.startsWith('http') ? url : 'https://' + url;
21
+
22
+ _reactNative.Linking.openURL(targetUrl).catch(err => _uikitUtils.Logger.warn('Cannot open url', err));
23
+ }
24
+
25
+ static getImageSize(uri) {
26
+ return new Promise((resolve, reject) => {
27
+ _reactNative.Image.getSize(uri, (width, height) => {
28
+ resolve({
29
+ width,
30
+ height
31
+ });
32
+ }, error => {
33
+ reject(error);
34
+ });
35
+ });
36
+ }
37
+
38
+ static async safeRun(callback) {
39
+ try {
40
+ await callback();
41
+ } catch (e) {}
42
+ }
43
+
17
44
  }
18
45
 
19
46
  exports.default = SBUUtils;
@@ -1 +1 @@
1
- {"version":3,"names":["SBUUtils","openSettings","Linking","catch","Platform","OS","openURL"],"sources":["SBUUtils.ts"],"sourcesContent":["import { Linking, Platform } from 'react-native';\n\nexport default class SBUUtils {\n static openSettings() {\n Linking.openSettings().catch(() => {\n if (Platform.OS === 'ios') Linking.openURL('App-Prefs:root');\n });\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAEe,MAAMA,QAAN,CAAe;EACT,OAAZC,YAAY,GAAG;IACpBC,oBAAA,CAAQD,YAAR,GAAuBE,KAAvB,CAA6B,MAAM;MACjC,IAAIC,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2BH,oBAAA,CAAQI,OAAR,CAAgB,gBAAhB;IAC5B,CAFD;EAGD;;AAL2B"}
1
+ {"version":3,"names":["SBUUtils","openSettings","Linking","catch","Platform","OS","openURL","url","targetUrl","startsWith","err","Logger","warn","getImageSize","uri","Promise","resolve","reject","Image","getSize","width","height","error","safeRun","callback","e"],"sources":["SBUUtils.ts"],"sourcesContent":["import { Image, Linking, Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport default class SBUUtils {\n static openSettings() {\n Linking.openSettings().catch(() => {\n if (Platform.OS === 'ios') Linking.openURL('App-Prefs:root');\n });\n }\n\n static openURL(url: string) {\n const targetUrl = url.startsWith('http') ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('Cannot open url', err));\n }\n\n static getImageSize(uri: string): Promise<{ width: number; height: number }> {\n return new Promise((resolve, reject) => {\n Image.getSize(\n uri,\n (width, height) => {\n resolve({ width, height });\n },\n (error) => {\n reject(error);\n },\n );\n });\n }\n\n static async safeRun(callback: () => Promise<void>) {\n try {\n await callback();\n } catch (e) {}\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEe,MAAMA,QAAN,CAAe;EACT,OAAZC,YAAY,GAAG;IACpBC,oBAAA,CAAQD,YAAR,GAAuBE,KAAvB,CAA6B,MAAM;MACjC,IAAIC,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2BH,oBAAA,CAAQI,OAAR,CAAgB,gBAAhB;IAC5B,CAFD;EAGD;;EAEa,OAAPA,OAAO,CAACC,GAAD,EAAc;IAC1B,MAAMC,SAAS,GAAGD,GAAG,CAACE,UAAJ,CAAe,MAAf,IAAyBF,GAAzB,GAA+B,aAAaA,GAA9D;;IACAL,oBAAA,CAAQI,OAAR,CAAgBE,SAAhB,EAA2BL,KAA3B,CAAkCO,GAAD,IAASC,kBAAA,CAAOC,IAAP,CAAY,iBAAZ,EAA+BF,GAA/B,CAA1C;EACD;;EAEkB,OAAZG,YAAY,CAACC,GAAD,EAA0D;IAC3E,OAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtCC,kBAAA,CAAMC,OAAN,CACEL,GADF,EAEE,CAACM,KAAD,EAAQC,MAAR,KAAmB;QACjBL,OAAO,CAAC;UAAEI,KAAF;UAASC;QAAT,CAAD,CAAP;MACD,CAJH,EAKGC,KAAD,IAAW;QACTL,MAAM,CAACK,KAAD,CAAN;MACD,CAPH;IASD,CAVM,CAAP;EAWD;;EAEmB,aAAPC,OAAO,CAACC,QAAD,EAAgC;IAClD,IAAI;MACF,MAAMA,QAAQ,EAAd;IACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CAAE;EACf;;AA9B2B"}
@@ -168,6 +168,9 @@ const createBaseStringSet = _ref => {
168
168
  ...(overrides === null || overrides === void 0 ? void 0 : overrides.GROUP_CHANNEL_INVITE)
169
169
  },
170
170
  LABELS: {
171
+ PERMISSION_APP_NAME: 'Application',
172
+ PERMISSION_CAMERA: 'camera',
173
+ PERMISSION_DEVICE_STORAGE: 'device storage',
171
174
  USER_NO_NAME,
172
175
  CHANNEL_NO_MEMBERS,
173
176
  TYPING_INDICATOR_TYPINGS: function (users) {