stream-chat-react-native-core 4.3.1-beta.2 → 4.4.0-beta.2

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 (76) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Attachment/Card.js +25 -28
  3. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/FileAttachment.js +19 -24
  5. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/Giphy.js +27 -25
  7. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +42 -0
  9. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +1 -0
  10. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +11 -7
  11. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  12. package/lib/commonjs/components/Chat/Chat.js +4 -8
  13. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  14. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +1 -3
  15. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  16. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +20 -14
  17. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  18. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +8 -6
  19. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
  20. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  21. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  22. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  23. package/lib/commonjs/version.json +1 -1
  24. package/lib/module/components/Attachment/Card.js +25 -28
  25. package/lib/module/components/Attachment/Card.js.map +1 -1
  26. package/lib/module/components/Attachment/FileAttachment.js +19 -24
  27. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  28. package/lib/module/components/Attachment/Giphy.js +27 -25
  29. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  30. package/lib/module/components/Attachment/hooks/useGoToURL.js +42 -0
  31. package/lib/module/components/Attachment/hooks/useGoToURL.js.map +1 -0
  32. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +11 -7
  33. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  34. package/lib/module/components/Chat/Chat.js +4 -8
  35. package/lib/module/components/Chat/Chat.js.map +1 -1
  36. package/lib/module/components/Chat/hooks/useCreateChatContext.js +1 -3
  37. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  38. package/lib/module/components/Message/MessageSimple/utils/renderText.js +20 -14
  39. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  40. package/lib/module/components/MessageList/ScrollToBottomButton.js +8 -6
  41. package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
  42. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  43. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  44. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  45. package/lib/module/version.json +1 -1
  46. package/lib/typescript/components/Attachment/FileAttachment.d.ts +0 -1
  47. package/lib/typescript/components/Attachment/hooks/useGoToURL.d.ts +2 -0
  48. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  49. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -5
  50. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
  51. package/package.json +2 -2
  52. package/src/components/Attachment/Card.tsx +5 -13
  53. package/src/components/Attachment/FileAttachment.tsx +5 -13
  54. package/src/components/Attachment/Giphy.tsx +3 -1
  55. package/src/components/Attachment/__tests__/Attachment.test.js +39 -0
  56. package/src/components/Attachment/hooks/useGoToURL.ts +27 -0
  57. package/src/components/AttachmentPicker/AttachmentPicker.tsx +23 -13
  58. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +0 -1
  59. package/src/components/Chat/Chat.tsx +0 -4
  60. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  61. package/src/components/Message/MessageSimple/utils/renderText.tsx +8 -2
  62. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +8 -8
  63. package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +2 -2
  64. package/src/components/MessageList/ScrollToBottomButton.tsx +2 -1
  65. package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.js.snap +1 -0
  66. package/src/contexts/chatContext/ChatContext.tsx +1 -5
  67. package/src/contexts/themeContext/utils/theme.ts +1 -0
  68. package/src/version.json +1 -1
  69. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +0 -80
  70. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +0 -1
  71. package/lib/module/components/Chat/hooks/useAppSettings.js +0 -80
  72. package/lib/module/components/Chat/hooks/useAppSettings.js.map +0 -1
  73. package/lib/typescript/components/Chat/hooks/__tests__/useAppSettings.test.d.ts +0 -1
  74. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts +0 -3
  75. package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +0 -34
  76. package/src/components/Chat/hooks/useAppSettings.ts +0 -39
