stream-chat-react-native-core 4.7.0-beta.5 → 4.7.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +23 -13
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Card.js +63 -30
  4. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachment.js +10 -17
  6. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/Gallery.js +22 -10
  8. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/utils/openUrlSafely.js +54 -0
  10. package/lib/commonjs/components/Attachment/utils/openUrlSafely.js.map +1 -0
  11. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +90 -56
  12. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  13. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  14. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  15. package/lib/commonjs/components/ImageGallery/ImageGallery.js +23 -22
  16. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  17. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
  18. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  19. package/lib/commonjs/components/Message/Message.js +10 -7
  20. package/lib/commonjs/components/Message/Message.js.map +1 -1
  21. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +2 -2
  22. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -1
  23. package/lib/commonjs/components/Reply/Reply.js +12 -12
  24. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  25. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +2 -2
  26. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  27. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +14 -4
  28. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  29. package/lib/commonjs/contexts/channelContext/ChannelContext.js +14 -4
  30. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  31. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +14 -4
  32. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  33. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +15 -9
  34. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  35. package/lib/commonjs/contexts/chatContext/ChatContext.js +14 -4
  36. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  37. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +14 -4
  38. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  39. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +2 -2
  40. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  41. package/lib/commonjs/contexts/messageContext/MessageContext.js +14 -4
  42. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  43. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +14 -4
  44. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  45. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +14 -4
  46. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  47. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +4 -4
  48. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -1
  49. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +14 -4
  50. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  51. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +13 -3
  52. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  53. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +12 -12
  54. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  55. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +13 -3
  56. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -1
  57. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +14 -4
  58. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  59. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +14 -4
  60. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  61. package/lib/commonjs/contexts/themeContext/ThemeContext.js +13 -7
  62. package/lib/commonjs/contexts/themeContext/ThemeContext.js.map +1 -1
  63. package/lib/commonjs/contexts/themeContext/utils/theme.js +9 -0
  64. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  65. package/lib/commonjs/contexts/threadContext/ThreadContext.js +14 -4
  66. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  67. package/lib/commonjs/contexts/translationContext/TranslationContext.js +15 -6
  68. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  69. package/lib/commonjs/contexts/typingContext/TypingContext.js +14 -4
  70. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  71. package/lib/commonjs/contexts/utils/defaultBaseContextValue.js +7 -0
  72. package/lib/commonjs/contexts/utils/defaultBaseContextValue.js.map +1 -0
  73. package/lib/commonjs/contexts/utils/isTestEnvironment.js +11 -0
  74. package/lib/commonjs/contexts/utils/isTestEnvironment.js.map +1 -0
  75. package/lib/commonjs/mock-builders/mock.js +30 -5
  76. package/lib/commonjs/mock-builders/mock.js.map +1 -1
  77. package/lib/commonjs/native.js +8 -2
  78. package/lib/commonjs/native.js.map +1 -1
  79. package/lib/commonjs/version.json +1 -1
  80. package/lib/module/components/Attachment/Attachment.js +23 -13
  81. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  82. package/lib/module/components/Attachment/Card.js +63 -30
  83. package/lib/module/components/Attachment/Card.js.map +1 -1
  84. package/lib/module/components/Attachment/FileAttachment.js +10 -17
  85. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  86. package/lib/module/components/Attachment/Gallery.js +22 -10
  87. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  88. package/lib/module/components/Attachment/utils/openUrlSafely.js +54 -0
  89. package/lib/module/components/Attachment/utils/openUrlSafely.js.map +1 -0
  90. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +90 -56
  91. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  92. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  93. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  94. package/lib/module/components/ImageGallery/ImageGallery.js +23 -22
  95. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  96. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
  97. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  98. package/lib/module/components/Message/Message.js +10 -7
  99. package/lib/module/components/Message/Message.js.map +1 -1
  100. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +2 -2
  101. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -1
  102. package/lib/module/components/Reply/Reply.js +12 -12
  103. package/lib/module/components/Reply/Reply.js.map +1 -1
  104. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +2 -2
  105. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  106. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +14 -4
  107. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  108. package/lib/module/contexts/channelContext/ChannelContext.js +14 -4
  109. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  110. package/lib/module/contexts/channelsContext/ChannelsContext.js +14 -4
  111. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  112. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +15 -9
  113. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  114. package/lib/module/contexts/chatContext/ChatContext.js +14 -4
  115. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  116. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +14 -4
  117. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  118. package/lib/module/contexts/keyboardContext/KeyboardContext.js +2 -2
  119. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  120. package/lib/module/contexts/messageContext/MessageContext.js +14 -4
  121. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  122. package/lib/module/contexts/messageInputContext/MessageInputContext.js +14 -4
  123. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  124. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +14 -4
  125. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  126. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +4 -4
  127. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -1
  128. package/lib/module/contexts/messagesContext/MessagesContext.js +14 -4
  129. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  130. package/lib/module/contexts/overlayContext/OverlayContext.js +13 -3
  131. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  132. package/lib/module/contexts/overlayContext/OverlayProvider.js +12 -12
  133. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  134. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +13 -3
  135. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -1
  136. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +14 -4
  137. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  138. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +14 -4
  139. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  140. package/lib/module/contexts/themeContext/ThemeContext.js +13 -7
  141. package/lib/module/contexts/themeContext/ThemeContext.js.map +1 -1
  142. package/lib/module/contexts/themeContext/utils/theme.js +9 -0
  143. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  144. package/lib/module/contexts/threadContext/ThreadContext.js +14 -4
  145. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  146. package/lib/module/contexts/translationContext/TranslationContext.js +15 -6
  147. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  148. package/lib/module/contexts/typingContext/TypingContext.js +14 -4
  149. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  150. package/lib/module/contexts/utils/defaultBaseContextValue.js +7 -0
  151. package/lib/module/contexts/utils/defaultBaseContextValue.js.map +1 -0
  152. package/lib/module/contexts/utils/isTestEnvironment.js +11 -0
  153. package/lib/module/contexts/utils/isTestEnvironment.js.map +1 -0
  154. package/lib/module/mock-builders/mock.js +30 -5
  155. package/lib/module/mock-builders/mock.js.map +1 -1
  156. package/lib/module/native.js +8 -2
  157. package/lib/module/native.js.map +1 -1
  158. package/lib/module/version.json +1 -1
  159. package/lib/typescript/components/Attachment/__tests__/openUrlSafely.test.d.ts +1 -0
  160. package/lib/typescript/components/Attachment/utils/openUrlSafely.d.ts +1 -0
  161. package/lib/typescript/contexts/__tests__/index.test.d.ts +1 -0
  162. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts +6 -2
  163. package/lib/typescript/contexts/themeContext/ThemeContext.d.ts +5 -2
  164. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +6 -0
  165. package/lib/typescript/contexts/utils/defaultBaseContextValue.d.ts +1 -0
  166. package/lib/typescript/contexts/utils/isTestEnvironment.d.ts +1 -0
  167. package/lib/typescript/mock-builders/mock.d.ts +2 -2
  168. package/lib/typescript/native.d.ts +1 -0
  169. package/package.json +1 -1
  170. package/src/components/Attachment/Attachment.tsx +4 -1
  171. package/src/components/Attachment/Card.tsx +30 -9
  172. package/src/components/Attachment/FileAttachment.tsx +2 -4
  173. package/src/components/Attachment/Gallery.tsx +17 -4
  174. package/src/components/Attachment/__tests__/Attachment.test.js +0 -53
  175. package/src/components/Attachment/__tests__/Giphy.test.js +9 -5
  176. package/src/components/Attachment/__tests__/openUrlSafely.test.ts +48 -0
  177. package/src/components/Attachment/utils/openUrlSafely.ts +17 -0
  178. package/src/components/AttachmentPicker/AttachmentPicker.tsx +5 -3
  179. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +1 -0
  180. package/src/components/ImageGallery/ImageGallery.tsx +7 -3
  181. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +16 -13
  182. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +5 -3
  183. package/src/components/Message/Message.tsx +5 -2
  184. package/src/components/MessageInput/SendMessageDisallowedIndicator.tsx +1 -0
  185. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +1 -1
  186. package/src/components/Reply/Reply.tsx +6 -3
  187. package/src/contexts/__tests__/index.test.tsx +103 -0
  188. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +1 -0
  189. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +18 -4
  190. package/src/contexts/channelContext/ChannelContext.tsx +18 -2
  191. package/src/contexts/channelsContext/ChannelsContext.tsx +18 -2
  192. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +19 -10
  193. package/src/contexts/chatContext/ChatContext.tsx +15 -2
  194. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +18 -3
  195. package/src/contexts/keyboardContext/KeyboardContext.tsx +2 -1
  196. package/src/contexts/messageContext/MessageContext.tsx +19 -2
  197. package/src/contexts/messageInputContext/MessageInputContext.tsx +20 -2
  198. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +19 -3
  199. package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +1 -0
  200. package/src/contexts/messagesContext/MessagesContext.tsx +19 -2
  201. package/src/contexts/overlayContext/OverlayContext.tsx +17 -2
  202. package/src/contexts/overlayContext/OverlayProvider.tsx +1 -0
  203. package/src/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.tsx +18 -3
  204. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +15 -3
  205. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +19 -2
  206. package/src/contexts/suggestionsContext/__tests__/Suggestions.test.js +1 -0
  207. package/src/contexts/themeContext/ThemeContext.tsx +19 -5
  208. package/src/contexts/themeContext/utils/theme.ts +15 -0
  209. package/src/contexts/threadContext/ThreadContext.tsx +16 -2
  210. package/src/contexts/translationContext/TranslationContext.tsx +18 -4
  211. package/src/contexts/typingContext/TypingContext.tsx +17 -2
  212. package/src/contexts/utils/defaultBaseContextValue.ts +1 -0
  213. package/src/contexts/utils/isTestEnvironment.ts +1 -0
  214. package/src/mock-builders/mock.js +16 -3
  215. package/src/native.ts +3 -1
  216. package/src/version.json +1 -1
  217. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +0 -42
  218. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +0 -1
  219. package/lib/module/components/Attachment/hooks/useGoToURL.js +0 -42
  220. package/lib/module/components/Attachment/hooks/useGoToURL.js.map +0 -1
  221. package/lib/typescript/components/Attachment/hooks/useGoToURL.d.ts +0 -2
  222. package/src/components/Attachment/hooks/useGoToURL.ts +0 -27
