stream-chat-react-native-core 5.27.0-beta.10 → 5.27.0-beta.12

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 (87) hide show
  1. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  2. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  3. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +100 -37
  4. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  5. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js +3 -1
  6. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js.map +1 -1
  7. package/lib/commonjs/components/ImageGallery/ImageGallery.js +39 -21
  8. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  9. package/lib/commonjs/i18n/es.json +22 -22
  10. package/lib/commonjs/i18n/fr.json +22 -22
  11. package/lib/commonjs/i18n/he.json +22 -22
  12. package/lib/commonjs/i18n/hi.json +22 -22
  13. package/lib/commonjs/i18n/it.json +22 -22
  14. package/lib/commonjs/i18n/ja.json +22 -22
  15. package/lib/commonjs/i18n/ko.json +22 -22
  16. package/lib/commonjs/i18n/nl.json +22 -22
  17. package/lib/commonjs/i18n/pt-BR.json +22 -22
  18. package/lib/commonjs/i18n/ru.json +22 -22
  19. package/lib/commonjs/i18n/tr.json +22 -22
  20. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js +21 -0
  21. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js.map +1 -0
  22. package/lib/commonjs/store/mappers/mapChannelToStorable.js +63 -0
  23. package/lib/commonjs/store/mappers/mapChannelToStorable.js.map +1 -0
  24. package/lib/commonjs/utils/DBSyncManager.js +73 -68
  25. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  26. package/lib/commonjs/version.json +1 -1
  27. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  28. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  29. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +100 -37
  30. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  31. package/lib/module/components/Chat/hooks/useSyncDatabase.js +3 -1
  32. package/lib/module/components/Chat/hooks/useSyncDatabase.js.map +1 -1
  33. package/lib/module/components/ImageGallery/ImageGallery.js +39 -21
  34. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  35. package/lib/module/i18n/es.json +22 -22
  36. package/lib/module/i18n/fr.json +22 -22
  37. package/lib/module/i18n/he.json +22 -22
  38. package/lib/module/i18n/hi.json +22 -22
  39. package/lib/module/i18n/it.json +22 -22
  40. package/lib/module/i18n/ja.json +22 -22
  41. package/lib/module/i18n/ko.json +22 -22
  42. package/lib/module/i18n/nl.json +22 -22
  43. package/lib/module/i18n/pt-BR.json +22 -22
  44. package/lib/module/i18n/ru.json +22 -22
  45. package/lib/module/i18n/tr.json +22 -22
  46. package/lib/module/store/apis/upsertChannelDataFromChannel.js +21 -0
  47. package/lib/module/store/apis/upsertChannelDataFromChannel.js.map +1 -0
  48. package/lib/module/store/mappers/mapChannelToStorable.js +63 -0
  49. package/lib/module/store/mappers/mapChannelToStorable.js.map +1 -0
  50. package/lib/module/utils/DBSyncManager.js +73 -68
  51. package/lib/module/utils/DBSyncManager.js.map +1 -1
  52. package/lib/module/version.json +1 -1
  53. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts +4 -2
  54. package/lib/typescript/i18n/es.json +22 -22
  55. package/lib/typescript/i18n/fr.json +22 -22
  56. package/lib/typescript/i18n/he.json +22 -22
  57. package/lib/typescript/i18n/hi.json +22 -22
  58. package/lib/typescript/i18n/it.json +22 -22
  59. package/lib/typescript/i18n/ja.json +22 -22
  60. package/lib/typescript/i18n/ko.json +22 -22
  61. package/lib/typescript/i18n/nl.json +22 -22
  62. package/lib/typescript/i18n/pt-BR.json +22 -22
  63. package/lib/typescript/i18n/ru.json +22 -22
  64. package/lib/typescript/i18n/tr.json +22 -22
  65. package/lib/typescript/store/apis/upsertChannelDataFromChannel.d.ts +6 -0
  66. package/lib/typescript/store/mappers/mapChannelToStorable.d.ts +4 -0
  67. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/src/components/AttachmentPicker/AttachmentPicker.tsx +1 -1
  70. package/src/components/Chat/hooks/handleEventToSyncDB.ts +132 -46
  71. package/src/components/Chat/hooks/useSyncDatabase.ts +1 -1
  72. package/src/components/ImageGallery/ImageGallery.tsx +25 -2
  73. package/src/i18n/es.json +22 -22
  74. package/src/i18n/fr.json +22 -22
  75. package/src/i18n/he.json +22 -22
  76. package/src/i18n/hi.json +22 -22
  77. package/src/i18n/it.json +22 -22
  78. package/src/i18n/ja.json +22 -22
  79. package/src/i18n/ko.json +22 -22
  80. package/src/i18n/nl.json +22 -22
  81. package/src/i18n/pt-BR.json +22 -22
  82. package/src/i18n/ru.json +22 -22
  83. package/src/i18n/tr.json +22 -22
  84. package/src/store/apis/upsertChannelDataFromChannel.ts +25 -0
  85. package/src/store/mappers/mapChannelToStorable.ts +68 -0
  86. package/src/utils/DBSyncManager.ts +7 -3
  87. package/src/version.json +1 -1
@@ -235,7 +235,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
235
235
  var initialSnapPoint = getInitialSnapPoint();
236
236
  var finalSnapPoint = _reactNative.Platform.OS === 'android' ? fullScreenHeight - topInset - handleHeight : fullScreenHeight - topInset;
237
237
  var snapPoints = (0, _react.useMemo)(function () {
238
- return [initialSnapPoint, finalSnapPoint];
238
+ return [Math.max(0, initialSnapPoint), Math.max(0, finalSnapPoint)];
239
239
  }, [initialSnapPoint, finalSnapPoint]);