@@ -1 +1 @@
1
- {"version":3,"sources":["Giphy.tsx"],"names":["styles","StyleSheet","create","actionsRow","flexDirection","buttonContainer","alignItems","borderTopWidth","flex","justifyContent","cancel","fontSize","fontWeight","paddingVertical","container","overflow","width","giphy","alignSelf","borderRadius","height","maxWidth","giphyContainer","giphyHeaderText","giphyHeaderTitle","giphyMask","bottom","left","position","giphyMaskText","header","display","padding","selectionContainer","borderBottomLeftRadius","borderWidth","selectionImageContainer","margin","send","shuffle","shuffleButton","GiphyWithContext","props","additionalTouchableProps","attachment","giphyVersion","handleAction","isMyMessage","message","onLongPress","onPress","onPressIn","preventPress","setImage","setImages","setOverlay","actions","giphyData","image_url","thumb_url","title","type","theme","colors","accent_blue","black","grey","grey_dark","grey_gainsboro","label_bg_transparent","white","messageSimple","uri","giphyDimensions","defaultOnPress","messageId","id","url","giphyVersionInfo","parseFloat","backgroundColor","borderColor","color","name","value","borderRightWidth","text","event","emitter","defaultHandler","toUpperCase","areEqual","prevProps","nextProps","prevActions","prevImageUrl","prevThumbUrl","prevGiphyVersion","prevIsMyMessage","nextActions","nextImageUrl","nextThumbUrl","nextGiphyVersion","nextIsMyMessage","imageUrlEqual","thumbUrlEqual","actionsEqual","Array","isArray","length","giphyVersionEqual","isMyMessageEqual","MemoizedGiphy","React","memo","Giphy","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { GiphyIcon } from '../../icons';\nimport { Lightning } from '../../icons/Lightning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { makeImageCompatibleUrl } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n actionsRow: {\n flexDirection: 'row',\n },\n buttonContainer: {\n alignItems: 'center',\n borderTopWidth: 1,\n flex: 1,\n justifyContent: 'center',\n },\n cancel: {\n fontSize: 14,\n fontWeight: '600',\n paddingVertical: 16,\n },\n container: {\n overflow: 'hidden',\n width: 270,\n },\n giphy: {\n alignSelf: 'center',\n borderRadius: 2,\n height: 170,\n maxWidth: 270,\n width: 270,\n },\n giphyContainer: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n height: 24,\n justifyContent: 'center',\n width: 68,\n },\n giphyHeaderText: {\n fontSize: 16,\n fontWeight: '600',\n },\n giphyHeaderTitle: {\n fontSize: 14,\n },\n giphyMask: {\n bottom: 8,\n left: 8,\n position: 'absolute',\n },\n giphyMaskText: {\n fontSize: 13,\n fontWeight: '600',\n },\n header: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 8,\n width: '60%',\n },\n selectionContainer: {\n borderBottomLeftRadius: 8,\n borderWidth: 1,\n overflow: 'hidden',\n width: 272,\n },\n selectionImageContainer: {\n alignSelf: 'center',\n margin: 1,\n },\n send: {\n fontSize: 14,\n fontWeight: '600',\n paddingVertical: 16,\n },\n shuffle: {\n fontSize: 14,\n fontWeight: '600',\n paddingVertical: 16,\n },\n shuffleButton: {\n alignItems: 'center',\n borderRadius: 16,\n borderWidth: 1,\n height: 32,\n justifyContent: 'center',\n width: 32,\n },\n});\n\nexport type GiphyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'handleAction'\n | 'isMyMessage'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'giphyVersion' | 'additionalTouchableProps'> & {\n attachment: Attachment<StreamChatGenerics>;\n } & Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GiphyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GiphyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n attachment,\n giphyVersion,\n handleAction,\n isMyMessage,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n } = props;\n\n const { actions, giphy: giphyData, image_url, thumb_url, title, type } = attachment;\n\n const {\n theme: {\n colors: { accent_blue, black, grey, grey_dark, grey_gainsboro, label_bg_transparent, white },\n messageSimple: {\n giphy: {\n buttonContainer,\n cancel,\n container,\n giphy,\n giphyContainer,\n giphyHeaderText,\n giphyHeaderTitle,\n giphyMask,\n giphyMaskText,\n header,\n selectionContainer,\n send,\n shuffle,\n },\n },\n },\n } = useTheme();\n\n let uri = image_url || thumb_url;\n const giphyDimensions: { height?: number; width?: number } = {};\n\n const defaultOnPress = () => {\n setImages([message]);\n setImage({ messageId: message.id, url: uri });\n setOverlay('gallery');\n };\n\n if (type === 'giphy' && giphyData) {\n const giphyVersionInfo = giphyData[giphyVersion];\n uri = giphyVersionInfo.url;\n giphyDimensions.height = parseFloat(giphyVersionInfo.height);\n giphyDimensions.width = parseFloat(giphyVersionInfo.width);\n }\n\n if (!uri) return null;\n\n return actions ? (\n <View\n style={[\n styles.selectionContainer,\n { backgroundColor: white, borderColor: `${black}0D` },\n selectionContainer,\n ]}\n testID='giphy-action-attachment'\n >\n <View style={[styles.header, header]}>\n <GiphyIcon />\n <Text style={[styles.giphyHeaderText, giphyHeaderText]}>Giphy</Text>\n <Text\n style={[styles.giphyHeaderTitle, giphyHeaderTitle, { color: grey_dark }]}\n >{`/giphy ${title}`}</Text>\n </View>\n <View style={styles.selectionImageContainer}>\n <Image\n resizeMode='contain'\n source={{ uri: makeImageCompatibleUrl(uri) }}\n style={[styles.giphy, giphyDimensions, giphy]}\n />\n </View>\n <View>\n <View style={styles.actionsRow}>\n <TouchableOpacity\n onPress={() => {\n if (actions?.[2].name && actions?.[2].value && handleAction) {\n handleAction(actions[2].name, actions[2].value);\n }\n }}\n style={[\n styles.buttonContainer,\n { borderColor: grey_gainsboro, borderRightWidth: 1 },\n buttonContainer,\n ]}\n testID={`${actions?.[2].value}-action-button`}\n >\n <Text style={[styles.cancel, { color: grey }, cancel]}>{actions?.[2].text}</Text>\n </TouchableOpacity>\n <TouchableOpacity\n onPress={() => {\n if (actions?.[1].name && actions?.[1].value && handleAction) {\n handleAction(actions[1].name, actions[1].value);\n }\n }}\n style={[\n styles.buttonContainer,\n { borderColor: grey_gainsboro, borderRightWidth: 1 },\n buttonContainer,\n ]}\n testID={`${actions?.[1].value}-action-button`}\n >\n <Text style={[styles.shuffle, { color: grey }, shuffle]}>{actions?.[1].text}</Text>\n </TouchableOpacity>\n <TouchableOpacity\n onPress={() => {\n if (actions?.[0].name && actions?.[0].value && handleAction) {\n handleAction(actions[0].name, actions[0].value);\n }\n }}\n style={[styles.buttonContainer, { borderColor: grey_gainsboro }, buttonContainer]}\n testID={`${actions?.[0].value}-action-button`}\n >\n <Text style={[styles.send, { color: accent_blue }, send]}>{actions?.[0].text}</Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n ) : (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'giphy',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'giphy',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'giphy',\n event,\n });\n }\n }}\n testID='giphy-attachment'\n {...additionalTouchableProps}\n >\n <View\n style={[\n styles.container,\n { backgroundColor: isMyMessage ? grey_gainsboro : white },\n container,\n ]}\n >\n <Image\n resizeMode='contain'\n source={{ uri: makeImageCompatibleUrl(uri) }}\n style={[styles.giphy, giphyDimensions, giphy]}\n testID='giphy-attachment-image'\n />\n <View style={[styles.giphyMask, giphyMask]}>\n <View\n style={[\n styles.giphyContainer,\n { backgroundColor: label_bg_transparent },\n giphyContainer,\n ]}\n >\n <Lightning height={16} pathFill={white} width={16} />\n <Text style={[styles.giphyMaskText, { color: white }, giphyMaskText]}>\n {type?.toUpperCase()}\n </Text>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GiphyPropsWithContext<StreamChatGenerics>,\n nextProps: GiphyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n attachment: { actions: prevActions, image_url: prevImageUrl, thumb_url: prevThumbUrl },\n giphyVersion: prevGiphyVersion,\n isMyMessage: prevIsMyMessage,\n } = prevProps;\n const {\n attachment: { actions: nextActions, image_url: nextImageUrl, thumb_url: nextThumbUrl },\n giphyVersion: nextGiphyVersion,\n isMyMessage: nextIsMyMessage,\n } = nextProps;\n\n const imageUrlEqual = prevImageUrl === nextImageUrl;\n if (!imageUrlEqual) return false;\n\n const thumbUrlEqual = prevThumbUrl === nextThumbUrl;\n if (!thumbUrlEqual) return false;\n\n const actionsEqual =\n Array.isArray(prevActions) === Array.isArray(nextActions) &&\n ((Array.isArray(prevActions) &&\n Array.isArray(nextActions) &&\n prevActions.length === nextActions.length) ||\n prevActions === nextActions);\n if (!actionsEqual) return false;\n\n const giphyVersionEqual = prevGiphyVersion === nextGiphyVersion;\n if (!giphyVersionEqual) return false;\n\n const isMyMessageEqual = prevIsMyMessage === nextIsMyMessage;\n if (!isMyMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedGiphy = React.memo(GiphyWithContext, areEqual) as typeof GiphyWithContext;\n\nexport type GiphyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GiphyPropsWithContext<StreamChatGenerics>> & {\n attachment: Attachment<StreamChatGenerics>;\n};\n\n/**\n * UI component for card in attachments.\n */\nexport const Giphy = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GiphyProps<StreamChatGenerics>,\n) => {\n const { handleAction, isMyMessage, message, onLongPress, onPress, onPressIn, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { additionalTouchableProps, giphyVersion } = useMessagesContext<StreamChatGenerics>();\n const { setImage, setImages } = useImageGalleryContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n return (\n <MemoizedGiphy\n {...{\n additionalTouchableProps,\n giphyVersion,\n handleAction,\n isMyMessage,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n }}\n {...props}\n />\n );\n};\n\nGiphy.displayName = 'Giphy{messageSimple{giphy}}';\n"]}
1
+ {"version":3,"sources":["Giphy.tsx"],"names":["styles","StyleSheet","create","actionsRow","flexDirection","buttonContainer","alignItems","borderTopWidth","flex","justifyContent","cancel","fontSize","fontWeight","paddingVertical","container","overflow","width","giphy","alignSelf","borderRadius","height","maxWidth","giphyContainer","giphyHeaderText","giphyHeaderTitle","marginLeft","giphyMask","bottom","left","position","giphyMaskText","header","display","padding","selectionContainer","borderBottomRightRadius","borderWidth","selectionImageContainer","margin","send","shuffle","shuffleButton","GiphyWithContext","props","additionalTouchableProps","attachment","giphyVersion","handleAction","isMyMessage","message","onLongPress","onPress","onPressIn","preventPress","setImage","setImages","setOverlay","actions","giphyData","image_url","thumb_url","title","type","theme","colors","accent_blue","black","grey","grey_dark","grey_gainsboro","label_bg_transparent","white","messageSimple","uri","giphyDimensions","defaultOnPress","messageId","id","url","giphyVersionInfo","parseFloat","backgroundColor","borderColor","color","name","value","borderRightWidth","text","event","emitter","defaultHandler","toUpperCase","areEqual","prevProps","nextProps","prevActions","prevImageUrl","prevThumbUrl","prevGiphyVersion","prevIsMyMessage","nextActions","nextImageUrl","nextThumbUrl","nextGiphyVersion","nextIsMyMessage","imageUrlEqual","thumbUrlEqual","actionsEqual","Array","isArray","length","giphyVersionEqual","isMyMessageEqual","MemoizedGiphy","React","memo","Giphy","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { GiphyIcon } from '../../icons';\nimport { Lightning } from '../../icons/Lightning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { makeImageCompatibleUrl } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n actionsRow: {\n flexDirection: 'row',\n },\n buttonContainer: {\n alignItems: 'center',\n borderTopWidth: 1,\n flex: 1,\n justifyContent: 'center',\n },\n cancel: {\n fontSize: 14,\n fontWeight: '600',\n paddingVertical: 16,\n },\n container: {\n overflow: 'hidden',\n width: 270,\n },\n giphy: {\n alignSelf: 'center',\n borderRadius: 2,\n height: 170,\n maxWidth: 270,\n width: 270,\n },\n giphyContainer: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n height: 24,\n justifyContent: 'center',\n width: 68,\n },\n giphyHeaderText: {\n fontSize: 16,\n fontWeight: '600',\n },\n giphyHeaderTitle: {\n fontSize: 14,\n marginLeft: 8,\n },\n giphyMask: {\n bottom: 8,\n left: 8,\n position: 'absolute',\n },\n giphyMaskText: {\n fontSize: 13,\n fontWeight: '600',\n },\n header: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 8,\n width: '60%',\n },\n selectionContainer: {\n borderBottomRightRadius: 0,\n borderRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n width: 272,\n },\n selectionImageContainer: {\n alignSelf: 'center',\n margin: 1,\n },\n send: {\n fontSize: 14,\n fontWeight: '600',\n paddingVertical: 16,\n },\n shuffle: {\n fontSize: 14,\n fontWeight: '600',\n paddingVertical: 16,\n },\n shuffleButton: {\n alignItems: 'center',\n borderRadius: 16,\n borderWidth: 1,\n height: 32,\n justifyContent: 'center',\n width: 32,\n },\n});\n\nexport type GiphyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'handleAction'\n | 'isMyMessage'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'giphyVersion' | 'additionalTouchableProps'> & {\n attachment: Attachment<StreamChatGenerics>;\n } & Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GiphyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GiphyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n attachment,\n giphyVersion,\n handleAction,\n isMyMessage,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n } = props;\n\n const { actions, giphy: giphyData, image_url, thumb_url, title, type } = attachment;\n\n const {\n theme: {\n colors: { accent_blue, black, grey, grey_dark, grey_gainsboro, label_bg_transparent, white },\n messageSimple: {\n giphy: {\n buttonContainer,\n cancel,\n container,\n giphy,\n giphyContainer,\n giphyHeaderText,\n giphyHeaderTitle,\n giphyMask,\n giphyMaskText,\n header,\n selectionContainer,\n send,\n shuffle,\n },\n },\n },\n } = useTheme();\n\n let uri = image_url || thumb_url;\n const giphyDimensions: { height?: number; width?: number } = {};\n\n const defaultOnPress = () => {\n setImages([message]);\n setImage({ messageId: message.id, url: uri });\n setOverlay('gallery');\n };\n\n if (type === 'giphy' && giphyData) {\n const giphyVersionInfo = giphyData[giphyVersion];\n uri = giphyVersionInfo.url;\n giphyDimensions.height = parseFloat(giphyVersionInfo.height);\n giphyDimensions.width = parseFloat(giphyVersionInfo.width);\n }\n\n if (!uri) return null;\n\n return actions ? (\n <View\n style={[\n styles.selectionContainer,\n { backgroundColor: white, borderColor: `${black}0D` },\n selectionContainer,\n ]}\n testID='giphy-action-attachment'\n >\n <View style={[styles.header, header]}>\n <GiphyIcon />\n <Text style={[styles.giphyHeaderText, giphyHeaderText]}>Giphy</Text>\n <Text\n style={[styles.giphyHeaderTitle, giphyHeaderTitle, { color: grey_dark }]}\n >{`/giphy ${title}`}</Text>\n </View>\n <View style={styles.selectionImageContainer}>\n <Image\n resizeMode='contain'\n source={{ uri: makeImageCompatibleUrl(uri) }}\n style={[styles.giphy, giphyDimensions, giphy]}\n />\n </View>\n <View>\n <View style={styles.actionsRow}>\n <TouchableOpacity\n onPress={() => {\n if (actions?.[2].name && actions?.[2].value && handleAction) {\n handleAction(actions[2].name, actions[2].value);\n }\n }}\n style={[\n styles.buttonContainer,\n { borderColor: grey_gainsboro, borderRightWidth: 1 },\n buttonContainer,\n ]}\n testID={`${actions?.[2].value}-action-button`}\n >\n <Text style={[styles.cancel, { color: grey }, cancel]}>{actions?.[2].text}</Text>\n </TouchableOpacity>\n <TouchableOpacity\n onPress={() => {\n if (actions?.[1].name && actions?.[1].value && handleAction) {\n handleAction(actions[1].name, actions[1].value);\n }\n }}\n style={[\n styles.buttonContainer,\n { borderColor: grey_gainsboro, borderRightWidth: 1 },\n buttonContainer,\n ]}\n testID={`${actions?.[1].value}-action-button`}\n >\n <Text style={[styles.shuffle, { color: grey }, shuffle]}>{actions?.[1].text}</Text>\n </TouchableOpacity>\n <TouchableOpacity\n onPress={() => {\n if (actions?.[0].name && actions?.[0].value && handleAction) {\n handleAction(actions[0].name, actions[0].value);\n }\n }}\n style={[styles.buttonContainer, { borderColor: grey_gainsboro }, buttonContainer]}\n testID={`${actions?.[0].value}-action-button`}\n >\n <Text style={[styles.send, { color: accent_blue }, send]}>{actions?.[0].text}</Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n ) : (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'giphy',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'giphy',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'giphy',\n event,\n });\n }\n }}\n testID='giphy-attachment'\n {...additionalTouchableProps}\n >\n <View\n style={[\n styles.container,\n { backgroundColor: isMyMessage ? grey_gainsboro : white },\n container,\n ]}\n >\n <Image\n resizeMode='contain'\n source={{ uri: makeImageCompatibleUrl(uri) }}\n style={[styles.giphy, giphyDimensions, giphy]}\n testID='giphy-attachment-image'\n />\n <View style={[styles.giphyMask, giphyMask]}>\n <View\n style={[\n styles.giphyContainer,\n { backgroundColor: label_bg_transparent },\n giphyContainer,\n ]}\n >\n <Lightning height={16} pathFill={white} width={16} />\n <Text style={[styles.giphyMaskText, { color: white }, giphyMaskText]}>\n {type?.toUpperCase()}\n </Text>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GiphyPropsWithContext<StreamChatGenerics>,\n nextProps: GiphyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n attachment: { actions: prevActions, image_url: prevImageUrl, thumb_url: prevThumbUrl },\n giphyVersion: prevGiphyVersion,\n isMyMessage: prevIsMyMessage,\n } = prevProps;\n const {\n attachment: { actions: nextActions, image_url: nextImageUrl, thumb_url: nextThumbUrl },\n giphyVersion: nextGiphyVersion,\n isMyMessage: nextIsMyMessage,\n } = nextProps;\n\n const imageUrlEqual = prevImageUrl === nextImageUrl;\n if (!imageUrlEqual) return false;\n\n const thumbUrlEqual = prevThumbUrl === nextThumbUrl;\n if (!thumbUrlEqual) return false;\n\n const actionsEqual =\n Array.isArray(prevActions) === Array.isArray(nextActions) &&\n ((Array.isArray(prevActions) &&\n Array.isArray(nextActions) &&\n prevActions.length === nextActions.length) ||\n prevActions === nextActions);\n if (!actionsEqual) return false;\n\n const giphyVersionEqual = prevGiphyVersion === nextGiphyVersion;\n if (!giphyVersionEqual) return false;\n\n const isMyMessageEqual = prevIsMyMessage === nextIsMyMessage;\n if (!isMyMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedGiphy = React.memo(GiphyWithContext, areEqual) as typeof GiphyWithContext;\n\nexport type GiphyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GiphyPropsWithContext<StreamChatGenerics>> & {\n attachment: Attachment<StreamChatGenerics>;\n};\n\n/**\n * UI component for card in attachments.\n */\nexport const Giphy = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GiphyProps<StreamChatGenerics>,\n) => {\n const { handleAction, isMyMessage, message, onLongPress, onPress, onPressIn, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { additionalTouchableProps, giphyVersion } = useMessagesContext<StreamChatGenerics>();\n const { setImage, setImages } = useImageGalleryContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n return (\n <MemoizedGiphy\n {...{\n additionalTouchableProps,\n giphyVersion,\n handleAction,\n isMyMessage,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n }}\n {...props}\n />\n );\n};\n\nGiphy.displayName = 'Giphy{messageSimple{giphy}}';\n"]}
@@ -0,0 +1,42 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useGoToURL = void 0;
7
+
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+
10
+ var _react = require("react");
11
+
12
+ var _reactNative = require("react-native");
13
+
14
+ var useGoToURL = function useGoToURL(url) {
15
+ var _useState = (0, _react.useState)(false),
16
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
17
+ error = _useState2[0],
18
+ setError = _useState2[1];
19
+
20
+ var finalUrl = url;
21
+ var pattern = new RegExp(/^\S+:\/\//);
22
+
23
+ if (!pattern.test(finalUrl)) {
24
+ finalUrl = 'http://' + url;
25
+ }
26
+
27
+ var openURL = function openURL() {
28
+ return _reactNative.Linking.canOpenURL(finalUrl).then(function (supported) {
29
+ if (supported) {
30
+ _reactNative.Linking.openURL(finalUrl);
31
+ } else {
32
+ setError(true);
33
+ console.log("Don't know how to open URI: " + finalUrl);
34
+ }
35
+ });
36
+ };
37
+
38
+ return [error, openURL];
39
+ };
40
+
41
+ exports.useGoToURL = useGoToURL;
42
+ //# sourceMappingURL=useGoToURL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useGoToURL.ts"],"names":["useGoToURL","url","error","setError","finalUrl","pattern","RegExp","test","openURL","Linking","canOpenURL","then","supported","console","log"],"mappings":";;;;;;;;;AAAA;;AACA;;AAIO,IAAMA,UAA0B,GAAG,SAA7BA,UAA6B,CAACC,GAAD,EAAkB;AAC1D,kBAA0B,qBAAkB,KAAlB,CAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AAEA,MAAIC,QAAQ,GAAGH,GAAf;AACA,MAAMI,OAAO,GAAG,IAAIC,MAAJ,CAAW,WAAX,CAAhB;;AAEA,MAAI,CAACD,OAAO,CAACE,IAAR,CAAaH,QAAb,CAAL,EAA6B;AAC3BA,IAAAA,QAAQ,GAAG,YAAYH,GAAvB;AACD;;AAED,MAAMO,OAAO,GAAG,SAAVA,OAAU;AAAA,WACdC,qBAAQC,UAAR,CAAmBN,QAAnB,EAA6BO,IAA7B,CAAkC,UAACC,SAAD,EAAe;AAC/C,UAAIA,SAAJ,EAAe;AACbH,6BAAQD,OAAR,CAAgBJ,QAAhB;AACD,OAFD,MAEO;AACLD,QAAAA,QAAQ,CAAC,IAAD,CAAR;AACAU,QAAAA,OAAO,CAACC,GAAR,kCAA2CV,QAA3C;AACD;AACF,KAPD,CADc;AAAA,GAAhB;;AAUA,SAAO,CAACF,KAAD,EAAQM,OAAR,CAAP;AACD,CArBM","sourcesContent":["import { useState } from 'react';\nimport { Linking } from 'react-native';\n\nexport type UseGoToURLType = (url?: string) => [boolean, () => Promise<void>];\n\nexport const useGoToURL: UseGoToURLType = (url?: string) => {\n const [error, setError] = useState<boolean>(false);\n\n let finalUrl = url as string;\n const pattern = new RegExp(/^\\S+:\\/\\//);\n\n if (!pattern.test(finalUrl)) {\n finalUrl = 'http://' + url;\n }\n\n const openURL = () =>\n Linking.canOpenURL(finalUrl).then((supported) => {\n if (supported) {\n Linking.openURL(finalUrl);\n } else {\n setError(true);\n console.log(`Don't know how to open URI: ${finalUrl}`);\n }\n });\n\n return [error, openURL];\n};\n"]}
@@ -48,7 +48,7 @@ var styles = _reactNative.StyleSheet.create({
48
48
 
49
49
  var screenHeight = (0, _utils.vh)(100);
50
50
 
51
- var fullScreenHeight = _reactNative.Dimensions.get('screen').height;
51
+ var fullScreenHeight = _reactNative.Dimensions.get('window').height;
52
52
 
53
53
  var AttachmentImage = function AttachmentImage(props) {
54
54
  var ImageOverlaySelectedComponent = props.ImageOverlaySelectedComponent,
@@ -337,9 +337,13 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
337
337
  var statusBarHeight = (_StatusBar$currentHei = _reactNative.StatusBar.currentHeight) != null ? _StatusBar$currentHei : 0;
338
338
  var bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;
339
339
  var androidBottomBarHeightAdjustment = _reactNative.Platform.OS === 'android' ? bottomBarHeight === statusBarHeight ? translucentStatusBar ? 0 : (_StatusBar$currentHei2 = _reactNative.StatusBar.currentHeight) != null ? _StatusBar$currentHei2 : 0 : translucentStatusBar ? bottomBarHeight > statusBarHeight ? -bottomBarHeight + statusBarHeight : bottomBarHeight > 0 ? -statusBarHeight : 0 : bottomBarHeight > 0 ? 0 : statusBarHeight : 0;
340
- var snapPoints = (0, _react.useMemo)(function () {
341
- return [attachmentPickerBottomSheetHeight != null ? attachmentPickerBottomSheetHeight : 308 + (fullScreenHeight - screenHeight + androidBottomBarHeightAdjustment) - handleHeight, fullScreenHeight - topInset - handleHeight];
342
- }, [androidBottomBarHeightAdjustment, attachmentPickerBottomSheetHeight, fullScreenHeight, handleHeight, screenHeight, topInset]);
340
+ var initialSnapPoint = (0, _react.useMemo)(function () {
341
+ return (attachmentPickerBottomSheetHeight != null ? attachmentPickerBottomSheetHeight : _reactNative.Platform.OS === 'android') ? 308 + (fullScreenHeight - screenHeight + androidBottomBarHeightAdjustment) - handleHeight : 308 + (fullScreenHeight - screenHeight + androidBottomBarHeightAdjustment);
342
+ }, [attachmentPickerBottomSheetHeight, androidBottomBarHeightAdjustment, fullScreenHeight, handleHeight, screenHeight]);
343
+ var finalSnapPoint = (0, _react.useMemo)(function () {
344
+ return _reactNative.Platform.OS === 'android' ? fullScreenHeight - topInset - handleHeight : fullScreenHeight - topInset;
345
+ }, [fullScreenHeight, handleHeight, topInset]);
346
+ var snapPoints = [initialSnapPoint, finalSnapPoint];
343
347
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_bottomSheet["default"], {
344
348
  containerHeight: fullScreenHeight,
345
349
  enablePanDownToClose: true,
@@ -354,7 +358,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
354
358
  __self: _this,
355
359
  __source: {
356
360
  fileName: _jsxFileName,
357
- lineNumber: 351,
361
+ lineNumber: 361,
358
362
  columnNumber: 9
359
363
  }
360
364
  }, _react["default"].createElement(_bottomSheet.BottomSheetFlatList, {
@@ -373,7 +377,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
373
377
  __self: _this,
374
378
  __source: {
375
379
  fileName: _jsxFileName,
376
- lineNumber: 367,
380
+ lineNumber: 377,
377
381
  columnNumber: 11
378
382
  }
379
383
  })), selectedPicker === 'images' && photoError && _react["default"].createElement(AttachmentPickerError, {
@@ -384,7 +388,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
384
388
  __self: _this,
385
389
  __source: {
386
390
  fileName: _jsxFileName,
387
- lineNumber: 382,
391
+ lineNumber: 392,
388
392
  columnNumber: 11
389
393
  }
390
394
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["AttachmentPicker.tsx"],"names":["styles","StyleSheet","create","container","flexGrow","overlay","alignItems","flex","screenHeight","fullScreenHeight","Dimensions","get","height","AttachmentImage","props","ImageOverlaySelectedComponent","numberOfAttachmentPickerImageColumns","onPress","selected","uri","theme","attachmentPicker","image","imageOverlay","colors","size","margin","width","backgroundColor","renderImage","item","asset","maxNumberOfFiles","setSelectedImages","images","filter","length","AttachmentPicker","React","forwardRef","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","numberOfAttachmentImagesToLoadPerCall","translucentStatusBar","bottomSheetContentContainer","white","closePicker","selectedImages","selectedPicker","setSelectedPicker","topInset","currentIndex","setCurrentIndex","endCursor","setEndCursor","photoError","setPhotoError","hasNextPage","setHasNextPage","loadingPhotos","setLoadingPhotos","photos","setPhotos","hideAttachmentPicker","undefined","current","close","getMorePhotos","after","first","results","assets","console","log","backAction","backHandler","BackHandler","addEventListener","remove","keyboardSubscription","Platform","OS","Keyboard","addListener","removeListener","selectedPhotos","map","some","handleHeight","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidBottomBarHeightAdjustment","snapPoints","index","opacity","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n BackHandler,\n Dimensions,\n ImageBackground,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\n\nimport BottomSheet, {\n BottomSheetFlatList,\n BottomSheetHandleProps,\n TouchableOpacity,\n} from '@gorhom/bottom-sheet';\n\nimport type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Asset, getPhotos } from '../../native';\nimport { vh, vw } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n});\n\nconst screenHeight = vh(100);\nconst fullScreenHeight = Dimensions.get('screen').height;\n\ntype AttachmentImageProps = {\n ImageOverlaySelectedComponent: React.ComponentType;\n onPress: () => void;\n selected: boolean;\n uri: string;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n ImageOverlaySelectedComponent,\n numberOfAttachmentPickerImageColumns,\n onPress,\n selected,\n uri,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n return (\n <TouchableOpacity onPress={onPress}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst renderImage = ({\n item,\n}: {\n item: {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n selected: boolean;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n };\n}) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n selected,\n setSelectedImages,\n } = item;\n const onPress = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (images.length >= maxNumberOfFiles) {\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <AttachmentImage\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n onPress={onPress}\n selected={selected}\n uri={asset.uri}\n />\n );\n};\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/master/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI component to render overlay component, that shows up on top of [selected image](https://github.com/GetStream/stream-chat-react-native/blob/master/screenshots/docs/1.png) (with tick mark)\n *\n * **Default** [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)\n */\n ImageOverlaySelectedComponent: React.ComponentType;\n attachmentPickerBottomSheetHandleHeight?: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentPickerErrorButtonText?: string;\n attachmentPickerErrorText?: string;\n numberOfAttachmentImagesToLoadPerCall?: number;\n numberOfAttachmentPickerImageColumns?: number;\n translucentStatusBar?: boolean;\n};\n\nexport const AttachmentPicker = React.forwardRef(\n (props: AttachmentPickerProps, ref: React.ForwardedRef<BottomSheet>) => {\n const {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { bottomSheetContentContainer },\n colors: { white },\n },\n } = useTheme();\n const {\n closePicker,\n maxNumberOfFiles,\n selectedImages,\n selectedPicker,\n setSelectedImages,\n setSelectedPicker,\n topInset,\n } = useAttachmentPickerContext();\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const [endCursor, setEndCursor] = useState<string>();\n const [photoError, setPhotoError] = useState(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n\n const hideAttachmentPicker = () => {\n setSelectedPicker(undefined);\n if ((ref as React.MutableRefObject<BottomSheet>)?.current) {\n (ref as React.MutableRefObject<BottomSheet>).current.close();\n }\n };\n\n const getMorePhotos = async () => {\n if (hasNextPage && !loadingPhotos && currentIndex > -1 && selectedPicker === 'images') {\n setLoadingPhotos(true);\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n if (endCursor) {\n setPhotos([...photos, ...results.assets]);\n } else {\n setPhotos(results.assets);\n }\n setEndCursor(results.endCursor);\n setHasNextPage(results.hasNextPage || false);\n } catch (error) {\n console.log(error);\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n };\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker]);\n\n useEffect(() => {\n const keyboardSubscription =\n Platform.OS === 'ios'\n ? Keyboard.addListener('keyboardWillShow', hideAttachmentPicker)\n : Keyboard.addListener('keyboardDidShow', hideAttachmentPicker);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n if (Platform.OS === 'ios') {\n Keyboard.removeListener('keyboardWillShow', hideAttachmentPicker);\n } else {\n Keyboard.removeListener('keyboardDidShow', hideAttachmentPicker);\n }\n };\n }, []);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n setEndCursor(undefined);\n setHasNextPage(true);\n }\n }\n }, [currentIndex]);\n\n useEffect(() => {\n if (\n selectedPicker === 'images' &&\n endCursor === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n setPhotoError(false);\n getMorePhotos();\n }\n }, [currentIndex, selectedPicker]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n selected: selectedImages.some((image) => image.uri === asset.uri),\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n const androidBottomBarHeightAdjustment =\n Platform.OS === 'android'\n ? bottomBarHeight === statusBarHeight\n ? translucentStatusBar\n ? 0\n : StatusBar.currentHeight ?? 0\n : translucentStatusBar\n ? bottomBarHeight > statusBarHeight\n ? -bottomBarHeight + statusBarHeight\n : bottomBarHeight > 0\n ? -statusBarHeight\n : 0\n : bottomBarHeight > 0\n ? 0\n : statusBarHeight\n : 0;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [\n attachmentPickerBottomSheetHeight ??\n 308 + (fullScreenHeight - screenHeight + androidBottomBarHeightAdjustment) - handleHeight,\n fullScreenHeight - topInset - handleHeight,\n ],\n [\n androidBottomBarHeightAdjustment,\n attachmentPickerBottomSheetHeight,\n fullScreenHeight,\n handleHeight,\n screenHeight,\n topInset,\n ],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={(index: number) => setCurrentIndex(index)}\n ref={ref}\n snapPoints={snapPoints}\n >\n <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={getMorePhotos}\n renderItem={renderImage}\n />\n </BottomSheet>\n {selectedPicker === 'images' && photoError && (\n <AttachmentPickerError\n attachmentPickerBottomSheetHeight={attachmentPickerBottomSheetHeight}\n attachmentPickerErrorButtonText={attachmentPickerErrorButtonText}\n AttachmentPickerErrorImage={AttachmentPickerErrorImage}\n attachmentPickerErrorText={attachmentPickerErrorText}\n />\n )}\n </>\n );\n },\n);\n\nAttachmentPicker.displayName = 'AttachmentPicker';\n"]}
1
+ {"version":3,"sources":["AttachmentPicker.tsx"],"names":["styles","StyleSheet","create","container","flexGrow","overlay","alignItems","flex","screenHeight","fullScreenHeight","Dimensions","get","height","AttachmentImage","props","ImageOverlaySelectedComponent","numberOfAttachmentPickerImageColumns","onPress","selected","uri","theme","attachmentPicker","image","imageOverlay","colors","size","margin","width","backgroundColor","renderImage","item","asset","maxNumberOfFiles","setSelectedImages","images","filter","length","AttachmentPicker","React","forwardRef","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","numberOfAttachmentImagesToLoadPerCall","translucentStatusBar","bottomSheetContentContainer","white","closePicker","selectedImages","selectedPicker","setSelectedPicker","topInset","currentIndex","setCurrentIndex","endCursor","setEndCursor","photoError","setPhotoError","hasNextPage","setHasNextPage","loadingPhotos","setLoadingPhotos","photos","setPhotos","hideAttachmentPicker","undefined","current","close","getMorePhotos","after","first","results","assets","console","log","backAction","backHandler","BackHandler","addEventListener","remove","keyboardSubscription","Platform","OS","Keyboard","addListener","removeListener","selectedPhotos","map","some","handleHeight","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidBottomBarHeightAdjustment","initialSnapPoint","finalSnapPoint","snapPoints","index","opacity","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n BackHandler,\n Dimensions,\n ImageBackground,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\n\nimport BottomSheet, {\n BottomSheetFlatList,\n BottomSheetHandleProps,\n TouchableOpacity,\n} from '@gorhom/bottom-sheet';\n\nimport type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Asset, getPhotos } from '../../native';\nimport { vh, vw } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n});\n\nconst screenHeight = vh(100);\nconst fullScreenHeight = Dimensions.get('window').height;\n\ntype AttachmentImageProps = {\n ImageOverlaySelectedComponent: React.ComponentType;\n onPress: () => void;\n selected: boolean;\n uri: string;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n ImageOverlaySelectedComponent,\n numberOfAttachmentPickerImageColumns,\n onPress,\n selected,\n uri,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n return (\n <TouchableOpacity onPress={onPress}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst renderImage = ({\n item,\n}: {\n item: {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n selected: boolean;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n };\n}) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n selected,\n setSelectedImages,\n } = item;\n const onPress = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (images.length >= maxNumberOfFiles) {\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <AttachmentImage\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n onPress={onPress}\n selected={selected}\n uri={asset.uri}\n />\n );\n};\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/master/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI component to render overlay component, that shows up on top of [selected image](https://github.com/GetStream/stream-chat-react-native/blob/master/screenshots/docs/1.png) (with tick mark)\n *\n * **Default** [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)\n */\n ImageOverlaySelectedComponent: React.ComponentType;\n attachmentPickerBottomSheetHandleHeight?: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentPickerErrorButtonText?: string;\n attachmentPickerErrorText?: string;\n numberOfAttachmentImagesToLoadPerCall?: number;\n numberOfAttachmentPickerImageColumns?: number;\n translucentStatusBar?: boolean;\n};\n\nexport const AttachmentPicker = React.forwardRef(\n (props: AttachmentPickerProps, ref: React.ForwardedRef<BottomSheet>) => {\n const {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { bottomSheetContentContainer },\n colors: { white },\n },\n } = useTheme();\n const {\n closePicker,\n maxNumberOfFiles,\n selectedImages,\n selectedPicker,\n setSelectedImages,\n setSelectedPicker,\n topInset,\n } = useAttachmentPickerContext();\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const [endCursor, setEndCursor] = useState<string>();\n const [photoError, setPhotoError] = useState(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n\n const hideAttachmentPicker = () => {\n setSelectedPicker(undefined);\n if ((ref as React.MutableRefObject<BottomSheet>)?.current) {\n (ref as React.MutableRefObject<BottomSheet>).current.close();\n }\n };\n\n const getMorePhotos = async () => {\n if (hasNextPage && !loadingPhotos && currentIndex > -1 && selectedPicker === 'images') {\n setLoadingPhotos(true);\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n if (endCursor) {\n setPhotos([...photos, ...results.assets]);\n } else {\n setPhotos(results.assets);\n }\n setEndCursor(results.endCursor);\n setHasNextPage(results.hasNextPage || false);\n } catch (error) {\n console.log(error);\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n };\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker]);\n\n useEffect(() => {\n const keyboardSubscription =\n Platform.OS === 'ios'\n ? Keyboard.addListener('keyboardWillShow', hideAttachmentPicker)\n : Keyboard.addListener('keyboardDidShow', hideAttachmentPicker);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n if (Platform.OS === 'ios') {\n Keyboard.removeListener('keyboardWillShow', hideAttachmentPicker);\n } else {\n Keyboard.removeListener('keyboardDidShow', hideAttachmentPicker);\n }\n };\n }, []);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n setEndCursor(undefined);\n setHasNextPage(true);\n }\n }\n }, [currentIndex]);\n\n useEffect(() => {\n if (\n selectedPicker === 'images' &&\n endCursor === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n setPhotoError(false);\n getMorePhotos();\n }\n }, [currentIndex, selectedPicker]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n selected: selectedImages.some((image) => image.uri === asset.uri),\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n const androidBottomBarHeightAdjustment =\n Platform.OS === 'android'\n ? bottomBarHeight === statusBarHeight\n ? translucentStatusBar\n ? 0\n : StatusBar.currentHeight ?? 0\n : translucentStatusBar\n ? bottomBarHeight > statusBarHeight\n ? -bottomBarHeight + statusBarHeight\n : bottomBarHeight > 0\n ? -statusBarHeight\n : 0\n : bottomBarHeight > 0\n ? 0\n : statusBarHeight\n : 0;\n\n const initialSnapPoint = useMemo(\n () =>\n attachmentPickerBottomSheetHeight ?? Platform.OS === 'android'\n ? 308 +\n (fullScreenHeight - screenHeight + androidBottomBarHeightAdjustment) -\n handleHeight\n : 308 + (fullScreenHeight - screenHeight + androidBottomBarHeightAdjustment),\n [\n attachmentPickerBottomSheetHeight,\n androidBottomBarHeightAdjustment,\n fullScreenHeight,\n handleHeight,\n screenHeight,\n ],\n );\n\n const finalSnapPoint = useMemo(\n () =>\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset,\n [fullScreenHeight, handleHeight, topInset],\n );\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = [initialSnapPoint, finalSnapPoint];\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={(index: number) => setCurrentIndex(index)}\n ref={ref}\n snapPoints={snapPoints}\n >\n <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={getMorePhotos}\n renderItem={renderImage}\n />\n </BottomSheet>\n {selectedPicker === 'images' && photoError && (\n <AttachmentPickerError\n attachmentPickerBottomSheetHeight={attachmentPickerBottomSheetHeight}\n attachmentPickerErrorButtonText={attachmentPickerErrorButtonText}\n AttachmentPickerErrorImage={AttachmentPickerErrorImage}\n attachmentPickerErrorText={attachmentPickerErrorText}\n />\n )}\n </>\n );\n },\n);\n\nAttachmentPicker.displayName = 'AttachmentPicker';\n"]}
@@ -17,8 +17,6 @@ var _reactNative = require("react-native");
17
17
 
18
18
  var _dayjs = _interopRequireDefault(require("dayjs"));
19
19
 
20
- var _useAppSettings = require("./hooks/useAppSettings");
21
-
22
20
  var _useCreateChatContext = require("./hooks/useCreateChatContext");
23
21
 
24
22
  var _useIsOnline2 = require("./hooks/useIsOnline");
@@ -96,9 +94,7 @@ var ChatWithContext = function ChatWithContext(props) {
96
94
  return setChannel(newChannel);
97
95
  };
98
96
 
99
- var appSettings = (0, _useAppSettings.useAppSettings)(client, isOnline);
100
97
  var chatContext = (0, _useCreateChatContext.useCreateChatContext)({
101
- appSettings: appSettings,
102
98
  channel: channel,
103
99
  client: client,
104
100
  connectionRecovering: connectionRecovering,
@@ -112,7 +108,7 @@ var ChatWithContext = function ChatWithContext(props) {
112
108
  __self: _this,
113
109
  __source: {
114
110
  fileName: _jsxFileName,
115
- lineNumber: 180,
111
+ lineNumber: 176,
116
112
  columnNumber: 5
117
113
  }
118
114
  }, _react["default"].createElement(_TranslationContext.TranslationProvider, {
@@ -120,7 +116,7 @@ var ChatWithContext = function ChatWithContext(props) {
120
116
  __self: _this,
121
117
  __source: {
122
118
  fileName: _jsxFileName,
123
- lineNumber: 181,
119
+ lineNumber: 177,
124
120
  columnNumber: 7
125
121
  }
126
122
  }, _react["default"].createElement(_ThemeContext.ThemeProvider, {
@@ -128,7 +124,7 @@ var ChatWithContext = function ChatWithContext(props) {
128
124
  __self: _this,
129
125
  __source: {
130
126
  fileName: _jsxFileName,
131
- lineNumber: 182,
127
+ lineNumber: 178,
132
128
  columnNumber: 9
133
129
  }
134
130
  }, children)));
@@ -144,7 +140,7 @@ var Chat = function Chat(props) {
144
140
  __self: _this,
145
141
  __source: {
146
142
  fileName: _jsxFileName,
147
- lineNumber: 216,
143
+ lineNumber: 212,
148
144
  columnNumber: 10
149
145
  }
150
146
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","setActiveChannel","newChannel","appSettings","chatContext","Chat"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n TranslationContextValue,\n TranslationProvider,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n};\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslationContextValue>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client.setUserAgent) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n }\n }, []);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const appSettings = useAppSettings(client, isOnline);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider value={translators}>\n <ThemeProvider style={style}>{children}</ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","setActiveChannel","newChannel","chatContext","Chat"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAIA;;AACA;;AAEA;;AAGA;;;;;;;;;AAEA;;AA+FA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AACH,MAAQC,QAAR,GAAsFD,KAAtF,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAsFF,KAAtF,CAAkBE,MAAlB;AAAA,8BAAsFF,KAAtF,CAA0BG,2BAA1B;AAAA,MAA0BA,2BAA1B,sCAAwD,IAAxD;AAAA,MAA8DC,YAA9D,GAAsFJ,KAAtF,CAA8DI,YAA9D;AAAA,MAA4EC,KAA5E,GAAsFL,KAAtF,CAA4EK,KAA5E;;AAEA,kBAA8B,sBAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAAsC,qBAAkC;AACtEC,IAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,aAAiBA,GAAjB;AAAA,KADmE;AAEtEC,IAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,aAAoC,uBAAMA,KAAN,CAApC;AAAA;AAFqD,GAAlC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAQA,MAAMC,kBAAkB,GAAG,kCAAc;AAAEV,IAAAA,YAAY,EAAZA,YAAF;AAAgBS,IAAAA,cAAc,EAAdA;AAAhB,GAAd,CAA3B;;AAKA,qBAA2C,+BACzCX,MADyC,EAEzCC,2BAFyC,CAA3C;AAAA,MAAQY,oBAAR,gBAAQA,oBAAR;AAAA,MAA8BC,QAA9B,gBAA8BA,QAA9B;;AAQA,MAAMC,UAAU,GAAG,kCAAkCf,MAAlC,CAAnB;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,CAACgB,YAAX,EAAyB;AACvBhB,MAAAA,MAAM,CAACgB,YAAP,CAAuBC,WAAvB,SAA8BC,sBAASC,EAAvC,SAA6CC,gBAA7C;AAEApB,MAAAA,MAAM,CAACqB,uBAAP,GAAiC,KAAjC;AACD;AACF,GAND,EAMG,EANH;;AAQA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,UAAD;AAAA,WAA8ClB,UAAU,CAACkB,UAAD,CAAxD;AAAA,GAAzB;;AAEA,MAAMC,WAAW,GAAG,gDAAqB;AACvCpB,IAAAA,OAAO,EAAPA,OADuC;AAEvCJ,IAAAA,MAAM,EAANA,MAFuC;AAGvCa,IAAAA,oBAAoB,EAApBA,oBAHuC;AAIvCC,IAAAA,QAAQ,EAARA,QAJuC;AAKvCC,IAAAA,UAAU,EAAVA,UALuC;AAMvCO,IAAAA,gBAAgB,EAAhBA;AANuC,GAArB,CAApB;AASA,MAAIV,kBAAJ,EAAwB,OAAO,IAAP;AAExB,SACE,gCAAC,yBAAD;AAAkC,IAAA,KAAK,EAAEY,WAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AAAqB,IAAA,KAAK,EAAEd,WAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,KAAK,EAAEP,KAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA8BJ,QAA9B,CADF,CADF,CADF;AAOD,CA3DD;;AAkFO,IAAM0B,IAAI,GAAG,SAAPA,IAAO,CAGlB3B,KAHkB,EAIf;AACH,2BAAkB,wCAAlB;AAAA,MAAQK,KAAR,sBAAQA,KAAR;;AAEA,SAAO,gCAAC,eAAD;AAAuBA,IAAAA,KAAK,EAALA;AAAvB,KAAoCL,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel } from 'stream-chat';\n\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n TranslationContextValue,\n TranslationProvider,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/master/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n};\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslationContextValue>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client.setUserAgent) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n }\n }, []);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const chatContext = useCreateChatContext({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider value={translators}>\n <ThemeProvider style={style}>{children}</ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
@@ -6,8 +6,7 @@ exports.useCreateChatContext = void 0;
6
6
  var _react = require("react");
7
7
 
8
8
  var useCreateChatContext = function useCreateChatContext(_ref) {
9
- var appSettings = _ref.appSettings,
10
- channel = _ref.channel,
9
+ var channel = _ref.channel,
11
10
  client = _ref.client,
12
11
  connectionRecovering = _ref.connectionRecovering,
13
12
  isOnline = _ref.isOnline,
@@ -18,7 +17,6 @@ var useCreateChatContext = function useCreateChatContext(_ref) {
18
17
  var mutedUsersLength = mutedUsers.length;
19
18
  var chatContext = (0, _react.useMemo)(function () {
20
19
  return {
21
- appSettings: appSettings,
22
20
  channel: channel,
23
21
  client: client,
24
22
  connectionRecovering: connectionRecovering,
@@ -1 +1 @@
1
- {"version":3,"sources":["useCreateChatContext.ts"],"names":["useCreateChatContext","appSettings","channel","client","connectionRecovering","isOnline","mutedUsers","setActiveChannel","channelId","id","clientValues","clientID","Object","keys","activeChannels","length","listeners","mutedChannels","mutedUsersLength","chatContext"],"mappings":";;;;;AAAA;;AAKO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,OAUQ;AAAA,MAP1CC,WAO0C,QAP1CA,WAO0C;AAAA,MAN1CC,OAM0C,QAN1CA,OAM0C;AAAA,MAL1CC,MAK0C,QAL1CA,MAK0C;AAAA,MAJ1CC,oBAI0C,QAJ1CA,oBAI0C;AAAA,MAH1CC,QAG0C,QAH1CA,QAG0C;AAAA,MAF1CC,UAE0C,QAF1CA,UAE0C;AAAA,MAD1CC,gBAC0C,QAD1CA,gBAC0C;AAC1C,MAAMC,SAAS,GAAGN,OAAH,oBAAGA,OAAO,CAAEO,EAA3B;AACA,MAAMC,YAAY,QAAMP,MAAM,CAACQ,QAAb,GAAwBC,MAAM,CAACC,IAAP,CAAYV,MAAM,CAACW,cAAnB,EAAmCC,MAA3D,GAChBH,MAAM,CAACC,IAAP,CAAYV,MAAM,CAACa,SAAnB,EAA8BD,MADd,GAEfZ,MAAM,CAACc,aAAP,CAAqBF,MAFxB;AAGA,MAAMG,gBAAgB,GAAGZ,UAAU,CAACS,MAApC;AAEA,MAAMI,WAAiD,GAAG,oBACxD;AAAA,WAAO;AACLlB,MAAAA,WAAW,EAAXA,WADK;AAELC,MAAAA,OAAO,EAAPA,OAFK;AAGLC,MAAAA,MAAM,EAANA,MAHK;AAILC,MAAAA,oBAAoB,EAApBA,oBAJK;AAKLC,MAAAA,QAAQ,EAARA,QALK;AAMLC,MAAAA,UAAU,EAAVA,UANK;AAOLC,MAAAA,gBAAgB,EAAhBA;AAPK,KAAP;AAAA,GADwD,EAUxD,CAACC,SAAD,EAAYE,YAAZ,EAA0BN,oBAA1B,EAAgDC,QAAhD,EAA0Da,gBAA1D,CAVwD,CAA1D;AAaA,SAAOC,WAAP;AACD,CA/BM","sourcesContent":["import { useMemo } from 'react';\n\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateChatContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n appSettings,\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n}: ChatContextValue<StreamChatGenerics>) => {\n const channelId = channel?.id;\n const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${\n Object.keys(client.listeners).length\n }${client.mutedChannels.length}`;\n const mutedUsersLength = mutedUsers.length;\n\n const chatContext: ChatContextValue<StreamChatGenerics> = useMemo(\n () => ({\n appSettings,\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n }),\n [channelId, clientValues, connectionRecovering, isOnline, mutedUsersLength],\n );\n\n return chatContext;\n};\n"]}
1
+ {"version":3,"sources":["useCreateChatContext.ts"],"names":["useCreateChatContext","channel","client","connectionRecovering","isOnline","mutedUsers","setActiveChannel","channelId","id","clientValues","clientID","Object","keys","activeChannels","length","listeners","mutedChannels","mutedUsersLength","chatContext"],"mappings":";;;;;AAAA;;AAKO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,OASQ;AAAA,MAN1CC,OAM0C,QAN1CA,OAM0C;AAAA,MAL1CC,MAK0C,QAL1CA,MAK0C;AAAA,MAJ1CC,oBAI0C,QAJ1CA,oBAI0C;AAAA,MAH1CC,QAG0C,QAH1CA,QAG0C;AAAA,MAF1CC,UAE0C,QAF1CA,UAE0C;AAAA,MAD1CC,gBAC0C,QAD1CA,gBAC0C;AAC1C,MAAMC,SAAS,GAAGN,OAAH,oBAAGA,OAAO,CAAEO,EAA3B;AACA,MAAMC,YAAY,QAAMP,MAAM,CAACQ,QAAb,GAAwBC,MAAM,CAACC,IAAP,CAAYV,MAAM,CAACW,cAAnB,EAAmCC,MAA3D,GAChBH,MAAM,CAACC,IAAP,CAAYV,MAAM,CAACa,SAAnB,EAA8BD,MADd,GAEfZ,MAAM,CAACc,aAAP,CAAqBF,MAFxB;AAGA,MAAMG,gBAAgB,GAAGZ,UAAU,CAACS,MAApC;AAEA,MAAMI,WAAiD,GAAG,oBACxD;AAAA,WAAO;AACLjB,MAAAA,OAAO,EAAPA,OADK;AAELC,MAAAA,MAAM,EAANA,MAFK;AAGLC,MAAAA,oBAAoB,EAApBA,oBAHK;AAILC,MAAAA,QAAQ,EAARA,QAJK;AAKLC,MAAAA,UAAU,EAAVA,UALK;AAMLC,MAAAA,gBAAgB,EAAhBA;AANK,KAAP;AAAA,GADwD,EASxD,CAACC,SAAD,EAAYE,YAAZ,EAA0BN,oBAA1B,EAAgDC,QAAhD,EAA0Da,gBAA1D,CATwD,CAA1D;AAYA,SAAOC,WAAP;AACD,CA7BM","sourcesContent":["import { useMemo } from 'react';\n\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateChatContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n}: ChatContextValue<StreamChatGenerics>) => {\n const channelId = channel?.id;\n const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${\n Object.keys(client.listeners).length\n }${client.mutedChannels.length}`;\n const mutedUsersLength = mutedUsers.length;\n\n const chatContext: ChatContextValue<StreamChatGenerics> = useMemo(\n () => ({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n }),\n [channelId, clientValues, connectionRecovering, isOnline, mutedUsersLength],\n );\n\n return chatContext;\n};\n"]}
@@ -117,6 +117,12 @@ var renderText = function renderText(params) {
117
117
  });
118
118
 
119
119
  var onLink = function onLink(url) {
120
+ var pattern = new RegExp(/^\S+:\/\//);
121
+
122
+ if (!pattern.test(url)) {
123
+ url = 'http://' + url;
124
+ }
125
+
120
126
  return onLinkParams ? onLinkParams(url) : _reactNative.Linking.canOpenURL(url).then(function (canOpenUrl) {
121
127
  return canOpenUrl && _reactNative.Linking.openURL(url);
122
128
  });
@@ -155,7 +161,7 @@ var renderText = function renderText(params) {
155
161
  __self: _this,
156
162
  __source: {
157
163
  fileName: _jsxFileName,
158
- lineNumber: 176,
164
+ lineNumber: 182,
159
165
  columnNumber: 7
160
166
  }
161
167
  }, output(node.content, (0, _extends2["default"])({}, state, {
@@ -172,7 +178,7 @@ var renderText = function renderText(params) {
172
178
  __self: _this,
173
179
  __source: {
174
180
  fileName: _jsxFileName,
175
- lineNumber: 189,
181
+ lineNumber: 195,
176
182
  columnNumber: 5
177
183
  }
178
184
  }, output(node.content, state));
@@ -222,7 +228,7 @@ var renderText = function renderText(params) {
222
228
  __self: _this,
223
229
  __source: {
224
230
  fileName: _jsxFileName,
225
- lineNumber: 227,
231
+ lineNumber: 233,
226
232
  columnNumber: 7
227
233
  }
228
234
  }, Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state));
@@ -238,7 +244,7 @@ var renderText = function renderText(params) {
238
244
  __self: _this,
239
245
  __source: {
240
246
  fileName: _jsxFileName,
241
- lineNumber: 234,
247
+ lineNumber: 240,
242
248
  columnNumber: 5
243
249
  }
244
250
  });
@@ -278,7 +284,7 @@ var renderText = function renderText(params) {
278
284
  __self: _this,
279
285
  __source: {
280
286
  fileName: _jsxFileName,
281
- lineNumber: 264,
287
+ lineNumber: 270,
282
288
  columnNumber: 5
283
289
  }
284
290
  }, newText);
@@ -299,7 +305,7 @@ var ListOutput = function ListOutput(_ref4) {
299
305
  __self: _this,
300
306
  __source: {
301
307
  fileName: _jsxFileName,
302
- lineNumber: 299,
308
+ lineNumber: 305,
303
309
  columnNumber: 5
304
310
  }
305
311
  }, node.items.map(function (item, index) {
@@ -315,7 +321,7 @@ var ListOutput = function ListOutput(_ref4) {
315
321
  __self: _this,
316
322
  __source: {
317
323
  fileName: _jsxFileName,
318
- lineNumber: 305,
324
+ lineNumber: 311,
319
325
  columnNumber: 13
320
326
  }
321
327
  }, _react["default"].createElement(Bullet, {
@@ -323,7 +329,7 @@ var ListOutput = function ListOutput(_ref4) {
323
329
  __self: _this,
324
330
  __source: {
325
331
  fileName: _jsxFileName,
326
- lineNumber: 306,
332
+ lineNumber: 312,
327
333
  columnNumber: 15
328
334
  }
329
335
  }));
@@ -341,7 +347,7 @@ var ListOutput = function ListOutput(_ref4) {
341
347
  __self: _this,
342
348
  __source: {
343
349
  fileName: _jsxFileName,
344
- lineNumber: 316,
350
+ lineNumber: 322,
345
351
  columnNumber: 11
346
352
  }
347
353
  }, _react["default"].createElement(Bullet, {
@@ -349,7 +355,7 @@ var ListOutput = function ListOutput(_ref4) {
349
355
  __self: _this,
350
356
  __source: {
351
357
  fileName: _jsxFileName,
352
- lineNumber: 317,
358
+ lineNumber: 323,
353
359
  columnNumber: 13
354
360
  }
355
361
  }), _react["default"].createElement(ListItem, {
@@ -358,7 +364,7 @@ var ListOutput = function ListOutput(_ref4) {
358
364
  __self: _this,
359
365
  __source: {
360
366
  fileName: _jsxFileName,
361
- lineNumber: 318,
367
+ lineNumber: 324,
362
368
  columnNumber: 13
363
369
  }
364
370
  }, output(item, state)));
@@ -376,7 +382,7 @@ var Bullet = function Bullet(_ref5) {
376
382
  __self: _this,
377
383
  __source: {
378
384
  fileName: _jsxFileName,
379
- lineNumber: 333,
385
+ lineNumber: 339,
380
386
  columnNumber: 3
381
387
  }
382
388
  }, index ? index + ". " : "\u2022 ");
@@ -388,7 +394,7 @@ var ListRow = function ListRow(props) {
388
394
  __self: _this,
389
395
  __source: {
390
396
  fileName: _jsxFileName,
391
- lineNumber: 339,
397
+ lineNumber: 345,
392
398
  columnNumber: 3
393
399
  }
394
400
  }, props.children);
@@ -402,7 +408,7 @@ var ListItem = function ListItem(_ref6) {
402
408
  __self: _this,
403
409
  __source: {
404
410
  fileName: _jsxFileName,
405
- lineNumber: 343,
411
+ lineNumber: 349,
406
412
  columnNumber: 3
407
413
  }
408
414
  }, children);