@@ -15,6 +15,8 @@ var _dayjs = _interopRequireDefault(require("dayjs"));
15
15
 
16
16
  var _getDisplayName = require("../utils/getDisplayName");
17
17
 
18
+ var _isTestEnvironment = require("../utils/isTestEnvironment");
19
+
18
20
  var _this = this,
19
21
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/contexts/translationContext/TranslationContext.tsx";
20
22
 
@@ -27,15 +29,16 @@ var isDayOrMoment = function isDayOrMoment(output) {
27
29
  };
28
30
 
29
31
  exports.isDayOrMoment = isDayOrMoment;
30
-
31
- var TranslationContext = _react["default"].createContext({
32
+ var defaultTranslationContextValue = {
32
33
  t: function t(key) {
33
34
  return key;
34
35
  },
35
36
  tDateTimeParser: function tDateTimeParser(input) {
36
37
  return (0, _dayjs["default"])(input);
37
38
  }
38
- });
39
+ };
40
+
41
+ var TranslationContext = _react["default"].createContext(defaultTranslationContextValue);
39
42
 
40
43
  exports.TranslationContext = TranslationContext;
41
44
 
@@ -47,7 +50,7 @@ var TranslationProvider = function TranslationProvider(_ref) {
47
50
  __self: _this,
48
51
  __source: {
49
52
  fileName: _jsxFileName,
50
- lineNumber: 34,
53
+ lineNumber: 38,
51
54
  columnNumber: 3
52
55
  }
53
56
  }, children);