240
240
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_bottomSheet["default"], {
241
241
  containerHeight: fullScreenHeight,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_useViewport2","_native","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","dayjs","extend","duration","styles","StyleSheet","create","container","flexGrow","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","AttachmentPickerIOSSelectMorePhotos","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useViewport","useViewport","vh","screenHeight","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","_useState5","_useState6","iOSLimited","setIosLimited","hasNextPageRef","_useState7","_useState8","loadingPhotos","setLoadingPhotos","_useState9","_useState10","photos","setPhotos","attemptedToLoadPhotosOnOpenRef","getMorePhotos","useCallback","_asyncToGenerator2","_regenerator","mark","_callee","endCursor","results","wrap","_callee$","_context","prev","next","current","getPhotos","after","first","sent","prevPhotos","concat","_toConsumableArray2","assets","hasNextPage","t0","stop","getMorePhotosRef","useEffect","_oniOS14GalleryLibrar","oniOS14GalleryLibrarySelectionChange","undefined","unsubscribe","backAction","backHandler","BackHandler","addEventListener","remove","onKeyboardOpenHandler","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","id","uri","file","handleHeight","getAndroidBottomBarHeightAdjustment","_StatusBar$currentHei","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","getInitialSnapPoint","initialSnapPoint","finalSnapPoint","snapPoints","useMemo","createElement","Fragment","containerHeight","enablePanDownToClose","handleComponent","index","onChange","__self","__source","fileName","lineNumber","columnNumber","BottomSheetFlatList","contentContainerStyle","backgroundColor","opacity","data","keyExtractor","item","numColumns","onEndReached","renderItem","renderAttachmentPickerItem","exports","displayName"],"sources":["AttachmentPicker.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { BackHandler, Dimensions, Keyboard, Platform, StatusBar, StyleSheet } from 'react-native';\n\nimport BottomSheet, { BottomSheetFlatList, BottomSheetHandleProps } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';\n\nimport { renderAttachmentPickerItem } from './components/AttachmentPickerItem';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useViewport } from '../../hooks/useViewport';\nimport { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst fullScreenHeight = Dimensions.get('window').height;\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI Component to render select more photos for selected gallery access in iOS.\n */\n AttachmentPickerIOSSelectMorePhotos: React.ComponentType;\n /**\n * Custom UI component to render overlay component, that shows up on top of [selected image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)\n *\n * **Default** [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)\n */\n ImageOverlaySelectedComponent: React.ComponentType;\n attachmentPickerBottomSheetHandleHeight?: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentPickerErrorButtonText?: string;\n attachmentPickerErrorText?: string;\n numberOfAttachmentImagesToLoadPerCall?: number;\n numberOfAttachmentPickerImageColumns?: number;\n translucentStatusBar?: boolean;\n};\n\nexport const AttachmentPicker = React.forwardRef(\n (props: AttachmentPickerProps, ref: React.ForwardedRef<BottomSheet>) => {\n const {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n AttachmentPickerIOSSelectMorePhotos,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { bottomSheetContentContainer },\n colors: { white },\n },\n } = useTheme();\n const {\n closePicker,\n maxNumberOfFiles,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setSelectedFiles,\n setSelectedImages,\n setSelectedPicker,\n topInset,\n } = useAttachmentPickerContext();\n const { vh } = useViewport();\n\n const screenHeight = vh(100);\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = useState(false);\n const [iOSLimited, setIosLimited] = useState(false);\n const hasNextPageRef = useRef(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n const attemptedToLoadPhotosOnOpenRef = useRef(false);\n\n const getMorePhotos = useCallback(async () => {\n if (\n hasNextPageRef.current &&\n !loadingPhotos &&\n currentIndex > -1 &&\n selectedPicker === 'images'\n ) {\n setPhotoError(false);\n setLoadingPhotos(true);\n const endCursor = endCursorRef.current;\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n endCursorRef.current = results.endCursor;\n setPhotos((prevPhotos) =>\n endCursor ? [...prevPhotos, ...results.assets] : results.assets,\n );\n setIosLimited(results.iOSLimited);\n hasNextPageRef.current = !!results.hasNextPage;\n } catch (error) {\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n }, [currentIndex, selectedPicker, loadingPhotos]);\n\n // we need to use ref here to avoid running effect when getMorePhotos changes\n const getMorePhotosRef = useRef(getMorePhotos);\n getMorePhotosRef.current = getMorePhotos;\n\n useEffect(() => {\n if (selectedPicker !== 'images') return;\n // ios 14 library selection change event is fired when user reselects the images that are permitted to be readable by the app\n const { unsubscribe } = oniOS14GalleryLibrarySelectionChange(() => {\n // we reset the cursor and has next page to true to facilitate fetching of the first page of photos again\n hasNextPageRef.current = true;\n endCursorRef.current = undefined;\n // fetch the first page of photos again\n getMorePhotosRef.current();\n });\n return unsubscribe;\n }, [selectedPicker]);\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker, closePicker]);\n\n useEffect(() => {\n const onKeyboardOpenHandler = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n }\n closePicker();\n };\n const keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, onKeyboardOpenHandler);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n Keyboard.removeListener(keyboardShowEvent, onKeyboardOpenHandler);\n };\n }, [closePicker, selectedPicker]);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n endCursorRef.current = undefined;\n hasNextPageRef.current = true;\n attemptedToLoadPhotosOnOpenRef.current = false;\n setPhotoError(false);\n }\n }\n }, [currentIndex, loadingPhotos]);\n\n useEffect(() => {\n if (\n !attemptedToLoadPhotosOnOpenRef.current &&\n selectedPicker === 'images' &&\n endCursorRef.current === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n getMorePhotos();\n // we do this only once on open for avoiding to request permissions in rationale dialog again and again on Android\n attemptedToLoadPhotosOnOpenRef.current = true;\n }\n }, [currentIndex, selectedPicker, getMorePhotos, loadingPhotos]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads: selectedFiles.length + selectedImages.length,\n // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n selected:\n selectedImages.some((image) =>\n image.id ? image.id === asset.id : image.uri === asset.uri,\n ) ||\n selectedFiles.some((file) => (file.id ? file.id === asset.id : file.uri === asset.uri)),\n selectedFiles,\n selectedImages,\n setSelectedFiles,\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const getAndroidBottomBarHeightAdjustment = (): number => {\n if (Platform.OS === 'android') {\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n if (bottomBarHeight === statusBarHeight) {\n return translucentStatusBar ? 0 : statusBarHeight;\n } else {\n if (translucentStatusBar) {\n if (bottomBarHeight > statusBarHeight) {\n return -bottomBarHeight + statusBarHeight;\n } else {\n return bottomBarHeight > 0 ? -statusBarHeight : 0;\n }\n } else {\n return bottomBarHeight > 0 ? 0 : statusBarHeight;\n }\n }\n }\n return 0;\n };\n\n const getInitialSnapPoint = (): number => {\n if (attachmentPickerBottomSheetHeight !== undefined) {\n return attachmentPickerBottomSheetHeight;\n }\n if (Platform.OS === 'android') {\n return (\n 308 +\n (fullScreenHeight - screenHeight + getAndroidBottomBarHeightAdjustment()) -\n handleHeight\n );\n } else {\n return 308 + (fullScreenHeight - screenHeight);\n }\n };\n\n const initialSnapPoint = getInitialSnapPoint();\n\n const finalSnapPoint =\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [initialSnapPoint, finalSnapPoint],\n [initialSnapPoint, finalSnapPoint],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={setCurrentIndex}\n ref={ref}\n snapPoints={snapPoints}\n >\n {iOSLimited && <AttachmentPickerIOSSelectMorePhotos />}\n <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={photoError ? undefined : getMorePhotos}\n renderItem={renderAttachmentPickerItem}\n />\n </BottomSheet>\n {selectedPicker === 'images' && photoError && (\n <AttachmentPickerError\n attachmentPickerBottomSheetHeight={initialSnapPoint}\n attachmentPickerErrorButtonText={attachmentPickerErrorButtonText}\n AttachmentPickerErrorImage={AttachmentPickerErrorImage}\n attachmentPickerErrorText={attachmentPickerErrorText}\n />\n )}\n </>\n );\n },\n);\n\nAttachmentPicker.displayName = 'AttachmentPicker';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_useViewport2","_native","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","dayjs","extend","duration","styles","StyleSheet","create","container","flexGrow","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","AttachmentPickerIOSSelectMorePhotos","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useViewport","useViewport","vh","screenHeight","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","_useState5","_useState6","iOSLimited","setIosLimited","hasNextPageRef","_useState7","_useState8","loadingPhotos","setLoadingPhotos","_useState9","_useState10","photos","setPhotos","attemptedToLoadPhotosOnOpenRef","getMorePhotos","useCallback","_asyncToGenerator2","_regenerator","mark","_callee","endCursor","results","wrap","_callee$","_context","prev","next","current","getPhotos","after","first","sent","prevPhotos","concat","_toConsumableArray2","assets","hasNextPage","t0","stop","getMorePhotosRef","useEffect","_oniOS14GalleryLibrar","oniOS14GalleryLibrarySelectionChange","undefined","unsubscribe","backAction","backHandler","BackHandler","addEventListener","remove","onKeyboardOpenHandler","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","id","uri","file","handleHeight","getAndroidBottomBarHeightAdjustment","_StatusBar$currentHei","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","getInitialSnapPoint","initialSnapPoint","finalSnapPoint","snapPoints","useMemo","Math","max","createElement","Fragment","containerHeight","enablePanDownToClose","handleComponent","index","onChange","__self","__source","fileName","lineNumber","columnNumber","BottomSheetFlatList","contentContainerStyle","backgroundColor","opacity","data","keyExtractor","item","numColumns","onEndReached","renderItem","renderAttachmentPickerItem","exports","displayName"],"sources":["AttachmentPicker.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { BackHandler, Dimensions, Keyboard, Platform, StatusBar, StyleSheet } from 'react-native';\n\nimport BottomSheet, { BottomSheetFlatList, BottomSheetHandleProps } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';\n\nimport { renderAttachmentPickerItem } from './components/AttachmentPickerItem';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useViewport } from '../../hooks/useViewport';\nimport { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst fullScreenHeight = Dimensions.get('window').height;\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI Component to render select more photos for selected gallery access in iOS.\n */\n AttachmentPickerIOSSelectMorePhotos: React.ComponentType;\n /**\n * Custom UI component to render overlay component, that shows up on top of [selected image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)\n *\n * **Default** [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)\n */\n ImageOverlaySelectedComponent: React.ComponentType;\n attachmentPickerBottomSheetHandleHeight?: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentPickerErrorButtonText?: string;\n attachmentPickerErrorText?: string;\n numberOfAttachmentImagesToLoadPerCall?: number;\n numberOfAttachmentPickerImageColumns?: number;\n translucentStatusBar?: boolean;\n};\n\nexport const AttachmentPicker = React.forwardRef(\n (props: AttachmentPickerProps, ref: React.ForwardedRef<BottomSheet>) => {\n const {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n AttachmentPickerIOSSelectMorePhotos,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { bottomSheetContentContainer },\n colors: { white },\n },\n } = useTheme();\n const {\n closePicker,\n maxNumberOfFiles,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setSelectedFiles,\n setSelectedImages,\n setSelectedPicker,\n topInset,\n } = useAttachmentPickerContext();\n const { vh } = useViewport();\n\n const screenHeight = vh(100);\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = useState(false);\n const [iOSLimited, setIosLimited] = useState(false);\n const hasNextPageRef = useRef(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n const attemptedToLoadPhotosOnOpenRef = useRef(false);\n\n const getMorePhotos = useCallback(async () => {\n if (\n hasNextPageRef.current &&\n !loadingPhotos &&\n currentIndex > -1 &&\n selectedPicker === 'images'\n ) {\n setPhotoError(false);\n setLoadingPhotos(true);\n const endCursor = endCursorRef.current;\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n endCursorRef.current = results.endCursor;\n setPhotos((prevPhotos) =>\n endCursor ? [...prevPhotos, ...results.assets] : results.assets,\n );\n setIosLimited(results.iOSLimited);\n hasNextPageRef.current = !!results.hasNextPage;\n } catch (error) {\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n }, [currentIndex, selectedPicker, loadingPhotos]);\n\n // we need to use ref here to avoid running effect when getMorePhotos changes\n const getMorePhotosRef = useRef(getMorePhotos);\n getMorePhotosRef.current = getMorePhotos;\n\n useEffect(() => {\n if (selectedPicker !== 'images') return;\n // ios 14 library selection change event is fired when user reselects the images that are permitted to be readable by the app\n const { unsubscribe } = oniOS14GalleryLibrarySelectionChange(() => {\n // we reset the cursor and has next page to true to facilitate fetching of the first page of photos again\n hasNextPageRef.current = true;\n endCursorRef.current = undefined;\n // fetch the first page of photos again\n getMorePhotosRef.current();\n });\n return unsubscribe;\n }, [selectedPicker]);\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker, closePicker]);\n\n useEffect(() => {\n const onKeyboardOpenHandler = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n }\n closePicker();\n };\n const keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, onKeyboardOpenHandler);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n Keyboard.removeListener(keyboardShowEvent, onKeyboardOpenHandler);\n };\n }, [closePicker, selectedPicker]);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n endCursorRef.current = undefined;\n hasNextPageRef.current = true;\n attemptedToLoadPhotosOnOpenRef.current = false;\n setPhotoError(false);\n }\n }\n }, [currentIndex, loadingPhotos]);\n\n useEffect(() => {\n if (\n !attemptedToLoadPhotosOnOpenRef.current &&\n selectedPicker === 'images' &&\n endCursorRef.current === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n getMorePhotos();\n // we do this only once on open for avoiding to request permissions in rationale dialog again and again on Android\n attemptedToLoadPhotosOnOpenRef.current = true;\n }\n }, [currentIndex, selectedPicker, getMorePhotos, loadingPhotos]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads: selectedFiles.length + selectedImages.length,\n // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n selected:\n selectedImages.some((image) =>\n image.id ? image.id === asset.id : image.uri === asset.uri,\n ) ||\n selectedFiles.some((file) => (file.id ? file.id === asset.id : file.uri === asset.uri)),\n selectedFiles,\n selectedImages,\n setSelectedFiles,\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const getAndroidBottomBarHeightAdjustment = (): number => {\n if (Platform.OS === 'android') {\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n if (bottomBarHeight === statusBarHeight) {\n return translucentStatusBar ? 0 : statusBarHeight;\n } else {\n if (translucentStatusBar) {\n if (bottomBarHeight > statusBarHeight) {\n return -bottomBarHeight + statusBarHeight;\n } else {\n return bottomBarHeight > 0 ? -statusBarHeight : 0;\n }\n } else {\n return bottomBarHeight > 0 ? 0 : statusBarHeight;\n }\n }\n }\n return 0;\n };\n\n const getInitialSnapPoint = (): number => {\n if (attachmentPickerBottomSheetHeight !== undefined) {\n return attachmentPickerBottomSheetHeight;\n }\n if (Platform.OS === 'android') {\n return (\n 308 +\n (fullScreenHeight - screenHeight + getAndroidBottomBarHeightAdjustment()) -\n handleHeight\n );\n } else {\n return 308 + (fullScreenHeight - screenHeight);\n }\n };\n\n const initialSnapPoint = getInitialSnapPoint();\n\n const finalSnapPoint =\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [Math.max(0, initialSnapPoint), Math.max(0, finalSnapPoint)],\n [initialSnapPoint, finalSnapPoint],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={setCurrentIndex}\n ref={ref}\n snapPoints={snapPoints}\n >\n {iOSLimited && <AttachmentPickerIOSSelectMorePhotos />}\n <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={photoError ? undefined : getMorePhotos}\n renderItem={renderAttachmentPickerItem}\n />\n </BottomSheet>\n {selectedPicker === 'images' && photoError && (\n <AttachmentPickerError\n attachmentPickerBottomSheetHeight={initialSnapPoint}\n attachmentPickerErrorButtonText={attachmentPickerErrorButtonText}\n AttachmentPickerErrorImage={AttachmentPickerErrorImage}\n attachmentPickerErrorText={attachmentPickerErrorText}\n />\n )}\n </>\n );\n },\n);\n\nAttachmentPicker.displayName = 'AttachmentPicker';\n"],"mappings":"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"}
@@ -1,61 +1,116 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
1
2
  Object.defineProperty(exports, "__esModule", {
2
3
  value: true
3
4
  });
4
5
  exports.handleEventToSyncDB = void 0;
6
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
5
7
  var _deleteChannel = require("../../../store/apis/deleteChannel");
6
8
  var _deleteMember = require("../../../store/apis/deleteMember");
7
9
  var _deleteMessagesForChannel = require("../../../store/apis/deleteMessagesForChannel");
8
10
  var _updateMessage = require("../../../store/apis/updateMessage");
9
11
  var _upsertChannelData = require("../../../store/apis/upsertChannelData");
12
+ var _upsertChannelDataFromChannel = require("../../../store/apis/upsertChannelDataFromChannel");
10
13
  var _upsertChannels = require("../../../store/apis/upsertChannels");
11
14
  var _upsertMembers = require("../../../store/apis/upsertMembers");
12
15
  var _upsertMessages = require("../../../store/apis/upsertMessages");
13
16
  var _upsertReads = require("../../../store/apis/upsertReads");
14
- var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
17
+ var _QuickSqliteClient = require("../../../store/QuickSqliteClient");
18
+ var _createSelectQuery = require("../../../store/sqlite-utils/createSelectQuery");
19
+ var handleEventToSyncDB = function handleEventToSyncDB(event, client, flush) {
15
20
  var type = event.type;
21
+ var queriesWithChannelGuard = function queriesWithChannelGuard(createQueries) {
22
+ var _event$channel;
23
+ var cid = event.cid || ((_event$channel = event.channel) == null ? void 0 : _event$channel.cid);
24
+ if (!cid) return createQueries(flush);
25
+ var channels = _QuickSqliteClient.QuickSqliteClient.executeSql.apply(null, (0, _createSelectQuery.createSelectQuery)('channels', ['cid'], {
26
+ cid: cid
27
+ }));
28
+ if (channels.length === 0) {
29
+ var channel = event.channel_type && event.channel_id ? client.channel(event.channel_type, event.channel_id) : undefined;
30
+ if (channel && channel.initialized && !channel.disconnected) {
31
+ var channelQuery = (0, _upsertChannelDataFromChannel.upsertChannelDataFromChannel)({
32
+ channel: channel,
33
+ flush: flush
34
+ });
35
+ if (channelQuery) {
36
+ var newQueries = [].concat((0, _toConsumableArray2["default"])(channelQuery), (0, _toConsumableArray2["default"])(createQueries(false)));
37
+ if (flush !== false) {
38
+ _QuickSqliteClient.QuickSqliteClient.executeSqlBatch(newQueries);
39
+ }
40
+ return newQueries;
41
+ } else {
42
+ console.warn("Couldnt create channel queries on " + type + " event for an initialized channel that is not in DB, skipping event", {
43
+ event: event
44
+ });
45
+ return [];
46
+ }
47
+ } else {
48
+ console.warn("Received " + type + " event for a non initialized channel that is not in DB, skipping event", {
49
+ event: event
50
+ });
51
+ return [];
52
+ }
53
+ }
54
+ return createQueries(flush);
55
+ };
16
56
  if (type === 'message.read') {
17
- var _event$user;
18
- if ((_event$user = event.user) != null && _event$user.id && event.cid) {
19
- return (0, _upsertReads.upsertReads)({
20
- cid: event.cid,
21
- flush: flush,
22
- reads: [{
23
- last_read: event.received_at,
24
- unread_messages: 0,
25
- user: event.user
26
- }]
57
+ var cid = event.cid;
58
+ var user = event.user;
59
+ if (user != null && user.id && cid) {
60
+ return queriesWithChannelGuard(function (flushOverride) {
61
+ return (0, _upsertReads.upsertReads)({
62
+ cid: cid,
63
+ flush: flushOverride,
64
+ reads: [{
65
+ last_read: event.received_at,
66
+ unread_messages: 0,
67
+ user: user
68
+ }]
69
+ });
27
70
  });
28
71
  }
29
72
  }
30
73
  if (type === 'message.new') {
31
- if (event.message && (!event.message.parent_id || event.message.show_in_channel)) {
32
- return (0, _upsertMessages.upsertMessages)({
33
- flush: flush,
34
- messages: [event.message]
74
+ var message = event.message;
75
+ if (message && (!message.parent_id || message.show_in_channel)) {
76
+ return queriesWithChannelGuard(function (flushOverride) {
77
+ return (0, _upsertMessages.upsertMessages)({
78
+ flush: flushOverride,
79
+ messages: [message]
80
+ });
35
81
  });
36
82
  }
37
83
  }
38
84
  if (type === 'message.updated' || type === 'message.deleted') {
39
- if (event.message && !event.message.parent_id) {
40
- return (0, _updateMessage.updateMessage)({
41
- flush: flush,
42
- message: event.message
85
+ var _message = event.message;
86
+ if (_message && !_message.parent_id) {
87
+ return queriesWithChannelGuard(function (flushOverride) {
88
+ return (0, _updateMessage.updateMessage)({
89
+ flush: flushOverride,
90
+ message: _message
91
+ });
43
92
  });
44
93
  }
45
94
  }
46
95
  if (type === 'reaction.updated') {
47
- if (event.message && event.reaction) {
48
- return (0, _updateMessage.updateMessage)({
49
- flush: flush,
50
- message: event.message
96
+ var _message2 = event.message;
97
+ if (_message2 && event.reaction) {
98
+ return queriesWithChannelGuard(function (flushOverride) {
99
+ return (0, _updateMessage.updateMessage)({
100
+ flush: flushOverride,
101
+ message: _message2
102
+ });
51
103
  });
52
104
  }
53
105
  }
54
106
  if (type === 'reaction.new' || type === 'reaction.deleted') {
55
- if (event.message && !event.message.parent_id) {
56
- return (0, _updateMessage.updateMessage)({
57
- flush: flush,
58
- message: event.message
107
+ var _message3 = event.message;
108
+ if (_message3 && !_message3.parent_id) {
109
+ return queriesWithChannelGuard(function (flushOverride) {
110
+ return (0, _updateMessage.updateMessage)({
111
+ flush: flushOverride,
112
+ message: _message3
113
+ });
59
114
  });
60
115
  }
61
116
  }
@@ -95,20 +150,28 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
95
150
  }
96
151
  }
97
152
  if (type === 'member.added' || type === 'member.updated') {
98
- if (event.member && event.cid) {
99
- return (0, _upsertMembers.upsertMembers)({
100
- cid: event.cid,
101
- flush: flush,
102
- members: [event.member]
153
+ var member = event.member;
154
+ var _cid = event.cid;
155
+ if (member && _cid) {
156
+ return queriesWithChannelGuard(function (flushOverride) {
157
+ return (0, _upsertMembers.upsertMembers)({
158
+ cid: _cid,
159
+ flush: flushOverride,
160
+ members: [member]
161
+ });
103
162
  });
104
163
  }
105
164
  }
106
165
  if (type === 'member.removed') {
107
- if (event.member && event.cid) {
108
- return (0, _deleteMember.deleteMember)({
109
- cid: event.cid,
110
- flush: flush,
111
- member: event.member
166
+ var _member = event.member;
167
+ var _cid2 = event.cid;
168
+ if (_member && _cid2) {
169
+ return queriesWithChannelGuard(function (flushOverride) {
170
+ return (0, _deleteMember.deleteMember)({
171
+ cid: _cid2,
172
+ flush: flushOverride,
173
+ member: _member
174
+ });
112
175
  });
113
176
  }
114
177
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_deleteChannel","require","_deleteMember","_deleteMessagesForChannel","_updateMessage","_upsertChannelData","_upsertChannels","_upsertMembers","_upsertMessages","_upsertReads","handleEventToSyncDB","event","flush","type","_event$user","user","id","cid","upsertReads","reads","last_read","received_at","unread_messages","message","parent_id","show_in_channel","upsertMessages","messages","updateMessage","reaction","channel","upsertChannelData","deleteChannel","deleteMessagesForChannel","_event$queriedChannel","_event$queriedChannel2","queriedChannels","channels","length","_event$queriedChannel3","_event$queriedChannel4","upsertChannels","isLatestMessagesSet","isLatestMessageSet","member","upsertMembers","members","deleteMember","exports"],"sources":["handleEventToSyncDB.ts"],"sourcesContent":["import type { Event } from 'stream-chat';\n\nimport { deleteChannel } from '../../../store/apis/deleteChannel';\nimport { deleteMember } from '../../../store/apis/deleteMember';\nimport { deleteMessagesForChannel } from '../../../store/apis/deleteMessagesForChannel';\nimport { updateMessage } from '../../../store/apis/updateMessage';\nimport { upsertChannelData } from '../../../store/apis/upsertChannelData';\nimport { upsertChannels } from '../../../store/apis/upsertChannels';\nimport { upsertMembers } from '../../../store/apis/upsertMembers';\nimport { upsertMessages } from '../../../store/apis/upsertMessages';\nimport { upsertReads } from '../../../store/apis/upsertReads';\n\nexport const handleEventToSyncDB = (event: Event, flush?: boolean) => {\n const { type } = event;\n\n if (type === 'message.read') {\n if (event.user?.id && event.cid) {\n return upsertReads({\n cid: event.cid,\n flush,\n reads: [\n {\n last_read: event.received_at as string,\n unread_messages: 0,\n user: event.user,\n },\n ],\n });\n }\n }\n\n if (type === 'message.new') {\n if (event.message && (!event.message.parent_id || event.message.show_in_channel)) {\n return upsertMessages({\n flush,\n messages: [event.message],\n });\n }\n }\n\n if (type === 'message.updated' || type === 'message.deleted') {\n if (event.message && !event.message.parent_id) {\n // Update only if it exists, otherwise event could be related\n // to a message which is not in database.\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.updated') {\n if (event.message && event.reaction) {\n // We update the entire message to make sure we also update\n // reaction_counts.\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.new' || type === 'reaction.deleted') {\n if (event.message && !event.message.parent_id) {\n // Here we are relying on the fact message.latest_reactions always includes\n // the new reaction. So we first delete all the existing reactions and populate\n // the reactions table with message.latest_reactions\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (\n type === 'channel.updated' ||\n type === 'channel.visible' ||\n type === 'notification.added_to_channel' ||\n type === 'notification.message_new'\n ) {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (\n type === 'channel.hidden' ||\n type === 'channel.deleted' ||\n type === 'notification.removed_from_channel'\n ) {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channel.truncated') {\n if (event.channel) {\n return deleteMessagesForChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channels.queried') {\n if (event.queriedChannels?.channels?.length) {\n return upsertChannels({\n channels: event.queriedChannels?.channels,\n flush,\n isLatestMessagesSet: event.queriedChannels?.isLatestMessageSet,\n });\n }\n }\n\n if (type === 'member.added' || type === 'member.updated') {\n if (event.member && event.cid) {\n return upsertMembers({\n cid: event.cid,\n flush,\n members: [event.member],\n });\n }\n }\n\n if (type === 'member.removed') {\n if (event.member && event.cid) {\n return deleteMember({\n cid: event.cid,\n flush,\n member: event.member,\n });\n }\n }\n\n return [];\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_deleteChannel","require","_deleteMember","_deleteMessagesForChannel","_updateMessage","_upsertChannelData","_upsertChannelDataFromChannel","_upsertChannels","_upsertMembers","_upsertMessages","_upsertReads","_QuickSqliteClient","_createSelectQuery","handleEventToSyncDB","event","client","flush","type","queriesWithChannelGuard","createQueries","_event$channel","cid","channel","channels","QuickSqliteClient","executeSql","apply","createSelectQuery","length","channel_type","channel_id","undefined","initialized","disconnected","channelQuery","upsertChannelDataFromChannel","newQueries","concat","_toConsumableArray2","executeSqlBatch","console","warn","user","id","flushOverride","upsertReads","reads","last_read","received_at","unread_messages","message","parent_id","show_in_channel","upsertMessages","messages","updateMessage","reaction","upsertChannelData","deleteChannel","deleteMessagesForChannel","_event$queriedChannel","_event$queriedChannel2","queriedChannels","_event$queriedChannel3","_event$queriedChannel4","upsertChannels","isLatestMessagesSet","isLatestMessageSet","member","upsertMembers","members","deleteMember","exports"],"sources":["handleEventToSyncDB.ts"],"sourcesContent":["import { DefaultStreamChatGenerics } from 'src/types/types';\nimport type { Event, StreamChat } from 'stream-chat';\n\nimport { deleteChannel } from '../../../store/apis/deleteChannel';\nimport { deleteMember } from '../../../store/apis/deleteMember';\nimport { deleteMessagesForChannel } from '../../../store/apis/deleteMessagesForChannel';\nimport { updateMessage } from '../../../store/apis/updateMessage';\nimport { upsertChannelData } from '../../../store/apis/upsertChannelData';\nimport { upsertChannelDataFromChannel } from '../../../store/apis/upsertChannelDataFromChannel';\nimport { upsertChannels } from '../../../store/apis/upsertChannels';\nimport { upsertMembers } from '../../../store/apis/upsertMembers';\nimport { upsertMessages } from '../../../store/apis/upsertMessages';\nimport { upsertReads } from '../../../store/apis/upsertReads';\nimport { QuickSqliteClient } from '../../../store/QuickSqliteClient';\nimport { createSelectQuery } from '../../../store/sqlite-utils/createSelectQuery';\nimport { PreparedQueries } from '../../../store/types';\n\nexport const handleEventToSyncDB = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n event: Event,\n client: StreamChat<StreamChatGenerics>,\n flush?: boolean,\n) => {\n const { type } = event;\n\n // This function is used to guard the queries that require channel to be present in the db first\n // If channel is not present in the db, we first fetch the channel data from the channel object\n // and then add the queries with a channel create query first\n const queriesWithChannelGuard = (\n createQueries: (flushOverride?: boolean) => PreparedQueries[],\n ) => {\n const cid = event.cid || event.channel?.cid;\n\n if (!cid) return createQueries(flush);\n const channels = QuickSqliteClient.executeSql.apply(\n null,\n createSelectQuery('channels', ['cid'], {\n cid,\n }),\n );\n // a channel is not present in the db, we first fetch the channel data from the channel object.\n // this can happen for example when a message.new event is received for a channel that is not in the db due to a channel being hidden.\n if (channels.length === 0) {\n const channel =\n event.channel_type && event.channel_id\n ? client.channel(event.channel_type, event.channel_id)\n : undefined;\n if (channel && channel.initialized && !channel.disconnected) {\n const channelQuery = upsertChannelDataFromChannel({\n channel,\n flush,\n });\n if (channelQuery) {\n const newQueries = [...channelQuery, ...createQueries(false)];\n if (flush !== false) {\n QuickSqliteClient.executeSqlBatch(newQueries);\n }\n return newQueries;\n } else {\n console.warn(\n `Couldnt create channel queries on ${type} event for an initialized channel that is not in DB, skipping event`,\n { event },\n );\n return [];\n }\n } else {\n console.warn(\n `Received ${type} event for a non initialized channel that is not in DB, skipping event`,\n { event },\n );\n return [];\n }\n }\n return createQueries(flush);\n };\n\n if (type === 'message.read') {\n const cid = event.cid;\n const user = event.user;\n if (user?.id && cid) {\n return queriesWithChannelGuard((flushOverride) =>\n upsertReads({\n cid,\n flush: flushOverride,\n reads: [\n {\n last_read: event.received_at as string,\n unread_messages: 0,\n user,\n },\n ],\n }),\n );\n }\n }\n\n if (type === 'message.new') {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n return queriesWithChannelGuard((flushOverride) =>\n upsertMessages({\n flush: flushOverride,\n messages: [message],\n }),\n );\n }\n }\n\n if (type === 'message.updated' || type === 'message.deleted') {\n const message = event.message;\n if (message && !message.parent_id) {\n // Update only if it exists, otherwise event could be related\n // to a message which is not in database.\n return queriesWithChannelGuard((flushOverride) =>\n updateMessage({\n flush: flushOverride,\n message,\n }),\n );\n }\n }\n\n if (type === 'reaction.updated') {\n const message = event.message;\n if (message && event.reaction) {\n // We update the entire message to make sure we also update\n // reaction_counts.\n return queriesWithChannelGuard((flushOverride) =>\n updateMessage({\n flush: flushOverride,\n message,\n }),\n );\n }\n }\n\n if (type === 'reaction.new' || type === 'reaction.deleted') {\n const message = event.message;\n if (message && !message.parent_id) {\n // Here we are relying on the fact message.latest_reactions always includes\n // the new reaction. So we first delete all the existing reactions and populate\n // the reactions table with message.latest_reactions\n return queriesWithChannelGuard((flushOverride) =>\n updateMessage({\n flush: flushOverride,\n message,\n }),\n );\n }\n }\n\n if (\n type === 'channel.updated' ||\n type === 'channel.visible' ||\n type === 'notification.added_to_channel' ||\n type === 'notification.message_new'\n ) {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (\n type === 'channel.hidden' ||\n type === 'channel.deleted' ||\n type === 'notification.removed_from_channel'\n ) {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channel.truncated') {\n if (event.channel) {\n return deleteMessagesForChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channels.queried') {\n if (event.queriedChannels?.channels?.length) {\n return upsertChannels({\n channels: event.queriedChannels?.channels,\n flush,\n isLatestMessagesSet: event.queriedChannels?.isLatestMessageSet,\n });\n }\n }\n\n if (type === 'member.added' || type === 'member.updated') {\n const member = event.member;\n const cid = event.cid;\n if (member && cid) {\n return queriesWithChannelGuard((flushOverride) =>\n upsertMembers({\n cid,\n flush: flushOverride,\n members: [member],\n }),\n );\n }\n }\n\n if (type === 'member.removed') {\n const member = event.member;\n const cid = event.cid;\n if (member && cid) {\n return queriesWithChannelGuard((flushOverride) =>\n deleteMember({\n cid,\n flush: flushOverride,\n member,\n }),\n );\n }\n }\n\n return [];\n};\n"],"mappings":"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"}
@@ -11,7 +11,9 @@ var useSyncDatabase = function useSyncDatabase(_ref) {
11
11
  (0, _react.useEffect)(function () {
12
12
  var listener;
13
13
  if (enableOfflineSupport && initialisedDatabase) {
14
- listener = client == null ? void 0 : client.on(_handleEventToSyncDB.handleEventToSyncDB);
14
+ listener = client == null ? void 0 : client.on(function (event) {
15
+ return (0, _handleEventToSyncDB.handleEventToSyncDB)(event, client);
16
+ });
15
17
  }
16
18
  return function () {
17
19
  var _listener;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_handleEventToSyncDB","useSyncDatabase","_ref","client","enableOfflineSupport","initialisedDatabase","useEffect","listener","on","handleEventToSyncDB","_listener","unsubscribe","exports"],"sources":["useSyncDatabase.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport type { StreamChat } from 'stream-chat';\n\nimport { handleEventToSyncDB } from './handleEventToSyncDB';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\ntype Params<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {\n client: StreamChat<StreamChatGenerics>;\n enableOfflineSupport: boolean;\n initialisedDatabase: boolean;\n};\nexport const useSyncDatabase = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n client,\n enableOfflineSupport,\n initialisedDatabase,\n}: Params<StreamChatGenerics>) => {\n useEffect(() => {\n let listener: ReturnType<StreamChat['on']> | undefined;\n\n if (enableOfflineSupport && initialisedDatabase) {\n listener = client?.on(handleEventToSyncDB);\n }\n\n return () => {\n listener?.unsubscribe();\n };\n }, [client, initialisedDatabase]);\n};\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,oBAAA,GAAAD,OAAA;AASO,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA,EAMM;EAAA,IAHhCC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,oBAAoB,GAAAF,IAAA,CAApBE,oBAAoB;IACpBC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;EAEnB,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAIC,QAAkD;IAEtD,IAAIH,oBAAoB,IAAIC,mBAAmB,EAAE;MAC/CE,QAAQ,GAAGJ,MAAM,oBAANA,MAAM,CAAEK,EAAE,CAACC,wCAAmB,CAAC;IAC5C;IAEA,OAAO,YAAM;MAAA,IAAAC,SAAA;MACX,CAAAA,SAAA,GAAAH,QAAQ,qBAARG,SAAA,CAAUC,WAAW,CAAC,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACR,MAAM,EAAEE,mBAAmB,CAAC,CAAC;AACnC,CAAC;AAACO,OAAA,CAAAX,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_react","require","_handleEventToSyncDB","useSyncDatabase","_ref","client","enableOfflineSupport","initialisedDatabase","useEffect","listener","on","event","handleEventToSyncDB","_listener","unsubscribe","exports"],"sources":["useSyncDatabase.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport type { StreamChat } from 'stream-chat';\n\nimport { handleEventToSyncDB } from './handleEventToSyncDB';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\ntype Params<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {\n client: StreamChat<StreamChatGenerics>;\n enableOfflineSupport: boolean;\n initialisedDatabase: boolean;\n};\nexport const useSyncDatabase = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n client,\n enableOfflineSupport,\n initialisedDatabase,\n}: Params<StreamChatGenerics>) => {\n useEffect(() => {\n let listener: ReturnType<StreamChat['on']> | undefined;\n\n if (enableOfflineSupport && initialisedDatabase) {\n listener = client?.on((event) => handleEventToSyncDB(event, client));\n }\n\n return () => {\n listener?.unsubscribe();\n };\n }, [client, initialisedDatabase]);\n};\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,oBAAA,GAAAD,OAAA;AASO,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA,EAMM;EAAA,IAHhCC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,oBAAoB,GAAAF,IAAA,CAApBE,oBAAoB;IACpBC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;EAEnB,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAIC,QAAkD;IAEtD,IAAIH,oBAAoB,IAAIC,mBAAmB,EAAE;MAC/CE,QAAQ,GAAGJ,MAAM,oBAANA,MAAM,CAAEK,EAAE,CAAC,UAACC,KAAK;QAAA,OAAK,IAAAC,wCAAmB,EAACD,KAAK,EAAEN,MAAM,CAAC;MAAA,EAAC;IACtE;IAEA,OAAO,YAAM;MAAA,IAAAQ,SAAA;MACX,CAAAA,SAAA,GAAAJ,QAAQ,qBAARI,SAAA,CAAUC,WAAW,CAAC,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACT,MAAM,EAAEE,mBAAmB,CAAC,CAAC;AACnC,CAAC;AAACQ,OAAA,CAAAZ,eAAA,GAAAA,eAAA"}
@@ -48,6 +48,24 @@ var IsSwiping = function (IsSwiping) {
48
48
  return IsSwiping;
49
49
  }({});
50
50
  exports.IsSwiping = IsSwiping;
51
+ var normalizeSnapPoints = function normalizeSnapPoints(input) {
52
+ var snapPoints = input ? 'value' in input ? input.value : input : [];
53
+ return snapPoints.map(function (snapPoint) {
54
+ if (typeof snapPoint === 'number') {
55
+ return Math.max(0, snapPoint);
56
+ } else {
57
+ var numericValue = Number(snapPoint.replace('%', ''));
58
+ var isPercentage = snapPoint.includes('%');
59
+ if (isNaN(numericValue)) {
60
+ return 0;
61
+ } else if (isPercentage) {
62
+ return Math.max(0, numericValue) + "%";
63
+ } else {
64
+ return Math.max(0, numericValue);
65
+ }
66
+ }
67
+ });
68
+ };
51
69
  var ImageGallery = function ImageGallery(props) {
52
70
  var _StatusBar$currentHei, _imageGalleryAttachme;
53
71
  var _props$autoPlayVideo = props.autoPlayVideo,
@@ -329,7 +347,7 @@ var ImageGallery = function ImageGallery(props) {
329
347
  __self: _this,
330
348
  __source: {
331
349
  fileName: _jsxFileName,
332
- lineNumber: 540,
350
+ lineNumber: 563,
333
351
  columnNumber: 5
334
352
  }
335
353
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -337,7 +355,7 @@ var ImageGallery = function ImageGallery(props) {
337
355
  __self: _this,
338
356
  __source: {
339
357
  fileName: _jsxFileName,
340
- lineNumber: 545,
358
+ lineNumber: 568,
341
359
  columnNumber: 7
342
360
  }
343
361
  }), _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -349,7 +367,7 @@ var ImageGallery = function ImageGallery(props) {
349
367
  __self: _this,
350
368
  __source: {
351
369
  fileName: _jsxFileName,
352
- lineNumber: 546,
370
+ lineNumber: 569,
353
371
  columnNumber: 7
354
372
  }
355
373
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -357,7 +375,7 @@ var ImageGallery = function ImageGallery(props) {
357
375
  __self: _this,
358
376
  __source: {
359
377
  fileName: _jsxFileName,
360
- lineNumber: 553,
378
+ lineNumber: 576,
361
379
  columnNumber: 9
362
380
  }
363
381
  }, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -371,7 +389,7 @@ var ImageGallery = function ImageGallery(props) {
371
389
  __self: _this,
372
390
  __source: {
373
391
  fileName: _jsxFileName,
374
- lineNumber: 554,
392
+ lineNumber: 577,
375
393
  columnNumber: 11
376
394
  }
377
395
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -379,7 +397,7 @@ var ImageGallery = function ImageGallery(props) {
379
397
  __self: _this,
380
398
  __source: {
381
399
  fileName: _jsxFileName,
382
- lineNumber: 563,
400
+ lineNumber: 586,
383
401
  columnNumber: 13
384
402
  }
385
403
  }, _react["default"].createElement(_reactNativeGestureHandler.PinchGestureHandler, {
@@ -389,7 +407,7 @@ var ImageGallery = function ImageGallery(props) {
389
407
  __self: _this,
390
408
  __source: {
391
409
  fileName: _jsxFileName,
392
- lineNumber: 564,
410
+ lineNumber: 587,
393
411
  columnNumber: 15
394
412
  }
395
413
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -397,7 +415,7 @@ var ImageGallery = function ImageGallery(props) {
397
415
  __self: _this,
398
416
  __source: {
399
417
  fileName: _jsxFileName,
400
- lineNumber: 569,
418
+ lineNumber: 592,
401
419
  columnNumber: 17
402
420
  }
403
421
  }, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
@@ -410,7 +428,7 @@ var ImageGallery = function ImageGallery(props) {
410
428
  __self: _this,
411
429
  __source: {
412
430
  fileName: _jsxFileName,
413
- lineNumber: 570,
431
+ lineNumber: 593,
414
432
  columnNumber: 19
415
433
  }
416
434
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -418,7 +436,7 @@ var ImageGallery = function ImageGallery(props) {
418
436
  __self: _this,
419
437
  __source: {
420
438
  fileName: _jsxFileName,
421
- lineNumber: 578,
439
+ lineNumber: 601,
422
440
  columnNumber: 21
423
441
  }
424
442
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -426,7 +444,7 @@ var ImageGallery = function ImageGallery(props) {
426
444
  __self: _this,
427
445
  __source: {
428
446
  fileName: _jsxFileName,
429
- lineNumber: 579,
447
+ lineNumber: 602,
430
448
  columnNumber: 23
431
449
  }
432
450
  }, imageGalleryAttachments.map(function (photo, i) {
@@ -459,7 +477,7 @@ var ImageGallery = function ImageGallery(props) {
459
477
  __self: _this,
460
478
  __source: {
461
479
  fileName: _jsxFileName,
462
- lineNumber: 582,
480
+ lineNumber: 605,
463
481
  columnNumber: 29
464
482
  }
465
483
  }) : _react["default"].createElement(_AnimatedGalleryImage.AnimatedGalleryImage, {
@@ -483,7 +501,7 @@ var ImageGallery = function ImageGallery(props) {
483
501
  __self: _this,
484
502
  __source: {
485
503
  fileName: _jsxFileName,
486
- lineNumber: 611,
504
+ lineNumber: 634,
487
505
  columnNumber: 29
488
506
  }
489
507
  });
@@ -495,7 +513,7 @@ var ImageGallery = function ImageGallery(props) {
495
513
  __self: _this,
496
514
  __source: {
497
515
  fileName: _jsxFileName,
498
- lineNumber: 644,
516
+ lineNumber: 667,
499
517
  columnNumber: 7
500
518
  }
501
519
  })), imageGalleryAttachments[selectedIndex] && _react["default"].createElement(_ImageGalleryFooter.ImageGalleryFooter, (0, _extends2["default"])({
@@ -515,7 +533,7 @@ var ImageGallery = function ImageGallery(props) {
515
533
  __self: _this,
516
534
  __source: {
517
535
  fileName: _jsxFileName,
518
- lineNumber: 652,
536
+ lineNumber: 675,
519
537
  columnNumber: 9
520
538
  }
521
539
  })), _react["default"].createElement(_ImageGalleryOverlay.ImageGalleryOverlay, {
@@ -525,14 +543,14 @@ var ImageGallery = function ImageGallery(props) {
525
543
  __self: _this,
526
544
  __source: {
527
545
  fileName: _jsxFileName,
528
- lineNumber: 669,
546
+ lineNumber: 692,
529
547
  columnNumber: 7
530
548
  }
531
549
  }), _react["default"].createElement(_bottomSheet.BottomSheetModalProvider, {
532
550
  __self: _this,
533
551
  __source: {
534
552
  fileName: _jsxFileName,
535
- lineNumber: 674,
553
+ lineNumber: 697,
536
554
  columnNumber: 7
537
555
  }
538
556
  }, _react["default"].createElement(_bottomSheet.BottomSheetModal, {
@@ -545,7 +563,7 @@ var ImageGallery = function ImageGallery(props) {
545
563
  __self: _this,
546
564
  __source: {
547
565
  fileName: _jsxFileName,
548
- lineNumber: 679,
566
+ lineNumber: 702,
549
567
  columnNumber: 13
550
568
  }
551
569
  }));
@@ -556,11 +574,11 @@ var ImageGallery = function ImageGallery(props) {
556
574
  return setCurrentBottomSheetIndex(index);
557
575
  },
558
576
  ref: bottomSheetModalRef,
559
- snapPoints: imageGalleryGridSnapPoints || snapPoints,
577
+ snapPoints: normalizeSnapPoints(imageGalleryGridSnapPoints || snapPoints),
560
578
  __self: _this,
561
579
  __source: {
562
580
  fileName: _jsxFileName,
563
- lineNumber: 675,
581
+ lineNumber: 698,
564
582
  columnNumber: 9
565
583
  }
566
584
  }, _react["default"].createElement(_ImageGrid.ImageGrid, (0, _extends2["default"])({
@@ -572,7 +590,7 @@ var ImageGallery = function ImageGallery(props) {
572
590
  __self: _this,
573
591
  __source: {
574
592
  fileName: _jsxFileName,
575
- lineNumber: 690,
593
+ lineNumber: 713,
576
594
  columnNumber: 11
577
595
  }
578
596
  })))));