stream-chat-react-native-core 5.16.0-beta.2 → 5.16.0-beta.3

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.
@@ -247,7 +247,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
247
247
  return item.asset.uri;
248
248
  },
249
249
  numColumns: numberOfAttachmentPickerImageColumns != null ? numberOfAttachmentPickerImageColumns : 3,
250
- onEndReached: getMorePhotos,
250
+ onEndReached: photoError ? undefined : getMorePhotos,
251
251
  renderItem: _AttachmentPickerItem.renderAttachmentPickerItem,
252
252
  __self: _this,
253
253
  __source: {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_native","_utils","_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","screenHeight","vh","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","hasNextPageRef","_useState5","_useState6","loadingPhotos","setLoadingPhotos","_useState7","_useState8","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","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","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 { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\nimport { vh } from '../../utils/utils';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst screenHeight = vh(100);\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 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 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\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = 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 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 keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, closePicker);\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, closePicker);\n };\n }, [closePicker]);\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 selected:\n selectedImages.some((image) => image.uri === asset.uri) ||\n selectedFiles.some((file) => file.uri === asset.uri),\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 <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={getMorePhotos}\n renderItem={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","_native","_utils","_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","screenHeight","vh","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","hasNextPageRef","_useState5","_useState6","loadingPhotos","setLoadingPhotos","_useState7","_useState8","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","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","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 { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\nimport { vh } from '../../utils/utils';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst screenHeight = vh(100);\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 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 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\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = 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 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 keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, closePicker);\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, closePicker);\n };\n }, [closePicker]);\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 selected:\n selectedImages.some((image) => image.uri === asset.uri) ||\n selectedFiles.some((file) => file.uri === asset.uri),\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 <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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"}
@@ -55,12 +55,13 @@ var AttachmentVideo = function AttachmentVideo(props) {
55
55
  _reactNative.Alert.alert('Maximum number of files reached');
56
56
  return files;
57
57
  }
58
+ var mimeType = (0, _mimeTypes.lookup)(asset.filename) || 'multipart/form-data';
58
59
  return [].concat((0, _toConsumableArray2["default"])(files), [{
59
60
  duration: durationLabel,
60
61
  id: asset.id,
62
+ mimeType: mimeType,
61
63
  name: asset.filename,
62
64
  size: asset.fileSize,
63
- type: 'video',
64
65
  uri: asset.uri
65
66
  }]);
66
67
  });
@@ -71,7 +72,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
71
72
  __self: _this,
72
73
  __source: {
73
74
  fileName: _jsxFileName,
74
- lineNumber: 89,
75
+ lineNumber: 91,
75
76
  columnNumber: 5
76
77
  }
77
78
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -86,7 +87,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
86
87
  __self: _this,
87
88
  __source: {
88
89
  fileName: _jsxFileName,
89
- lineNumber: 90,
90
+ lineNumber: 92,
90
91
  columnNumber: 7
91
92
  }
92
93
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -96,14 +97,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
96
97
  __self: _this,
97
98
  __source: {
98
99
  fileName: _jsxFileName,
99
- lineNumber: 102,
100
+ lineNumber: 104,
100
101
  columnNumber: 11
101
102
  }
102
103
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
103
104
  __self: _this,
104
105
  __source: {
105
106
  fileName: _jsxFileName,
106
- lineNumber: 103,
107
+ lineNumber: 105,
107
108
  columnNumber: 13
108
109
  }
109
110
  })), _react["default"].createElement(_reactNative.View, {
@@ -111,7 +112,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
111
112
  __self: _this,
112
113
  __source: {
113
114
  fileName: _jsxFileName,
114
- lineNumber: 106,
115
+ lineNumber: 108,
115
116
  columnNumber: 9
116
117
  }
117
118
  }, _react["default"].createElement(_icons.Recorder, {
@@ -121,7 +122,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
121
122
  __self: _this,
122
123
  __source: {
123
124
  fileName: _jsxFileName,
124
- lineNumber: 107,
125
+ lineNumber: 109,
125
126
  columnNumber: 11
126
127
  }
127
128
  }), videoDuration ? _react["default"].createElement(_reactNative.Text, {
@@ -131,7 +132,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
131
132
  __self: _this,
132
133
  __source: {
133
134
  fileName: _jsxFileName,
134
- lineNumber: 109,
135
+ lineNumber: 111,
135
136
  columnNumber: 13
136
137
  }
137
138
  }, durationLabel) : null)));
