stream-chat-react-native-core 4.4.0-beta.1 → 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 (27) hide show
  1. package/lib/commonjs/components/Attachment/Card.js +25 -28
  2. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/FileAttachment.js +19 -24
  4. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +42 -0
  6. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +1 -0
  7. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +20 -14
  8. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  9. package/lib/commonjs/version.json +1 -1
  10. package/lib/module/components/Attachment/Card.js +25 -28
  11. package/lib/module/components/Attachment/Card.js.map +1 -1
  12. package/lib/module/components/Attachment/FileAttachment.js +19 -24
  13. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  14. package/lib/module/components/Attachment/hooks/useGoToURL.js +42 -0
  15. package/lib/module/components/Attachment/hooks/useGoToURL.js.map +1 -0
  16. package/lib/module/components/Message/MessageSimple/utils/renderText.js +20 -14
  17. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  18. package/lib/module/version.json +1 -1
  19. package/lib/typescript/components/Attachment/FileAttachment.d.ts +0 -1
  20. package/lib/typescript/components/Attachment/hooks/useGoToURL.d.ts +2 -0
  21. package/package.json +1 -1
  22. package/src/components/Attachment/Card.tsx +5 -13
  23. package/src/components/Attachment/FileAttachment.tsx +5 -13
  24. package/src/components/Attachment/__tests__/Attachment.test.js +39 -0
  25. package/src/components/Attachment/hooks/useGoToURL.ts +27 -0
  26. package/src/components/Message/MessageSimple/utils/renderText.tsx +8 -2
  27. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","length","omission","markdown","scheme","replace","raw","styles","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","event","defaultHandler","target","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","ListOutput","isSublist","withinList","parentTypes","items","map","item","index","indexAfterStart","start","ordered","type","isSublistWithinText","includes","style","Bullet","ListRow","props","children","ListItem"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const urls = parseLinksFromText(newText);\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.scheme}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) =>\n onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n defaultHandler: () => onLink(node.target),\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n link: { link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet index={node.ordered && indexAfterStart} />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet index={node.ordered && indexAfterStart} />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={[style, defaultMarkdownStyles.listItemNumber]}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = (props: PropsWithChildren<ViewProps>) => (\n <Text style={[props.style, defaultMarkdownStyles.listRow]}>{props.children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"]}