@@ -56,7 +59,13 @@ var TranslationProvider = function TranslationProvider(_ref) {
56
59
  exports.TranslationProvider = TranslationProvider;
57
60
 
58
61
  var useTranslationContext = function useTranslationContext() {
59
- return (0, _react.useContext)(TranslationContext);
62
+ var contextValue = (0, _react.useContext)(TranslationContext);
63
+
64
+ if (contextValue === defaultTranslationContextValue && !(0, _isTestEnvironment.isTestEnvironment)()) {
65
+ throw new Error("The useTranslationContext hook was called outside the TranslationContext Provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider)(https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider");
66
+ }
67
+
68
+ return contextValue;
60
69
  };
61
70
 
62
71
  exports.useTranslationContext = useTranslationContext;
@@ -68,7 +77,7 @@ var withTranslationContext = function withTranslationContext(Component) {
68
77
  __self: _this,
69
78
  __source: {
70
79
  fileName: _jsxFileName,
71
- lineNumber: 49,
80
+ lineNumber: 63,
72
81
  columnNumber: 12
73
82
  }
74
83
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["TranslationContext.tsx"],"names":["isDayOrMoment","output","isSame","TranslationContext","React","createContext","t","key","tDateTimeParser","input","TranslationProvider","children","value","useTranslationContext","withTranslationContext","Component","WithTranslationContextComponent","props","translationContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AAOA;;;;;;;;;AAEO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,MAAD;AAAA,SAC1BA,MAAD,CAAiCC,MAAjC,IAA2C,IADhB;AAAA,CAAtB;;;;AAcA,IAAMC,kBAAkB,GAAGC,kBAAMC,aAAN,CAA6C;AAC7EC,EAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,WAAiBA,GAAjB;AAAA,GAD0E;AAE7EC,EAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,WAAW,uBAAMA,KAAN,CAAX;AAAA;AAF4D,CAA7C,CAA3B;;;;AAKA,IAAMC,mBAEX,GAAG,SAFQA,mBAER;AAAA,MAAGC,QAAH,QAAGA,QAAH;AAAA,MAAaC,KAAb,QAAaA,KAAb;AAAA,SACH,gCAAC,kBAAD,CAAoB,QAApB;AAA6B,IAAA,KAAK,EAAEA,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA4CD,QAA5C,CADG;AAAA,CAFE;;;;AAMA,IAAME,qBAAqB,GAAG,SAAxBA,qBAAwB;AAAA,SAAM,uBAAWV,kBAAX,CAAN;AAAA,CAA9B;;;;AAEA,IAAMW,sBAAsB,GAAG,SAAzBA,sBAAyB,CAGpCC,SAHoC,EAIkC;AACtE,MAAMC,+BAA+B,GAAG,SAAlCA,+BAAkC,CACtCC,KADsC,EAEnC;AACH,QAAMC,kBAAkB,GAAGL,qBAAqB,EAAhD;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAkDC,kBAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,+BAA+B,CAACG,WAAhC,8BAAuE,oCACrEJ,SADqE,CAAvE;AAGA,SAAOC,+BAAP;AACD,CAhBM","sourcesContent":["import React, { useContext } from 'react';\n\nimport Dayjs from 'dayjs';\n\nimport type { TFunction } from 'i18next';\nimport type { Moment } from 'moment';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport const isDayOrMoment = (output: TDateTimeParserOutput): output is Dayjs.Dayjs | Moment =>\n (output as Dayjs.Dayjs | Moment).isSame != null;\n\nexport type TDateTimeParserInput = string | number | Date;\n\nexport type TDateTimeParserOutput = string | number | Date | Dayjs.Dayjs | Moment;\n\nexport type TDateTimeParser = (input?: TDateTimeParserInput) => TDateTimeParserOutput;\n\nexport type TranslationContextValue = {\n t: TFunction | ((key: string) => string);\n tDateTimeParser: TDateTimeParser;\n};\n\nexport const TranslationContext = React.createContext<TranslationContextValue>({\n t: (key: string) => key,\n tDateTimeParser: (input) => Dayjs(input),\n});\n\nexport const TranslationProvider: React.FC<{\n value: TranslationContextValue;\n}> = ({ children, value }) => (\n <TranslationContext.Provider value={value}>{children}</TranslationContext.Provider>\n);\n\nexport const useTranslationContext = () => useContext(TranslationContext);\n\nexport const withTranslationContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<StreamChatGenerics>,\n): React.FC<Omit<StreamChatGenerics, keyof TranslationContextValue>> => {\n const WithTranslationContextComponent = (\n props: Omit<StreamChatGenerics, keyof TranslationContextValue>,\n ) => {\n const translationContext = useTranslationContext();\n\n return <Component {...(props as StreamChatGenerics)} {...translationContext} />;\n };\n WithTranslationContextComponent.displayName = `WithTranslationContext${getDisplayName(\n Component as React.ComponentType,\n )}`;\n return WithTranslationContextComponent;\n};\n"]}
1
+ {"version":3,"sources":["TranslationContext.tsx"],"names":["isDayOrMoment","output","isSame","defaultTranslationContextValue","t","key","tDateTimeParser","input","TranslationContext","React","createContext","TranslationProvider","children","value","useTranslationContext","contextValue","Error","withTranslationContext","Component","WithTranslationContextComponent","props","translationContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AAMA;;AACA;;;;;;;;;AAEO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,MAAD;AAAA,SAC1BA,MAAD,CAAiCC,MAAjC,IAA2C,IADhB;AAAA,CAAtB;;;AAcP,IAAMC,8BAAuD,GAAG;AAC9DC,EAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,WAAiBA,GAAjB;AAAA,GAD2D;AAE9DC,EAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,WAAW,uBAAMA,KAAN,CAAX;AAAA;AAF6C,CAAhE;;AAKO,IAAMC,kBAAkB,GAAGC,kBAAMC,aAAN,CAChCP,8BADgC,CAA3B;;;;AAIA,IAAMQ,mBAEX,GAAG,SAFQA,mBAER;AAAA,MAAGC,QAAH,QAAGA,QAAH;AAAA,MAAaC,KAAb,QAAaA,KAAb;AAAA,SACH,gCAAC,kBAAD,CAAoB,QAApB;AAA6B,IAAA,KAAK,EAAEA,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA4CD,QAA5C,CADG;AAAA,CAFE;;;;AAMA,IAAME,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAM;AACzC,MAAMC,YAAY,GAAG,uBAAWP,kBAAX,CAArB;;AAEA,MAAIO,YAAY,KAAKZ,8BAAjB,IAAmD,CAAC,2CAAxD,EAA6E;AAC3E,UAAM,IAAIa,KAAJ,+UAAN;AAGD;;AAED,SAAOD,YAAP;AACD,CAVM;;;;AAYA,IAAME,sBAAsB,GAAG,SAAzBA,sBAAyB,CAGpCC,SAHoC,EAIkC;AACtE,MAAMC,+BAA+B,GAAG,SAAlCA,+BAAkC,CACtCC,KADsC,EAEnC;AACH,QAAMC,kBAAkB,GAAGP,qBAAqB,EAAhD;AAEA,WAAO,gCAAC,SAAD,gCAAgBM,KAAhB,EAAkDC,kBAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,+BAA+B,CAACG,WAAhC,8BAAuE,oCACrEJ,SADqE,CAAvE;AAGA,SAAOC,+BAAP;AACD,CAhBM","sourcesContent":["import React, { useContext } from 'react';\n\nimport Dayjs from 'dayjs';\n\nimport type { TFunction } from 'i18next';\nimport type { Moment } from 'moment';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport const isDayOrMoment = (output: TDateTimeParserOutput): output is Dayjs.Dayjs | Moment =>\n (output as Dayjs.Dayjs | Moment).isSame != null;\n\nexport type TDateTimeParserInput = string | number | Date;\n\nexport type TDateTimeParserOutput = string | number | Date | Dayjs.Dayjs | Moment;\n\nexport type TDateTimeParser = (input?: TDateTimeParserInput) => TDateTimeParserOutput;\n\nexport type TranslationContextValue = {\n t: TFunction | ((key: string) => string);\n tDateTimeParser: TDateTimeParser;\n};\n\nconst defaultTranslationContextValue: TranslationContextValue = {\n t: (key: string) => key,\n tDateTimeParser: (input) => Dayjs(input),\n};\n\nexport const TranslationContext = React.createContext<TranslationContextValue>(\n defaultTranslationContextValue,\n);\n\nexport const TranslationProvider: React.FC<{\n value: TranslationContextValue;\n}> = ({ children, value }) => (\n <TranslationContext.Provider value={value}>{children}</TranslationContext.Provider>\n);\n\nexport const useTranslationContext = () => {\n const contextValue = useContext(TranslationContext);\n\n if (contextValue === defaultTranslationContextValue && !isTestEnvironment()) {\n throw new Error(\n `The useTranslationContext hook was called outside the TranslationContext Provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider)(https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider`,\n );\n }\n\n return contextValue;\n};\n\nexport const withTranslationContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<StreamChatGenerics>,\n): React.FC<Omit<StreamChatGenerics, keyof TranslationContextValue>> => {\n const WithTranslationContextComponent = (\n props: Omit<StreamChatGenerics, keyof TranslationContextValue>,\n ) => {\n const translationContext = useTranslationContext();\n\n return <Component {...(props as StreamChatGenerics)} {...translationContext} />;\n };\n WithTranslationContextComponent.displayName = `WithTranslationContext${getDisplayName(\n Component as React.ComponentType,\n )}`;\n return WithTranslationContextComponent;\n};\n"]}
@@ -11,8 +11,12 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
 
14
+ var _defaultBaseContextValue = require("../utils/defaultBaseContextValue");
15
+
14
16
  var _getDisplayName = require("../utils/getDisplayName");
15
17
 
18
+ var _isTestEnvironment = require("../utils/isTestEnvironment");
19
+
16
20
  var _this = this,
17
21
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/contexts/typingContext/TypingContext.tsx";
18
22
 
@@ -20,7 +24,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
20
24
 
21
25
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
26
 
23
- var TypingContext = _react["default"].createContext({});
27
+ var TypingContext = _react["default"].createContext(_defaultBaseContextValue.DEFAULT_BASE_CONTEXT_VALUE);
24
28
 
25
29
  exports.TypingContext = TypingContext;
26
30
 
@@ -32,7 +36,7 @@ var TypingProvider = function TypingProvider(_ref) {
32
36
  __self: _this,
33
37
  __source: {
34
38
  fileName: _jsxFileName,
35
- lineNumber: 24,
39
+ lineNumber: 27,
36
40
  columnNumber: 3
37
41
  }
38
42
  }, children);
@@ -41,7 +45,13 @@ var TypingProvider = function TypingProvider(_ref) {
41
45
  exports.TypingProvider = TypingProvider;
42
46
 
43
47
  var useTypingContext = function useTypingContext() {
44
- return (0, _react.useContext)(TypingContext);
48
+ var contextValue = (0, _react.useContext)(TypingContext);
49
+
50
+ if (contextValue === _defaultBaseContextValue.DEFAULT_BASE_CONTEXT_VALUE && !(0, _isTestEnvironment.isTestEnvironment)()) {
51
+ throw new Error("The useTypingContext hook was called outside of the TypingContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel");
52
+ }
53
+
54
+ return contextValue;
45
55
  };
46
56
 
47
57
  exports.useTypingContext = useTypingContext;
@@ -53,7 +63,7 @@ var withTypingContext = function withTypingContext(Component) {
53
63
  __self: _this,
54
64
  __source: {
55
65
  fileName: _jsxFileName,
56
- lineNumber: 49,
66
+ lineNumber: 64,
57
67
  columnNumber: 12
58
68
  }
59
69
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["TypingContext.tsx"],"names":["TypingContext","React","createContext","TypingProvider","children","value","useTypingContext","withTypingContext","Component","WithTypingContextComponent","props","typingContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAKA;;;;;;;;;AAQO,IAAMA,aAAa,GAAGC,kBAAMC,aAAN,CAAoB,EAApB,CAAtB;;;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB;AAAA,MAG5BC,QAH4B,QAG5BA,QAH4B;AAAA,MAI5BC,KAJ4B,QAI5BA,KAJ4B;AAAA,SAQ5B,gCAAC,aAAD,CAAe,QAAf;AAAwB,IAAA,KAAK,EAAEA,KAA/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGD,QADH,CAR4B;AAAA,CAAvB;;;;AAaA,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB;AAAA,SAEzB,uBAAWN,aAAX,CAFyB;AAAA,CAAzB;;;;AASA,IAAMO,iBAAiB,GAAG,SAApBA,iBAAoB,CAI/BC,SAJ+B,EAKqC;AACpE,MAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,CACjCC,KADiC,EAE9B;AACH,QAAMC,aAAa,GAAGL,gBAAgB,EAAtC;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAiCC,aAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,0BAA0B,CAACG,WAA3B,yBAA6D,oCAAeJ,SAAf,CAA7D;AACA,SAAOC,0BAAP;AACD,CAfM","sourcesContent":["import React, { PropsWithChildren, useContext } from 'react';\n\nimport type { ChannelState } from 'stream-chat';\n\nimport type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport type TypingContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n typing: ChannelState<StreamChatGenerics>['typing'];\n};\n\nexport const TypingContext = React.createContext({} as TypingContextValue);\n\nexport const TypingProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: TypingContextValue<StreamChatGenerics>;\n}>) => (\n <TypingContext.Provider value={value as unknown as TypingContextValue}>\n {children}\n </TypingContext.Provider>\n);\n\nexport const useTypingContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => useContext(TypingContext) as unknown as TypingContextValue<StreamChatGenerics>;\n\n/**\n * Typescript currently does not support partial inference so if TypingContext\n * typing is desired while using the HOC withTypingContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withTypingContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof TypingContextValue<StreamChatGenerics>>> => {\n const WithTypingContextComponent = (\n props: Omit<P, keyof TypingContextValue<StreamChatGenerics>>,\n ) => {\n const typingContext = useTypingContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...typingContext} />;\n };\n WithTypingContextComponent.displayName = `WithTypingContext${getDisplayName(Component)}`;\n return WithTypingContextComponent;\n};\n"]}
1
+ {"version":3,"sources":["TypingContext.tsx"],"names":["TypingContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","TypingProvider","children","value","useTypingContext","contextValue","Error","withTypingContext","Component","WithTypingContextComponent","props","typingContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAKA;;AAEA;;AACA;;;;;;;;;AAQO,IAAMA,aAAa,GAAGC,kBAAMC,aAAN,CAAoBC,mDAApB,CAAtB;;;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB;AAAA,MAG5BC,QAH4B,QAG5BA,QAH4B;AAAA,MAI5BC,KAJ4B,QAI5BA,KAJ4B;AAAA,SAQ5B,gCAAC,aAAD,CAAe,QAAf;AAAwB,IAAA,KAAK,EAAEA,KAA/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGD,QADH,CAR4B;AAAA,CAAvB;;;;AAaA,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,GAEzB;AACL,MAAMC,YAAY,GAAG,uBACnBR,aADmB,CAArB;;AAIA,MAAIQ,YAAY,KAAKL,mDAAjB,IAA+C,CAAC,2CAApD,EAAyE;AACvE,UAAM,IAAIM,KAAJ,4NAAN;AAGD;;AAED,SAAOD,YAAP;AACD,CAdM;;;;AAqBA,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB,CAI/BC,SAJ+B,EAKqC;AACpE,MAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,CACjCC,KADiC,EAE9B;AACH,QAAMC,aAAa,GAAGP,gBAAgB,EAAtC;AAEA,WAAO,gCAAC,SAAD,gCAAgBM,KAAhB,EAAiCC,aAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,0BAA0B,CAACG,WAA3B,yBAA6D,oCAAeJ,SAAf,CAA7D;AACA,SAAOC,0BAAP;AACD,CAfM","sourcesContent":["import React, { PropsWithChildren, useContext } from 'react';\n\nimport type { ChannelState } from 'stream-chat';\n\nimport type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type TypingContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n typing: ChannelState<StreamChatGenerics>['typing'];\n};\n\nexport const TypingContext = React.createContext(DEFAULT_BASE_CONTEXT_VALUE as TypingContextValue);\n\nexport const TypingProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: TypingContextValue<StreamChatGenerics>;\n}>) => (\n <TypingContext.Provider value={value as unknown as TypingContextValue}>\n {children}\n </TypingContext.Provider>\n);\n\nexport const useTypingContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n TypingContext,\n ) as unknown as TypingContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useTypingContext hook was called outside of the TypingContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if TypingContext\n * typing is desired while using the HOC withTypingContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withTypingContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof TypingContextValue<StreamChatGenerics>>> => {\n const WithTypingContextComponent = (\n props: Omit<P, keyof TypingContextValue<StreamChatGenerics>>,\n ) => {\n const typingContext = useTypingContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...typingContext} />;\n };\n WithTypingContextComponent.displayName = `WithTypingContext${getDisplayName(Component)}`;\n return WithTypingContextComponent;\n};\n"]}
@@ -0,0 +1,7 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.DEFAULT_BASE_CONTEXT_VALUE = void 0;
5
+ var DEFAULT_BASE_CONTEXT_VALUE = {};
6
+ exports.DEFAULT_BASE_CONTEXT_VALUE = DEFAULT_BASE_CONTEXT_VALUE;
7
+ //# sourceMappingURL=defaultBaseContextValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["defaultBaseContextValue.ts"],"names":["DEFAULT_BASE_CONTEXT_VALUE"],"mappings":";;;;AAAO,IAAMA,0BAA0B,GAAG,EAAnC","sourcesContent":["export const DEFAULT_BASE_CONTEXT_VALUE = {};\n"]}
@@ -0,0 +1,11 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.isTestEnvironment = void 0;
5
+
6
+ var isTestEnvironment = function isTestEnvironment() {
7
+ return process.env.NODE_ENV === 'test';
8
+ };
9
+
10
+ exports.isTestEnvironment = isTestEnvironment;
11
+ //# sourceMappingURL=isTestEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["isTestEnvironment.ts"],"names":["isTestEnvironment","process","env","NODE_ENV"],"mappings":";;;;;AAAO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAAMC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,MAA/B;AAAA,CAA1B","sourcesContent":["export const isTestEnvironment = () => process.env.NODE_ENV === 'test';\n"]}
@@ -29,6 +29,9 @@ var setUser = function setUser(client, user) {
29
29
  };
30
30
 
31
31
  function mockClient(client) {
32
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
33
+ var _options$disableAppSe = options.disableAppSettings,
34
+ disableAppSettings = _options$disableAppSe === void 0 ? true : _options$disableAppSe;
32
35
  jest.spyOn(client, '_setToken').mockImplementation();
33
36
  jest.spyOn(client, '_setupConnection').mockImplementation();
34
37
  client.tokenManager = {
@@ -40,31 +43,53 @@ function mockClient(client) {
40
43
  })
41
44
  };
42
45
  client.setUser = setUser.bind(null, client);
46
+
47
+ if (disableAppSettings) {
48
+ client.getAppSettings = jest.fn(function () {
49
+ return {};
50
+ });
51
+ }
52
+
43
53
  return client;
44
54
  }
45
55
 
46
56
  var getTestClient = function getTestClient() {
47
- return mockClient(new _streamChat.StreamChat(apiKey));
57
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
58
+ return mockClient(new _streamChat.StreamChat(apiKey), options);
48
59
  };
49
60
 
50
61
  exports.getTestClient = getTestClient;
51
62
 
52
63
  var getTestClientWithUser = function () {
53
64
  var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(user) {
54
- var client;
65
+ var options,
66
+ _options$disableAppSe2,
67
+ disableAppSettings,
68
+ client,
69
+ _args = arguments;
70
+
55
71
  return _regenerator["default"].wrap(function _callee$(_context) {
56
72
  while (1) {
57
73
  switch (_context.prev = _context.next) {
58
74
  case 0:
75
+ options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
76
+ _options$disableAppSe2 = options.disableAppSettings, disableAppSettings = _options$disableAppSe2 === void 0 ? true : _options$disableAppSe2;
59
77
  client = mockClient(new _streamChat.StreamChat(apiKey));
60
- _context.next = 3;
78
+ _context.next = 5;
61
79
  return setUser(client, user);
62
80
 
63
- case 3:
81
+ case 5:
64
82
  client.wsPromise = Promise.resolve();
83
+
84
+ if (disableAppSettings) {
85
+ client.getAppSettings = jest.fn(function () {
86
+ return {};
87
+ });
88
+ }
89
+
65
90
  return _context.abrupt("return", client);
66
91
 
67
- case 5:
92
+ case 8:
68
93
  case "end":
69
94
  return _context.stop();
70
95
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["mock.js"],"names":["apiKey","token","setUser","client","user","Promise","resolve","connectionId","mutes","_user","userID","id","userToken","mockClient","jest","spyOn","mockImplementation","tokenManager","getToken","fn","tokenReady","bind","getTestClient","StreamChat","getTestClientWithUser","wsPromise","getRandomInt","min","max","Math","ceil","floor","random"],"mappings":";;;;;;;;;;;;;AAGA;;AAEA,IAAMA,MAAM,GAAG,SAAf;AACA,IAAMC,KAAK,GAAG,aAAd;;AAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,MAAD,EAASC,IAAT;AAAA,SACd,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvBH,IAAAA,MAAM,CAACI,YAAP,GAAsB,oBAAtB;AACAJ,IAAAA,MAAM,CAACC,IAAP,GAAcA,IAAd;AACAD,IAAAA,MAAM,CAACC,IAAP,CAAYI,KAAZ,GAAoB,EAApB;AACAL,IAAAA,MAAM,CAACM,KAAP,iCAAoBL,IAApB;AACAD,IAAAA,MAAM,CAACO,MAAP,GAAgBN,IAAI,CAACO,EAArB;AACAR,IAAAA,MAAM,CAACS,SAAP,GAAmBX,KAAnB;AACAK,IAAAA,OAAO;AACR,GARD,CADc;AAAA,CAAhB;;AAWA,SAASO,UAAT,CAAoBV,MAApB,EAA4B;AAC1BW,EAAAA,IAAI,CAACC,KAAL,CAAWZ,MAAX,EAAmB,WAAnB,EAAgCa,kBAAhC;AACAF,EAAAA,IAAI,CAACC,KAAL,CAAWZ,MAAX,EAAmB,kBAAnB,EAAuCa,kBAAvC;AACAb,EAAAA,MAAM,CAACc,YAAP,GAAsB;AACpBC,IAAAA,QAAQ,EAAEJ,IAAI,CAACK,EAAL,CAAQ;AAAA,aAAMlB,KAAN;AAAA,KAAR,CADU;AAEpBmB,IAAAA,UAAU,EAAEN,IAAI,CAACK,EAAL,CAAQ;AAAA,aAAM,IAAN;AAAA,KAAR;AAFQ,GAAtB;AAIAhB,EAAAA,MAAM,CAACD,OAAP,GAAiBA,OAAO,CAACmB,IAAR,CAAa,IAAb,EAAmBlB,MAAnB,CAAjB;AACA,SAAOA,MAAP;AACD;;AAEM,IAAMmB,aAAa,GAAG,SAAhBA,aAAgB;AAAA,SAAMT,UAAU,CAAC,IAAIU,sBAAJ,CAAevB,MAAf,CAAD,CAAhB;AAAA,CAAtB;;;;AAEA,IAAMwB,qBAAqB;AAAA,6EAAG,iBAAOpB,IAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAC7BD,YAAAA,MAD6B,GACpBU,UAAU,CAAC,IAAIU,sBAAJ,CAAevB,MAAf,CAAD,CADU;AAAA;AAAA,mBAE7BE,OAAO,CAACC,MAAD,EAASC,IAAT,CAFsB;;AAAA;AAGnCD,YAAAA,MAAM,CAACsB,SAAP,GAAmBpB,OAAO,CAACC,OAAR,EAAnB;AAHmC,6CAI5BH,MAJ4B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAH;;AAAA,kBAArBqB,qBAAqB;AAAA;AAAA;AAAA,GAA3B;;;;AAOA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAMC,GAAN,EAAc;AACxCD,EAAAA,GAAG,GAAGE,IAAI,CAACC,IAAL,CAAUH,GAAV,CAAN;AACAC,EAAAA,GAAG,GAAGC,IAAI,CAACE,KAAL,CAAWH,GAAX,CAAN;AACA,SAAOC,IAAI,CAACE,KAAL,CAAWF,IAAI,CAACG,MAAL,MAAiBJ,GAAG,GAAGD,GAAvB,CAAX,IAA0CA,GAAjD;AACD,CAJM","sourcesContent":["/* eslint no-underscore-dangle: 0 */\n/* eslint no-param-reassign: 0 */\n\nimport { StreamChat } from 'stream-chat';\n\nconst apiKey = 'API_KEY';\nconst token = 'dummy_token';\n\nconst setUser = (client, user) =>\n new Promise((resolve) => {\n client.connectionId = 'dumm_connection_id';\n client.user = user;\n client.user.mutes = [];\n client._user = { ...user };\n client.userID = user.id;\n client.userToken = token;\n resolve();\n });\n\nfunction mockClient(client) {\n jest.spyOn(client, '_setToken').mockImplementation();\n jest.spyOn(client, '_setupConnection').mockImplementation();\n client.tokenManager = {\n getToken: jest.fn(() => token),\n tokenReady: jest.fn(() => true),\n };\n client.setUser = setUser.bind(null, client);\n return client;\n}\n\nexport const getTestClient = () => mockClient(new StreamChat(apiKey));\n\nexport const getTestClientWithUser = async (user) => {\n const client = mockClient(new StreamChat(apiKey));\n await setUser(client, user);\n client.wsPromise = Promise.resolve();\n return client;\n};\n\nexport const getRandomInt = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min; // The maximum is exclusive and the minimum is inclusive\n};\n"]}
1
+ {"version":3,"sources":["mock.js"],"names":["apiKey","token","setUser","client","user","Promise","resolve","connectionId","mutes","_user","userID","id","userToken","mockClient","options","disableAppSettings","jest","spyOn","mockImplementation","tokenManager","getToken","fn","tokenReady","bind","getAppSettings","getTestClient","StreamChat","getTestClientWithUser","wsPromise","getRandomInt","min","max","Math","ceil","floor","random"],"mappings":"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","sourcesContent":["/* eslint no-underscore-dangle: 0 */\n/* eslint no-param-reassign: 0 */\n\nimport { StreamChat } from 'stream-chat';\n\nconst apiKey = 'API_KEY';\nconst token = 'dummy_token';\n\nconst setUser = (client, user) =>\n new Promise((resolve) => {\n client.connectionId = 'dumm_connection_id';\n client.user = user;\n client.user.mutes = [];\n client._user = { ...user };\n client.userID = user.id;\n client.userToken = token;\n resolve();\n });\n\nfunction mockClient(client, options = {}) {\n const { disableAppSettings = true } = options;\n\n jest.spyOn(client, '_setToken').mockImplementation();\n jest.spyOn(client, '_setupConnection').mockImplementation();\n client.tokenManager = {\n getToken: jest.fn(() => token),\n tokenReady: jest.fn(() => true),\n };\n client.setUser = setUser.bind(null, client);\n\n if (disableAppSettings) {\n client.getAppSettings = jest.fn(() => ({}));\n }\n\n return client;\n}\n\nexport const getTestClient = (options = {}) => mockClient(new StreamChat(apiKey), options);\n\nexport const getTestClientWithUser = async (user, options = {}) => {\n const { disableAppSettings = true } = options;\n const client = mockClient(new StreamChat(apiKey));\n await setUser(client, user);\n client.wsPromise = Promise.resolve();\n\n if (disableAppSettings) {\n client.getAppSettings = jest.fn(() => ({}));\n }\n\n return client;\n};\n\nexport const getRandomInt = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min; // The maximum is exclusive and the minimum is inclusive\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
- exports.triggerHaptic = exports.takePhoto = exports.shareImage = exports.saveFile = exports.registerNativeHandlers = exports.pickDocument = exports.getPhotos = exports.getLocalAssetUri = exports.deleteFile = exports.compressImage = exports.Video = exports.SDK = exports.NetInfo = exports.FlatList = void 0;
4
+ exports.triggerHaptic = exports.takePhoto = exports.shareImage = exports.saveFile = exports.registerNativeHandlers = exports.pickDocument = exports.isVideoPackageAvailable = exports.getPhotos = exports.getLocalAssetUri = exports.deleteFile = exports.compressImage = exports.Video = exports.SDK = exports.NetInfo = exports.FlatList = void 0;
5
5
 
6
6
  var _reactNative = require("react-native");
7
7
 
@@ -36,7 +36,7 @@ var triggerHaptic = fail;
36
36
  exports.triggerHaptic = triggerHaptic;
37
37
  var SDK;
38
38
  exports.SDK = SDK;
39
- var Video = fail;
39
+ var Video;
40
40
  exports.Video = Video;
41
41
 
42
42
  var registerNativeHandlers = function registerNativeHandlers(handlers) {
@@ -98,4 +98,10 @@ var registerNativeHandlers = function registerNativeHandlers(handlers) {
98
98
  };
99
99
 
100
100
  exports.registerNativeHandlers = registerNativeHandlers;
101
+
102
+ var isVideoPackageAvailable = function isVideoPackageAvailable() {
103
+ return !!Video;
104
+ };
105
+
106
+ exports.isVideoPackageAvailable = isVideoPackageAvailable;
101
107
  //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["native.ts"],"names":["fail","Error","compressImage","deleteFile","getLocalAssetUri","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","shareImage","takePhoto","triggerHaptic","SDK","Video","registerNativeHandlers","handlers"],"mappings":";;;;;AACA;;AAMA,IAAMA,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAMC,KAAK,CACT,mGADS,CAAX;AAGD,CAJD;;AAiBO,IAAIC,aAA4B,GAAGF,IAAnC;;AAGA,IAAIG,UAAsB,GAAGH,IAA7B;;AAGA,IAAII,gBAAkC,GAAGJ,IAAzC;;AASA,IAAIK,SAAoB,GAAGL,IAA3B;;AAOA,IAAIM,QAAQ,GAAGC,qBAAf;;AAEA,IAAIC,OAAgB,GAAG;AAC5BC,EAAAA,gBAAgB,EAAET,IADU;AAE5BU,EAAAA,KAAK,EAAEV;AAFqB,CAAvB;;AAWA,IAAIW,YAA0B,GAAGX,IAAjC;;AAOA,IAAIY,QAAkB,GAAGZ,IAAzB;;AAOA,IAAIa,UAAsB,GAAGb,IAA7B;;AASA,IAAIc,SAAoB,GAAGd,IAA3B;;AAWA,IAAIe,aAA4B,GAAGf,IAAnC;;AAEA,IAAIgB,GAAJ;;AAoDA,IAAIC,KAAqC,GAAGjB,IAA5C;;;AAkBA,IAAMkB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,QAAD,EAAwB;AAC5D,MAAIA,QAAQ,CAACjB,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGiB,QAAQ,CAACjB,aAAzB;AACD;;AAED,MAAIiB,QAAQ,CAAChB,UAAb,EAAyB;AACvB,yBAAAA,UAAU,GAAGgB,QAAQ,CAAChB,UAAtB;AACD;;AAED,MAAIgB,QAAQ,CAACb,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGa,QAAQ,CAACb,QAApB;AACD;;AACD,MAAIa,QAAQ,CAACX,OAAb,EAAsB;AACpB,sBAAAA,OAAO,GAAGW,QAAQ,CAACX,OAAnB;AACD;;AAED,MAAIW,QAAQ,CAACf,gBAAb,EAA+B;AAC7B,+BAAAA,gBAAgB,GAAGe,QAAQ,CAACf,gBAA5B;AACD;;AAED,MAAIe,QAAQ,CAACd,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGc,QAAQ,CAACd,SAArB;AACD;;AAED,MAAIc,QAAQ,CAACX,OAAb,EAAsB;AACpB,sBAAAA,OAAO,GAAGW,QAAQ,CAACX,OAAnB;AACD;;AAED,MAAIW,QAAQ,CAACR,YAAb,EAA2B;AACzB,2BAAAA,YAAY,GAAGQ,QAAQ,CAACR,YAAxB;AACD;;AAED,MAAIQ,QAAQ,CAACP,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGO,QAAQ,CAACP,QAApB;AACD;;AAED,MAAIO,QAAQ,CAACH,GAAb,EAAkB;AAChB,kBAAAA,GAAG,GAAGG,QAAQ,CAACH,GAAf;AACD;;AAED,MAAIG,QAAQ,CAACN,UAAb,EAAyB;AACvB,yBAAAA,UAAU,GAAGM,QAAQ,CAACN,UAAtB;AACD;;AAED,MAAIM,QAAQ,CAACL,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGK,QAAQ,CAACL,SAArB;AACD;;AAED,MAAIK,QAAQ,CAACJ,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGI,QAAQ,CAACJ,aAAzB;AACD;;AAED,MAAII,QAAQ,CAACF,KAAb,EAAoB;AAClB,oBAAAA,KAAK,GAAGE,QAAQ,CAACF,KAAjB;AACD;AACF,CAvDM","sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n docs?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport let SDK: string;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type VideoProgressData = {\n currentTime?: number;\n playableDuration?: number;\n seekableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n duration?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType> = fail;\n\ntype Handlers = {\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n shareImage?: ShareImage;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.pickDocument) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n};\n"]}
1
+ {"version":3,"sources":["native.ts"],"names":["fail","Error","compressImage","deleteFile","getLocalAssetUri","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","shareImage","takePhoto","triggerHaptic","SDK","Video","registerNativeHandlers","handlers","isVideoPackageAvailable"],"mappings":";;;;;AACA;;AAMA,IAAMA,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAMC,KAAK,CACT,mGADS,CAAX;AAGD,CAJD;;AAiBO,IAAIC,aAA4B,GAAGF,IAAnC;;AAGA,IAAIG,UAAsB,GAAGH,IAA7B;;AAGA,IAAII,gBAAkC,GAAGJ,IAAzC;;AASA,IAAIK,SAAoB,GAAGL,IAA3B;;AAOA,IAAIM,QAAQ,GAAGC,qBAAf;;AAEA,IAAIC,OAAgB,GAAG;AAC5BC,EAAAA,gBAAgB,EAAET,IADU;AAE5BU,EAAAA,KAAK,EAAEV;AAFqB,CAAvB;;AAWA,IAAIW,YAA0B,GAAGX,IAAjC;;AAOA,IAAIY,QAAkB,GAAGZ,IAAzB;;AAOA,IAAIa,UAAsB,GAAGb,IAA7B;;AASA,IAAIc,SAAoB,GAAGd,IAA3B;;AAWA,IAAIe,aAA4B,GAAGf,IAAnC;;AAEA,IAAIgB,GAAJ;;AAoDA,IAAIC,KAAJ;;;AAkBA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,QAAD,EAAwB;AAC5D,MAAIA,QAAQ,CAACjB,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGiB,QAAQ,CAACjB,aAAzB;AACD;;AAED,MAAIiB,QAAQ,CAAChB,UAAb,EAAyB;AACvB,yBAAAA,UAAU,GAAGgB,QAAQ,CAAChB,UAAtB;AACD;;AAED,MAAIgB,QAAQ,CAACb,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGa,QAAQ,CAACb,QAApB;AACD;;AACD,MAAIa,QAAQ,CAACX,OAAb,EAAsB;AACpB,sBAAAA,OAAO,GAAGW,QAAQ,CAACX,OAAnB;AACD;;AAED,MAAIW,QAAQ,CAACf,gBAAb,EAA+B;AAC7B,+BAAAA,gBAAgB,GAAGe,QAAQ,CAACf,gBAA5B;AACD;;AAED,MAAIe,QAAQ,CAACd,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGc,QAAQ,CAACd,SAArB;AACD;;AAED,MAAIc,QAAQ,CAACX,OAAb,EAAsB;AACpB,sBAAAA,OAAO,GAAGW,QAAQ,CAACX,OAAnB;AACD;;AAED,MAAIW,QAAQ,CAACR,YAAb,EAA2B;AACzB,2BAAAA,YAAY,GAAGQ,QAAQ,CAACR,YAAxB;AACD;;AAED,MAAIQ,QAAQ,CAACP,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGO,QAAQ,CAACP,QAApB;AACD;;AAED,MAAIO,QAAQ,CAACH,GAAb,EAAkB;AAChB,kBAAAA,GAAG,GAAGG,QAAQ,CAACH,GAAf;AACD;;AAED,MAAIG,QAAQ,CAACN,UAAb,EAAyB;AACvB,yBAAAA,UAAU,GAAGM,QAAQ,CAACN,UAAtB;AACD;;AAED,MAAIM,QAAQ,CAACL,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGK,QAAQ,CAACL,SAArB;AACD;;AAED,MAAIK,QAAQ,CAACJ,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGI,QAAQ,CAACJ,aAAzB;AACD;;AAED,MAAII,QAAQ,CAACF,KAAb,EAAoB;AAClB,oBAAAA,KAAK,GAAGE,QAAQ,CAACF,KAAjB;AACD;AACF,CAvDM;;;;AAyDA,IAAMG,uBAAuB,GAAG,SAA1BA,uBAA0B;AAAA,SAAM,CAAC,CAACH,KAAR;AAAA,CAAhC","sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n docs?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport let SDK: string;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type VideoProgressData = {\n currentTime?: number;\n playableDuration?: number;\n seekableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n duration?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n shareImage?: ShareImage;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.pickDocument) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.7.0-beta.5"
2
+ "version": "4.7.1-beta.1"
3
3
  }
@@ -21,6 +21,8 @@ var _Giphy = require("../../components/Attachment/Giphy");
21
21
 
22
22
  var _MessagesContext = require("../../contexts/messagesContext/MessagesContext");
23
23
 
24
+ var _native = require("../../native");
25
+
24
26
  var _this = this,
25
27
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Attachment/Attachment.tsx";
26
28
 
@@ -44,7 +46,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
44
46
  __self: _this,
45
47
  __source: {
46
48
  fileName: _jsxFileName,
47
- lineNumber: 57,
49
+ lineNumber: 58,
48
50
  columnNumber: 12
49
51
  }
50
52
  });
@@ -55,7 +57,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
55
57
  __self: _this,
56
58
  __source: {
57
59
  fileName: _jsxFileName,
58
- lineNumber: 64,
60
+ lineNumber: 65,
59
61
  columnNumber: 12
60
62
  }
61
63
  }));
@@ -67,7 +69,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
67
69
  __self: _this,
68
70
  __source: {
69
71
  fileName: _jsxFileName,
70
- lineNumber: 70,
72
+ lineNumber: 71,
71
73
  columnNumber: 9
72
74
  }
73
75
  }), hasAttachmentActions && _react["default"].createElement(AttachmentActions, (0, _extends2["default"])({
@@ -76,19 +78,19 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
76
78
  __self: _this,
77
79
  __source: {
78
80
  fileName: _jsxFileName,
79
- lineNumber: 72,
81
+ lineNumber: 73,
80
82
  columnNumber: 11
81
83
  }
82
84
  })));
83
85
  }
84
86
 
85
87
  if (attachment.type === 'video' && !attachment.og_scrape_url) {
86
- return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(Gallery, {
88
+ return (0, _native.isVideoPackageAvailable)() ? _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(Gallery, {
87
89
  videos: [attachment],
88
90
  __self: _this,
89
91
  __source: {
90
92
  fileName: _jsxFileName,
91
- lineNumber: 81,
93
+ lineNumber: 82,
92
94
  columnNumber: 9
93
95
  }
94
96
  }), hasAttachmentActions && _react["default"].createElement(AttachmentActions, (0, _extends2["default"])({
@@ -97,10 +99,18 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
97
99
  __self: _this,
98
100
  __source: {
99
101
  fileName: _jsxFileName,
100
- lineNumber: 83,
102
+ lineNumber: 84,
101
103
  columnNumber: 11
102
104
  }
103
- })));
105
+ }))) : _react["default"].createElement(FileAttachment, {
106
+ attachment: attachment,
107
+ __self: _this,
108
+ __source: {
109
+ fileName: _jsxFileName,
110
+ lineNumber: 88,
111
+ columnNumber: 7
112
+ }
113
+ });
104
114
  }