@@ -174,7 +175,7 @@ var AttachmentImage = function AttachmentImage(props) {
174
175
  __self: _this,
175
176
  __source: {
176
177
  fileName: _jsxFileName,
177
- lineNumber: 155,
178
+ lineNumber: 157,
178
179
  columnNumber: 5
179
180
  }
180
181
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -189,7 +190,7 @@ var AttachmentImage = function AttachmentImage(props) {
189
190
  __self: _this,
190
191
  __source: {
191
192
  fileName: _jsxFileName,
192
- lineNumber: 156,
193
+ lineNumber: 158,
193
194
  columnNumber: 7
194
195
  }
195
196
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -199,27 +200,18 @@ var AttachmentImage = function AttachmentImage(props) {
199
200
  __self: _this,
200
201
  __source: {
201
202
  fileName: _jsxFileName,
202
- lineNumber: 168,
203
+ lineNumber: 170,
203
204
  columnNumber: 11
204
205
  }
205
206
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
206
207
  __self: _this,
207
208
  __source: {
208
209
  fileName: _jsxFileName,
209
- lineNumber: 169,
210
+ lineNumber: 171,
210
211
  columnNumber: 13
211
212
  }
212
213
  }))));
213
214
  };
214
- var getFileType = function getFileType(asset) {
215
- var filename = asset.filename;
216
- if (filename) {
217
- var contentType = (0, _mimeTypes.lookup)(filename) || 'multipart/form-data';
218
- return contentType.startsWith('image/') ? 'image' : 'video';
219
- } else {
220
- return asset.type === 'video' ? 'video' : 'image';
221
- }
222
- };
223
215
  var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
224
216
  var item = _ref.item;
225
217
  var asset = item.asset,
@@ -230,8 +222,25 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
230
222
  selected = item.selected,
231
223
  setSelectedFiles = item.setSelectedFiles,
232
224
  setSelectedImages = item.setSelectedImages;
