stream-chat-react-native-core 5.23.2 → 5.23.3-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +13 -7
  2. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  3. package/lib/commonjs/i18n/en.json +1 -1
  4. package/lib/commonjs/i18n/fr.json +65 -65
  5. package/lib/commonjs/i18n/hi.json +65 -65
  6. package/lib/commonjs/i18n/it.json +65 -65
  7. package/lib/commonjs/i18n/nl.json +65 -65
  8. package/lib/commonjs/i18n/ru.json +65 -65
  9. package/lib/commonjs/i18n/tr.json +65 -65
  10. package/lib/commonjs/version.json +1 -1
  11. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +13 -7
  12. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  13. package/lib/module/i18n/en.json +1 -1
  14. package/lib/module/i18n/fr.json +65 -65
  15. package/lib/module/i18n/hi.json +65 -65
  16. package/lib/module/i18n/it.json +65 -65
  17. package/lib/module/i18n/nl.json +65 -65
  18. package/lib/module/i18n/ru.json +65 -65
  19. package/lib/module/i18n/tr.json +65 -65
  20. package/lib/module/version.json +1 -1
  21. package/lib/typescript/i18n/en.json +1 -1
  22. package/lib/typescript/i18n/fr.json +65 -65
  23. package/lib/typescript/i18n/hi.json +65 -65
  24. package/lib/typescript/i18n/it.json +65 -65
  25. package/lib/typescript/i18n/nl.json +65 -65
  26. package/lib/typescript/i18n/ru.json +65 -65
  27. package/lib/typescript/i18n/tr.json +65 -65
  28. package/package.json +1 -1
  29. package/src/components/AttachmentPicker/AttachmentPicker.tsx +9 -3
  30. package/src/i18n/en.json +1 -1
  31. package/src/i18n/fr.json +65 -65
  32. package/src/i18n/hi.json +65 -65
  33. package/src/i18n/it.json +65 -65
  34. package/src/i18n/nl.json +65 -65
  35. package/src/i18n/ru.json +65 -65
  36. package/src/i18n/tr.json +65 -65
  37. package/src/version.json +1 -1
@@ -151,16 +151,22 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
151
151
  };
152
152
  }, [selectedPicker, closePicker]);
