stream-chat-react-native-core 4.12.0-beta.4 → 4.12.0-beta.5

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 (66) hide show
  1. package/lib/commonjs/components/Attachment/AudioAttachment.js +27 -56
  2. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +31 -14
  4. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +14 -14
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +0 -2
  8. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  9. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  10. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  11. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +31 -16
  12. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  13. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +14 -13
  14. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  15. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -2
  16. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  17. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +0 -2
  18. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  19. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  20. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  21. package/lib/commonjs/version.json +1 -1
  22. package/lib/module/components/Attachment/AudioAttachment.js +27 -56
  23. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  24. package/lib/module/components/Attachment/FileAttachmentGroup.js +31 -14
  25. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  26. package/lib/module/components/Channel/Channel.js +14 -14
  27. package/lib/module/components/Channel/Channel.js.map +1 -1
  28. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +0 -2
  29. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  30. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  31. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  32. package/lib/module/components/MessageInput/FileUploadPreview.js +31 -16
  33. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  34. package/lib/module/components/MessageOverlay/MessageOverlay.js +14 -13
  35. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  36. package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -2
  37. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  38. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +0 -2
  39. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  40. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  41. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  42. package/lib/module/version.json +1 -1
  43. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +4 -7
  44. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +1 -2
  45. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  46. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  47. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  48. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  49. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  50. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -4
  51. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  52. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -0
  53. package/package.json +1 -1
  54. package/src/components/Attachment/AudioAttachment.tsx +72 -116
  55. package/src/components/Attachment/FileAttachmentGroup.tsx +32 -11
  56. package/src/components/Channel/Channel.tsx +2 -1
  57. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +0 -2
  58. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  59. package/src/components/MessageInput/FileUploadPreview.tsx +29 -12
  60. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +13 -3
  61. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +13 -3
  62. package/src/components/MessageOverlay/MessageOverlay.tsx +1 -0
  63. package/src/contexts/messageInputContext/MessageInputContext.tsx +0 -4
  64. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +0 -2
  65. package/src/contexts/messagesContext/MessagesContext.tsx +3 -0
  66. package/src/version.json +1 -1
@@ -100,9 +100,7 @@ var styles = _reactNative.StyleSheet.create({
100
100
  var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
101
101
  var soundRef = _react["default"].useRef(null);
102
102
 
103
- var fileUploads = props.fileUploads,
104
- index = props.index,
105
- item = props.item,
103
+ var item = props.item,
106
104
  onLoad = props.onLoad,
107
105
  onPlayPause = props.onPlayPause,
108
106
  onProgress = props.onProgress;
@@ -355,16 +353,13 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
355
353
  accent_blue = _useTheme$theme$color.accent_blue,
356
354
  black = _useTheme$theme$color.black,
357
355
  grey_dark = _useTheme$theme$color.grey_dark,
358
- grey_whisper = _useTheme$theme$color.grey_whisper,
359
356
  static_black = _useTheme$theme$color.static_black,
360
357
  static_white = _useTheme$theme$color.static_white,
361
- white = _useTheme$theme$color.white,
362
358
  _useTheme$theme$messa = _useTheme$theme.messageInput.fileUploadPreview,
363
359
  _useTheme$theme$messa2 = _useTheme$theme$messa.audioAttachment,
364
360
  progressControlView = _useTheme$theme$messa2.progressControlView,
365
361
  progressDurationText = _useTheme$theme$messa2.progressDurationText,
366
362
  roundedView = _useTheme$theme$messa2.roundedView,
367
- fileContainer = _useTheme$theme$messa.fileContainer,
368
363
  fileContentContainer = _useTheme$theme$messa.fileContentContainer,
369
364
  filenameText = _useTheme$theme$messa.filenameText,
370
365
  fileTextContainer = _useTheme$theme$messa.fileTextContainer;
@@ -373,27 +368,12 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
373
368
  var progressDuration = progressValueInSeconds ? progressValueInSeconds / 3600 >= 1 ? _dayjs["default"].duration(progressValueInSeconds, 'second').format('HH:mm:ss') : _dayjs["default"].duration(progressValueInSeconds, 'second').format('mm:ss') : '00:00';
374
369
  var lastIndexOfDot = item.file.name.lastIndexOf('.');
375
370
  return _react["default"].createElement(_reactNative.View, {
376
- style: [styles.fileContainer, index === fileUploads.length - 1 ? {
377
- marginBottom: 0
378
- } : {}, {
379
- backgroundColor: white,
380
- borderColor: grey_whisper,
381
- width: -16
382
- }, fileContainer],
383
- testID: "audio-attachment-upload-preview",
384
- __self: _this,
385
- __source: {
386
- fileName: _jsxFileName,
387
- lineNumber: 239,
388
- columnNumber: 5
389
- }
390
- }, _react["default"].createElement(_reactNative.View, {
391
371
  style: [styles.fileContentContainer, fileContentContainer],
392
372
  __self: _this,
393
373
  __source: {
394
374
  fileName: _jsxFileName,
395
- lineNumber: 256,
396
- columnNumber: 7
375
+ lineNumber: 222,
376
+ columnNumber: 5
397
377
  }
398
378
  }, _react["default"].createElement(_reactNative.TouchableOpacity, {
399
379
  accessibilityLabel: "Play Pause Button",
@@ -407,8 +387,8 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
407
387
  __self: _this,
408
388
  __source: {
409
389
  fileName: _jsxFileName,
410
- lineNumber: 257,
411
- columnNumber: 9
390
+ lineNumber: 223,
391
+ columnNumber: 7
412
392
  }
413
393
  }, item.paused ? _react["default"].createElement(_icons.Play, {
414
394
  height: 24,
@@ -417,8 +397,8 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
417
397
  __self: _this,
418
398
  __source: {
419
399
  fileName: _jsxFileName,
420
- lineNumber: 267,
421
- columnNumber: 13
400
+ lineNumber: 233,
401
+ columnNumber: 11
422
402
  }
423
403
  }) : _react["default"].createElement(_icons.Pause, {
424
404
  height: 24,
@@ -427,16 +407,16 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
427
407
  __self: _this,
428
408
  __source: {
429
409
  fileName: _jsxFileName,
430
- lineNumber: 269,
431
- columnNumber: 13
410
+ lineNumber: 235,
411
+ columnNumber: 11
432
412
  }
433
413
  })), _react["default"].createElement(_reactNative.View, {
434
414
  style: [styles.fileTextContainer, fileTextContainer],
435
415
  __self: _this,
436
416
  __source: {
437
417
  fileName: _jsxFileName,
438
- lineNumber: 272,
439
- columnNumber: 9
418
+ lineNumber: 238,
419
+ columnNumber: 7
440
420
  }
441
421
  }, _react["default"].createElement(_reactNative.Text, {
442
422
  accessibilityLabel: "File Name",
@@ -452,8 +432,8 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
452
432
  __self: _this,
453
433
  __source: {
454
434
  fileName: _jsxFileName,
455
- lineNumber: 273,
456
- columnNumber: 11
435
+ lineNumber: 239,
436
+ columnNumber: 9
457
437
  }
458
438
  }, item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)), _react["default"].createElement(_reactNative.View, {
459
439
  style: {
@@ -464,8 +444,8 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
464
444
  __self: _this,
465
445
  __source: {
466
446
  fileName: _jsxFileName,
467
- lineNumber: 292,
468
- columnNumber: 11
447
+ lineNumber: 258,
448
+ columnNumber: 9
469
449
  }
470
450
  }, _native.Sound.Player && _react["default"].createElement(_native.Sound.Player, {
471
451
  onEnd: handleEnd,
@@ -478,8 +458,8 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
478
458
  __self: _this,
479
459
  __source: {
480
460
  fileName: _jsxFileName,
481
- lineNumber: 301,
482
- columnNumber: 15
461
+ lineNumber: 267,
462
+ columnNumber: 13
483
463
  }
484
464
  }), _react["default"].createElement(_reactNative.Text, {
485
465
  style: [styles.progressDurationText, {
@@ -488,16 +468,16 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
488
468
  __self: _this,
489
469
  __source: {
490
470
  fileName: _jsxFileName,
491
- lineNumber: 311,
492
- columnNumber: 13
471
+ lineNumber: 277,
472
+ columnNumber: 11
493
473
  }
494
474
  }, progressDuration), _react["default"].createElement(_reactNative.View, {
495
475
  style: [styles.progressControlView, progressControlView],
496
476
  __self: _this,
497
477
  __source: {
498
478
  fileName: _jsxFileName,
499
- lineNumber: 314,
500
- columnNumber: 13
479
+ lineNumber: 280,
480
+ columnNumber: 11
501
481
  }
502
482
  }, _react["default"].createElement(_ProgressControl.ProgressControl, {
503
483
  duration: item.duration,
@@ -510,28 +490,19 @@ var AudioAttachmentWithContext = function AudioAttachmentWithContext(props) {
510
490
  __self: _this,
511
491
  __source: {
512
492
  fileName: _jsxFileName,
513
- lineNumber: 315,
514
- columnNumber: 15
493
+ lineNumber: 281,
494
+ columnNumber: 13
515
495
  }
516
- }))))));
496
+ })))));
517
497
  };