233
- var fileType = getFileType(asset);
234
- return fileType === 'image' ? _react["default"].createElement(AttachmentImage, {
225
+ var isVideoType = asset.type.includes('video');
226
+ if (isVideoType) {
227
+ return _react["default"].createElement(AttachmentVideo, {
228
+ asset: asset,
229
+ ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
230
+ maxNumberOfFiles: maxNumberOfFiles,
231
+ numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
232
+ numberOfUploads: numberOfUploads,
233
+ selected: selected,
234
+ setSelectedFiles: setSelectedFiles,
235
+ __self: _this,
236
+ __source: {
237
+ fileName: _jsxFileName,
238
+ lineNumber: 201,
239
+ columnNumber: 7
240
+ }
241
+ });
242
+ }
243
+ return _react["default"].createElement(AttachmentImage, {
235
244
  asset: asset,
236
245
  ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
237
246
  maxNumberOfFiles: maxNumberOfFiles,
@@ -242,21 +251,7 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
242
251
  __self: _this,
243
252
  __source: {
244
253
  fileName: _jsxFileName,
245
- lineNumber: 202,
246
- columnNumber: 5
247
- }
248
- }) : _react["default"].createElement(AttachmentVideo, {
249
- asset: asset,
250
- ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
251
- maxNumberOfFiles: maxNumberOfFiles,
252
- numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
253
- numberOfUploads: numberOfUploads,
254
- selected: selected,
255
- setSelectedFiles: setSelectedFiles,
256
- __self: _this,
257
- __source: {
258
- fileName: _jsxFileName,
259
- lineNumber: 212,
254
+ lineNumber: 214,
260
255
  columnNumber: 5
261
256
  }
262
257
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_dayjs","_mimeTypes","_ThemeContext","_icons","_utils","_this","_jsxFileName","AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$attac","attachmentPicker","durationText","image","imageOverlay","_useTheme$theme$color","colors","overlay","white","videoDuration","duration","uri","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","concat","_toConsumableArray2","id","name","filename","fileSize","type","createElement","TouchableOpacity","onPress","__self","__source","fileName","lineNumber","columnNumber","ImageBackground","source","style","height","margin","width","View","styles","backgroundColor","videoView","Recorder","pathFill","Text","color","AttachmentImage","setSelectedImages","_useTheme2","_useTheme2$theme","_useTheme2$theme$atta","onPressImage","images","getFileType","contentType","lookup","startsWith","renderAttachmentPickerItem","_ref","item","fileType","exports","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration: videoDuration, uri } = asset;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n name: asset.filename,\n size: asset.fileSize,\n type: 'video',\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst getFileType = (asset: Asset) => {\n const { filename } = asset;\n if (filename) {\n const contentType = lookup(filename) || 'multipart/form-data';\n return contentType.startsWith('image/') ? 'image' : 'video';\n } else {\n return asset.type === 'video' ? 'video' : 'image';\n }\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n const fileType = getFileType(asset);\n\n return fileType === 'image' ? (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n ) : (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_dayjs","_mimeTypes","_ThemeContext","_icons","_utils","_this","_jsxFileName","AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$attac","attachmentPicker","durationText","image","imageOverlay","_useTheme$theme$color","colors","overlay","white","videoDuration","duration","uri","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","mimeType","lookup","filename","concat","_toConsumableArray2","id","name","fileSize","createElement","TouchableOpacity","onPress","__self","__source","fileName","lineNumber","columnNumber","ImageBackground","source","style","height","margin","width","View","styles","backgroundColor","videoView","Recorder","pathFill","Text","color","AttachmentImage","setSelectedImages","_useTheme2","_useTheme2$theme","_useTheme2$theme$atta","onPressImage","images","renderAttachmentPickerItem","_ref","item","isVideoType","type","includes","exports","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration: videoDuration, uri } = asset;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n // We need a mime-type to upload a video file.\n const mimeType = lookup(asset.filename) || 'multipart/form-data';\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n mimeType,\n name: asset.filename,\n size: asset.fileSize,\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n /**\n * Expo Media Library - Result of asset type\n * Native Android - Gives mime type(Eg: image/jpeg, video/mp4, etc.)\n * Native iOS - Gives `image` or `video`\n * Expo Android/iOS - Gives `photo` or `video`\n **/\n const isVideoType = asset.type.includes('video');\n\n if (isVideoType) {\n return (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n }\n\n return (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAEA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAEA,IAAAO,MAAA,GAAAP,OAAA;AAA0C,IAAAQ,KAAA;EAAAC,YAAA;AAiB1C,IAAMC,eAA+C,GAAG,SAAlDA,eAA+CA,CAAIC,KAAK,EAAK;EACjE,IACEC,KAAK,GAOHD,KAAK,CAPPC,KAAK;IACLC,6BAA6B,GAM3BF,KAAK,CANPE,6BAA6B;IAC7BC,gBAAgB,GAKdH,KAAK,CALPG,gBAAgB;IAChBC,oCAAoC,GAIlCJ,KAAK,CAJPI,oCAAoC;IACpCC,eAAe,GAGbL,KAAK,CAHPK,eAAe;IACfC,QAAQ,GAENN,KAAK,CAFPM,QAAQ;IACRC,gBAAgB,GACdP,KAAK,CADPO,gBAAgB;EAGlB,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,gBAAgB;IAAIC,YAAY,GAAAF,qBAAA,CAAZE,YAAY;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,YAAY,GAAAJ,qBAAA,CAAZI,YAAY;IAAAC,qBAAA,GAAAP,eAAA,CACrDQ,MAAM;IAAIC,OAAO,GAAAF,qBAAA,CAAPE,OAAO;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;EAI5B,IAAkBC,aAAa,GAAUpB,KAAK,CAAtCqB,QAAQ;IAAiBC,GAAG,GAAKtB,KAAK,CAAbsB,GAAG;EAEpC,IAAMC,mBAAmB,GAAG,IAAI;EAEhC,IAAIC,aAAa,GAAG,OAAO;EAE3B,IAAIJ,aAAa,EAAE;IACjB,IAAMK,wBAAwB,GAAGL,aAAa,GAAGG,mBAAmB,IAAI,CAAC;IACzE,IAAMG,sBAAsB,GAAGD,wBAAwB,GAAG,UAAU,GAAG,OAAO;IAC9E,IAAME,sBAAsB,GAAGC,iBAAK,CACjCP,QAAQ,CAACD,aAAa,EAAE,QAAQ,CAAC,CACjCS,MAAM,CAACH,sBAAsB,CAAC;IACjCF,aAAa,GAAGG,sBAAsB;EACxC;EAEA,IAAMG,IAAI,GAAG,IAAAC,SAAE,EAAC,GAAG,CAAC,IAAI5B,oCAAoC,IAAI,CAAC,CAAC,GAAG,CAAC;EAEtE,IAAM6B,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzB,IAAI3B,QAAQ,EAAE;MACZC,gBAAgB,CAAC,UAAC2B,KAAK;QAAA,OAAKA,KAAK,CAACC,MAAM,CAAC,UAACC,IAAI;UAAA,OAAKA,IAAI,CAACb,GAAG,KAAKtB,KAAK,CAACsB,GAAG;QAAA,EAAC;MAAA,EAAC;IAC7E,CAAC,MAAM;MACLhB,gBAAgB,CAAC,UAAC2B,KAAK,EAAK;QAC1B,IAAI7B,eAAe,IAAIF,gBAAgB,EAAE;UACvCkC,kBAAK,CAACC,KAAK,CAAC,iCAAiC,CAAC;UAC9C,OAAOJ,KAAK;QACd;QAEA,IAAMK,QAAQ,GAAG,IAAAC,iBAAM,EAACvC,KAAK,CAACwC,QAAQ,CAAC,IAAI,qBAAqB;QAChE,UAAAC,MAAA,KAAAC,mBAAA,aACKT,KAAK,IACR;UACEZ,QAAQ,EAAEG,aAAa;UACvBmB,EAAE,EAAE3C,KAAK,CAAC2C,EAAE;UACZL,QAAQ,EAARA,QAAQ;UACRM,IAAI,EAAE5C,KAAK,CAACwC,QAAQ;UACpBV,IAAI,EAAE9B,KAAK,CAAC6C,QAAQ;UACpBvB,GAAG,EAAEtB,KAAK,CAACsB;QACb,CAAC;MAEL,CAAC,CAAC;IACJ;EACF,CAAC;EAED,OACEpC,MAAA,YAAA4D,aAAA,CAACxD,YAAA,CAAAyD,gBAAgB;IAACC,OAAO,EAAEhB,YAAa;IAAAiB,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACtCnE,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAiE,eAAe;IACdC,MAAM,EAAE;MAAEjC,GAAG,EAAHA;IAAI,CAAE;IAChBkC,KAAK,EAAE,CACL;MACEC,MAAM,EAAE3B,IAAI;MACZ4B,MAAM,EAAE,CAAC;MACTC,KAAK,EAAE7B;IACT,CAAC,EACDhB,KAAK,CACL;IAAAmC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEDhD,QAAQ,IACPnB,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAuE,IAAI;IAACJ,KAAK,EAAE,CAACK,MAAM,CAAC3C,OAAO,EAAE;MAAE4C,eAAe,EAAE5C;IAAQ,CAAC,EAAEH,YAAY,CAAE;IAAAkC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxEnE,MAAA,YAAA4D,aAAA,CAAC7C,6BAA6B;IAAAgD,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAC5B,CACP,EACDnE,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAuE,IAAI;IAACJ,KAAK,EAAEK,MAAM,CAACE,SAAU;IAAAd,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC5BnE,MAAA,YAAA4D,aAAA,CAACpD,MAAA,CAAAsE,QAAQ;IAACP,MAAM,EAAE,EAAG;IAACQ,QAAQ,EAAE9C,KAAM;IAACwC,KAAK,EAAE,EAAG;IAAAV,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EACnDjC,aAAa,GACZlC,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAA6E,IAAI;IAACV,KAAK,EAAE,CAACK,MAAM,CAAChD,YAAY,EAAEA,YAAY,EAAE;MAAEsD,KAAK,EAAEhD;IAAM,CAAC,CAAE;IAAA8B,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAChE7B,aACG,CAAC,GACL,IACA,CACS,CACD,CAAC;AAEvB,CAAC;AAED,IAAM4C,eAA+C,GAAG,SAAlDA,eAA+CA,CAAIrE,KAAK,EAAK;EACjE,IACEC,KAAK,GAOHD,KAAK,CAPPC,KAAK;IACLC,6BAA6B,GAM3BF,KAAK,CANPE,6BAA6B;IAC7BC,gBAAgB,GAKdH,KAAK,CALPG,gBAAgB;IAChBC,oCAAoC,GAIlCJ,KAAK,CAJPI,oCAAoC;IACpCC,eAAe,GAGbL,KAAK,CAHPK,eAAe;IACfC,QAAQ,GAENN,KAAK,CAFPM,QAAQ;IACRgE,iBAAiB,GACftE,KAAK,CADPsE,iBAAiB;EAEnB,IAAAC,UAAA,GAKI,IAAA9D,sBAAQ,EAAC,CAAC;IAAA+D,gBAAA,GAAAD,UAAA,CAJZ5D,KAAK;IAAA8D,qBAAA,GAAAD,gBAAA,CACH3D,gBAAgB;IAAIE,KAAK,GAAA0D,qBAAA,CAAL1D,KAAK;IAAEC,YAAY,GAAAyD,qBAAA,CAAZzD,YAAY;IAC7BG,OAAO,GAAAqD,gBAAA,CAAjBtD,MAAM,CAAIC,OAAO;EAIrB,IAAMY,IAAI,GAAG,IAAAC,SAAE,EAAC,GAAG,CAAC,IAAI5B,oCAAoC,IAAI,CAAC,CAAC,GAAG,CAAC;EAEtE,IAAQmB,GAAG,GAAKtB,KAAK,CAAbsB,GAAG;EAEX,IAAMmD,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzB,IAAIpE,QAAQ,EAAE;MACZgE,iBAAiB,CAAC,UAACK,MAAM;QAAA,OAAKA,MAAM,CAACxC,MAAM,CAAC,UAACpB,KAAK;UAAA,OAAKA,KAAK,CAACQ,GAAG,KAAKtB,KAAK,CAACsB,GAAG;QAAA,EAAC;MAAA,EAAC;IAClF,CAAC,MAAM;MACL+C,iBAAiB,CAAC,UAACK,MAAM,EAAK;QAC5B,IAAItE,eAAe,IAAIF,gBAAgB,EAAE;UACvCkC,kBAAK,CAACC,KAAK,CAAC,iCAAiC,CAAC;UAC9C,OAAOqC,MAAM;QACf;QACA,UAAAjC,MAAA,KAAAC,mBAAA,aAAWgC,MAAM,IAAE1E,KAAK;MAC1B,CAAC,CAAC;IACJ;EACF,CAAC;EAED,OACEd,MAAA,YAAA4D,aAAA,CAACxD,YAAA,CAAAyD,gBAAgB;IAACC,OAAO,EAAEyB,YAAa;IAAAxB,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACtCnE,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAiE,eAAe;IACdC,MAAM,EAAE;MAAEjC,GAAG,EAAHA;IAAI,CAAE;IAChBkC,KAAK,EAAE,CACL;MACEC,MAAM,EAAE3B,IAAI;MACZ4B,MAAM,EAAE,CAAC;MACTC,KAAK,EAAE7B;IACT,CAAC,EACDhB,KAAK,CACL;IAAAmC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEDhD,QAAQ,IACPnB,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAuE,IAAI;IAACJ,KAAK,EAAE,CAACK,MAAM,CAAC3C,OAAO,EAAE;MAAE4C,eAAe,EAAE5C;IAAQ,CAAC,EAAEH,YAAY,CAAE;IAAAkC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxEnE,MAAA,YAAA4D,aAAA,CAAC7C,6BAA6B;IAAAgD,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAC5B,CAEO,CACD,CAAC;AAEvB,CAAC;AAEM,IAAMsB,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAAC,IAAA,EAAqD;EAAA,IAA/CC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC/C,IACE7E,KAAK,GAQH6E,IAAI,CARN7E,KAAK;IACLC,6BAA6B,GAO3B4E,IAAI,CAPN5E,6BAA6B;IAC7BC,gBAAgB,GAMd2E,IAAI,CANN3E,gBAAgB;IAChBC,oCAAoC,GAKlC0E,IAAI,CALN1E,oCAAoC;IACpCC,eAAe,GAIbyE,IAAI,CAJNzE,eAAe;IACfC,QAAQ,GAGNwE,IAAI,CAHNxE,QAAQ;IACRC,gBAAgB,GAEduE,IAAI,CAFNvE,gBAAgB;IAChB+D,iBAAiB,GACfQ,IAAI,CADNR,iBAAiB;EASnB,IAAMS,WAAW,GAAG9E,KAAK,CAAC+E,IAAI,CAACC,QAAQ,CAAC,OAAO,CAAC;EAEhD,IAAIF,WAAW,EAAE;IACf,OACE5F,MAAA,YAAA4D,aAAA,CAAChD,eAAe;MACdE,KAAK,EAAEA,KAAM;MACbC,6BAA6B,EAAEA,6BAA8B;MAC7DC,gBAAgB,EAAEA,gBAAiB;MACnCC,oCAAoC,EAAEA,oCAAqC;MAC3EC,eAAe,EAAEA,eAAgB;MACjCC,QAAQ,EAAEA,QAAS;MACnBC,gBAAgB,EAAEA,gBAAiB;MAAA2C,MAAA,EAAArD,KAAA;MAAAsD,QAAA;QAAAC,QAAA,EAAAtD,YAAA;QAAAuD,UAAA;QAAAC,YAAA;MAAA;IAAA,CACpC,CAAC;EAEN;EAEA,OACEnE,MAAA,YAAA4D,aAAA,CAACsB,eAAe;IACdpE,KAAK,EAAEA,KAAM;IACbC,6BAA6B,EAAEA,6BAA8B;IAC7DC,gBAAgB,EAAEA,gBAAiB;IACnCC,oCAAoC,EAAEA,oCAAqC;IAC3EC,eAAe,EAAEA,eAAgB;IACjCC,QAAQ,EAAEA,QAAS;IACnBgE,iBAAiB,EAAEA,iBAAkB;IAAApB,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CACtC,CAAC;AAEN,CAAC;AAAC4B,OAAA,CAAAN,0BAAA,GAAAA,0BAAA;AAEF,IAAMd,MAAM,GAAGqB,uBAAU,CAACC,MAAM,CAAC;EAC/BtE,YAAY,EAAE;IACZuE,UAAU,EAAE;EACd,CAAC;EACDlE,OAAO,EAAE;IACPmE,UAAU,EAAE,UAAU;IACtBC,IAAI,EAAE;EACR,CAAC;EACDvB,SAAS,EAAE;IACTwB,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE,MAAM;IACfC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,iBAAiB,EAAE,CAAC;IACpBC,QAAQ,EAAE,UAAU;IACpBjC,KAAK,EAAE;EACT;AACF,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.16.0-beta.2"
2
+ "version": "5.16.0-beta.3"
3
3
  }
@@ -247,7 +247,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
247
247
  return item.asset.uri;
248
248
  },
249
249
  numColumns: numberOfAttachmentPickerImageColumns != null ? numberOfAttachmentPickerImageColumns : 3,
250
- onEndReached: getMorePhotos,
250
+ onEndReached: photoError ? undefined : getMorePhotos,
251
251
  renderItem: _AttachmentPickerItem.renderAttachmentPickerItem,
252
252
  __self: _this,
253
253
  __source: {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_native","_utils","_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","screenHeight","vh","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","hasNextPageRef","_useState5","_useState6","loadingPhotos","setLoadingPhotos","_useState7","_useState8","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","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","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 { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\nimport { vh } from '../../utils/utils';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst screenHeight = vh(100);\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 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 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\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = 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 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 keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, closePicker);\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, closePicker);\n };\n }, [closePicker]);\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 selected:\n selectedImages.some((image) => image.uri === asset.uri) ||\n selectedFiles.some((file) => file.uri === asset.uri),\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 <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={getMorePhotos}\n renderItem={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","_native","_utils","_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","screenHeight","vh","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","hasNextPageRef","_useState5","_useState6","loadingPhotos","setLoadingPhotos","_useState7","_useState8","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","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","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 { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\nimport { vh } from '../../utils/utils';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst screenHeight = vh(100);\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 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 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\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = 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 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 keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, closePicker);\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, closePicker);\n };\n }, [closePicker]);\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 selected:\n selectedImages.some((image) => image.uri === asset.uri) ||\n selectedFiles.some((file) => file.uri === asset.uri),\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 <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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"}