153
153
  (0, _react.useEffect)(function () {
154
+ var onKeyboardOpenHandler = function onKeyboardOpenHandler() {
155
+ if (selectedPicker) {
156
+ setSelectedPicker(undefined);
157
+ }
158
+ closePicker();
159
+ };
154
160
  var keyboardShowEvent = _reactNative.Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';
155
- var keyboardSubscription = _reactNative.Keyboard.addListener(keyboardShowEvent, closePicker);
161
+ var keyboardSubscription = _reactNative.Keyboard.addListener(keyboardShowEvent, onKeyboardOpenHandler);
156
162
  return function () {
157
163
  if (keyboardSubscription != null && keyboardSubscription.remove) {
158
164
  keyboardSubscription.remove();
159
165
  return;
160
166
  }
161
- _reactNative.Keyboard.removeListener(keyboardShowEvent, closePicker);
167
+ _reactNative.Keyboard.removeListener(keyboardShowEvent, onKeyboardOpenHandler);
162
168
  };
163
- }, [closePicker]);
169
+ }, [closePicker, selectedPicker]);
164
170
  (0, _react.useEffect)(function () {
165
171
  if (currentIndex < 0) {
166
172
  setSelectedPicker(undefined);
@@ -245,7 +251,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
245
251
  __self: _this,
246
252
  __source: {
247
253
  fileName: _jsxFileName,
248
- lineNumber: 304,
254
+ lineNumber: 310,
249
255
  columnNumber: 9
250
256
  }
251
257
  }, iOSLimited && _react["default"].createElement(_reactNative.Button, {
@@ -254,7 +260,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
254
260
  __self: _this,
255
261
  __source: {
256
262
  fileName: _jsxFileName,
257
- lineNumber: 321,
263
+ lineNumber: 327,
258
264
  columnNumber: 13
259
265
  }
260
266
  }), _react["default"].createElement(_bottomSheet.BottomSheetFlatList, {
@@ -273,7 +279,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
273
279
  __self: _this,
274
280
  __source: {
275
281
  fileName: _jsxFileName,
276
- lineNumber: 323,
282
+ lineNumber: 329,
277
283
  columnNumber: 11
278
284
  }
279
285
  })), selectedPicker === 'images' && photoError && _react["default"].createElement(AttachmentPickerError, {
@@ -284,7 +290,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
284
290
  __self: _this,
285
291
  __source: {
286
292
  fileName: _jsxFileName,
287
- lineNumber: 338,
293
+ lineNumber: 344,
288
294
  columnNumber: 11
289
295
  }
290
296
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_TranslationContext","_useViewport2","_native","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","dayjs","extend","duration","styles","StyleSheet","create","container","flexGrow","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useViewport","useViewport","vh","screenHeight","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","_useState5","_useState6","iOSLimited","setIosLimited","hasNextPageRef","_useState7","_useState8","loadingPhotos","setLoadingPhotos","_useState9","_useState10","photos","setPhotos","attemptedToLoadPhotosOnOpenRef","_useTranslationContex","useTranslationContext","t","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","id","uri","file","handleHeight","getAndroidBottomBarHeightAdjustment","_StatusBar$currentHei","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","getInitialSnapPoint","initialSnapPoint","finalSnapPoint","snapPoints","useMemo","createElement","Fragment","containerHeight","enablePanDownToClose","handleComponent","index","onChange","__self","__source","fileName","lineNumber","columnNumber","Button","onPress","iOS14RefreshGallerySelection","title","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 {\n BackHandler,\n Button,\n Dimensions,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n} 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 { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { useViewport } from '../../hooks/useViewport';\nimport {\n getPhotos,\n iOS14RefreshGallerySelection,\n oniOS14GalleryLibrarySelectionChange,\n} from '../../native';\nimport type { Asset } from '../../types/types';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst fullScreenHeight = Dimensions.get('window').height;\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI component to render 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 const { vh } = useViewport();\n\n const screenHeight = vh(100);\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = useState(false);\n const [iOSLimited, setIosLimited] = useState(false);\n const hasNextPageRef = useRef(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n const attemptedToLoadPhotosOnOpenRef = useRef(false);\n const { t } = useTranslationContext();\n\n const getMorePhotos = useCallback(async () => {\n if (\n hasNextPageRef.current &&\n !loadingPhotos &&\n currentIndex > -1 &&\n selectedPicker === 'images'\n ) {\n setPhotoError(false);\n setLoadingPhotos(true);\n const endCursor = endCursorRef.current;\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n endCursorRef.current = results.endCursor;\n setPhotos((prevPhotos) =>\n endCursor ? [...prevPhotos, ...results.assets] : results.assets,\n );\n setIosLimited(results.iOSLimited);\n hasNextPageRef.current = !!results.hasNextPage;\n } catch (error) {\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n }, [currentIndex, selectedPicker, loadingPhotos]);\n\n // we need to use ref here to avoid running effect when getMorePhotos changes\n const getMorePhotosRef = useRef(getMorePhotos);\n getMorePhotosRef.current = getMorePhotos;\n\n useEffect(() => {\n if (selectedPicker !== 'images') return;\n // ios 14 library selection change event is fired when user reselects the images that are permitted to be readable by the app\n const { unsubscribe } = oniOS14GalleryLibrarySelectionChange(() => {\n // we reset the cursor and has next page to true to facilitate fetching of the first page of photos again\n hasNextPageRef.current = true;\n endCursorRef.current = undefined;\n // fetch the first page of photos again\n getMorePhotosRef.current();\n });\n return unsubscribe;\n }, [selectedPicker]);\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker, closePicker]);\n\n useEffect(() => {\n const 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 // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n selected:\n selectedImages.some((image) =>\n image.id ? image.id === asset.id : image.uri === asset.uri,\n ) ||\n selectedFiles.some((file) => (file.id ? file.id === asset.id : file.uri === asset.uri)),\n selectedFiles,\n selectedImages,\n setSelectedFiles,\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const getAndroidBottomBarHeightAdjustment = (): number => {\n if (Platform.OS === 'android') {\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n if (bottomBarHeight === statusBarHeight) {\n return translucentStatusBar ? 0 : statusBarHeight;\n } else {\n if (translucentStatusBar) {\n if (bottomBarHeight > statusBarHeight) {\n return -bottomBarHeight + statusBarHeight;\n } else {\n return bottomBarHeight > 0 ? -statusBarHeight : 0;\n }\n } else {\n return bottomBarHeight > 0 ? 0 : statusBarHeight;\n }\n }\n }\n return 0;\n };\n\n const getInitialSnapPoint = (): number => {\n if (attachmentPickerBottomSheetHeight !== undefined) {\n return attachmentPickerBottomSheetHeight;\n }\n if (Platform.OS === 'android') {\n return (\n 308 +\n (fullScreenHeight - screenHeight + getAndroidBottomBarHeightAdjustment()) -\n handleHeight\n );\n } else {\n return 308 + (fullScreenHeight - screenHeight);\n }\n };\n\n const initialSnapPoint = getInitialSnapPoint();\n\n const finalSnapPoint =\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [initialSnapPoint, finalSnapPoint],\n [initialSnapPoint, finalSnapPoint],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={setCurrentIndex}\n ref={ref}\n snapPoints={snapPoints}\n >\n {iOSLimited && (\n <Button onPress={iOS14RefreshGallerySelection} title={t('Select More Photos')} />\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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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_TranslationContext","_useViewport2","_native","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","dayjs","extend","duration","styles","StyleSheet","create","container","flexGrow","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useViewport","useViewport","vh","screenHeight","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","_useState5","_useState6","iOSLimited","setIosLimited","hasNextPageRef","_useState7","_useState8","loadingPhotos","setLoadingPhotos","_useState9","_useState10","photos","setPhotos","attemptedToLoadPhotosOnOpenRef","_useTranslationContex","useTranslationContext","t","getMorePhotos","useCallback","_asyncToGenerator2","_regenerator","mark","_callee","endCursor","results","wrap","_callee$","_context","prev","next","current","getPhotos","after","first","sent","prevPhotos","concat","_toConsumableArray2","assets","hasNextPage","t0","stop","getMorePhotosRef","useEffect","_oniOS14GalleryLibrar","oniOS14GalleryLibrarySelectionChange","undefined","unsubscribe","backAction","backHandler","BackHandler","addEventListener","remove","onKeyboardOpenHandler","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","id","uri","file","handleHeight","getAndroidBottomBarHeightAdjustment","_StatusBar$currentHei","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","getInitialSnapPoint","initialSnapPoint","finalSnapPoint","snapPoints","useMemo","createElement","Fragment","containerHeight","enablePanDownToClose","handleComponent","index","onChange","__self","__source","fileName","lineNumber","columnNumber","Button","onPress","iOS14RefreshGallerySelection","title","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 {\n BackHandler,\n Button,\n Dimensions,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n} 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 { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { useViewport } from '../../hooks/useViewport';\nimport {\n getPhotos,\n iOS14RefreshGallerySelection,\n oniOS14GalleryLibrarySelectionChange,\n} from '../../native';\nimport type { Asset } from '../../types/types';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst fullScreenHeight = Dimensions.get('window').height;\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI component to render 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 const { vh } = useViewport();\n\n const screenHeight = vh(100);\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = useState(false);\n const [iOSLimited, setIosLimited] = useState(false);\n const hasNextPageRef = useRef(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n const attemptedToLoadPhotosOnOpenRef = useRef(false);\n const { t } = useTranslationContext();\n\n const getMorePhotos = useCallback(async () => {\n if (\n hasNextPageRef.current &&\n !loadingPhotos &&\n currentIndex > -1 &&\n selectedPicker === 'images'\n ) {\n setPhotoError(false);\n setLoadingPhotos(true);\n const endCursor = endCursorRef.current;\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n endCursorRef.current = results.endCursor;\n setPhotos((prevPhotos) =>\n endCursor ? [...prevPhotos, ...results.assets] : results.assets,\n );\n setIosLimited(results.iOSLimited);\n hasNextPageRef.current = !!results.hasNextPage;\n } catch (error) {\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n }, [currentIndex, selectedPicker, loadingPhotos]);\n\n // we need to use ref here to avoid running effect when getMorePhotos changes\n const getMorePhotosRef = useRef(getMorePhotos);\n getMorePhotosRef.current = getMorePhotos;\n\n useEffect(() => {\n if (selectedPicker !== 'images') return;\n // ios 14 library selection change event is fired when user reselects the images that are permitted to be readable by the app\n const { unsubscribe } = oniOS14GalleryLibrarySelectionChange(() => {\n // we reset the cursor and has next page to true to facilitate fetching of the first page of photos again\n hasNextPageRef.current = true;\n endCursorRef.current = undefined;\n // fetch the first page of photos again\n getMorePhotosRef.current();\n });\n return unsubscribe;\n }, [selectedPicker]);\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker, closePicker]);\n\n useEffect(() => {\n const onKeyboardOpenHandler = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n }\n closePicker();\n };\n const keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, onKeyboardOpenHandler);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n Keyboard.removeListener(keyboardShowEvent, onKeyboardOpenHandler);\n };\n }, [closePicker, selectedPicker]);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n endCursorRef.current = undefined;\n hasNextPageRef.current = true;\n attemptedToLoadPhotosOnOpenRef.current = false;\n setPhotoError(false);\n }\n }\n }, [currentIndex, loadingPhotos]);\n\n useEffect(() => {\n if (\n !attemptedToLoadPhotosOnOpenRef.current &&\n selectedPicker === 'images' &&\n endCursorRef.current === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n getMorePhotos();\n // we do this only once on open for avoiding to request permissions in rationale dialog again and again on Android\n attemptedToLoadPhotosOnOpenRef.current = true;\n }\n }, [currentIndex, selectedPicker, getMorePhotos, loadingPhotos]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads: selectedFiles.length + selectedImages.length,\n // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n selected:\n selectedImages.some((image) =>\n image.id ? image.id === asset.id : image.uri === asset.uri,\n ) ||\n selectedFiles.some((file) => (file.id ? file.id === asset.id : file.uri === asset.uri)),\n selectedFiles,\n selectedImages,\n setSelectedFiles,\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const getAndroidBottomBarHeightAdjustment = (): number => {\n if (Platform.OS === 'android') {\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n if (bottomBarHeight === statusBarHeight) {\n return translucentStatusBar ? 0 : statusBarHeight;\n } else {\n if (translucentStatusBar) {\n if (bottomBarHeight > statusBarHeight) {\n return -bottomBarHeight + statusBarHeight;\n } else {\n return bottomBarHeight > 0 ? -statusBarHeight : 0;\n }\n } else {\n return bottomBarHeight > 0 ? 0 : statusBarHeight;\n }\n }\n }\n return 0;\n };\n\n const getInitialSnapPoint = (): number => {\n if (attachmentPickerBottomSheetHeight !== undefined) {\n return attachmentPickerBottomSheetHeight;\n }\n if (Platform.OS === 'android') {\n return (\n 308 +\n (fullScreenHeight - screenHeight + getAndroidBottomBarHeightAdjustment()) -\n handleHeight\n );\n } else {\n return 308 + (fullScreenHeight - screenHeight);\n }\n };\n\n const initialSnapPoint = getInitialSnapPoint();\n\n const finalSnapPoint =\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [initialSnapPoint, finalSnapPoint],\n [initialSnapPoint, finalSnapPoint],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={setCurrentIndex}\n ref={ref}\n snapPoints={snapPoints}\n >\n {iOSLimited && (\n <Button onPress={iOS14RefreshGallerySelection} title={t('Select More Photos')} />\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":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAUA,IAAAE,YAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAD,sBAAA,CAAAJ,OAAA;AAIA,IAAAM,qBAAA,GAAAN,OAAA;AAEA,IAAAO,wBAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AACA,IAAAS,mBAAA,GAAAT,OAAA;AACA,IAAAU,aAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAX,OAAA;AAIsB,IAAAY,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAhB,wBAAAoB,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAGtBW,iBAAK,CAACC,MAAM,CAACC,oBAAQ,CAAC;AAEtB,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,IAAMC,gBAAgB,GAAGC,uBAAU,CAACrB,GAAG,CAAC,QAAQ,CAAC,CAACsB,MAAM;AAoCjD,IAAMC,gBAAgB,GAAGC,iBAAK,CAACC,UAAU,CAC9C,UAACC,KAA4B,EAAEC,GAAoC,EAAK;EACtE,IACEC,iCAAiC,GAW/BF,KAAK,CAXPE,iCAAiC;IACjCC,uCAAuC,GAUrCH,KAAK,CAVPG,uCAAuC;IACvCC,iCAAiC,GAS/BJ,KAAK,CATPI,iCAAiC;IACjCC,qBAAqB,GAQnBL,KAAK,CARPK,qBAAqB;IACrBC,+BAA+B,GAO7BN,KAAK,CAPPM,+BAA+B;IAC/BC,0BAA0B,GAMxBP,KAAK,CANPO,0BAA0B;IAC1BC,yBAAyB,GAKvBR,KAAK,CALPQ,yBAAyB;IACzBC,6BAA6B,GAI3BT,KAAK,CAJPS,6BAA6B;IAC7BC,qCAAqC,GAGnCV,KAAK,CAHPU,qCAAqC;IACrCC,oCAAoC,GAElCX,KAAK,CAFPW,oCAAoC;IACpCC,oBAAoB,GAClBZ,KAAK,CADPY,oBAAoB;EAGtB,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IACiBC,2BAA2B,GAAAF,eAAA,CAA/CG,gBAAgB,CAAID,2BAA2B;IACrCE,KAAK,GAAAJ,eAAA,CAAfK,MAAM,CAAID,KAAK;EAGnB,IAAAE,qBAAA,GAUI,IAAAC,mDAA0B,EAAC,CAAC;IAT9BC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IACXC,gBAAgB,GAAAH,qBAAA,CAAhBG,gBAAgB;IAChBC,aAAa,GAAAJ,qBAAA,CAAbI,aAAa;IACbC,cAAc,GAAAL,qBAAA,CAAdK,cAAc;IACdC,cAAc,GAAAN,qBAAA,CAAdM,cAAc;IACdC,gBAAgB,GAAAP,qBAAA,CAAhBO,gBAAgB;IAChBC,iBAAiB,GAAAR,qBAAA,CAAjBQ,iBAAiB;IACjBC,iBAAiB,GAAAT,qBAAA,CAAjBS,iBAAiB;IACjBC,QAAQ,GAAAV,qBAAA,CAARU,QAAQ;EAEV,IAAAC,YAAA,GAAe,IAAAC,yBAAW,EAAC,CAAC;IAApBC,EAAE,GAAAF,YAAA,CAAFE,EAAE;EAEV,IAAMC,YAAY,GAAGD,EAAE,CAAC,GAAG,CAAC;EAE5B,IAAAE,SAAA,GAAwC,IAAAC,eAAQ,EAAC,CAAC,CAAC,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA7CI,YAAY,GAAAF,UAAA;IAAEG,eAAe,GAAAH,UAAA;EACpC,IAAMI,YAAY,GAAG,IAAAC,aAAM,EAAS,CAAC;EACrC,IAAAC,UAAA,GAAoC,IAAAP,eAAQ,EAAC,KAAK,CAAC;IAAAQ,UAAA,OAAAN,eAAA,aAAAK,UAAA;IAA5CE,UAAU,GAAAD,UAAA;IAAEE,aAAa,GAAAF,UAAA;EAChC,IAAAG,UAAA,GAAoC,IAAAX,eAAQ,EAAC,KAAK,CAAC;IAAAY,UAAA,OAAAV,eAAA,aAAAS,UAAA;IAA5CE,UAAU,GAAAD,UAAA;IAAEE,aAAa,GAAAF,UAAA;EAChC,IAAMG,cAAc,GAAG,IAAAT,aAAM,EAAC,IAAI,CAAC;EACnC,IAAAU,UAAA,GAA0C,IAAAhB,eAAQ,EAAC,KAAK,CAAC;IAAAiB,UAAA,OAAAf,eAAA,aAAAc,UAAA;IAAlDE,aAAa,GAAAD,UAAA;IAAEE,gBAAgB,GAAAF,UAAA;EACtC,IAAAG,UAAA,GAA4B,IAAApB,eAAQ,EAAU,EAAE,CAAC;IAAAqB,WAAA,OAAAnB,eAAA,aAAAkB,UAAA;IAA1CE,MAAM,GAAAD,WAAA;IAAEE,SAAS,GAAAF,WAAA;EACxB,IAAMG,8BAA8B,GAAG,IAAAlB,aAAM,EAAC,KAAK,CAAC;EACpD,IAAAmB,qBAAA,GAAc,IAAAC,yCAAqB,EAAC,CAAC;IAA7BC,CAAC,GAAAF,qBAAA,CAADE,CAAC;EAET,IAAMC,aAAa,GAAG,IAAAC,kBAAW,MAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAC,QAAA;IAAA,IAAAC,SAAA,EAAAC,OAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,MAE9BzB,cAAc,CAAC0B,OAAO,IACtB,CAACvB,aAAa,IACdf,YAAY,GAAG,CAAC,CAAC,IACjBb,cAAc,KAAK,QAAQ;YAAAgD,QAAA,CAAAE,IAAA;YAAA;UAAA;UAE3B9B,aAAa,CAAC,KAAK,CAAC;UACpBS,gBAAgB,CAAC,IAAI,CAAC;UAChBe,SAAS,GAAG7B,YAAY,CAACoC,OAAO;UAAAH,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEd,IAAAE,iBAAS,EAAC;YAC9BC,KAAK,EAAET,SAAS;YAChBU,KAAK,EAAEvE,qCAAqC,WAArCA,qCAAqC,GAAI;UAClD,CAAC,CAAC;QAAA;UAHI8D,OAAO,GAAAG,QAAA,CAAAO,IAAA;UAIbxC,YAAY,CAACoC,OAAO,GAAGN,OAAO,CAACD,SAAS;UACxCX,SAAS,CAAC,UAACuB,UAAU;YAAA,OACnBZ,SAAS,MAAAa,MAAA,KAAAC,mBAAA,aAAOF,UAAU,OAAAE,mBAAA,aAAKb,OAAO,CAACc,MAAM,KAAId,OAAO,CAACc,MAAM;UAAA,CACjE,CAAC;UACDnC,aAAa,CAACqB,OAAO,CAACtB,UAAU,CAAC;UACjCE,cAAc,CAAC0B,OAAO,GAAG,CAAC,CAACN,OAAO,CAACe,WAAW;UAACZ,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAa,EAAA,GAAAb,QAAA;UAE/C5B,aAAa,CAAC,IAAI,CAAC;QAAC;UAEtBS,gBAAgB,CAAC,KAAK,CAAC;QAAC;QAAA;UAAA,OAAAmB,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAAnB,OAAA;EAAA,CAE3B,IAAE,CAAC9B,YAAY,EAAEb,cAAc,EAAE4B,aAAa,CAAC,CAAC;EAGjD,IAAMmC,gBAAgB,GAAG,IAAA/C,aAAM,EAACsB,aAAa,CAAC;EAC9CyB,gBAAgB,CAACZ,OAAO,GAAGb,aAAa;EAExC,IAAA0B,gBAAS,EAAC,YAAM;IACd,IAAIhE,cAAc,KAAK,QAAQ,EAAE;IAEjC,IAAAiE,qBAAA,GAAwB,IAAAC,4CAAoC,EAAC,YAAM;QAEjEzC,cAAc,CAAC0B,OAAO,GAAG,IAAI;QAC7BpC,YAAY,CAACoC,OAAO,GAAGgB,SAAS;QAEhCJ,gBAAgB,CAACZ,OAAO,CAAC,CAAC;MAC5B,CAAC,CAAC;MANMiB,WAAW,GAAAH,qBAAA,CAAXG,WAAW;IAOnB,OAAOA,WAAW;EACpB,CAAC,EAAE,CAACpE,cAAc,CAAC,CAAC;EAEpB,IAAAgE,gBAAS,EAAC,YAAM;IACd,IAAMK,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;MACvB,IAAIrE,cAAc,EAAE;QAClBG,iBAAiB,CAACgE,SAAS,CAAC;QAC5BvE,WAAW,CAAC,CAAC;QACb,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd,CAAC;IAED,IAAM0E,WAAW,GAAGC,wBAAW,CAACC,gBAAgB,CAAC,mBAAmB,EAAEH,UAAU,CAAC;IAEjF,OAAO;MAAA,OAAMC,WAAW,CAACG,MAAM,CAAC,CAAC;IAAA;EACnC,CAAC,EAAE,CAACzE,cAAc,EAAEJ,WAAW,CAAC,CAAC;EAEjC,IAAAoE,gBAAS,EAAC,YAAM;IACd,IAAMU,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAA,EAAS;MAClC,IAAI1E,cAAc,EAAE;QAClBG,iBAAiB,CAACgE,SAAS,CAAC;MAC9B;MACAvE,WAAW,CAAC,CAAC;IACf,CAAC;IACD,IAAM+E,iBAAiB,GAAGC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,kBAAkB,GAAG,iBAAiB;IACxF,IAAMC,oBAAoB,GAAGC,qBAAQ,CAACC,WAAW,CAACL,iBAAiB,EAAED,qBAAqB,CAAC;IAE3F,OAAO,YAAM;MACX,IAAII,oBAAoB,YAApBA,oBAAoB,CAAEL,MAAM,EAAE;QAChCK,oBAAoB,CAACL,MAAM,CAAC,CAAC;QAC7B;MACF;MAGAM,qBAAQ,CAACE,cAAc,CAACN,iBAAiB,EAAED,qBAAqB,CAAC;IACnE,CAAC;EACH,CAAC,EAAE,CAAC9E,WAAW,EAAEI,cAAc,CAAC,CAAC;EAEjC,IAAAgE,gBAAS,EAAC,YAAM;IACd,IAAInD,YAAY,GAAG,CAAC,EAAE;MACpBV,iBAAiB,CAACgE,SAAS,CAAC;MAC5B,IAAI,CAACvC,aAAa,EAAE;QAClBb,YAAY,CAACoC,OAAO,GAAGgB,SAAS;QAChC1C,cAAc,CAAC0B,OAAO,GAAG,IAAI;QAC7BjB,8BAA8B,CAACiB,OAAO,GAAG,KAAK;QAC9C/B,aAAa,CAAC,KAAK,CAAC;MACtB;IACF;EACF,CAAC,EAAE,CAACP,YAAY,EAAEe,aAAa,CAAC,CAAC;EAEjC,IAAAoC,gBAAS,EAAC,YAAM;IACd,IACE,CAAC9B,8BAA8B,CAACiB,OAAO,IACvCnD,cAAc,KAAK,QAAQ,IAC3Be,YAAY,CAACoC,OAAO,KAAKgB,SAAS,IAClCtD,YAAY,GAAG,CAAC,CAAC,IACjB,CAACe,aAAa,EACd;MACAU,aAAa,CAAC,CAAC;MAEfJ,8BAA8B,CAACiB,OAAO,GAAG,IAAI;IAC/C;EACF,CAAC,EAAE,CAACtC,YAAY,EAAEb,cAAc,EAAEsC,aAAa,EAAEV,aAAa,CAAC,CAAC;EAEhE,IAAMsD,cAAc,GAAGlD,MAAM,CAACmD,GAAG,CAAC,UAACC,KAAK;IAAA,OAAM;MAC5CA,KAAK,EAALA,KAAK;MACLtG,6BAA6B,EAA7BA,6BAA6B;MAC7Be,gBAAgB,EAAhBA,gBAAgB;MAChBb,oCAAoC,EAApCA,oCAAoC;MACpCqG,eAAe,EAAEvF,aAAa,CAACwF,MAAM,GAAGvF,cAAc,CAACuF,MAAM;MAE7DC,QAAQ,EACNxF,cAAc,CAACyF,IAAI,CAAC,UAACC,KAAK;QAAA,OACxBA,KAAK,CAACC,EAAE,GAAGD,KAAK,CAACC,EAAE,KAAKN,KAAK,CAACM,EAAE,GAAGD,KAAK,CAACE,GAAG,KAAKP,KAAK,CAACO,GAAG;MAAA,CAC5D,CAAC,IACD7F,aAAa,CAAC0F,IAAI,CAAC,UAACI,IAAI;QAAA,OAAMA,IAAI,CAACF,EAAE,GAAGE,IAAI,CAACF,EAAE,KAAKN,KAAK,CAACM,EAAE,GAAGE,IAAI,CAACD,GAAG,KAAKP,KAAK,CAACO,GAAG;MAAA,CAAC,CAAC;MACzF7F,aAAa,EAAbA,aAAa;MACbC,cAAc,EAAdA,cAAc;MACdE,gBAAgB,EAAhBA,gBAAgB;MAChBC,iBAAiB,EAAjBA;IACF,CAAC;EAAA,CAAC,CAAC;EAEH,IAAM2F,YAAY,GAAGrH,uCAAuC,IAAI,EAAE;EAQlE,IAAMsH,mCAAmC,GAAG,SAAtCA,mCAAmCA,CAAA,EAAiB;IACxD,IAAIlB,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAAA,IAAAkB,qBAAA;MAC7B,IAAMC,eAAe,IAAAD,qBAAA,GAAGE,sBAAS,CAACC,aAAa,YAAAH,qBAAA,GAAI,CAAC;MACpD,IAAMI,eAAe,GAAGpI,gBAAgB,GAAGyC,YAAY,GAAGwF,eAAe;MACzE,IAAIG,eAAe,KAAKH,eAAe,EAAE;QACvC,OAAO/G,oBAAoB,GAAG,CAAC,GAAG+G,eAAe;MACnD,CAAC,MAAM;QACL,IAAI/G,oBAAoB,EAAE;UACxB,IAAIkH,eAAe,GAAGH,eAAe,EAAE;YACrC,OAAO,CAACG,eAAe,GAAGH,eAAe;UAC3C,CAAC,MAAM;YACL,OAAOG,eAAe,GAAG,CAAC,GAAG,CAACH,eAAe,GAAG,CAAC;UACnD;QACF,CAAC,MAAM;UACL,OAAOG,eAAe,GAAG,CAAC,GAAG,CAAC,GAAGH,eAAe;QAClD;MACF;IACF;IACA,OAAO,CAAC;EACV,CAAC;EAED,IAAMI,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAiB;IACxC,IAAI3H,iCAAiC,KAAK0F,SAAS,EAAE;MACnD,OAAO1F,iCAAiC;IAC1C;IACA,IAAImG,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B,OACE,GAAG,IACF9G,gBAAgB,GAAGyC,YAAY,GAAGsF,mCAAmC,CAAC,CAAC,CAAC,GACzED,YAAY;IAEhB,CAAC,MAAM;MACL,OAAO,GAAG,IAAI9H,gBAAgB,GAAGyC,YAAY,CAAC;IAChD;EACF,CAAC;EAED,IAAM6F,gBAAgB,GAAGD,mBAAmB,CAAC,CAAC;EAE9C,IAAME,cAAc,GAClB1B,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACrB9G,gBAAgB,GAAGqC,QAAQ,GAAGyF,YAAY,GAC1C9H,gBAAgB,GAAGqC,QAAQ;EAMjC,IAAMmG,UAAU,GAAG,IAAAC,cAAO,EACxB;IAAA,OAAM,CAACH,gBAAgB,EAAEC,cAAc,CAAC;EAAA,GACxC,CAACD,gBAAgB,EAAEC,cAAc,CACnC,CAAC;EAED,OACErL,MAAA,YAAAwL,aAAA,CAAAxL,MAAA,YAAAyL,QAAA,QACEzL,MAAA,YAAAwL,aAAA,CAACpL,YAAA,WAAW;IACVsL,eAAe,EAAE5I,gBAAiB;IAClC6I,oBAAoB,EAAE,IAAK;IAC3BC,eAAe,EAKb1F,UAAU,GAAG,IAAI,GAAG5C,iCACrB;IACDsH,YAAY,EAAEA,YAAa;IAC3BiB,KAAK,EAAE,CAAC,CAAE;IACVC,QAAQ,EAAEjG,eAAgB;IAC1BxC,GAAG,EAAEA,GAAI;IACTiI,UAAU,EAAEA,UAAW;IAAAS,MAAA,EAAAjL,KAAA;IAAAkL,QAAA;MAAAC,QAAA,EAAAlL,YAAA;MAAAmL,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEtB7F,UAAU,IACTtG,MAAA,YAAAwL,aAAA,CAACrL,YAAA,CAAAiM,MAAM;IAACC,OAAO,EAAEC,oCAA6B;IAACC,KAAK,EAAEnF,CAAC,CAAC,oBAAoB,CAAE;IAAA2E,MAAA,EAAAjL,KAAA;IAAAkL,QAAA;MAAAC,QAAA,EAAAlL,YAAA;MAAAmL,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CACjF,EACDnM,MAAA,YAAAwL,aAAA,CAACpL,YAAA,CAAAoM,mBAAmB;IAClBC,qBAAqB,EAAE,CACrBhK,MAAM,CAACG,SAAS,EAChB;MAAE8J,eAAe,EAAEnI;IAAM,CAAC,EAC1BF,2BAA2B,EAC3B;MAAEsI,OAAO,EAAEzG,UAAU,GAAG,CAAC,GAAG;IAAE,CAAC,CAC/B;IACF0G,IAAI,EAAE3C,cAAe;IACrB4C,YAAY,EAAE,SAAAA,aAACC,IAAI;MAAA,OAAKA,IAAI,CAAC3C,KAAK,CAACO,GAAG;IAAA,CAAC;IACvCqC,UAAU,EAAEhJ,oCAAoC,WAApCA,oCAAoC,GAAI,CAAE;IACtDiJ,YAAY,EAAE9G,UAAU,GAAGgD,SAAS,GAAG7B,aAAc;IACrD4F,UAAU,EAAEC,gDAA2B;IAAAnB,MAAA,EAAAjL,KAAA;IAAAkL,QAAA;MAAAC,QAAA,EAAAlL,YAAA;MAAAmL,UAAA;MAAAC,YAAA;IAAA;EAAA,CACxC,CACU,CAAC,EACbpH,cAAc,KAAK,QAAQ,IAAImB,UAAU,IACxClG,MAAA,YAAAwL,aAAA,CAAC/H,qBAAqB;IACpBD,iCAAiC,EAAE4H,gBAAiB;IACpD1H,+BAA+B,EAAEA,+BAAgC;IACjEC,0BAA0B,EAAEA,0BAA2B;IACvDC,yBAAyB,EAAEA,yBAA0B;IAAAmI,MAAA,EAAAjL,KAAA;IAAAkL,QAAA;MAAAC,QAAA,EAAAlL,YAAA;MAAAmL,UAAA;MAAAC,YAAA;IAAA;EAAA,CACtD,CAEH,CAAC;AAEP,CACF,CAAC;AAACgB,OAAA,CAAAlK,gBAAA,GAAAA,gBAAA;AAEFA,gBAAgB,CAACmK,WAAW,GAAG,kBAAkB"}
@@ -24,7 +24,7 @@
24
24
  "File type not supported": "File type not supported",
25
25
  "Flag": "Flag",
26
26
  "Flag Message": "Flag Message",
27
- "Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged.",
27
+ "Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged",
28
28
  "How about sending your first message to a friend?": "How about sending your first message to a friend?",
29
29
  "Instant Commands": "Instant Commands",
30
30
  "Let's start chatting!": "Let's start chatting!",
@@ -1,76 +1,76 @@
1
1
  {
2
- "1 Reply": "1 Réponse",
3
- "1 Thread Reply": "Réponse à 1 fil",
4
- "Allow access to your Gallery": "Autoriser l'accès à votre galerie",
5
- "Allow camera access in device settings": "Autoriser l'accès à la caméra dans les paramètres de l'appareil",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Allow camera access in device settings": "",
6
6
  "Also send to channel": "Envoyer également à la chaîne",
7
- "Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?",
8
- "Block User": "Bloquer un utilisateur",
9
- "Cancel": "Annuler",
10
- "Cannot Flag Message": "Impossible de signaler le message",
11
- "Copy Message": "Copier le message",
12
- "Delete": "Supprimer",
13
- "Delete Message": "Supprimer un message",
14
- "Device camera is used to take photos or videos.": "L'appareil photo de l'appareil est utilisé pour prendre des photos ou des vidéos.",
15
- "Do you want to send a copy of this message to a moderator for further investigation?": "Voulez-vous envoyer une copie de ce message à un modérateur pour une enquête plus approfondie?",
16
- "Edit Message": "Éditer un message",
17
- "Editing Message": "Édite un message",
18
- "Emoji matching": "Correspondance Emoji",
19
- "Empty message...": "Message vide...",
20
- "Error loading": "Erreur lors du chargement",
21
- "Error loading channel list...": "Erreur lors du chargement de la liste de canaux...",
22
- "Error loading messages for this channel...": "Erreur lors du chargement des messages de ce canal...",
23
- "Error while loading, please reload/refresh": "Erreur lors du chargement, veuillez recharger/rafraîchir",
24
- "File type not supported": "Le type de fichier n'est pas pris en charge",
25
- "Flag": "Signaler",
26
- "Flag Message": "Signaler le message",
27
- "Flag action failed either due to a network issue or the message is already flagged": "L'action de signalisation a échoué en raison d'un problème de réseau ou le message est déjà signalé.",
28
- "How about sending your first message to a friend?": "Et si vous envoyiez votre premier message à un ami ?",
29
- "Instant Commands": "Commandes Instantanées",
30
- "Let's start chatting!": "Commençons à discuter !",
7
+ "Are you sure you want to permanently delete this message?": "",
8
+ "Block User": "",
9
+ "Cancel": "",
10
+ "Cannot Flag Message": "",
11
+ "Copy Message": "",
12
+ "Delete": "",
13
+ "Delete Message": "",
14
+ "Device camera is used to take photos or videos.": "",
15
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
16
+ "Edit Message": "",
17
+ "Editing Message": "",
18
+ "Emoji matching": "",
19
+ "Empty message...": "",
20
+ "Error loading": "",
21
+ "Error loading channel list...": "",
22
+ "Error loading messages for this channel...": "",
23
+ "Error while loading, please reload/refresh": "",
24
+ "File type not supported": "",
25
+ "Flag": "",
26
+ "Flag Message": "",
27
+ "Flag action failed either due to a network issue or the message is already flagged": "",
28
+ "How about sending your first message to a friend?": "",
29
+ "Instant Commands": "",
30
+ "Let's start chatting!": "",
31
31
  "Links are disabled": "Links are disabled",
32
- "Loading channels...": "Chargement des canaux...",
33
- "Loading messages...": "Chargement des messages...",
34
- "Loading...": "Chargement...",
32
+ "Loading channels...": "",
33
+ "Loading messages...": "",
34
+ "Loading...": "",
35
35
  "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Taille maximale de téléchargement de fichier atteinte. Veuillez télécharger un fichier inférieur à {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} Mo.",
36
- "Message Reactions": "Réactions aux messages",
37
- "Message deleted": "Message supprimé",
38
- "Message flagged": "Message signalé",
39
- "Mute User": "Utilisateur muet",
40
- "Not supported": "Non pris en charge",
41
- "Nothing yet...": "Aucun message...",
42
- "Ok": "Ok",
36
+ "Message Reactions": "",
37
+ "Message deleted": "",
38
+ "Message flagged": "",
39
+ "Mute User": "",
40
+ "Not supported": "",
41
+ "Nothing yet...": "",
42
+ "Ok": "",
43
43
  "Only visible to you": "Seulement visible par vous",
44
- "Open Settings": "Ouvrir les paramètres",
45
- "Photo": "Photo",
46
- "Photos and Videos": "Photos et vidéos",
47
- "Pin to Conversation": "Épingler à la conversation",
48
- "Pinned by": "Épinglé par",
49
- "Please enable access to your photos and videos so you can share them.": "Veuillez autoriser l'accès à vos photos et vidéos afin de pouvoir les partager.",
50
- "Please select a channel first": "Veuillez d'abord selectionnez un canal",
51
- "Reconnecting...": "Se Reconnecter...",
52
- "Reply": "Répondre",
44
+ "Open Settings": "",
45
+ "Photo": "",
46
+ "Photos and Videos": "",
47
+ "Pin to Conversation": "",
48
+ "Pinned by": "",
49
+ "Please enable access to your photos and videos so you can share them.": "",
50
+ "Please select a channel first": "",
51
+ "Reconnecting...": "",
52
+ "Reply": "",
53
53
  "Reply to Message": "Répondre au message",
54
- "Resend": "Renvoyer",
54
+ "Resend": "",
55
55
  "Search GIFs": "Rechercher des GIF",
56
- "Select More Photos": "Sélectionner plus de photos",
56
+ "Select More Photos": "",
57
57
  "Send a message": "Envoyer un message",
58
58
  "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
59
59
  "Slow mode ON": "Mode lent activé",
60
- "The message has been reported to a moderator.": "Le message a été signalé à un modérateur.",
61
- "Thread Reply": "Réponse à la discussion",
62
- "Unblock User": "Débloquer Utilisateur",
63
- "Unknown User": "Utilisateur inconnu",
64
- "Unmute User": "Activer le son de Utilisateur",
65
- "Unpin from Conversation": "Décrocher de la conversation",
66
- "Unread Messages": "Messages non lus",
67
- "Video": "Vidéo",
68
- "You": "Toi",
69
- "You can't send messages in this channel": "You can't send messages in this channel",
70
- "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} et {{ nonSelfUserLength }} autres sont en train d'écrire",
71
- "{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
72
- "{{ replyCount }} Replies": "{{ replyCount }} Réponses",
73
- "{{ replyCount }} Thread Replies": "{{replyCount}} Réponses à la discussion",
74
- "{{ user }} is typing": "{{ user }} est en train d'écrire",
75
- "🏙 Attachment...": "🏙 Pièce jointe..."
60
+ "The message has been reported to a moderator.": "",
61
+ "Thread Reply": "",
62
+ "Unblock User": "",
63
+ "Unknown User": "",
64
+ "Unmute User": "",
65
+ "Unpin from Conversation": "",
66
+ "Unread Messages": "",
67
+ "Video": "",
68
+ "You": "",
69
+ "You can't send messages in this channel": "",
70
+ "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
71
+ "{{ index }} of {{ photoLength }}": "",
72
+ "{{ replyCount }} Replies": "",
73
+ "{{ replyCount }} Thread Replies": "",
74
+ "{{ user }} is typing": "",
75
+ "🏙 Attachment...": ""
76
76
  }
@@ -1,76 +1,76 @@
1
1
  {
2
- "1 Reply": "1 रिप्लाई",
3
- "1 Thread Reply": "1 धागा उत्तर",
4
- "Allow access to your Gallery": "अपनी गैलरी तक पहुँचने की अनुमति दें",
5
- "Allow camera access in device settings": "डिवाइस सेटिंग्स में कैमरा एक्सेस की अनुमति दें",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Allow camera access in device settings": "",
6
6
  "Also send to channel": "चैनल को भी भेजें",
7
- "Are you sure you want to permanently delete this message?": "क्या आप वाकई इस संदेश को स्थायी रूप से हटाना चाहते हैं?",
8
- "Block User": "उपयोगकर्ता को रोक देना, ब्लॉक यूजर",
9
- "Cancel": "रद्द करें",
10
- "Cannot Flag Message": "मैसेज फ्लैग नहीं किया जा सकता है",
11
- "Copy Message": "संदेश की प्रतिलिपि बनाएँ",
12
- "Delete": "हटाएं",
13
- "Delete Message": "मैसेज को डिलीट करे",
14
- "Device camera is used to take photos or videos.": "डिवाइस कैमरे का उपयोग फ़ोटो या वीडियो लेने के लिए किया जाता है।",
15
- "Do you want to send a copy of this message to a moderator for further investigation?": "क्या आप इस संदेश की एक प्रति आगे की जाँच के लिए किसी मॉडरेटर को भेजना चाहते हैं?",
16
- "Edit Message": "मैसेज में बदलाव करे",
17
- "Editing Message": "मैसेज बदला जा रहा है",
18
- "Emoji matching": "इमोजी मिलान",
19
- "Empty message...": "खाली संदेश...",
20
- "Error loading": "लोड होने मे त्रुटि",
21
- "Error loading channel list...": "चैनल सूची लोड करने में त्रुटि...",
22
- "Error loading messages for this channel...": "इस चैनल के लिए मेसेजेस लोड करने में त्रुटि हुई...",
23
- "Error while loading, please reload/refresh": "एरर, रिफ्रेश करे",
24
- "File type not supported": "फ़ाइल प्रकार समर्थित नहीं है",
25
- "Flag": "झंडा",
26
- "Flag Message": "झंडा संदेश",
27
- "Flag action failed either due to a network issue or the message is already flagged": "फ़्लैग कार्रवाई या तो नेटवर्क समस्या के कारण विफल हो गई या संदेश पहले से फ़्लैग किया गया है।",
28
- "How about sending your first message to a friend?": "किसी मित्र को अपना पहला संदेश भेजने के बारे में क्या ख़याल है?",
29
- "Instant Commands": "त्वरित कमांड",
30
- "Let's start chatting!": "आइए चैट करना शुरू करें!",
7
+ "Are you sure you want to permanently delete this message?": "",
8
+ "Block User": "",
9
+ "Cancel": "",
10
+ "Cannot Flag Message": "",
11
+ "Copy Message": "",
12
+ "Delete": "",
13
+ "Delete Message": "",
14
+ "Device camera is used to take photos or videos.": "",
15
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
16
+ "Edit Message": "",
17
+ "Editing Message": "",
18
+ "Emoji matching": "",
19
+ "Empty message...": "",
20
+ "Error loading": "",
21
+ "Error loading channel list...": "",
22
+ "Error loading messages for this channel...": "",
23
+ "Error while loading, please reload/refresh": "",
24
+ "File type not supported": "",
25
+ "Flag": "",
26
+ "Flag Message": "",
27
+ "Flag action failed either due to a network issue or the message is already flagged": "",
28
+ "How about sending your first message to a friend?": "",
29
+ "Instant Commands": "",
30
+ "Let's start chatting!": "",
31
31
  "Links are disabled": "लिंक अक्षम हैं",
32
- "Loading channels...": "चैनल लोड हो रहे हैं...",
33
- "Loading messages...": "मेसेजस लोड हो रहे हैं...",
34
- "Loading...": "लोड हो रहा है...",
32
+ "Loading channels...": "",
33
+ "Loading messages...": "",
34
+ "Loading...": "",
35
35
  "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "अधिकतम फ़ाइल आकार अपलोड सीमा पूरी हो गई। कृपया {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} एमबी से नीचे की फ़ाइल अपलोड करें।",
36
- "Message Reactions": "संदेश प्रतिक्रियाएँ",
37
- "Message deleted": "मैसेज हटा दिया गया",
38
- "Message flagged": "संदेश को ध्वजांकित किया गया",
39
- "Mute User": "उपयोगकर्ता को म्यूट करें",
40
- "Not supported": "समर्थित नहीं",
41
- "Nothing yet...": "कोई मैसेज नहीं है...",
42
- "Ok": "ठीक",
36
+ "Message Reactions": "",
37
+ "Message deleted": "",
38
+ "Message flagged": "",
39
+ "Mute User": "",
40
+ "Not supported": "",
41
+ "Nothing yet...": "",
42
+ "Ok": "",
43
43
  "Only visible to you": "केवल आपको दिखाई दे रहा है",
44
- "Open Settings": "सेटिंग्स खोलें",
45
- "Photo": "तस्वीर",
46
- "Photos and Videos": "तस्वीरें और वीडियों",
47
- "Pin to Conversation": "बातचीत में पिन करें",
48
- "Pinned by": "द्वारा पिन किया गया",
49
- "Please enable access to your photos and videos so you can share them.": "कृपया अपनी फ़ोटो और वीडियो तक पहुंच सक्षम करें ताकि आप उन्हें साझा कर सकें।",
50
- "Please select a channel first": "कृपया पहले एक चैनल चुनें",
51
- "Reconnecting...": "पुनः कनेक्ट हो...",
52
- "Reply": "मैसेज को रिप्लाई करे",
44
+ "Open Settings": "",
45
+ "Photo": "",
46
+ "Photos and Videos": "",
47
+ "Pin to Conversation": "",
48
+ "Pinned by": "",
49
+ "Please enable access to your photos and videos so you can share them.": "",
50
+ "Please select a channel first": "",
51
+ "Reconnecting...": "",
52
+ "Reply": "",
53
53
  "Reply to Message": "संदेश का जवाब दें",
54
- "Resend": "पुन: भेजें",
54
+ "Resend": "",
55
55
  "Search GIFs": "GIF खोजें",
56
- "Select More Photos": "अधिक फ़ोटो चुनें",
56
+ "Select More Photos": "",
57
57
  "Send a message": "एक संदेश भेजें",
58
58
  "Sending links is not allowed in this conversation": "इस बातचीत में लिंक भेजने की अनुमति नहीं है",
59
59
  "Slow mode ON": "स्लो मोड चालू",
60
- "The message has been reported to a moderator.": "संदेश एक मॉडरेटर को सूचित किया गया है।",
61
- "Thread Reply": "धागा जवाब",
62
- "Unblock User": "उपयोगकर्ता को अनब्लॉक करें",
63
- "Unknown User": "अज्ञात उपयोगकर्ता",
64
- "Unmute User": "उपयोगकर्ता को अनम्यूट करें",
65
- "Unpin from Conversation": "बातचीत से अनपिन करें",
66
- "Unread Messages": "अपठित संदेश",
67
- "Video": "वीडियो",
68
- "You": "आप",
69
- "You can't send messages in this channel": "आप इस चैनल में संदेश नहीं भेज सकते",
70
- "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} और {{ nonSelfUserLength }} अधिक टाइप कर रहे हैं",
71
- "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
72
- "{{ replyCount }} Replies": "{{ replyCount }} रिप्लाई",
73
- "{{ replyCount }} Thread Replies": "{{ replyCount }}} थ्रेड उत्तर",
74
- "{{ user }} is typing": "{{ user }} टाइप कर रहा है",
75
- "🏙 Attachment...": "🏙 अटैचमेंट..."
60
+ "The message has been reported to a moderator.": "",
61
+ "Thread Reply": "",
62
+ "Unblock User": "",
63
+ "Unknown User": "",
64
+ "Unmute User": "",
65
+ "Unpin from Conversation": "",
66
+ "Unread Messages": "",
67
+ "Video": "",
68
+ "You": "",
69
+ "You can't send messages in this channel": "",
70
+ "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
71
+ "{{ index }} of {{ photoLength }}": "",
72
+ "{{ replyCount }} Replies": "",
73
+ "{{ replyCount }} Thread Replies": "",
74
+ "{{ user }} is typing": "",
75
+ "🏙 Attachment...": ""
76
76
  }