518
498
 
519
499
  var AudioAttachment = function AudioAttachment(props) {
520
- var _useMessageInputConte = (0, _contexts.useMessageInputContext)(),
521
- fileUploads = _useMessageInputConte.fileUploads,
522
- removeFile = _useMessageInputConte.removeFile,
523
- uploadFile = _useMessageInputConte.uploadFile;
524
-
525
- return _react["default"].createElement(AudioAttachmentWithContext, (0, _extends2["default"])({
526
- fileUploads: fileUploads,
527
- removeFile: removeFile,
528
- uploadFile: uploadFile
529
- }, props, {
500
+ return _react["default"].createElement(AudioAttachmentWithContext, (0, _extends2["default"])({}, props, {
530
501
  __self: _this,
531
502
  __source: {
532
503
  fileName: _jsxFileName,
533
- lineNumber: 354,
534
- columnNumber: 10
504
+ lineNumber: 310,
505
+ columnNumber: 3
535
506
  }
536
507
  }));
537
508
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["AudioAttachment.tsx"],"names":["dayjs","extend","duration","FILE_PREVIEW_HEIGHT","styles","StyleSheet","create","fileContainer","borderRadius","borderWidth","flexDirection","height","paddingLeft","paddingRight","fileContentContainer","filenameText","fontSize","fontWeight","fileTextContainer","justifyContent","flatList","marginBottom","maxHeight","overlay","marginLeft","marginRight","progressControlView","flex","progressDurationText","roundedView","alignItems","alignSelf","display","elevation","shadowOffset","width","shadowOpacity","shadowRadius","AudioAttachmentWithContext","props","soundRef","React","useRef","fileUploads","index","item","onLoad","onPlayPause","onProgress","handleLoad","payload","id","handleProgress","data","currentTime","seekableDuration","handlePlayPause","isPausedStatusAvailable","current","undefined","progress","seek","setPositionAsync","paused","playAsync","pauseAsync","handleProgressDrag","position","handleEnd","onPlaybackStatusUpdate","playbackStatus","isLoaded","error","console","log","durationMillis","positionMillis","isPlaying","isBuffering","didJustFinish","isLooping","Sound","Player","initiateSound","file","uri","initializeSound","stopAsync","unloadAsync","initalPlayPause","theme","colors","accent_blue","black","grey_dark","grey_whisper","static_black","static_white","white","messageInput","fileUploadPreview","audioAttachment","progressValueInSeconds","progressDuration","format","lastIndexOfDot","name","lastIndexOf","length","backgroundColor","borderColor","shadowColor","color","I18nManager","isRTL","writingDirection","slice","AudioAttachment","removeFile","uploadFile","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport { I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n useTheme,\n} from '../../contexts';\nimport { Pause, Play } from '../../icons';\nimport {\n PlaybackStatus,\n Sound,\n SoundReturnType,\n VideoPayloadData,\n VideoProgressData,\n} from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ProgressControl } from '../ProgressControl/ProgressControl';\n\ndayjs.extend(duration);\n\nconst FILE_PREVIEW_HEIGHT = 70;\n\nconst styles = StyleSheet.create({\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row', paddingRight: 40 },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingLeft: 10,\n },\n fileTextContainer: {\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n progressControlView: {\n flex: 8,\n },\n progressDurationText: {\n flex: 4,\n fontSize: 12,\n paddingLeft: 10,\n paddingRight: 8,\n },\n roundedView: {\n alignItems: 'center',\n alignSelf: 'center',\n borderRadius: 50,\n display: 'flex',\n elevation: 4,\n height: 36,\n justifyContent: 'center',\n shadowOffset: {\n height: 2,\n width: 0,\n },\n shadowOpacity: 0.23,\n shadowRadius: 2.62,\n width: 36,\n },\n});\n\nexport type AudioAttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile'\n> & {\n index: number;\n item: Omit<FileUpload, 'state'>;\n onLoad: (index: string, duration: number) => void;\n onPlayPause: (index: string, pausedStatus?: boolean) => void;\n onProgress: (index: string, currentTime?: number, hasEnd?: boolean) => void;\n testID?: string;\n};\n\nconst AudioAttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AudioAttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const soundRef = React.useRef<SoundReturnType | null>(null);\n const { fileUploads, index, item, onLoad, onPlayPause, onProgress } = props;\n\n const handleLoad = (payload: VideoPayloadData) => {\n onLoad(item.id, payload.duration);\n };\n\n const handleProgress = (data: VideoProgressData) => {\n if (data.currentTime && data.seekableDuration) {\n onProgress(item.id, data.currentTime);\n }\n };\n\n const handlePlayPause = async (isPausedStatusAvailable?: boolean) => {\n if (soundRef.current) {\n if (isPausedStatusAvailable === undefined) {\n if (item.progress === 1) {\n // For native CLI\n if (soundRef.current.seek) soundRef.current.seek(0);\n // For expo CLI\n if (soundRef.current.setPositionAsync) soundRef.current.setPositionAsync(0);\n }\n if (item.paused) {\n if (soundRef.current.playAsync) await soundRef.current.playAsync();\n onPlayPause(item.id, false);\n } else {\n if (soundRef.current.pauseAsync) await soundRef.current.pauseAsync();\n onPlayPause(item.id, true);\n }\n } else {\n onPlayPause(item.id, isPausedStatusAvailable);\n }\n }\n };\n\n const handleProgressDrag = async (position: number) => {\n onProgress(item.id, position);\n if (soundRef.current?.seek) soundRef.current.seek(position);\n if (soundRef.current?.setPositionAsync) {\n await soundRef.current.setPositionAsync(position * 1000);\n }\n };\n\n const handleEnd = () => {\n onPlayPause(item.id, true);\n onProgress(item.id, item.duration, true);\n };\n\n const onPlaybackStatusUpdate = (playbackStatus: PlaybackStatus) => {\n if (!playbackStatus.isLoaded) {\n // Update your UI for the unloaded state\n if (playbackStatus.error) {\n console.log(`Encountered a fatal error during playback: ${playbackStatus.error}`);\n }\n } else {\n const { durationMillis, positionMillis } = playbackStatus;\n onLoad(item.id, durationMillis / 1000);\n // Update your UI for the loaded state\n if (playbackStatus.isPlaying) {\n // Update your UI for the playing state\n onProgress(item.id, positionMillis / 1000);\n } else {\n // Update your UI for the paused state\n }\n\n if (playbackStatus.isBuffering) {\n // Update your UI for the buffering state\n }\n\n if (playbackStatus.didJustFinish && !playbackStatus.isLooping) {\n // The player has just finished playing and will stop. Maybe you want to play something else?\n // status: opposite of pause,says i am playing\n handleEnd();\n }\n }\n };\n\n useEffect(() => {\n if (Sound.Player === null) {\n const initiateSound = async () => {\n if (item && item.file && item.file.uri) {\n soundRef.current = await Sound.initializeSound(\n { uri: item.file.uri },\n {},\n onPlaybackStatusUpdate,\n );\n }\n };\n initiateSound();\n }\n\n return () => {\n if (soundRef.current?.stopAsync && soundRef.current.unloadAsync) {\n soundRef.current.stopAsync();\n soundRef.current.unloadAsync();\n }\n };\n }, []);\n\n // This is needed for expo applications where the rerender doesn't occur on time thefore you need to update the state of the sound.\n useEffect(() => {\n const initalPlayPause = async () => {\n if (soundRef.current) {\n if (item.paused) {\n if (soundRef.current.pauseAsync) await soundRef.current.pauseAsync();\n } else {\n if (soundRef.current.playAsync) await soundRef.current.playAsync();\n }\n }\n };\n if (!Sound.Player) {\n initalPlayPause();\n }\n }, [item.paused]);\n\n const {\n theme: {\n colors: { accent_blue, black, grey_dark, grey_whisper, static_black, static_white, white },\n messageInput: {\n fileUploadPreview: {\n audioAttachment: { progressControlView, progressDurationText, roundedView },\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n },\n },\n },\n } = useTheme();\n\n const progressValueInSeconds = (item.duration as number) * (item.progress as number);\n\n const progressDuration = progressValueInSeconds\n ? progressValueInSeconds / 3600 >= 1\n ? dayjs.duration(progressValueInSeconds, 'second').format('HH:mm:ss')\n : dayjs.duration(progressValueInSeconds, 'second').format('mm:ss')\n : '00:00';\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n backgroundColor: white,\n borderColor: grey_whisper,\n width: -16,\n },\n fileContainer,\n ]}\n testID='audio-attachment-upload-preview'\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <TouchableOpacity\n accessibilityLabel='Play Pause Button'\n onPress={() => handlePlayPause()}\n style={[\n styles.roundedView,\n roundedView,\n { backgroundColor: static_white, shadowColor: black },\n ]}\n >\n {item.paused ? (\n <Play height={24} pathFill={static_black} width={24} />\n ) : (\n <Pause height={24} pathFill={static_black} width={24} />\n )}\n </TouchableOpacity>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n accessibilityLabel='File Name'\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n <View\n style={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n {/* <ExpoSoundPlayer filePaused={!!item.paused} soundRef={soundRef} /> */}\n {Sound.Player && (\n <Sound.Player\n onEnd={handleEnd}\n onLoad={handleLoad}\n onProgress={handleProgress}\n paused={item.paused as boolean}\n soundRef={soundRef}\n testID='sound-player'\n uri={item.file.uri}\n />\n )}\n <Text style={[styles.progressDurationText, { color: grey_dark }, progressDurationText]}>\n {progressDuration}\n </Text>\n <View style={[styles.progressControlView, progressControlView]}>\n <ProgressControl\n duration={item.duration as number}\n filledColor={accent_blue}\n onPlayPause={handlePlayPause}\n onProgressDrag={handleProgressDrag}\n progress={item.progress as number}\n testID='progress-control'\n width={120}\n />\n </View>\n </View>\n </View>\n </View>\n </View>\n );\n};\n\nexport type AudioAttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<AudioAttachmentPropsWithContext<StreamChatGenerics>> & {\n index: number;\n item: Omit<FileUpload, 'state'>;\n onLoad: (index: string, duration: number) => void;\n onPlayPause: (index: string, pausedStatus?: boolean) => void;\n onProgress: (index: string, currentTime?: number, hasEnd?: boolean) => void;\n testID: string;\n};\n\n/**\n * AudioAttachment\n * UI Component to preview the audio files\n */\nexport const AudioAttachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AudioAttachmentProps<StreamChatGenerics>,\n) => {\n const { fileUploads, removeFile, uploadFile } = useMessageInputContext<StreamChatGenerics>();\n\n return <AudioAttachmentWithContext {...{ fileUploads, removeFile, uploadFile }} {...props} />;\n};\n\nAudioAttachment.displayName = 'AudioAttachment{messageInput{autoAttachment}}';\n"]}
1
+ {"version":3,"sources":["AudioAttachment.tsx"],"names":["dayjs","extend","duration","FILE_PREVIEW_HEIGHT","styles","StyleSheet","create","fileContainer","borderRadius","borderWidth","flexDirection","height","paddingLeft","paddingRight","fileContentContainer","filenameText","fontSize","fontWeight","fileTextContainer","justifyContent","flatList","marginBottom","maxHeight","overlay","marginLeft","marginRight","progressControlView","flex","progressDurationText","roundedView","alignItems","alignSelf","display","elevation","shadowOffset","width","shadowOpacity","shadowRadius","AudioAttachmentWithContext","props","soundRef","React","useRef","item","onLoad","onPlayPause","onProgress","handleLoad","payload","id","handleProgress","data","currentTime","seekableDuration","handlePlayPause","isPausedStatusAvailable","current","undefined","progress","seek","setPositionAsync","paused","playAsync","pauseAsync","handleProgressDrag","position","handleEnd","onPlaybackStatusUpdate","playbackStatus","isLoaded","error","console","log","durationMillis","positionMillis","isPlaying","isBuffering","didJustFinish","isLooping","Sound","Player","initiateSound","file","uri","initializeSound","stopAsync","unloadAsync","initalPlayPause","theme","colors","accent_blue","black","grey_dark","static_black","static_white","messageInput","fileUploadPreview","audioAttachment","progressValueInSeconds","progressDuration","format","lastIndexOfDot","name","lastIndexOf","backgroundColor","shadowColor","color","I18nManager","isRTL","writingDirection","slice","AudioAttachment","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport { I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport { FileUpload, useTheme } from '../../contexts';\nimport { Pause, Play } from '../../icons';\nimport {\n PlaybackStatus,\n Sound,\n SoundReturnType,\n VideoPayloadData,\n VideoProgressData,\n} from '../../native';\nimport { ProgressControl } from '../ProgressControl/ProgressControl';\n\ndayjs.extend(duration);\n\nconst FILE_PREVIEW_HEIGHT = 70;\n\nconst styles = StyleSheet.create({\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row', paddingRight: 40 },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingLeft: 10,\n },\n fileTextContainer: {\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n progressControlView: {\n flex: 8,\n },\n progressDurationText: {\n flex: 4,\n fontSize: 12,\n paddingLeft: 10,\n paddingRight: 8,\n },\n roundedView: {\n alignItems: 'center',\n alignSelf: 'center',\n borderRadius: 50,\n display: 'flex',\n elevation: 4,\n height: 36,\n justifyContent: 'center',\n shadowOffset: {\n height: 2,\n width: 0,\n },\n shadowOpacity: 0.23,\n shadowRadius: 2.62,\n width: 36,\n },\n});\n\nexport type AudioAttachmentPropsWithContext = {\n item: Omit<FileUpload, 'state'>;\n onLoad: (index: string, duration: number) => void;\n onPlayPause: (index: string, pausedStatus?: boolean) => void;\n onProgress: (index: string, currentTime?: number, hasEnd?: boolean) => void;\n testID?: string;\n};\n\nconst AudioAttachmentWithContext = (props: AudioAttachmentPropsWithContext) => {\n const soundRef = React.useRef<SoundReturnType | null>(null);\n const { item, onLoad, onPlayPause, onProgress } = props;\n\n const handleLoad = (payload: VideoPayloadData) => {\n onLoad(item.id, payload.duration);\n };\n\n const handleProgress = (data: VideoProgressData) => {\n if (data.currentTime && data.seekableDuration) {\n onProgress(item.id, data.currentTime);\n }\n };\n\n const handlePlayPause = async (isPausedStatusAvailable?: boolean) => {\n if (soundRef.current) {\n if (isPausedStatusAvailable === undefined) {\n if (item.progress === 1) {\n // For native CLI\n if (soundRef.current.seek) soundRef.current.seek(0);\n // For expo CLI\n if (soundRef.current.setPositionAsync) soundRef.current.setPositionAsync(0);\n }\n if (item.paused) {\n if (soundRef.current.playAsync) await soundRef.current.playAsync();\n onPlayPause(item.id, false);\n } else {\n if (soundRef.current.pauseAsync) await soundRef.current.pauseAsync();\n onPlayPause(item.id, true);\n }\n } else {\n onPlayPause(item.id, isPausedStatusAvailable);\n }\n }\n };\n\n const handleProgressDrag = async (position: number) => {\n onProgress(item.id, position);\n if (soundRef.current?.seek) soundRef.current.seek(position);\n if (soundRef.current?.setPositionAsync) {\n await soundRef.current.setPositionAsync(position * 1000);\n }\n };\n\n const handleEnd = () => {\n onPlayPause(item.id, true);\n onProgress(item.id, item.duration, true);\n };\n\n const onPlaybackStatusUpdate = (playbackStatus: PlaybackStatus) => {\n if (!playbackStatus.isLoaded) {\n // Update your UI for the unloaded state\n if (playbackStatus.error) {\n console.log(`Encountered a fatal error during playback: ${playbackStatus.error}`);\n }\n } else {\n const { durationMillis, positionMillis } = playbackStatus;\n onLoad(item.id, durationMillis / 1000);\n // Update your UI for the loaded state\n if (playbackStatus.isPlaying) {\n // Update your UI for the playing state\n onProgress(item.id, positionMillis / 1000);\n } else {\n // Update your UI for the paused state\n }\n\n if (playbackStatus.isBuffering) {\n // Update your UI for the buffering state\n }\n\n if (playbackStatus.didJustFinish && !playbackStatus.isLooping) {\n // The player has just finished playing and will stop. Maybe you want to play something else?\n // status: opposite of pause,says i am playing\n handleEnd();\n }\n }\n };\n\n useEffect(() => {\n if (Sound.Player === null) {\n const initiateSound = async () => {\n if (item && item.file && item.file.uri) {\n soundRef.current = await Sound.initializeSound(\n { uri: item.file.uri },\n {},\n onPlaybackStatusUpdate,\n );\n }\n };\n initiateSound();\n }\n\n return () => {\n if (soundRef.current?.stopAsync && soundRef.current.unloadAsync) {\n soundRef.current.stopAsync();\n soundRef.current.unloadAsync();\n }\n };\n }, []);\n\n // This is needed for expo applications where the rerender doesn't occur on time thefore you need to update the state of the sound.\n useEffect(() => {\n const initalPlayPause = async () => {\n if (soundRef.current) {\n if (item.paused) {\n if (soundRef.current.pauseAsync) await soundRef.current.pauseAsync();\n } else {\n if (soundRef.current.playAsync) await soundRef.current.playAsync();\n }\n }\n };\n if (!Sound.Player) {\n initalPlayPause();\n }\n }, [item.paused]);\n\n const {\n theme: {\n colors: { accent_blue, black, grey_dark, static_black, static_white },\n messageInput: {\n fileUploadPreview: {\n audioAttachment: { progressControlView, progressDurationText, roundedView },\n fileContentContainer,\n filenameText,\n fileTextContainer,\n },\n },\n },\n } = useTheme();\n\n const progressValueInSeconds = (item.duration as number) * (item.progress as number);\n\n const progressDuration = progressValueInSeconds\n ? progressValueInSeconds / 3600 >= 1\n ? dayjs.duration(progressValueInSeconds, 'second').format('HH:mm:ss')\n : dayjs.duration(progressValueInSeconds, 'second').format('mm:ss')\n : '00:00';\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <TouchableOpacity\n accessibilityLabel='Play Pause Button'\n onPress={() => handlePlayPause()}\n style={[\n styles.roundedView,\n roundedView,\n { backgroundColor: static_white, shadowColor: black },\n ]}\n >\n {item.paused ? (\n <Play height={24} pathFill={static_black} width={24} />\n ) : (\n <Pause height={24} pathFill={static_black} width={24} />\n )}\n </TouchableOpacity>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n accessibilityLabel='File Name'\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n <View\n style={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n {/* <ExpoSoundPlayer filePaused={!!item.paused} soundRef={soundRef} /> */}\n {Sound.Player && (\n <Sound.Player\n onEnd={handleEnd}\n onLoad={handleLoad}\n onProgress={handleProgress}\n paused={item.paused as boolean}\n soundRef={soundRef}\n testID='sound-player'\n uri={item.file.uri}\n />\n )}\n <Text style={[styles.progressDurationText, { color: grey_dark }, progressDurationText]}>\n {progressDuration}\n </Text>\n <View style={[styles.progressControlView, progressControlView]}>\n <ProgressControl\n duration={item.duration as number}\n filledColor={accent_blue}\n onPlayPause={handlePlayPause}\n onProgressDrag={handleProgressDrag}\n progress={item.progress as number}\n testID='progress-control'\n width={120}\n />\n </View>\n </View>\n </View>\n </View>\n );\n};\n\nexport type AudioAttachmentProps = Partial<AudioAttachmentPropsWithContext> & {\n item: Omit<FileUpload, 'state'>;\n onLoad: (index: string, duration: number) => void;\n onPlayPause: (index: string, pausedStatus?: boolean) => void;\n onProgress: (index: string, currentTime?: number, hasEnd?: boolean) => void;\n testID: string;\n};\n\n/**\n * AudioAttachment\n * UI Component to preview the audio files\n */\nexport const AudioAttachment = (props: AudioAttachmentProps) => (\n <AudioAttachmentWithContext {...props} />\n);\n\nAudioAttachment.displayName = 'AudioAttachment{messageInput{autoAttachment}}';\n"]}
@@ -19,8 +19,6 @@ var _Attachment = require("./Attachment");
19
19
 
20
20
  var _MessageContext = require("../../contexts/messageContext/MessageContext");
21
21
 
22
- var _MessageInputContext = require("../../contexts/messageInputContext/MessageInputContext");
23
-
24
22
  var _MessagesContext = require("../../contexts/messagesContext/MessagesContext");
25
23
 
26
24
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
@@ -34,9 +32,20 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
34
32
 
35
33
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
36
34
 
35
+ var FILE_PREVIEW_HEIGHT = 60;
36
+
37
37
  var styles = _reactNative.StyleSheet.create({
38
38
  container: {
39
39
  padding: 4
40
+ },
41
+ fileContainer: {
42
+ borderRadius: 12,
43
+ borderWidth: 1,
44
+ flexDirection: 'row',
45
+ height: FILE_PREVIEW_HEIGHT,
46
+ justifyContent: 'space-between',
47
+ paddingLeft: 8,
48
+ paddingRight: 8
40
49
  }
41
50
  });
42
51
 
@@ -104,14 +113,18 @@ var FileAttachmentGroupWithContext = function FileAttachmentGroupWithContext(pro
104
113
  };
105
114
 
106
115
  var _useTheme = (0, _ThemeContext.useTheme)(),
107
- container = _useTheme.theme.messageSimple.fileAttachmentGroup.container;
116
+ _useTheme$theme = _useTheme.theme,
117
+ _useTheme$theme$color = _useTheme$theme.colors,
118
+ grey_whisper = _useTheme$theme$color.grey_whisper,
119
+ white = _useTheme$theme$color.white,
120
+ container = _useTheme$theme.messageSimple.fileAttachmentGroup.container;
108
121
 
109
122
  return _react["default"].createElement(_reactNative.View, {
110
123
  style: [styles.container, container, stylesProp.container],
111
124
  __self: _this,
112
125
  __source: {
113
126
  fileName: _jsxFileName,
114
- lineNumber: 123,
127
+ lineNumber: 131,
115
128
  columnNumber: 5
116
129
  }
117
130
  }, filesToDisplay.map(function (file, index) {
@@ -123,19 +136,25 @@ var FileAttachmentGroupWithContext = function FileAttachmentGroupWithContext(pro
123
136
  __self: _this,
124
137
  __source: {
125
138
  fileName: _jsxFileName,
126
- lineNumber: 125,
139
+ lineNumber: 133,
127
140
  columnNumber: 9
128
141
  }
129
142
  }, file.type === 'audio' && (0, _native.isAudioPackageAvailable)() ? _react["default"].createElement(_reactNative.View, {
130
143
  accessibilityLabel: "audio-attachment-preview",
144
+ style: [styles.fileContainer, index === filesToDisplay.length - 1 ? {
145
+ marginBottom: 0
146
+ } : {}, {
147
+ backgroundColor: white,
148
+ borderColor: grey_whisper,
149
+ width: -16
150
+ }],
131
151
  __self: _this,
132
152
  __source: {
133
153
  fileName: _jsxFileName,
134
- lineNumber: 133,
154
+ lineNumber: 141,
135
155
  columnNumber: 13
136
156
  }
137
157
  }, _react["default"].createElement(AudioAttachment, {
138
- index: index,
139
158
  item: {
140
159
  duration: file.duration,
141
160
  file: {
@@ -153,7 +172,7 @@ var FileAttachmentGroupWithContext = function FileAttachmentGroupWithContext(pro
153
172
  __self: _this,
154
173
  __source: {
155
174
  fileName: _jsxFileName,
156
- lineNumber: 134,
175
+ lineNumber: 157,
157
176
  columnNumber: 15
158
177
  }
159
178
  })) : _react["default"].createElement(Attachment, {
@@ -161,7 +180,7 @@ var FileAttachmentGroupWithContext = function FileAttachmentGroupWithContext(pro
161
180
  __self: _this,
162
181
  __source: {
163
182
  fileName: _jsxFileName,
164
- lineNumber: 150,
183
+ lineNumber: 172,
165
184
  columnNumber: 13
166
185
  }
167
186
  }));
@@ -185,10 +204,8 @@ var FileAttachmentGroup = function FileAttachmentGroup(props) {
185
204
 
186
205
  var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(),
187
206
  _useMessagesContext$A = _useMessagesContext.Attachment,
188
- Attachment = _useMessagesContext$A === void 0 ? _Attachment.Attachment : _useMessagesContext$A;
189
-
190
- var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
191
- AudioAttachment = _useMessageInputConte.AudioAttachment;
207
+ Attachment = _useMessagesContext$A === void 0 ? _Attachment.Attachment : _useMessagesContext$A,
208
+ AudioAttachment = _useMessagesContext.AudioAttachment;
192
209
 
193
210
  var files = propFiles || contextFiles;
194
211
  if (!files.length) return null;
@@ -200,7 +217,7 @@ var FileAttachmentGroup = function FileAttachmentGroup(props) {
200
217
  __self: _this,
201
218
  __source: {
202
219
  fileName: _jsxFileName,
203
- lineNumber: 196,
220
+ lineNumber: 217,
204
221
  columnNumber: 5
205
222
  }
206
223
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["FileAttachmentGroup.tsx"],"names":["styles","StyleSheet","create","container","padding","FileAttachmentGroupWithContext","props","Attachment","AudioAttachment","files","messageId","stylesProp","filesToDisplay","setFilesToDisplay","map","file","duration","paused","progress","onLoad","index","prevFilesToDisplay","fileToDisplay","id","toString","onProgress","currentTime","hasEnd","prevFileUploads","fileUpload","onPlayPause","pausedStatus","theme","messageSimple","fileAttachmentGroup","paddingBottom","length","attachmentContainer","type","name","title","uri","asset_url","areEqual","prevProps","nextProps","prevFiles","nextFiles","MemoizedFileAttachmentGroup","React","memo","FileAttachmentGroup","propFiles","contextFiles","AttachmentDefault","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { Attachment as AttachmentDefault } from './Attachment';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isAudioPackageAvailable } from '../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n padding: 4,\n },\n});\n\nexport type FileAttachmentGroupPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageContextValue<StreamChatGenerics>, 'files'> &\n Pick<MessageInputContextValue<StreamChatGenerics>, 'AudioAttachment'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Attachment'> & {\n /**\n * The unique id for the message with file attachments\n */\n messageId: string;\n styles?: Partial<{\n attachmentContainer: StyleProp<ViewStyle>;\n container: StyleProp<ViewStyle>;\n }>;\n };\n\ntype FilesToDisplayType<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Attachment<StreamChatGenerics> & {\n duration: number;\n paused: boolean;\n progress: number;\n};\n\nconst FileAttachmentGroupWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentGroupPropsWithContext<StreamChatGenerics>,\n) => {\n const { Attachment, AudioAttachment, files, messageId, styles: stylesProp = {} } = props;\n const [filesToDisplay, setFilesToDisplay] = useState<FilesToDisplayType[]>([]);\n\n useEffect(() => {\n setFilesToDisplay(files.map((file) => ({ ...file, duration: 0, paused: true, progress: 0 })));\n }, [files]);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFilesToDisplay((prevFilesToDisplay) =>\n prevFilesToDisplay.map((fileToDisplay, id) => ({\n ...fileToDisplay,\n duration: id.toString() === index ? duration : fileToDisplay.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFilesToDisplay((prevFileUploads) =>\n prevFileUploads.map((fileUpload, id) => ({\n ...fileUpload,\n progress:\n id.toString() === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFilesToDisplay((prevFileUploads) =>\n prevFileUploads.map((fileUpload, id) => ({\n ...fileUpload,\n paused: id.toString() === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFilesToDisplay((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n messageSimple: {\n fileAttachmentGroup: { container },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n {filesToDisplay.map((file, index) => (\n <View\n key={`${messageId}-${index}`}\n style={[\n { paddingBottom: index !== files.length - 1 ? 4 : 0 },\n stylesProp.attachmentContainer,\n ]}\n >\n {file.type === 'audio' && isAudioPackageAvailable() ? (\n <View accessibilityLabel='audio-attachment-preview'>\n <AudioAttachment\n index={index}\n item={{\n duration: file.duration,\n file: { name: file.title as string, uri: file.asset_url },\n id: index.toString(),\n paused: file.paused,\n progress: file.progress,\n }}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-preview'\n />\n </View>\n ) : (\n <Attachment attachment={file} />\n )}\n </View>\n ))}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileAttachmentGroupPropsWithContext<StreamChatGenerics>,\n nextProps: FileAttachmentGroupPropsWithContext<StreamChatGenerics>,\n) => {\n const { files: prevFiles } = prevProps;\n const { files: nextFiles } = nextProps;\n\n return prevFiles.length === nextFiles.length;\n};\n\nconst MemoizedFileAttachmentGroup = React.memo(\n FileAttachmentGroupWithContext,\n areEqual,\n) as typeof FileAttachmentGroupWithContext;\n\nexport type FileAttachmentGroupProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<FileAttachmentGroupPropsWithContext<StreamChatGenerics>, 'messageId'>> &\n Pick<FileAttachmentGroupPropsWithContext<StreamChatGenerics>, 'messageId'>;\n\nexport const FileAttachmentGroup = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentGroupProps<StreamChatGenerics>,\n) => {\n const { files: propFiles, messageId } = props;\n\n const { files: contextFiles } = useMessageContext<StreamChatGenerics>();\n\n const { Attachment = AttachmentDefault } = useMessagesContext<StreamChatGenerics>();\n\n const { AudioAttachment } = useMessageInputContext<StreamChatGenerics>();\n\n const files = propFiles || contextFiles;\n\n if (!files.length) return null;\n\n return (\n <MemoizedFileAttachmentGroup\n {...{\n Attachment,\n AudioAttachment,\n files,\n messageId,\n }}\n />\n );\n};\n\nFileAttachmentGroup.displayName = 'FileAttachmentGroup{messageSimple{fileAttachmentGroup}}';\n"]}
1
+ {"version":3,"sources":["FileAttachmentGroup.tsx"],"names":["FILE_PREVIEW_HEIGHT","styles","StyleSheet","create","container","padding","fileContainer","borderRadius","borderWidth","flexDirection","height","justifyContent","paddingLeft","paddingRight","FileAttachmentGroupWithContext","props","Attachment","AudioAttachment","files","messageId","stylesProp","filesToDisplay","setFilesToDisplay","map","file","duration","paused","progress","onLoad","index","prevFilesToDisplay","fileToDisplay","id","toString","onProgress","currentTime","hasEnd","prevFileUploads","fileUpload","onPlayPause","pausedStatus","theme","colors","grey_whisper","white","messageSimple","fileAttachmentGroup","paddingBottom","length","attachmentContainer","type","marginBottom","backgroundColor","borderColor","width","name","title","uri","asset_url","areEqual","prevProps","nextProps","prevFiles","nextFiles","MemoizedFileAttachmentGroup","React","memo","FileAttachmentGroup","propFiles","contextFiles","AttachmentDefault","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { Attachment as AttachmentDefault } from './Attachment';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\n\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isAudioPackageAvailable } from '../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst FILE_PREVIEW_HEIGHT = 60;\n\nconst styles = StyleSheet.create({\n container: {\n padding: 4,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n paddingLeft: 8,\n paddingRight: 8,\n },\n});\n\nexport type FileAttachmentGroupPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageContextValue<StreamChatGenerics>, 'files'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Attachment' | 'AudioAttachment'> & {\n /**\n * The unique id for the message with file attachments\n */\n messageId: string;\n styles?: Partial<{\n attachmentContainer: StyleProp<ViewStyle>;\n container: StyleProp<ViewStyle>;\n }>;\n };\n\ntype FilesToDisplayType<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Attachment<StreamChatGenerics> & {\n duration: number;\n paused: boolean;\n progress: number;\n};\n\nconst FileAttachmentGroupWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentGroupPropsWithContext<StreamChatGenerics>,\n) => {\n const { Attachment, AudioAttachment, files, messageId, styles: stylesProp = {} } = props;\n const [filesToDisplay, setFilesToDisplay] = useState<FilesToDisplayType[]>([]);\n\n useEffect(() => {\n setFilesToDisplay(files.map((file) => ({ ...file, duration: 0, paused: true, progress: 0 })));\n }, [files]);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFilesToDisplay((prevFilesToDisplay) =>\n prevFilesToDisplay.map((fileToDisplay, id) => ({\n ...fileToDisplay,\n duration: id.toString() === index ? duration : fileToDisplay.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFilesToDisplay((prevFileUploads) =>\n prevFileUploads.map((fileUpload, id) => ({\n ...fileUpload,\n progress:\n id.toString() === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFilesToDisplay((prevFileUploads) =>\n prevFileUploads.map((fileUpload, id) => ({\n ...fileUpload,\n paused: id.toString() === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFilesToDisplay((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n colors: { grey_whisper, white },\n messageSimple: {\n fileAttachmentGroup: { container },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n {filesToDisplay.map((file, index) => (\n <View\n key={`${messageId}-${index}`}\n style={[\n { paddingBottom: index !== files.length - 1 ? 4 : 0 },\n stylesProp.attachmentContainer,\n ]}\n >\n {file.type === 'audio' && isAudioPackageAvailable() ? (\n <View\n accessibilityLabel='audio-attachment-preview'\n style={[\n styles.fileContainer,\n index === filesToDisplay.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n backgroundColor: white,\n borderColor: grey_whisper,\n width: -16,\n },\n ]}\n >\n <AudioAttachment\n item={{\n duration: file.duration,\n file: { name: file.title as string, uri: file.asset_url },\n id: index.toString(),\n paused: file.paused,\n progress: file.progress,\n }}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-preview'\n />\n </View>\n ) : (\n <Attachment attachment={file} />\n )}\n </View>\n ))}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileAttachmentGroupPropsWithContext<StreamChatGenerics>,\n nextProps: FileAttachmentGroupPropsWithContext<StreamChatGenerics>,\n) => {\n const { files: prevFiles } = prevProps;\n const { files: nextFiles } = nextProps;\n\n return prevFiles.length === nextFiles.length;\n};\n\nconst MemoizedFileAttachmentGroup = React.memo(\n FileAttachmentGroupWithContext,\n areEqual,\n) as typeof FileAttachmentGroupWithContext;\n\nexport type FileAttachmentGroupProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<FileAttachmentGroupPropsWithContext<StreamChatGenerics>, 'messageId'>> &\n Pick<FileAttachmentGroupPropsWithContext<StreamChatGenerics>, 'messageId'>;\n\nexport const FileAttachmentGroup = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentGroupProps<StreamChatGenerics>,\n) => {\n const { files: propFiles, messageId } = props;\n\n const { files: contextFiles } = useMessageContext<StreamChatGenerics>();\n\n const { Attachment = AttachmentDefault, AudioAttachment } =\n useMessagesContext<StreamChatGenerics>();\n\n const files = propFiles || contextFiles;\n\n if (!files.length) return null;\n\n return (\n <MemoizedFileAttachmentGroup\n {...{\n Attachment,\n AudioAttachment,\n files,\n messageId,\n }}\n />\n );\n};\n\nFileAttachmentGroup.displayName = 'FileAttachmentGroup{messageSimple{fileAttachmentGroup}}';\n"]}
@@ -1905,7 +1905,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
1905
1905
  var inputMessageInputContext = (0, _useCreateInputMessageInputContext.useCreateInputMessageInputContext)({
1906
1906
  additionalTextInputProps: additionalTextInputProps,
1907
1907
  AttachButton: AttachButton,
1908
- AudioAttachment: AudioAttachment,
1909
1908
  autoCompleteSuggestionsLimit: autoCompleteSuggestionsLimit,
1910
1909
  autoCompleteTriggerSettings: autoCompleteTriggerSettings,
1911
1910
  channelId: channelId,
@@ -1961,6 +1960,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1961
1960
  additionalTouchableProps: additionalTouchableProps,
1962
1961
  Attachment: Attachment,
1963
1962
  AttachmentActions: AttachmentActions,
1963
+ AudioAttachment: AudioAttachment,
1964
1964
  Card: Card,
1965
1965
  CardCover: CardCover,
1966
1966
  CardFooter: CardFooter,
@@ -2066,7 +2066,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2066
2066
  __self: _this,
2067
2067
  __source: {
2068
2068
  fileName: _jsxFileName,
2069
- lineNumber: 1785,
2069
+ lineNumber: 1786,
2070
2070
  columnNumber: 12
2071
2071
  }
2072
2072
  });
@@ -2081,7 +2081,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2081
2081
  __self: _this,
2082
2082
  __source: {
2083
2083
  fileName: _jsxFileName,
2084
- lineNumber: 1790,
2084
+ lineNumber: 1791,
2085
2085
  columnNumber: 7
2086
2086
  }
2087
2087
  }, t('Please select a channel first'));
@@ -2095,7 +2095,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2095
2095
  __self: _this,
2096
2096
  __source: {
2097
2097
  fileName: _jsxFileName,
2098
- lineNumber: 1797,
2098
+ lineNumber: 1798,
2099
2099
  columnNumber: 5
2100
2100
  }
2101
2101
  }), _react["default"].createElement(_ChannelContext.ChannelProvider, {
@@ -2103,7 +2103,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2103
2103
  __self: _this,
2104
2104
  __source: {
2105
2105
  fileName: _jsxFileName,
2106
- lineNumber: 1803,
2106
+ lineNumber: 1804,
2107
2107
  columnNumber: 7
2108
2108
  }
2109
2109
  }, _react["default"].createElement(_OwnCapabilitiesContext.OwnCapabilitiesProvider, {
@@ -2111,7 +2111,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2111
2111
  __self: _this,
2112
2112
  __source: {
2113
2113
  fileName: _jsxFileName,
2114
- lineNumber: 1804,
2114
+ lineNumber: 1805,
2115
2115
  columnNumber: 9
2116
2116
  }
2117
2117
  }, _react["default"].createElement(_TypingContext.TypingProvider, {
@@ -2119,7 +2119,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2119
2119
  __self: _this,
2120
2120
  __source: {
2121
2121
  fileName: _jsxFileName,
2122
- lineNumber: 1805,
2122
+ lineNumber: 1806,
2123
2123
  columnNumber: 11
2124
2124
  }
2125
2125
  }, _react["default"].createElement(_PaginatedMessageListContext.PaginatedMessageListProvider, {
@@ -2127,7 +2127,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2127
2127
  __self: _this,
2128
2128
  __source: {
2129
2129
  fileName: _jsxFileName,
2130
- lineNumber: 1806,
2130
+ lineNumber: 1807,
2131
2131
  columnNumber: 13
2132
2132
  }
2133
2133
  }, _react["default"].createElement(_MessagesContext.MessagesProvider, {
@@ -2135,7 +2135,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2135
2135
  __self: _this,
2136
2136
  __source: {
2137
2137
  fileName: _jsxFileName,
2138
- lineNumber: 1807,
2138
+ lineNumber: 1808,
2139
2139
  columnNumber: 15
2140
2140
  }
2141
2141
  }, _react["default"].createElement(_ThreadContext.ThreadProvider, {
@@ -2143,7 +2143,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2143
2143
  __self: _this,
2144
2144
  __source: {
2145
2145
  fileName: _jsxFileName,
2146
- lineNumber: 1808,
2146
+ lineNumber: 1809,
2147
2147
  columnNumber: 17
2148
2148
  }
2149
2149
  }, _react["default"].createElement(_SuggestionsContext.SuggestionsProvider, {
@@ -2151,7 +2151,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2151
2151
  __self: _this,
2152
2152
  __source: {
2153
2153
  fileName: _jsxFileName,
2154
- lineNumber: 1809,
2154
+ lineNumber: 1810,
2155
2155
  columnNumber: 19
2156
2156
  }
2157
2157
  }, _react["default"].createElement(_MessageInputContext.MessageInputProvider, {
@@ -2159,7 +2159,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2159
2159
  __self: _this,
2160
2160
  __source: {
2161
2161
  fileName: _jsxFileName,
2162
- lineNumber: 1810,
2162
+ lineNumber: 1811,
2163
2163
  columnNumber: 21
2164
2164
  }
2165
2165
  }, _react["default"].createElement(_reactNative.View, {
@@ -2169,7 +2169,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2169
2169
  __self: _this,
2170
2170
  __source: {
2171
2171
  fileName: _jsxFileName,
2172
- lineNumber: 1811,
2172
+ lineNumber: 1812,
2173
2173
  columnNumber: 23
2174
2174
  }
2175
2175
  }, children))))))))));
@@ -2224,7 +2224,7 @@ var Channel = function Channel(props) {
2224
2224
  __self: _this,
2225
2225
  __source: {
2226
2226
  fileName: _jsxFileName,
2227
- lineNumber: 1868,
2227
+ lineNumber: 1869,
2228
2228
  columnNumber: 5
2229
2229
  }
2230
2230
  }));