1
+ {"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","length","omission","markdown","scheme","replace","raw","styles","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","event","defaultHandler","target","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","match","source","exec","mentionsReact","customRules","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","ListOutput","isSublist","withinList","parentTypes","items","map","item","index","indexAfterStart","start","ordered","type","isSublistWithinText","includes","style","Bullet","ListRow","props","children","ListItem"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const urls = parseLinksFromText(newText);\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.scheme}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n defaultHandler: () => onLink(node.target),\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n link: { link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet index={node.ordered && indexAfterStart} />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet index={node.ordered && indexAfterStart} />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={[style, defaultMarkdownStyles.listItemNumber]}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = (props: PropsWithChildren<ViewProps>) => (\n <Text style={[props.style, defaultMarkdownStyles.listRow]}>{props.children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.4.0-beta.1"
2
+ "version": "4.4.0-beta.2"
3
3
  }
@@ -7,12 +7,16 @@ exports.Card = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
10
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
13
 
12
14
  var _react = _interopRequireDefault(require("react"));
13
15
 
14
16
  var _reactNative = require("react-native");
15
17
 
18
+ var _useGoToURL3 = require("./hooks/useGoToURL");
19
+
16
20
  var _MessageContext = require("../../contexts/messageContext/MessageContext");
17
21
 
18
22
  var _MessagesContext = require("../../contexts/messagesContext/MessagesContext");
@@ -70,18 +74,6 @@ var styles = _reactNative.StyleSheet.create({
70
74
  }
71
75
  });
72
76
 
73
- var goToURL = function goToURL(url) {
74
- if (!url) return;
75
-
76
- _reactNative.Linking.canOpenURL(url).then(function (supported) {
77
- if (supported) {
78
- _reactNative.Linking.openURL(url);
79
- } else {
80
- console.log("Don't know how to open URI: " + url);
81
- }
82
- });
83
- };
84
-
85
77
  var CardWithContext = function CardWithContext(props) {
86
78
  var additionalTouchableProps = props.additionalTouchableProps,
87
79
  author_name = props.author_name,
@@ -123,8 +115,13 @@ var CardWithContext = function CardWithContext(props) {
123
115
 
124
116
  var uri = image_url || thumb_url;
125
117
 
118
+ var _useGoToURL = (0, _useGoToURL3.useGoToURL)(og_scrape_url || uri),
119
+ _useGoToURL2 = (0, _slicedToArray2["default"])(_useGoToURL, 2),
120
+ error = _useGoToURL2[0],
121
+ openURL = _useGoToURL2[1];
122
+
126
123
  var defaultOnPress = function defaultOnPress() {
127
- return goToURL(og_scrape_url || uri);
124
+ return !error && openURL && openURL();
128
125
  };
129
126
 
130
127
  return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({
@@ -161,28 +158,28 @@ var CardWithContext = function CardWithContext(props) {
161
158
  __self: _this,
162
159
  __source: {
163
160
  fileName: _jsxFileName,
164
- lineNumber: 155,
161
+ lineNumber: 147,
165
162
  columnNumber: 5
166
163
  }
167
164
  }), CardHeader && _react["default"].createElement(CardHeader, (0, _extends2["default"])({}, props, {
168
165
  __self: _this,
169
166
  __source: {
170
167
  fileName: _jsxFileName,
171
- lineNumber: 187,
168
+ lineNumber: 179,
172
169
  columnNumber: 22
173
170
  }
174
171
  })), CardCover && _react["default"].createElement(CardCover, (0, _extends2["default"])({}, props, {
175
172
  __self: _this,
176
173
  __source: {
177
174
  fileName: _jsxFileName,
178
- lineNumber: 188,
175
+ lineNumber: 180,
179
176
  columnNumber: 21
180
177
  }
181
178
  })), uri && !CardCover && _react["default"].createElement(_reactNative.View, {
182
179
  __self: _this,
183
180
  __source: {
184
181
  fileName: _jsxFileName,
185
- lineNumber: 190,
182
+ lineNumber: 182,
186
183
  columnNumber: 9
187
184
  }
188
185
  }, _react["default"].createElement(_reactNative.Image, {
@@ -194,7 +191,7 @@ var CardWithContext = function CardWithContext(props) {
194
191
  __self: _this,
195
192
  __source: {
196
193
  fileName: _jsxFileName,
197
- lineNumber: 191,
194
+ lineNumber: 183,
198
195
  columnNumber: 11
199
196
  }
200
197
  }), author_name && _react["default"].createElement(_reactNative.View, {
@@ -202,7 +199,7 @@ var CardWithContext = function CardWithContext(props) {
202
199
  __self: _this,
203
200
  __source: {
204
201
  fileName: _jsxFileName,
205
- lineNumber: 197,
202
+ lineNumber: 189,
206
203
  columnNumber: 13
207
204
  }
208
205
  }, _react["default"].createElement(_reactNative.View, {
@@ -212,7 +209,7 @@ var CardWithContext = function CardWithContext(props) {
212
209
  __self: _this,
213
210
  __source: {
214
211
  fileName: _jsxFileName,
215
- lineNumber: 198,
212
+ lineNumber: 190,
216
213
  columnNumber: 15
217
214
  }
218
215
  }, _react["default"].createElement(_reactNative.Text, {
@@ -222,14 +219,14 @@ var CardWithContext = function CardWithContext(props) {
222
219
  __self: _this,
223
220
  __source: {
224
221
  fileName: _jsxFileName,
225
- lineNumber: 206,
222
+ lineNumber: 198,
226
223
  columnNumber: 17
227
224
  }
228
225
  }, author_name)))), CardFooter ? _react["default"].createElement(CardFooter, (0, _extends2["default"])({}, props, {
229
226
  __self: _this,
230
227
  __source: {
231
228
  fileName: _jsxFileName,
232
- lineNumber: 222,
229
+ lineNumber: 214,
233
230
  columnNumber: 9
234
231
  }
235
232
  })) : _react["default"].createElement(_reactNative.View, {
@@ -237,7 +234,7 @@ var CardWithContext = function CardWithContext(props) {
237
234
  __self: _this,
238
235
  __source: {
239
236
  fileName: _jsxFileName,
240
- lineNumber: 224,
237
+ lineNumber: 216,
241
238
  columnNumber: 9
242
239
  }
243
240
  }, _react["default"].createElement(_reactNative.View, {
@@ -249,7 +246,7 @@ var CardWithContext = function CardWithContext(props) {
249
246
  __self: _this,
250
247
  __source: {
251
248
  fileName: _jsxFileName,
252
- lineNumber: 225,
249
+ lineNumber: 217,
253
250
  columnNumber: 11
254
251
  }
255
252
  }, !uri && author_name && _react["default"].createElement(_reactNative.Text, {
@@ -259,7 +256,7 @@ var CardWithContext = function CardWithContext(props) {
259
256
  __self: _this,
260
257
  __source: {
261
258
  fileName: _jsxFileName,
262
- lineNumber: 234,
259
+ lineNumber: 226,
263
260
  columnNumber: 15
264
261
  }
265
262
  }, author_name), title && _react["default"].createElement(_reactNative.Text, {
@@ -270,7 +267,7 @@ var CardWithContext = function CardWithContext(props) {
270
267
  __self: _this,
271
268
  __source: {
272
269
  fileName: _jsxFileName,
273
- lineNumber: 246,
270
+ lineNumber: 238,
274
271
  columnNumber: 15
275
272
  }
276
273
  }, title), text && _react["default"].createElement(_reactNative.Text, {
@@ -281,7 +278,7 @@ var CardWithContext = function CardWithContext(props) {
281
278
  __self: _this,
282
279
  __source: {
283
280
  fileName: _jsxFileName,
284
- lineNumber: 254,
281
+ lineNumber: 246,
285
282
  columnNumber: 15
286
283
  }
287
284
  }, text))));
@@ -320,7 +317,7 @@ var Card = function Card(props) {
320
317
  __self: _this,
321
318
  __source: {
322
319
  fileName: _jsxFileName,
323
- lineNumber: 295,
320
+ lineNumber: 287,
324
321
  columnNumber: 5
325
322
  }
326
323
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Card.tsx"],"names":["styles","StyleSheet","create","authorName","fontSize","fontWeight","authorNameContainer","borderTopRightRadius","paddingHorizontal","paddingTop","authorNameFooter","padding","authorNameMask","bottom","left","position","cardCover","borderRadius","height","marginHorizontal","cardFooter","flexDirection","justifyContent","container","overflow","width","description","title","goToURL","url","Linking","canOpenURL","then","supported","openURL","console","log","CardWithContext","props","additionalTouchableProps","author_name","CardCover","CardFooter","CardHeader","image_url","og_scrape_url","onLongPress","onPress","onPressIn","preventPress","stylesProp","text","thumb_url","theme","colors","accent_blue","black","blue_alice","transparent","messageSimple","card","authorNameFooterContainer","cover","footer","titleStyle","footerStyle","noURI","uri","defaultOnPress","event","emitter","defaultHandler","backgroundColor","color","borderLeftColor","MemoizedCard","React","memo","Card","message","channelId","cid","messageId","id","displayName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAeA;;AAIA;;AAIA;;AAEA;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,UAAU,EAAE;AAAEC,IAAAA,QAAQ,EAAE,IAAZ;AAAkBC,IAAAA,UAAU,EAAE;AAA9B,GADmB;AAE/BC,EAAAA,mBAAmB,EAAE;AACnBC,IAAAA,oBAAoB,EAAE,EADH;AAEnBC,IAAAA,iBAAiB,EAAE,CAFA;AAGnBC,IAAAA,UAAU,EAAE;AAHO,GAFU;AAO/BC,EAAAA,gBAAgB,EAAE;AAChBN,IAAAA,QAAQ,EAAE,IADM;AAEhBC,IAAAA,UAAU,EAAE,KAFI;AAGhBM,IAAAA,OAAO,EAAE;AAHO,GAPa;AAY/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,MAAM,EAAE,CADM;AAEdC,IAAAA,IAAI,EAAE,CAFQ;AAGdC,IAAAA,QAAQ,EAAE;AAHI,GAZe;AAiB/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,YAAY,EAAE,CADL;AAETC,IAAAA,MAAM,EAAE,GAFC;AAGTC,IAAAA,gBAAgB,EAAE;AAHT,GAjBoB;AAsB/BC,EAAAA,UAAU,EAAE;AACVC,IAAAA,aAAa,EAAE,KADL;AAEVC,IAAAA,cAAc,EAAE,eAFN;AAGVX,IAAAA,OAAO,EAAE;AAHC,GAtBmB;AA2B/BY,EAAAA,SAAS,EAAE;AACTC,IAAAA,QAAQ,EAAE,QADD;AAETC,IAAAA,KAAK,EAAE;AAFE,GA3BoB;AA+B/BC,EAAAA,WAAW,EAAE;AACXtB,IAAAA,QAAQ,EAAE,EADC;AAEXe,IAAAA,gBAAgB,EAAE;AAFP,GA/BkB;AAmC/BQ,EAAAA,KAAK,EAAE;AACLvB,IAAAA,QAAQ,EAAE,EADL;AAELe,IAAAA,gBAAgB,EAAE;AAFb;AAnCwB,CAAlB,CAAf;;AAyCA,IAAMS,OAAO,GAAG,SAAVA,OAAU,CAACC,GAAD,EAAkB;AAChC,MAAI,CAACA,GAAL,EAAU;;AACVC,uBAAQC,UAAR,CAAmBF,GAAnB,EAAwBG,IAAxB,CAA6B,UAACC,SAAD,EAAe;AAC1C,QAAIA,SAAJ,EAAe;AACbH,2BAAQI,OAAR,CAAgBL,GAAhB;AACD,KAFD,MAEO;AACLM,MAAAA,OAAO,CAACC,GAAR,kCAA2CP,GAA3C;AACD;AACF,GAND;AAOD,CATD;;AAsCA,IAAMQ,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AACH,MACEC,wBADF,GAgBID,KAhBJ,CACEC,wBADF;AAAA,MAEEC,WAFF,GAgBIF,KAhBJ,CAEEE,WAFF;AAAA,MAGEC,SAHF,GAgBIH,KAhBJ,CAGEG,SAHF;AAAA,MAIEC,UAJF,GAgBIJ,KAhBJ,CAIEI,UAJF;AAAA,MAKEC,UALF,GAgBIL,KAhBJ,CAKEK,UALF;AAAA,MAMEC,SANF,GAgBIN,KAhBJ,CAMEM,SANF;AAAA,MAOEC,aAPF,GAgBIP,KAhBJ,CAOEO,aAPF;AAAA,MAQEC,YARF,GAgBIR,KAhBJ,CAQEQ,WARF;AAAA,MASEC,QATF,GAgBIT,KAhBJ,CASES,OATF;AAAA,MAUEC,UAVF,GAgBIV,KAhBJ,CAUEU,SAVF;AAAA,MAWEC,YAXF,GAgBIX,KAhBJ,CAWEW,YAXF;AAAA,sBAgBIX,KAhBJ,CAYEtC,MAZF;AAAA,MAYUkD,UAZV,8BAYuB,EAZvB;AAAA,MAaEC,IAbF,GAgBIb,KAhBJ,CAaEa,IAbF;AAAA,MAcEC,SAdF,GAgBId,KAhBJ,CAcEc,SAdF;AAAA,MAeEzB,KAfF,GAgBIW,KAhBJ,CAeEX,KAfF;;AAkBA,kBAiBI,6BAjBJ;AAAA,kCACE0B,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,WAFd,yBAEcA,WAFd;AAAA,MAE2BC,KAF3B,yBAE2BA,KAF3B;AAAA,MAEkCC,UAFlC,yBAEkCA,UAFlC;AAAA,MAE8CC,WAF9C,yBAE8CA,WAF9C;AAAA,8CAGIC,aAHJ,CAIMC,IAJN;AAAA,MAKQzD,UALR,yBAKQA,UALR;AAAA,MAMQG,mBANR,yBAMQA,mBANR;AAAA,MAOQI,gBAPR,yBAOQA,gBAPR;AAAA,MAQQmD,yBARR,yBAQQA,yBARR;AAAA,MASQjD,cATR,yBASQA,cATR;AAAA,MAUQW,SAVR,yBAUQA,SAVR;AAAA,MAWQuC,KAXR,yBAWQA,KAXR;AAAA,qDAYQC,MAZR;AAAA,MAYkBrC,WAZlB,0BAYkBA,WAZlB;AAAA,MAYsCsC,UAZtC,0BAY+BrC,KAZ/B;AAAA,MAYqDsC,WAZrD;AAAA,MAaQC,KAbR,yBAaQA,KAbR;;AAmBA,MAAMC,GAAG,GAAGvB,SAAS,IAAIQ,SAAzB;;AAEA,MAAMgB,cAAc,GAAG,SAAjBA,cAAiB;AAAA,WAAMxC,OAAO,CAACiB,aAAa,IAAIsB,GAAlB,CAAb;AAAA,GAAvB;;AAEA,SACE,gCAAC,6BAAD;AACE,IAAA,QAAQ,EAAElB,YADZ;AAEE,IAAA,WAAW,EAAE,qBAACoB,KAAD,EAAW;AACtB,UAAIvB,YAAJ,EAAiB;AACfA,QAAAA,YAAW,CAAC;AACVwB,UAAAA,OAAO,EAAE,MADC;AAEVD,UAAAA,KAAK,EAALA;AAFU,SAAD,CAAX;AAID;AACF,KATH;AAUE,IAAA,OAAO,EAAE,iBAACA,KAAD,EAAW;AAClB,UAAItB,QAAJ,EAAa;AACXA,QAAAA,QAAO,CAAC;AACNwB,UAAAA,cAAc,EAAEH,cADV;AAENE,UAAAA,OAAO,EAAE,MAFH;AAGND,UAAAA,KAAK,EAALA;AAHM,SAAD,CAAP;AAKD;AACF,KAlBH;AAmBE,IAAA,SAAS,EAAE,mBAACA,KAAD,EAAW;AACpB,UAAIrB,UAAJ,EAAe;AACbA,QAAAA,UAAS,CAAC;AACRuB,UAAAA,cAAc,EAAEH,cADR;AAERE,UAAAA,OAAO,EAAE,MAFD;AAGRD,UAAAA,KAAK,EAALA;AAHQ,SAAD,CAAT;AAKD;AACF,KA3BH;AA4BE,IAAA,KAAK,EAAE,CAACrE,MAAM,CAACuB,SAAR,EAAmBA,SAAnB,EAA8B2B,UAAU,CAAC3B,SAAzC,CA5BT;AA6BE,IAAA,MAAM,EAAC;AA7BT,KA8BMgB,wBA9BN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgCGI,UAAU,IAAI,gCAAC,UAAD,gCAAgBL,KAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAhCjB,EAiCGG,SAAS,IAAI,gCAAC,SAAD,gCAAeH,KAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAjChB,EAkCG6B,GAAG,IAAI,CAAC1B,SAAR,IACC,gCAAC,iBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,kBAAD;AACE,IAAA,UAAU,EAAC,OADb;AAEE,IAAA,MAAM,EAAE;AAAE0B,MAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AAAP,KAFV;AAGE,IAAA,KAAK,EAAE,CAACnE,MAAM,CAACgB,SAAR,EAAmB8C,KAAnB,EAA0BZ,UAAU,CAAClC,SAArC,CAHT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAMGwB,WAAW,IACV,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACxC,MAAM,CAACY,cAAR,EAAwBA,cAAxB,EAAwCsC,UAAU,CAACtC,cAAnD,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLZ,MAAM,CAACM,mBADF,EAEL;AAAEkE,MAAAA,eAAe,EAAEf;AAAnB,KAFK,EAGLnD,mBAHK,EAIL4C,UAAU,CAAC5C,mBAJN,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLN,MAAM,CAACG,UADF,EAEL;AAAEsE,MAAAA,KAAK,EAAElB;AAAT,KAFK,EAGLpD,UAHK,EAIL+C,UAAU,CAAC/C,UAJN,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQGqC,WARH,CARF,CADF,CAPJ,CAnCJ,EAkEGE,UAAU,GACT,gCAAC,UAAD,gCAAgBJ,KAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADS,GAGT,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACtC,MAAM,CAACoB,UAAR,EAAoB6C,WAApB,EAAiCf,UAAU,CAAC9B,UAA5C,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLyC,yBADK,EAEL;AAAEW,MAAAA,eAAe,EAAEd;AAAnB,KAFK,EAGL,CAACS,GAAD;AAASO,MAAAA,eAAe,EAAEnB;AAA1B,OAA0CW,KAA1C,IAAoD,EAH/C,EAILhB,UAAU,CAACW,yBAJN,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQG,CAACM,GAAD,IAAQ3B,WAAR,IACC,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLxC,MAAM,CAACU,gBADF,EAEL;AAAE+D,MAAAA,KAAK,EAAElB;AAAT,KAFK,EAGL7C,gBAHK,EAILwC,UAAU,CAACxC,gBAJN,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQG8B,WARH,CATJ,EAoBGb,KAAK,IACJ,gCAAC,iBAAD;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,KAAK,EAAE,CAAC3B,MAAM,CAAC2B,KAAR,EAAe;AAAE8C,MAAAA,KAAK,EAAEjB;AAAT,KAAf,EAAiCQ,UAAjC,EAA6Cd,UAAU,CAACvB,KAAxD,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIGA,KAJH,CArBJ,EA4BGwB,IAAI,IACH,gCAAC,iBAAD;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,KAAK,EAAE,CAACnD,MAAM,CAAC0B,WAAR,EAAqB;AAAE+C,MAAAA,KAAK,EAAEjB;AAAT,KAArB,EAAuC9B,WAAvC,EAAoDwB,UAAU,CAACxB,WAA/D,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIGyB,IAJH,CA7BJ,CADF,CArEJ,CADF;AAgHD,CA9JD;;AAgKA,IAAMwB,YAAY,GAAGC,kBAAMC,IAAN,CAAWxC,eAAX,EAA4B;AAAA,SAAM,IAAN;AAAA,CAA5B,CAArB;;AAgBO,IAAMyC,IAAI,GAAG,SAAPA,IAAO,CAGlBxC,KAHkB,EAIf;AACH,2BACE,wCADF;AAAA,MAAQyC,OAAR,sBAAQA,OAAR;AAAA,MAAiBjC,WAAjB,sBAAiBA,WAAjB;AAAA,MAA8BC,OAA9B,sBAA8BA,OAA9B;AAAA,MAAuCC,SAAvC,sBAAuCA,SAAvC;AAAA,MAAkDC,YAAlD,sBAAkDA,YAAlD;;AAEA,4BACE,0CADF;AAAA,MAAQV,wBAAR,uBAAQA,wBAAR;AAAA,MAAkCE,SAAlC,uBAAkCA,SAAlC;AAAA,MAA6CC,UAA7C,uBAA6CA,UAA7C;AAAA,MAAyDC,UAAzD,uBAAyDA,UAAzD;;AAGA,SACE,gCAAC,YAAD;AAEIJ,IAAAA,wBAAwB,EAAxBA,wBAFJ;AAGIE,IAAAA,SAAS,EAATA,SAHJ;AAIIC,IAAAA,UAAU,EAAVA,UAJJ;AAKIC,IAAAA,UAAU,EAAVA,UALJ;AAMIqC,IAAAA,SAAS,EAAED,OAAO,CAACE,GANvB;AAOIC,IAAAA,SAAS,EAAEH,OAAO,CAACI,EAPvB;AAQIrC,IAAAA,WAAW,EAAXA,WARJ;AASIC,IAAAA,OAAO,EAAPA,OATJ;AAUIC,IAAAA,SAAS,EAATA,SAVJ;AAWIC,IAAAA,YAAY,EAAZA;AAXJ,KAaMX,KAbN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAiBD,CA3BM;;;AA6BPwC,IAAI,CAACM,WAAL,GAAmB,2BAAnB","sourcesContent":["import React from 'react';\nimport {\n Image,\n ImageStyle,\n Linking,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { makeImageCompatibleUrl } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n authorName: { fontSize: 14.5, fontWeight: '600' },\n authorNameContainer: {\n borderTopRightRadius: 15,\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n authorNameFooter: {\n fontSize: 14.5,\n fontWeight: '600',\n padding: 8,\n },\n authorNameMask: {\n bottom: 0,\n left: 8,\n position: 'absolute',\n },\n cardCover: {\n borderRadius: 8,\n height: 140,\n marginHorizontal: 8,\n },\n cardFooter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 10,\n },\n container: {\n overflow: 'hidden',\n width: 256,\n },\n description: {\n fontSize: 12,\n marginHorizontal: 8,\n },\n title: {\n fontSize: 12,\n marginHorizontal: 8,\n },\n});\n\nconst goToURL = (url?: string) => {\n if (!url) return;\n Linking.canOpenURL(url).then((supported) => {\n if (supported) {\n Linking.openURL(url);\n } else {\n console.log(`Don't know how to open URI: ${url}`);\n }\n });\n};\n\nexport type CardPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Attachment<StreamChatGenerics> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader'\n > & {\n channelId: string | undefined;\n messageId: string | undefined;\n styles?: Partial<{\n authorName: StyleProp<TextStyle>;\n authorNameContainer: StyleProp<ViewStyle>;\n authorNameFooter: StyleProp<TextStyle>;\n authorNameFooterContainer: StyleProp<ViewStyle>;\n authorNameMask: StyleProp<ViewStyle>;\n cardCover: StyleProp<ImageStyle>;\n cardFooter: StyleProp<ViewStyle>;\n container: StyleProp<ViewStyle>;\n description: StyleProp<TextStyle>;\n title: StyleProp<TextStyle>;\n }>;\n };\n\nconst CardWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: CardPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n author_name,\n CardCover,\n CardFooter,\n CardHeader,\n image_url,\n og_scrape_url,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n styles: stylesProp = {},\n text,\n thumb_url,\n title,\n } = props;\n\n const {\n theme: {\n colors: { accent_blue, black, blue_alice, transparent },\n messageSimple: {\n card: {\n authorName,\n authorNameContainer,\n authorNameFooter,\n authorNameFooterContainer,\n authorNameMask,\n container,\n cover,\n footer: { description, title: titleStyle, ...footerStyle },\n noURI,\n },\n },\n },\n } = useTheme();\n\n const uri = image_url || thumb_url;\n\n const defaultOnPress = () => goToURL(og_scrape_url || uri);\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'card',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'card',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'card',\n event,\n });\n }\n }}\n style={[styles.container, container, stylesProp.container]}\n testID='card-attachment'\n {...additionalTouchableProps}\n >\n {CardHeader && <CardHeader {...props} />}\n {CardCover && <CardCover {...props} />}\n {uri && !CardCover && (\n <View>\n <Image\n resizeMode='cover'\n source={{ uri: makeImageCompatibleUrl(uri) }}\n style={[styles.cardCover, cover, stylesProp.cardCover]}\n />\n {author_name && (\n <View style={[styles.authorNameMask, authorNameMask, stylesProp.authorNameMask]}>\n <View\n style={[\n styles.authorNameContainer,\n { backgroundColor: blue_alice },\n authorNameContainer,\n stylesProp.authorNameContainer,\n ]}\n >\n <Text\n style={[\n styles.authorName,\n { color: accent_blue },\n authorName,\n stylesProp.authorName,\n ]}\n >\n {author_name}\n </Text>\n </View>\n </View>\n )}\n </View>\n )}\n {CardFooter ? (\n <CardFooter {...props} />\n ) : (\n <View style={[styles.cardFooter, footerStyle, stylesProp.cardFooter]}>\n <View\n style={[\n authorNameFooterContainer,\n { backgroundColor: transparent },\n !uri ? { borderLeftColor: accent_blue, ...noURI } : {},\n stylesProp.authorNameFooterContainer,\n ]}\n >\n {!uri && author_name && (\n <Text\n style={[\n styles.authorNameFooter,\n { color: accent_blue },\n authorNameFooter,\n stylesProp.authorNameFooter,\n ]}\n >\n {author_name}\n </Text>\n )}\n {title && (\n <Text\n numberOfLines={1}\n style={[styles.title, { color: black }, titleStyle, stylesProp.title]}\n >\n {title}\n </Text>\n )}\n {text && (\n <Text\n numberOfLines={3}\n style={[styles.description, { color: black }, description, stylesProp.description]}\n >\n {text}\n </Text>\n )}\n </View>\n </View>\n )}\n </TouchableOpacity>\n );\n};\n\nconst MemoizedCard = React.memo(CardWithContext, () => true) as typeof CardWithContext;\n\nexport type CardProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Attachment<StreamChatGenerics> &\n Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'onPressIn'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader'\n >\n >;\n\n/**\n * UI component for card in attachments.\n */\nexport const Card = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: CardProps<StreamChatGenerics>,\n) => {\n const { message, onLongPress, onPress, onPressIn, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { additionalTouchableProps, CardCover, CardFooter, CardHeader } =\n useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedCard\n {...{\n additionalTouchableProps,\n CardCover,\n CardFooter,\n CardHeader,\n channelId: message.cid,\n messageId: message.id,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nCard.displayName = 'Card{messageSimple{card}}';\n"]}
1
+ {"version":3,"sources":["Card.tsx"],"names":["styles","StyleSheet","create","authorName","fontSize","fontWeight","authorNameContainer","borderTopRightRadius","paddingHorizontal","paddingTop","authorNameFooter","padding","authorNameMask","bottom","left","position","cardCover","borderRadius","height","marginHorizontal","cardFooter","flexDirection","justifyContent","container","overflow","width","description","title","CardWithContext","props","additionalTouchableProps","author_name","CardCover","CardFooter","CardHeader","image_url","og_scrape_url","onLongPress","onPress","onPressIn","preventPress","stylesProp","text","thumb_url","theme","colors","accent_blue","black","blue_alice","transparent","messageSimple","card","authorNameFooterContainer","cover","footer","titleStyle","footerStyle","noURI","uri","error","openURL","defaultOnPress","event","emitter","defaultHandler","backgroundColor","color","borderLeftColor","MemoizedCard","React","memo","Card","message","channelId","cid","messageId","id","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Image,\n ImageStyle,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useGoToURL } from './hooks/useGoToURL';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { makeImageCompatibleUrl } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n authorName: { fontSize: 14.5, fontWeight: '600' },\n authorNameContainer: {\n borderTopRightRadius: 15,\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n authorNameFooter: {\n fontSize: 14.5,\n fontWeight: '600',\n padding: 8,\n },\n authorNameMask: {\n bottom: 0,\n left: 8,\n position: 'absolute',\n },\n cardCover: {\n borderRadius: 8,\n height: 140,\n marginHorizontal: 8,\n },\n cardFooter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 10,\n },\n container: {\n overflow: 'hidden',\n width: 256,\n },\n description: {\n fontSize: 12,\n marginHorizontal: 8,\n },\n title: {\n fontSize: 12,\n marginHorizontal: 8,\n },\n});\n\nexport type CardPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Attachment<StreamChatGenerics> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader'\n > & {\n channelId: string | undefined;\n messageId: string | undefined;\n styles?: Partial<{\n authorName: StyleProp<TextStyle>;\n authorNameContainer: StyleProp<ViewStyle>;\n authorNameFooter: StyleProp<TextStyle>;\n authorNameFooterContainer: StyleProp<ViewStyle>;\n authorNameMask: StyleProp<ViewStyle>;\n cardCover: StyleProp<ImageStyle>;\n cardFooter: StyleProp<ViewStyle>;\n container: StyleProp<ViewStyle>;\n description: StyleProp<TextStyle>;\n title: StyleProp<TextStyle>;\n }>;\n };\n\nconst CardWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: CardPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n author_name,\n CardCover,\n CardFooter,\n CardHeader,\n image_url,\n og_scrape_url,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n styles: stylesProp = {},\n text,\n thumb_url,\n title,\n } = props;\n\n const {\n theme: {\n colors: { accent_blue, black, blue_alice, transparent },\n messageSimple: {\n card: {\n authorName,\n authorNameContainer,\n authorNameFooter,\n authorNameFooterContainer,\n authorNameMask,\n container,\n cover,\n footer: { description, title: titleStyle, ...footerStyle },\n noURI,\n },\n },\n },\n } = useTheme();\n\n const uri = image_url || thumb_url;\n\n const [error, openURL] = useGoToURL(og_scrape_url || uri);\n\n const defaultOnPress = () => !error && openURL && openURL();\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'card',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'card',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'card',\n event,\n });\n }\n }}\n style={[styles.container, container, stylesProp.container]}\n testID='card-attachment'\n {...additionalTouchableProps}\n >\n {CardHeader && <CardHeader {...props} />}\n {CardCover && <CardCover {...props} />}\n {uri && !CardCover && (\n <View>\n <Image\n resizeMode='cover'\n source={{ uri: makeImageCompatibleUrl(uri) }}\n style={[styles.cardCover, cover, stylesProp.cardCover]}\n />\n {author_name && (\n <View style={[styles.authorNameMask, authorNameMask, stylesProp.authorNameMask]}>\n <View\n style={[\n styles.authorNameContainer,\n { backgroundColor: blue_alice },\n authorNameContainer,\n stylesProp.authorNameContainer,\n ]}\n >\n <Text\n style={[\n styles.authorName,\n { color: accent_blue },\n authorName,\n stylesProp.authorName,\n ]}\n >\n {author_name}\n </Text>\n </View>\n </View>\n )}\n </View>\n )}\n {CardFooter ? (\n <CardFooter {...props} />\n ) : (\n <View style={[styles.cardFooter, footerStyle, stylesProp.cardFooter]}>\n <View\n style={[\n authorNameFooterContainer,\n { backgroundColor: transparent },\n !uri ? { borderLeftColor: accent_blue, ...noURI } : {},\n stylesProp.authorNameFooterContainer,\n ]}\n >\n {!uri && author_name && (\n <Text\n style={[\n styles.authorNameFooter,\n { color: accent_blue },\n authorNameFooter,\n stylesProp.authorNameFooter,\n ]}\n >\n {author_name}\n </Text>\n )}\n {title && (\n <Text\n numberOfLines={1}\n style={[styles.title, { color: black }, titleStyle, stylesProp.title]}\n >\n {title}\n </Text>\n )}\n {text && (\n <Text\n numberOfLines={3}\n style={[styles.description, { color: black }, description, stylesProp.description]}\n >\n {text}\n </Text>\n )}\n </View>\n </View>\n )}\n </TouchableOpacity>\n );\n};\n\nconst MemoizedCard = React.memo(CardWithContext, () => true) as typeof CardWithContext;\n\nexport type CardProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Attachment<StreamChatGenerics> &\n Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'onPressIn'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader'\n >\n >;\n\n/**\n * UI component for card in attachments.\n */\nexport const Card = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: CardProps<StreamChatGenerics>,\n) => {\n const { message, onLongPress, onPress, onPressIn, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { additionalTouchableProps, CardCover, CardFooter, CardHeader } =\n useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedCard\n {...{\n additionalTouchableProps,\n CardCover,\n CardFooter,\n CardHeader,\n channelId: message.cid,\n messageId: message.id,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nCard.displayName = 'Card{messageSimple{card}}';\n"]}
@@ -3,14 +3,18 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.goToURL = exports.getFileSizeDisplayText = exports.FileAttachment = void 0;
6
+ exports.getFileSizeDisplayText = exports.FileAttachment = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
12
14
  var _reactNative = require("react-native");
13
15
 
16
+ var _useGoToURL3 = require("./hooks/useGoToURL");
17
+
14
18
  var _AttachmentActions = require("../../components/Attachment/AttachmentActions");
15
19
 
16
20
  var _FileIcon = require("../../components/Attachment/FileIcon");
@@ -73,8 +77,13 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
73
77
  fileSize = _useTheme$theme$messa.fileSize,
74
78
  title = _useTheme$theme$messa.title;
75
79
 
80
+ var _useGoToURL = (0, _useGoToURL3.useGoToURL)(attachment.asset_url),
81
+ _useGoToURL2 = (0, _slicedToArray2["default"])(_useGoToURL, 2),
82
+ error = _useGoToURL2[0],
83
+ openURL = _useGoToURL2[1];
84
+
76
85
  var defaultOnPress = function defaultOnPress() {
77
- return goToURL(attachment.asset_url);
86
+ return !error && openURL && openURL();
78
87
  };
79
88
 
80
89
  return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({
@@ -110,7 +119,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
110
119
  __self: _this,
111
120
  __source: {
112
121
  fileName: _jsxFileName,
113
- lineNumber: 100,
122
+ lineNumber: 103,
114
123
  columnNumber: 5
115
124
  }
116
125
  }), _react["default"].createElement(_reactNative.View, {
@@ -120,7 +129,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
120
129
  __self: _this,
121
130
  __source: {
122
131
  fileName: _jsxFileName,
123
- lineNumber: 131,
132
+ lineNumber: 134,
124
133
  columnNumber: 7
125
134
  }
126
135
  }, _react["default"].createElement(FileAttachmentIcon, {
@@ -129,7 +138,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
129
138
  __self: _this,
130
139
  __source: {
131
140
  fileName: _jsxFileName,
132
- lineNumber: 132,
141
+ lineNumber: 135,
133
142
  columnNumber: 9
134
143
  }
135
144
  }), _react["default"].createElement(_reactNative.View, {
@@ -137,7 +146,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
137
146
  __self: _this,
138
147
  __source: {
139
148
  fileName: _jsxFileName,
140
- lineNumber: 133,
149
+ lineNumber: 136,
141
150
  columnNumber: 9
142
151
  }
143
152
  }, _react["default"].createElement(_reactNative.Text, {
@@ -148,7 +157,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
148
157
  __self: _this,
149
158
  __source: {
150
159
  fileName: _jsxFileName,
151
- lineNumber: 134,
160
+ lineNumber: 137,
152
161
  columnNumber: 11
153
162
  }
154
163
  }, attachment.title), _react["default"].createElement(_reactNative.Text, {
@@ -158,14 +167,14 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
158
167
  __self: _this,
159
168
  __source: {
160
169
  fileName: _jsxFileName,
161
- lineNumber: 137,
170
+ lineNumber: 140,
162
171
  columnNumber: 11
163
172
  }
164
173
  }, getFileSizeDisplayText(attachment.file_size)))), (_attachment$actions = attachment.actions) != null && _attachment$actions.length ? _react["default"].createElement(AttachmentActions, (0, _extends2["default"])({}, attachment, {
165
174
  __self: _this,
166
175
  __source: {
167
176
  fileName: _jsxFileName,
168
- lineNumber: 142,
177
+ lineNumber: 145,
169
178
  columnNumber: 37
170
179
  }
171
180
  })) : null);
@@ -197,7 +206,7 @@ var FileAttachment = function FileAttachment(props) {
197
206
  __self: _this,
198
207
  __source: {
199
208
  fileName: _jsxFileName,
200
- lineNumber: 165,
209
+ lineNumber: 168,
201
210
  columnNumber: 5
202
211
  }
203
212
  }));
@@ -220,19 +229,5 @@ var getFileSizeDisplayText = function getFileSizeDisplayText(size) {
220
229
  };
221
230
 
222
231
  exports.getFileSizeDisplayText = getFileSizeDisplayText;
223
-
224
- var goToURL = function goToURL(url) {
225
- if (!url) return;
226
-
227
- _reactNative.Linking.canOpenURL(url).then(function (supported) {
228
- if (supported) {
229
- _reactNative.Linking.openURL(url);
230
- } else {
231
- console.log("Don't know how to open URI: " + url);
232
- }
233
- });
234
- };
235
-
236
- exports.goToURL = goToURL;
237
232
  FileAttachment.displayName = 'FileAttachment{messageSimple{file}}';
238
233
  //# sourceMappingURL=FileAttachment.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["FileAttachment.tsx"],"names":["styles","StyleSheet","create","container","alignItems","borderRadius","flexDirection","padding","details","maxWidth","paddingLeft","size","fontSize","title","fontWeight","FileAttachmentWithContext","props","additionalTouchableProps","attachment","attachmentSize","AttachmentActions","FileAttachmentIcon","onLongPress","onPress","onPressIn","preventPress","stylesProp","theme","colors","black","grey","white","messageSimple","file","fileSize","defaultOnPress","goToURL","asset_url","event","emitter","defaultHandler","backgroundColor","mime_type","color","getFileSizeDisplayText","file_size","actions","length","FileAttachment","AttachmentActionsDefault","FileIconDefault","parseFloat","Math","floor","url","Linking","canOpenURL","then","supported","openURL","console","log","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Linking,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { FileIcon as FileIconDefault } from '../../components/Attachment/FileIcon';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vw } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n padding: 8,\n },\n details: {\n maxWidth: vw(60),\n paddingLeft: 16,\n },\n size: {\n fontSize: 12,\n },\n title: {\n fontSize: 14,\n fontWeight: '700',\n },\n});\n\nexport type FileAttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'AttachmentActions' | 'FileAttachmentIcon'\n > & {\n /** The attachment to render */\n attachment: Attachment<StreamChatGenerics>;\n attachmentSize?: number;\n styles?: Partial<{\n container: StyleProp<ViewStyle>;\n details: StyleProp<ViewStyle>;\n size: StyleProp<TextStyle>;\n title: StyleProp<TextStyle>;\n }>;\n };\n\nconst FileAttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n attachment,\n attachmentSize,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors: { black, grey, white },\n messageSimple: {\n file: { container, details, fileSize, title },\n },\n },\n } = useTheme();\n\n const defaultOnPress = () => goToURL(attachment.asset_url);\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n testID='file-attachment'\n {...additionalTouchableProps}\n >\n <View style={[styles.container, { backgroundColor: white }, container, stylesProp.container]}>\n <FileAttachmentIcon mimeType={attachment.mime_type} size={attachmentSize} />\n <View style={[styles.details, details, stylesProp.details]}>\n <Text numberOfLines={2} style={[styles.title, { color: black }, title, stylesProp.title]}>\n {attachment.title}\n </Text>\n <Text style={[styles.size, { color: grey }, fileSize, stylesProp.size]}>\n {getFileSizeDisplayText(attachment.file_size)}\n </Text>\n </View>\n </View>\n {attachment.actions?.length ? <AttachmentActions {...attachment} /> : null}\n </TouchableOpacity>\n );\n};\n\nexport type FileAttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>> &\n Pick<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>;\n\nexport const FileAttachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentProps<StreamChatGenerics>,\n) => {\n const { onLongPress, onPress, onPressIn, preventPress } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n AttachmentActions = AttachmentActionsDefault,\n FileAttachmentIcon = FileIconDefault,\n } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <FileAttachmentWithContext\n {...{\n additionalTouchableProps,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nexport const getFileSizeDisplayText = (size?: number | string) => {\n if (!size) return;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n\n if (size < 1000 * 1000) {\n return `${Math.floor(Math.floor(size / 10) / 100)} KB`;\n }\n\n return `${Math.floor(Math.floor(size / 10000) / 100)} MB`;\n};\n\nexport const goToURL = (url?: string) => {\n if (!url) return;\n Linking.canOpenURL(url).then((supported) => {\n if (supported) {\n Linking.openURL(url);\n } else {\n console.log(`Don't know how to open URI: ${url}`);\n }\n });\n};\n\nFileAttachment.displayName = 'FileAttachment{messageSimple{file}}';\n"]}
1
+ {"version":3,"sources":["FileAttachment.tsx"],"names":["styles","StyleSheet","create","container","alignItems","borderRadius","flexDirection","padding","details","maxWidth","paddingLeft","size","fontSize","title","fontWeight","FileAttachmentWithContext","props","additionalTouchableProps","attachment","attachmentSize","AttachmentActions","FileAttachmentIcon","onLongPress","onPress","onPressIn","preventPress","stylesProp","theme","colors","black","grey","white","messageSimple","file","fileSize","asset_url","error","openURL","defaultOnPress","event","emitter","defaultHandler","backgroundColor","mime_type","color","getFileSizeDisplayText","file_size","actions","length","FileAttachment","AttachmentActionsDefault","FileIconDefault","parseFloat","Math","floor","displayName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAYA;;AAEA;;AACA;;AACA;;AAIA;;AAIA;;AAEA;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,YAAY,EAAE,EAFL;AAGTC,IAAAA,aAAa,EAAE,KAHN;AAITC,IAAAA,OAAO,EAAE;AAJA,GADoB;AAO/BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,QAAQ,EAAE,eAAG,EAAH,CADH;AAEPC,IAAAA,WAAW,EAAE;AAFN,GAPsB;AAW/BC,EAAAA,IAAI,EAAE;AACJC,IAAAA,QAAQ,EAAE;AADN,GAXyB;AAc/BC,EAAAA,KAAK,EAAE;AACLD,IAAAA,QAAQ,EAAE,EADL;AAELE,IAAAA,UAAU,EAAE;AAFP;AAdwB,CAAlB,CAAf;;AAyCA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAGhCC,KAHgC,EAI7B;AAAA;;AACH,MACEC,wBADF,GAWID,KAXJ,CACEC,wBADF;AAAA,MAEEC,UAFF,GAWIF,KAXJ,CAEEE,UAFF;AAAA,MAGEC,cAHF,GAWIH,KAXJ,CAGEG,cAHF;AAAA,MAIEC,iBAJF,GAWIJ,KAXJ,CAIEI,iBAJF;AAAA,MAKEC,kBALF,GAWIL,KAXJ,CAKEK,kBALF;AAAA,MAMEC,YANF,GAWIN,KAXJ,CAMEM,WANF;AAAA,MAOEC,QAPF,GAWIP,KAXJ,CAOEO,OAPF;AAAA,MAQEC,UARF,GAWIR,KAXJ,CAQEQ,SARF;AAAA,MASEC,YATF,GAWIT,KAXJ,CASES,YATF;AAAA,sBAWIT,KAXJ,CAUEhB,MAVF;AAAA,MAUU0B,UAVV,8BAUuB,EAVvB;;AAaA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,KAFd,yBAEcA,KAFd;AAAA,MAEqBC,IAFrB,yBAEqBA,IAFrB;AAAA,MAE2BC,KAF3B,yBAE2BA,KAF3B;AAAA,8CAGIC,aAHJ,CAIMC,IAJN;AAAA,MAIc9B,SAJd,yBAIcA,SAJd;AAAA,MAIyBK,OAJzB,yBAIyBA,OAJzB;AAAA,MAIkC0B,QAJlC,yBAIkCA,QAJlC;AAAA,MAI4CrB,KAJ5C,yBAI4CA,KAJ5C;;AASA,oBAAyB,6BAAWK,UAAU,CAACiB,SAAtB,CAAzB;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,OAAd;;AAEA,MAAMC,cAAc,GAAG,SAAjBA,cAAiB;AAAA,WAAM,CAACF,KAAD,IAAUC,OAAV,IAAqBA,OAAO,EAAlC;AAAA,GAAvB;;AAEA,SACE,gCAAC,6BAAD;AACE,IAAA,QAAQ,EAAEZ,YADZ;AAEE,IAAA,WAAW,EAAE,qBAACc,KAAD,EAAW;AACtB,UAAIjB,YAAJ,EAAiB;AACfA,QAAAA,YAAW,CAAC;AACVkB,UAAAA,OAAO,EAAE,gBADC;AAEVD,UAAAA,KAAK,EAALA;AAFU,SAAD,CAAX;AAID;AACF,KATH;AAUE,IAAA,OAAO,EAAE,iBAACA,KAAD,EAAW;AAClB,UAAIhB,QAAJ,EAAa;AACXA,QAAAA,QAAO,CAAC;AACNkB,UAAAA,cAAc,EAAEH,cADV;AAENE,UAAAA,OAAO,EAAE,gBAFH;AAGND,UAAAA,KAAK,EAALA;AAHM,SAAD,CAAP;AAKD;AACF,KAlBH;AAmBE,IAAA,SAAS,EAAE,mBAACA,KAAD,EAAW;AACpB,UAAIf,UAAJ,EAAe;AACbA,QAAAA,UAAS,CAAC;AACRiB,UAAAA,cAAc,EAAEH,cADR;AAERE,UAAAA,OAAO,EAAE,gBAFD;AAGRD,UAAAA,KAAK,EAALA;AAHQ,SAAD,CAAT;AAKD;AACF,KA3BH;AA4BE,IAAA,MAAM,EAAC;AA5BT,KA6BMtB,wBA7BN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA+BE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACjB,MAAM,CAACG,SAAR,EAAmB;AAAEuC,MAAAA,eAAe,EAAEX;AAAnB,KAAnB,EAA+C5B,SAA/C,EAA0DuB,UAAU,CAACvB,SAArE,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,kBAAD;AAAoB,IAAA,QAAQ,EAAEe,UAAU,CAACyB,SAAzC;AAAoD,IAAA,IAAI,EAAExB,cAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAEE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACnB,MAAM,CAACQ,OAAR,EAAiBA,OAAjB,EAA0BkB,UAAU,CAAClB,OAArC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AAAM,IAAA,aAAa,EAAE,CAArB;AAAwB,IAAA,KAAK,EAAE,CAACR,MAAM,CAACa,KAAR,EAAe;AAAE+B,MAAAA,KAAK,EAAEf;AAAT,KAAf,EAAiChB,KAAjC,EAAwCa,UAAU,CAACb,KAAnD,CAA/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGK,UAAU,CAACL,KADd,CADF,EAIE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACb,MAAM,CAACW,IAAR,EAAc;AAAEiC,MAAAA,KAAK,EAAEd;AAAT,KAAd,EAA+BI,QAA/B,EAAyCR,UAAU,CAACf,IAApD,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGkC,sBAAsB,CAAC3B,UAAU,CAAC4B,SAAZ,CADzB,CAJF,CAFF,CA/BF,EA0CG,uBAAA5B,UAAU,CAAC6B,OAAX,iCAAoBC,MAApB,GAA6B,gCAAC,iBAAD,gCAAuB9B,UAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA7B,GAAqE,IA1CxE,CADF;AA8CD,CA7ED;;AAoFO,IAAM+B,cAAc,GAAG,SAAjBA,cAAiB,CAG5BjC,KAH4B,EAIzB;AACH,2BAA0D,wCAA1D;AAAA,MAAQM,WAAR,sBAAQA,WAAR;AAAA,MAAqBC,OAArB,sBAAqBA,OAArB;AAAA,MAA8BC,SAA9B,sBAA8BA,SAA9B;AAAA,MAAyCC,YAAzC,sBAAyCA,YAAzC;;AACA,4BAII,0CAJJ;AAAA,MACER,wBADF,uBACEA,wBADF;AAAA,kDAEEG,iBAFF;AAAA,MAEEA,iBAFF,sCAEsB8B,oCAFtB;AAAA,kDAGE7B,kBAHF;AAAA,MAGEA,kBAHF,sCAGuB8B,kBAHvB;;AAMA,SACE,gCAAC,yBAAD;AAEIlC,IAAAA,wBAAwB,EAAxBA,wBAFJ;AAGIG,IAAAA,iBAAiB,EAAjBA,iBAHJ;AAIIC,IAAAA,kBAAkB,EAAlBA,kBAJJ;AAKIC,IAAAA,WAAW,EAAXA,WALJ;AAMIC,IAAAA,OAAO,EAAPA,OANJ;AAOIC,IAAAA,SAAS,EAATA,SAPJ;AAQIC,IAAAA,YAAY,EAAZA;AARJ,KAUMT,KAVN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAcD,CA1BM;;;;AA4BA,IAAM6B,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAClC,IAAD,EAA4B;AAChE,MAAI,CAACA,IAAL,EAAW;;AACX,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,IAAAA,IAAI,GAAGyC,UAAU,CAACzC,IAAD,CAAjB;AACD;;AAED,MAAIA,IAAI,GAAG,OAAO,IAAlB,EAAwB;AACtB,WAAU0C,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACC,KAAL,CAAW3C,IAAI,GAAG,EAAlB,IAAwB,GAAnC,CAAV;AACD;;AAED,SAAU0C,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACC,KAAL,CAAW3C,IAAI,GAAG,KAAlB,IAA2B,GAAtC,CAAV;AACD,CAXM;;;AAaPsC,cAAc,CAACM,WAAf,GAA6B,qCAA7B","sourcesContent":["import React from 'react';\nimport {\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useGoToURL } from './hooks/useGoToURL';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { FileIcon as FileIconDefault } from '../../components/Attachment/FileIcon';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vw } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n padding: 8,\n },\n details: {\n maxWidth: vw(60),\n paddingLeft: 16,\n },\n size: {\n fontSize: 12,\n },\n title: {\n fontSize: 14,\n fontWeight: '700',\n },\n});\n\nexport type FileAttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'AttachmentActions' | 'FileAttachmentIcon'\n > & {\n /** The attachment to render */\n attachment: Attachment<StreamChatGenerics>;\n attachmentSize?: number;\n styles?: Partial<{\n container: StyleProp<ViewStyle>;\n details: StyleProp<ViewStyle>;\n size: StyleProp<TextStyle>;\n title: StyleProp<TextStyle>;\n }>;\n };\n\nconst FileAttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n attachment,\n attachmentSize,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors: { black, grey, white },\n messageSimple: {\n file: { container, details, fileSize, title },\n },\n },\n } = useTheme();\n\n const [error, openURL] = useGoToURL(attachment.asset_url);\n\n const defaultOnPress = () => !error && openURL && openURL();\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n testID='file-attachment'\n {...additionalTouchableProps}\n >\n <View style={[styles.container, { backgroundColor: white }, container, stylesProp.container]}>\n <FileAttachmentIcon mimeType={attachment.mime_type} size={attachmentSize} />\n <View style={[styles.details, details, stylesProp.details]}>\n <Text numberOfLines={2} style={[styles.title, { color: black }, title, stylesProp.title]}>\n {attachment.title}\n </Text>\n <Text style={[styles.size, { color: grey }, fileSize, stylesProp.size]}>\n {getFileSizeDisplayText(attachment.file_size)}\n </Text>\n </View>\n </View>\n {attachment.actions?.length ? <AttachmentActions {...attachment} /> : null}\n </TouchableOpacity>\n );\n};\n\nexport type FileAttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>> &\n Pick<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>;\n\nexport const FileAttachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentProps<StreamChatGenerics>,\n) => {\n const { onLongPress, onPress, onPressIn, preventPress } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n AttachmentActions = AttachmentActionsDefault,\n FileAttachmentIcon = FileIconDefault,\n } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <FileAttachmentWithContext\n {...{\n additionalTouchableProps,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nexport const getFileSizeDisplayText = (size?: number | string) => {\n if (!size) return;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n\n if (size < 1000 * 1000) {\n return `${Math.floor(Math.floor(size / 10) / 100)} KB`;\n }\n\n return `${Math.floor(Math.floor(size / 10000) / 100)} MB`;\n};\n\nFileAttachment.displayName = 'FileAttachment{messageSimple{file}}';\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"]}