105
115
 
106
116
  if (attachment.type === 'file' || attachment.type === 'audio') {
@@ -109,7 +119,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
109
119
  __self: _this,
110
120
  __source: {
111
121
  fileName: _jsxFileName,
112
- lineNumber: 90,
122
+ lineNumber: 93,
113
123
  columnNumber: 12
114
124
  }
115
125
  });
@@ -120,7 +130,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
120
130
  __self: _this,
121
131
  __source: {
122
132
  fileName: _jsxFileName,
123
- lineNumber: 96,
133
+ lineNumber: 99,
124
134
  columnNumber: 9
125
135
  }
126
136
  })), _react["default"].createElement(AttachmentActions, (0, _extends2["default"])({
@@ -129,7 +139,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
129
139
  __self: _this,
130
140
  __source: {
131
141
  fileName: _jsxFileName,
132
- lineNumber: 97,
142
+ lineNumber: 100,
133
143
  columnNumber: 9
134
144
  }
135
145
  })));
@@ -138,7 +148,7 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
138
148
  __self: _this,
139
149
  __source: {
140
150
  fileName: _jsxFileName,
141
- lineNumber: 101,
151
+ lineNumber: 104,
142
152
  columnNumber: 12
143
153
  }
144
154
  }));
@@ -207,7 +217,7 @@ var Attachment = function Attachment(props) {
207
217
  __self: _this,
208
218
  __source: {
209
219
  fileName: _jsxFileName,
210
- lineNumber: 191,
220
+ lineNumber: 194,
211
221
  columnNumber: 5
212
222
  }
213
223
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Attachment.tsx"],"names":["AttachmentWithContext","props","attachment","AttachmentActions","Card","FileAttachment","Gallery","Giphy","giphyVersion","UrlPreview","hasAttachmentActions","actions","length","type","title_link","og_scrape_url","image_url","thumb_url","id","areEqual","prevProps","nextProps","prevAttachment","isAttachmentEqual","nextAttachment","attachmentEqual","MemoizedAttachment","React","memo","Attachment","PropAttachmentActions","PropCard","PropFileAttachment","PropGallery","PropGiphy","PropGiphyVersion","PropUrlPreview","ContextAttachmentActions","ContextCard","ContextFileAttachment","ContextGallery","ContextGiphy","ContextGiphyVersion","ContextUrlPreview","AttachmentActionsDefault","CardDefault","FileAttachmentDefault","GalleryDefault","GiphyDefault"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { Attachment as AttachmentType } from 'stream-chat';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../../components/Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../../components/Attachment/FileAttachment';\nimport { Gallery as GalleryDefault } from '../../components/Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../../components/Attachment/Giphy';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ActionHandler = (name: string, value: string) => void;\n\nexport type AttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'AttachmentActions'\n | 'Card'\n | 'FileAttachment'\n | 'Gallery'\n | 'giphyVersion'\n | 'Giphy'\n | 'isAttachmentEqual'\n | 'UrlPreview'\n> & {\n /**\n * The attachment to render\n */\n attachment: AttachmentType<StreamChatGenerics>;\n};\n\nconst AttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n giphyVersion,\n UrlPreview,\n } = props;\n\n const hasAttachmentActions = !!attachment.actions?.length;\n\n if (attachment.type === 'giphy' || attachment.type === 'imgur') {\n return <Giphy attachment={attachment} giphyVersion={giphyVersion} />;\n }\n\n if (\n (attachment.title_link || attachment.og_scrape_url) &&\n (attachment.image_url || attachment.thumb_url)\n ) {\n return <UrlPreview {...attachment} />;\n }\n\n if (attachment.type === 'image') {\n return (\n <>\n <Gallery images={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'video' && !attachment.og_scrape_url) {\n return (\n <>\n <Gallery videos={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'file' || attachment.type === 'audio') {\n return <FileAttachment attachment={attachment} />;\n }\n\n if (hasAttachmentActions) {\n return (\n <>\n <Card {...attachment} />\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n </>\n );\n } else {\n return <Card {...attachment} />;\n }\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: AttachmentPropsWithContext<StreamChatGenerics>,\n nextProps: AttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const { attachment: prevAttachment, isAttachmentEqual } = prevProps;\n const { attachment: nextAttachment } = nextProps;\n\n const attachmentEqual =\n prevAttachment.actions?.length === nextAttachment.actions?.length &&\n prevAttachment.image_url === nextAttachment.image_url &&\n prevAttachment.thumb_url === nextAttachment.thumb_url;\n if (!attachmentEqual) return false;\n\n if (isAttachmentEqual) {\n return isAttachmentEqual(prevAttachment, nextAttachment);\n }\n\n return true;\n};\n\nconst MemoizedAttachment = React.memo(\n AttachmentWithContext,\n areEqual,\n) as typeof AttachmentWithContext;\n\nexport type AttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'AttachmentActions'\n | 'Card'\n | 'FileAttachment'\n | 'Gallery'\n | 'Giphy'\n | 'giphyVersion'\n | 'UrlPreview'\n | 'isAttachmentEqual'\n >\n> &\n Pick<AttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>;\n\n/**\n * Attachment - The message attachment\n */\nexport const Attachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AttachmentProps<StreamChatGenerics>,\n) => {\n const {\n attachment,\n AttachmentActions: PropAttachmentActions,\n Card: PropCard,\n FileAttachment: PropFileAttachment,\n Gallery: PropGallery,\n Giphy: PropGiphy,\n giphyVersion: PropGiphyVersion,\n UrlPreview: PropUrlPreview,\n } = props;\n\n const {\n AttachmentActions: ContextAttachmentActions,\n Card: ContextCard,\n FileAttachment: ContextFileAttachment,\n Gallery: ContextGallery,\n Giphy: ContextGiphy,\n giphyVersion: ContextGiphyVersion,\n isAttachmentEqual,\n UrlPreview: ContextUrlPreview,\n } = useMessagesContext<StreamChatGenerics>();\n\n if (!attachment) {\n return null;\n }\n\n const AttachmentActions =\n PropAttachmentActions || ContextAttachmentActions || AttachmentActionsDefault;\n const Card = PropCard || ContextCard || CardDefault;\n const FileAttachment = PropFileAttachment || ContextFileAttachment || FileAttachmentDefault;\n const Gallery = PropGallery || ContextGallery || GalleryDefault;\n const Giphy = PropGiphy || ContextGiphy || GiphyDefault;\n const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;\n const giphyVersion = PropGiphyVersion || ContextGiphyVersion;\n\n return (\n <MemoizedAttachment\n {...{\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n giphyVersion,\n isAttachmentEqual,\n UrlPreview,\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Attachment.tsx"],"names":["AttachmentWithContext","props","attachment","AttachmentActions","Card","FileAttachment","Gallery","Giphy","giphyVersion","UrlPreview","hasAttachmentActions","actions","length","type","title_link","og_scrape_url","image_url","thumb_url","id","areEqual","prevProps","nextProps","prevAttachment","isAttachmentEqual","nextAttachment","attachmentEqual","MemoizedAttachment","React","memo","Attachment","PropAttachmentActions","PropCard","PropFileAttachment","PropGallery","PropGiphy","PropGiphyVersion","PropUrlPreview","ContextAttachmentActions","ContextCard","ContextFileAttachment","ContextGallery","ContextGiphy","ContextGiphyVersion","ContextUrlPreview","AttachmentActionsDefault","CardDefault","FileAttachmentDefault","GalleryDefault","GiphyDefault"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { Attachment as AttachmentType } from 'stream-chat';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../../components/Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../../components/Attachment/FileAttachment';\nimport { Gallery as GalleryDefault } from '../../components/Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../../components/Attachment/Giphy';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { isVideoPackageAvailable } from '../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ActionHandler = (name: string, value: string) => void;\n\nexport type AttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'AttachmentActions'\n | 'Card'\n | 'FileAttachment'\n | 'Gallery'\n | 'giphyVersion'\n | 'Giphy'\n | 'isAttachmentEqual'\n | 'UrlPreview'\n> & {\n /**\n * The attachment to render\n */\n attachment: AttachmentType<StreamChatGenerics>;\n};\n\nconst AttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n giphyVersion,\n UrlPreview,\n } = props;\n\n const hasAttachmentActions = !!attachment.actions?.length;\n\n if (attachment.type === 'giphy' || attachment.type === 'imgur') {\n return <Giphy attachment={attachment} giphyVersion={giphyVersion} />;\n }\n\n if (\n (attachment.title_link || attachment.og_scrape_url) &&\n (attachment.image_url || attachment.thumb_url)\n ) {\n return <UrlPreview {...attachment} />;\n }\n\n if (attachment.type === 'image') {\n return (\n <>\n <Gallery images={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'video' && !attachment.og_scrape_url) {\n return isVideoPackageAvailable() ? (\n <>\n <Gallery videos={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n ) : (\n <FileAttachment attachment={attachment} />\n );\n }\n\n if (attachment.type === 'file' || attachment.type === 'audio') {\n return <FileAttachment attachment={attachment} />;\n }\n\n if (hasAttachmentActions) {\n return (\n <>\n <Card {...attachment} />\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n </>\n );\n } else {\n return <Card {...attachment} />;\n }\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: AttachmentPropsWithContext<StreamChatGenerics>,\n nextProps: AttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const { attachment: prevAttachment, isAttachmentEqual } = prevProps;\n const { attachment: nextAttachment } = nextProps;\n\n const attachmentEqual =\n prevAttachment.actions?.length === nextAttachment.actions?.length &&\n prevAttachment.image_url === nextAttachment.image_url &&\n prevAttachment.thumb_url === nextAttachment.thumb_url;\n if (!attachmentEqual) return false;\n\n if (isAttachmentEqual) {\n return isAttachmentEqual(prevAttachment, nextAttachment);\n }\n\n return true;\n};\n\nconst MemoizedAttachment = React.memo(\n AttachmentWithContext,\n areEqual,\n) as typeof AttachmentWithContext;\n\nexport type AttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'AttachmentActions'\n | 'Card'\n | 'FileAttachment'\n | 'Gallery'\n | 'Giphy'\n | 'giphyVersion'\n | 'UrlPreview'\n | 'isAttachmentEqual'\n >\n> &\n Pick<AttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>;\n\n/**\n * Attachment - The message attachment\n */\nexport const Attachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AttachmentProps<StreamChatGenerics>,\n) => {\n const {\n attachment,\n AttachmentActions: PropAttachmentActions,\n Card: PropCard,\n FileAttachment: PropFileAttachment,\n Gallery: PropGallery,\n Giphy: PropGiphy,\n giphyVersion: PropGiphyVersion,\n UrlPreview: PropUrlPreview,\n } = props;\n\n const {\n AttachmentActions: ContextAttachmentActions,\n Card: ContextCard,\n FileAttachment: ContextFileAttachment,\n Gallery: ContextGallery,\n Giphy: ContextGiphy,\n giphyVersion: ContextGiphyVersion,\n isAttachmentEqual,\n UrlPreview: ContextUrlPreview,\n } = useMessagesContext<StreamChatGenerics>();\n\n if (!attachment) {\n return null;\n }\n\n const AttachmentActions =\n PropAttachmentActions || ContextAttachmentActions || AttachmentActionsDefault;\n const Card = PropCard || ContextCard || CardDefault;\n const FileAttachment = PropFileAttachment || ContextFileAttachment || FileAttachmentDefault;\n const Gallery = PropGallery || ContextGallery || GalleryDefault;\n const Giphy = PropGiphy || ContextGiphy || GiphyDefault;\n const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;\n const giphyVersion = PropGiphyVersion || ContextGiphyVersion;\n\n return (\n <MemoizedAttachment\n {...{\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n giphyVersion,\n isAttachmentEqual,\n UrlPreview,\n }}\n />\n );\n};\n"]}