@@ -55,12 +55,13 @@ var AttachmentVideo = function AttachmentVideo(props) {
55
55
  _reactNative.Alert.alert('Maximum number of files reached');
56
56
  return files;
57
57
  }
58
+ var mimeType = (0, _mimeTypes.lookup)(asset.filename) || 'multipart/form-data';
58
59
  return [].concat((0, _toConsumableArray2["default"])(files), [{
59
60
  duration: durationLabel,
60
61
  id: asset.id,
62
+ mimeType: mimeType,
61
63
  name: asset.filename,
62
64
  size: asset.fileSize,
63
- type: 'video',
64
65
  uri: asset.uri
65
66
  }]);
66
67
  });
@@ -71,7 +72,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
71
72
  __self: _this,
72
73
  __source: {
73
74
  fileName: _jsxFileName,
74
- lineNumber: 89,
75
+ lineNumber: 91,
75
76
  columnNumber: 5
76
77
  }
77
78
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -86,7 +87,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
86
87
  __self: _this,
87
88
  __source: {
88
89
  fileName: _jsxFileName,
89
- lineNumber: 90,
90
+ lineNumber: 92,
90
91
  columnNumber: 7
91
92
  }
92
93
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -96,14 +97,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
96
97
  __self: _this,
97
98
  __source: {
98
99
  fileName: _jsxFileName,
99
- lineNumber: 102,
100
+ lineNumber: 104,
100
101
  columnNumber: 11
101
102
  }
102
103
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
103
104
  __self: _this,
104
105
  __source: {
105
106
  fileName: _jsxFileName,
106
- lineNumber: 103,
107
+ lineNumber: 105,
107
108
  columnNumber: 13
108
109
  }
109
110
  })), _react["default"].createElement(_reactNative.View, {
@@ -111,7 +112,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
111
112
  __self: _this,
112
113
  __source: {
113
114
  fileName: _jsxFileName,
114
- lineNumber: 106,
115
+ lineNumber: 108,
115
116
  columnNumber: 9
116
117
  }
117
118
  }, _react["default"].createElement(_icons.Recorder, {
@@ -121,7 +122,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
121
122
  __self: _this,
122
123
  __source: {
123
124
  fileName: _jsxFileName,
124
- lineNumber: 107,
125
+ lineNumber: 109,
125
126
  columnNumber: 11
126
127
  }
127
128
  }), videoDuration ? _react["default"].createElement(_reactNative.Text, {
@@ -131,7 +132,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
131
132
  __self: _this,
132
133
  __source: {
133
134
  fileName: _jsxFileName,
134
- lineNumber: 109,
135
+ lineNumber: 111,
135
136
  columnNumber: 13
136
137
  }
137
138
  }, durationLabel) : null)));
@@ -174,7 +175,7 @@ var AttachmentImage = function AttachmentImage(props) {
174
175
  __self: _this,
175
176
  __source: {
176
177
  fileName: _jsxFileName,
177
- lineNumber: 155,
178
+ lineNumber: 157,
178
179
  columnNumber: 5
179
180
  }
180
181
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -189,7 +190,7 @@ var AttachmentImage = function AttachmentImage(props) {
189
190
  __self: _this,
190
191
  __source: {
191
192
  fileName: _jsxFileName,
192
- lineNumber: 156,
193
+ lineNumber: 158,
193
194
  columnNumber: 7
194
195
  }
195
196
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -199,27 +200,18 @@ var AttachmentImage = function AttachmentImage(props) {
199
200
  __self: _this,
200
201
  __source: {
201
202
  fileName: _jsxFileName,
202
- lineNumber: 168,
203
+ lineNumber: 170,
203
204
  columnNumber: 11
204
205
  }
205
206
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
206
207
  __self: _this,
207
208
  __source: {
208
209
  fileName: _jsxFileName,
209
- lineNumber: 169,
210
+ lineNumber: 171,
210
211
  columnNumber: 13
211
212
  }
212
213
  }))));
213
214
  };
214
- var getFileType = function getFileType(asset) {
215
- var filename = asset.filename;
216
- if (filename) {
217
- var contentType = (0, _mimeTypes.lookup)(filename) || 'multipart/form-data';
218
- return contentType.startsWith('image/') ? 'image' : 'video';
219
- } else {
220
- return asset.type === 'video' ? 'video' : 'image';
221
- }
222
- };
223
215
  var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
224
216
  var item = _ref.item;
225
217
  var asset = item.asset,
@@ -230,8 +222,25 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
230
222
  selected = item.selected,
231
223
  setSelectedFiles = item.setSelectedFiles,
232
224
  setSelectedImages = item.setSelectedImages;
233
- var fileType = getFileType(asset);
234
- return fileType === 'image' ? _react["default"].createElement(AttachmentImage, {
225
+ var isVideoType = asset.type.includes('video');
226
+ if (isVideoType) {
227
+ return _react["default"].createElement(AttachmentVideo, {
228
+ asset: asset,
229
+ ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
230
+ maxNumberOfFiles: maxNumberOfFiles,
231
+ numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
232
+ numberOfUploads: numberOfUploads,
233
+ selected: selected,
234
+ setSelectedFiles: setSelectedFiles,
235
+ __self: _this,
236
+ __source: {
237
+ fileName: _jsxFileName,
238
+ lineNumber: 201,
239
+ columnNumber: 7
240
+ }
241
+ });
242
+ }
243
+ return _react["default"].createElement(AttachmentImage, {
235
244
  asset: asset,
236
245
  ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
237
246
  maxNumberOfFiles: maxNumberOfFiles,
@@ -242,21 +251,7 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
242
251
  __self: _this,
243
252
  __source: {
244
253
  fileName: _jsxFileName,
245
- lineNumber: 202,
246
- columnNumber: 5
247
- }
248
- }) : _react["default"].createElement(AttachmentVideo, {
249
- asset: asset,
250
- ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
251
- maxNumberOfFiles: maxNumberOfFiles,
252
- numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
253
- numberOfUploads: numberOfUploads,
254
- selected: selected,
255
- setSelectedFiles: setSelectedFiles,
256
- __self: _this,
257
- __source: {
258
- fileName: _jsxFileName,
259
- lineNumber: 212,
254
+ lineNumber: 214,
260
255
  columnNumber: 5
261
256
  }
262
257
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_dayjs","_mimeTypes","_ThemeContext","_icons","_utils","_this","_jsxFileName","AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$attac","attachmentPicker","durationText","image","imageOverlay","_useTheme$theme$color","colors","overlay","white","videoDuration","duration","uri","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","concat","_toConsumableArray2","id","name","filename","fileSize","type","createElement","TouchableOpacity","onPress","__self","__source","fileName","lineNumber","columnNumber","ImageBackground","source","style","height","margin","width","View","styles","backgroundColor","videoView","Recorder","pathFill","Text","color","AttachmentImage","setSelectedImages","_useTheme2","_useTheme2$theme","_useTheme2$theme$atta","onPressImage","images","getFileType","contentType","lookup","startsWith","renderAttachmentPickerItem","_ref","item","fileType","exports","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration: videoDuration, uri } = asset;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n name: asset.filename,\n size: asset.fileSize,\n type: 'video',\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst getFileType = (asset: Asset) => {\n const { filename } = asset;\n if (filename) {\n const contentType = lookup(filename) || 'multipart/form-data';\n return contentType.startsWith('image/') ? 'image' : 'video';\n } else {\n return asset.type === 'video' ? 'video' : 'image';\n }\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n const fileType = getFileType(asset);\n\n return fileType === 'image' ? (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n ) : (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_dayjs","_mimeTypes","_ThemeContext","_icons","_utils","_this","_jsxFileName","AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$attac","attachmentPicker","durationText","image","imageOverlay","_useTheme$theme$color","colors","overlay","white","videoDuration","duration","uri","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","mimeType","lookup","filename","concat","_toConsumableArray2","id","name","fileSize","createElement","TouchableOpacity","onPress","__self","__source","fileName","lineNumber","columnNumber","ImageBackground","source","style","height","margin","width","View","styles","backgroundColor","videoView","Recorder","pathFill","Text","color","AttachmentImage","setSelectedImages","_useTheme2","_useTheme2$theme","_useTheme2$theme$atta","onPressImage","images","renderAttachmentPickerItem","_ref","item","isVideoType","type","includes","exports","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration: videoDuration, uri } = asset;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n // We need a mime-type to upload a video file.\n const mimeType = lookup(asset.filename) || 'multipart/form-data';\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n mimeType,\n name: asset.filename,\n size: asset.fileSize,\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n /**\n * Expo Media Library - Result of asset type\n * Native Android - Gives mime type(Eg: image/jpeg, video/mp4, etc.)\n * Native iOS - Gives `image` or `video`\n * Expo Android/iOS - Gives `photo` or `video`\n **/\n const isVideoType = asset.type.includes('video');\n\n if (isVideoType) {\n return (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n }\n\n return (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.16.0-beta.2"
2
+ "version": "5.16.0-beta.3"
3
3
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.16.0-beta.2",
4
+ "version": "5.16.0-beta.3",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -304,7 +304,7 @@ export const AttachmentPicker = React.forwardRef(
304
304
  data={selectedPhotos}
305
305
  keyExtractor={(item) => item.asset.uri}
306
306
  numColumns={numberOfAttachmentPickerImageColumns ?? 3}
307
- onEndReached={getMorePhotos}
307
+ onEndReached={photoError ? undefined : getMorePhotos}
308
308
  renderItem={renderAttachmentPickerItem}
309
309
  />
310
310
  </BottomSheet>
@@ -70,14 +70,16 @@ const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
70
70
  Alert.alert('Maximum number of files reached');
71
71
  return files;
72
72
  }
73
+ // We need a mime-type to upload a video file.
74
+ const mimeType = lookup(asset.filename) || 'multipart/form-data';
73
75
  return [
74
76
  ...files,
75
77
  {
76
78
  duration: durationLabel,
77
79
  id: asset.id,
80
+ mimeType,
78
81
  name: asset.filename,
79
82
  size: asset.fileSize,
80
- type: 'video',
81
83
  uri: asset.uri,
82
84
  },
83
85
  ];
@@ -174,16 +176,6 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
174
176
  );
175
177
  };
176
178
 
177
- const getFileType = (asset: Asset) => {
178
- const { filename } = asset;
179
- if (filename) {
180
- const contentType = lookup(filename) || 'multipart/form-data';
181
- return contentType.startsWith('image/') ? 'image' : 'video';
182
- } else {
183
- return asset.type === 'video' ? 'video' : 'image';
184
- }
185
- };
186
-
187
179
  export const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {
188
180
  const {
189
181
  asset,
@@ -196,9 +188,29 @@ export const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerIte
196
188
  setSelectedImages,
197
189
  } = item;
198
190
 
199
- const fileType = getFileType(asset);
191
+ /**
192
+ * Expo Media Library - Result of asset type
193
+ * Native Android - Gives mime type(Eg: image/jpeg, video/mp4, etc.)
194
+ * Native iOS - Gives `image` or `video`
195
+ * Expo Android/iOS - Gives `photo` or `video`
196
+ **/
197
+ const isVideoType = asset.type.includes('video');
198
+
199
+ if (isVideoType) {
200
+ return (
201
+ <AttachmentVideo
202
+ asset={asset}
203
+ ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
204
+ maxNumberOfFiles={maxNumberOfFiles}
205
+ numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
206
+ numberOfUploads={numberOfUploads}
207
+ selected={selected}
208
+ setSelectedFiles={setSelectedFiles}
209
+ />
210
+ );
211
+ }
200
212
 
201
- return fileType === 'image' ? (
213
+ return (
202
214
  <AttachmentImage
203
215
  asset={asset}
204
216
  ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
@@ -208,16 +220,6 @@ export const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerIte
208
220
  selected={selected}
209
221
  setSelectedImages={setSelectedImages}
210
222
  />
211
- ) : (
212
- <AttachmentVideo
213
- asset={asset}
214
- ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
215
- maxNumberOfFiles={maxNumberOfFiles}
216
- numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
217
- numberOfUploads={numberOfUploads}
218
- selected={selected}
219
- setSelectedFiles={setSelectedFiles}
220
- />
221
223
  );
222
224
  };
223
225
 
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.16.0-beta.2"
2
+ "version": "5.16.0-beta.3"
3
3
  }