Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: async voice messages recording #2339

Merged
merged 38 commits into from Apr 17, 2024

Conversation

MartinCupela
Copy link
Contributor

@MartinCupela MartinCupela commented Mar 22, 2024

🎯 Goal

Introduce

  • media recording capability focused on recording audio at first.
  • possibility to add any attachment to the MessageInput state
  • audio transcoding to MP3

🛠 Implementation details

Provide a description of the implementation

🎨 UI Changes

Please see the attached documentation files.

src/components/Attachment/components/WaveProgressBar.tsx Outdated Show resolved Hide resolved
src/components/Attachment/hooks/useAudioController.ts Outdated Show resolved Hide resolved
<button
className='str-chat__attachment-preview-delete'
data-testid='file-preview-item-delete-button'
disabled={attachment.$internal?.uploadState === AttachmentUploadState.UPLOADING}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain this $internal stuff? Is it something voice message related? I haven't seen it for attachments before.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This are internal metadata that are not shared with the back-end. I decided to keep them "isolated" under this key and just remove them before sending the message with the attachment to the back-end. Current implementation with image and file uploads seems to me clunky in that it does not isolate these locally important metadata and even use different names for those attributes, that are later removed before the submission.

I would like to propose this approach also to other types of attachments gradually to make our code more readable.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, here's what worries me: integrators implementing custom attachment previews shouldn't care about what is and what isn't part of our backend schema. But in this case they will have to use this $internal property, and they may find it a bit weird.

src/components/MessageInput/hooks/useTimer.ts Show resolved Hide resolved
src/components/MessageInput/hooks/useTimer.ts Show resolved Hide resolved
@@ -3,6 +3,12 @@ import type { DefaultStreamChatGenerics } from '../../types/types';

type AttachmentLoadingState = 'uploading' | 'finished' | 'failed';

export enum AttachmentUploadState {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this different from UploadState?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to gradually replace the union type with enum that could be used by the integrators too - if they want to do some customizations. Removing the original would be breaking. WDYT, how could this be approached?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually don't know, the union type doesn't sound bad, can we just keep using the UploadState union in this case? Anyway, I don't have any strong opinion here.

@MartinCupela
Copy link
Contributor Author

@myandrienko thank you for the review. I forgot to put this into draft state when creating this PR. I plan to clean up the stuff still 🙂

@MartinCupela MartinCupela marked this pull request as draft March 22, 2024 20:25
Copy link

github-actions bot commented Mar 27, 2024

Size Change: +305 kB (+17%) ⚠️

Total Size: 2.12 MB

Filename Size Change
./dist/browser.full-bundle.js 824 kB +103 kB (+14%) ⚠️
./dist/browser.full-bundle.min.js 468 kB +76.2 kB (+19%) ⚠️
./dist/components/Attachment/Audio.js 1.48 kB +59 B (+4%)
./dist/components/Attachment/Card.js 1.79 kB +24 B (+1%)
./dist/components/Attachment/components/WaveProgressBar.js 1.01 kB -980 B (-49%) 🎉
./dist/components/Attachment/hooks/useAudioController.js 1.73 kB +673 B (+64%) 🆘
./dist/components/Attachment/index.js 132 B +12 B (+10%) ⚠️
./dist/components/Attachment/utils.js 1.95 kB +20 B (+1%)
./dist/components/Attachment/VoiceRecording.js 1.06 kB +31 B (+3%)
./dist/components/Channel/Channel.js 10.2 kB +26 B (0%)
./dist/components/Emojis/index.cjs.js 1.89 kB -2 B (0%)
./dist/components/index.js 316 B +9 B (+3%)
./dist/components/MessageInput/AttachmentPreviewList.js 1.99 kB +730 B (+58%) 🆘
./dist/components/MessageInput/CooldownTimer.js 244 B -133 B (-35%) 🎉
./dist/components/MessageInput/hooks/useAttachments.js 1.98 kB +966 B (+95%) 🆘
./dist/components/MessageInput/hooks/useCreateMessageInputContext.js 1.53 kB +110 B (+8%) 🔍
./dist/components/MessageInput/hooks/useFileState.js 0 B -169 B (removed) 🏆
./dist/components/MessageInput/hooks/useMessageInputState.js 3.17 kB +432 B (+16%) ⚠️
./dist/components/MessageInput/hooks/useSubmitHandler.js 2.7 kB +163 B (+6%) 🔍
./dist/components/MessageInput/icons.js 3.32 kB +474 B (+17%) ⚠️
./dist/components/MessageInput/index.js 191 B +10 B (+6%) 🔍
./dist/components/MessageInput/MessageInputFlat.js 2.99 kB +584 B (+24%) 🚨
./dist/components/MessageInput/MessageInputSmall.js 1.72 kB +2 B (0%)
./dist/components/ReactFileUtilities/utils.js 1.47 kB +266 B (+22%) 🚨
./dist/i18n/de.json 2.86 kB +339 B (+13%) ⚠️
./dist/i18n/en.json 1.79 kB +202 B (+13%) ⚠️
./dist/i18n/es.json 2.85 kB +316 B (+12%) ⚠️
./dist/i18n/fr.json 2.92 kB +331 B (+13%) ⚠️
./dist/i18n/hi.json 3.26 kB +365 B (+13%) ⚠️
./dist/i18n/it.json 2.85 kB +302 B (+12%) ⚠️
./dist/i18n/ja.json 3.09 kB +325 B (+12%) ⚠️
./dist/i18n/ko.json 3.02 kB +345 B (+13%) ⚠️
./dist/i18n/nl.json 2.75 kB +323 B (+13%) ⚠️
./dist/i18n/pt.json 2.86 kB +310 B (+12%) ⚠️
./dist/i18n/ru.json 3.43 kB +358 B (+12%) ⚠️
./dist/i18n/tr.json 2.82 kB +304 B (+12%) ⚠️
./dist/index.cjs.js 25.6 kB +140 B (+1%)
./dist/Window-d9936552.js 0 B -347 kB (removed) 🏆
./dist/components/Attachment/audioSampling.js 1.37 kB +1.37 kB (new file) 🆕
./dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js 756 B +756 B (new file) 🆕
./dist/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.js 264 B +264 B (new file) 🆕
./dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js 801 B +801 B (new file) 🆕
./dist/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.js 611 B +611 B (new file) 🆕
./dist/components/MediaRecorder/AudioRecorder/index.js 75 B +75 B (new file) 🆕
./dist/components/MediaRecorder/AudioRecorder/RecordingTimer.js 246 B +246 B (new file) 🆕
./dist/components/MediaRecorder/classes/AmplitudeRecorder.js 1.28 kB +1.28 kB (new file) 🆕
./dist/components/MediaRecorder/classes/BrowserPermission.js 1.07 kB +1.07 kB (new file) 🆕
./dist/components/MediaRecorder/classes/index.js 85 B +85 B (new file) 🆕
./dist/components/MediaRecorder/classes/MediaRecorderController.js 3.34 kB +3.34 kB (new file) 🆕
./dist/components/MediaRecorder/hooks/index.js 31 B +31 B (new file) 🆕
./dist/components/MediaRecorder/hooks/useMediaRecorder.js 924 B +924 B (new file) 🆕
./dist/components/MediaRecorder/index.js 149 B +149 B (new file) 🆕
./dist/components/MediaRecorder/observable/BehaviorSubject.js 449 B +449 B (new file) 🆕
./dist/components/MediaRecorder/observable/index.js 89 B +89 B (new file) 🆕
./dist/components/MediaRecorder/observable/Observable.js 382 B +382 B (new file) 🆕
./dist/components/MediaRecorder/observable/Observer.js 109 B +109 B (new file) 🆕
./dist/components/MediaRecorder/observable/Subject.js 659 B +659 B (new file) 🆕
./dist/components/MediaRecorder/observable/Subscription.js 208 B +208 B (new file) 🆕
./dist/components/MediaRecorder/RecordingPermissionDeniedNotification.js 427 B +427 B (new file) 🆕
./dist/components/MediaRecorder/transcode/audioProcessing.js 873 B +873 B (new file) 🆕
./dist/components/MediaRecorder/transcode/index.js 365 B +365 B (new file) 🆕
./dist/components/MediaRecorder/transcode/mp3.js 974 B +974 B (new file) 🆕
./dist/components/MediaRecorder/transcode/wav.js 1.79 kB +1.79 kB (new file) 🆕
./dist/components/MessageInput/hooks/useTimeElapsed.js 381 B +381 B (new file) 🆕
./dist/components/MessageInput/hooks/useTimer.js 302 B +302 B (new file) 🆕
./dist/components/MessageInput/SendButton.js 340 B +340 B (new file) 🆕
./dist/utils/mergeDeep.js 202 B +202 B (new file) 🆕
./dist/Window-847d5d88.js 447 kB +447 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
./dist/components/Attachment/attachment-sizing.js 1.08 kB
./dist/components/Attachment/Attachment.js 1.08 kB
./dist/components/Attachment/AttachmentActions.js 524 B
./dist/components/Attachment/AttachmentContainer.js 2.21 kB
./dist/components/Attachment/components/DownloadButton.js 262 B
./dist/components/Attachment/components/FileSizeIndicator.js 302 B
./dist/components/Attachment/components/index.js 112 B
./dist/components/Attachment/components/PlaybackRateButton.js 215 B
./dist/components/Attachment/components/PlayButton.js 279 B
./dist/components/Attachment/components/ProgressBar.js 288 B
./dist/components/Attachment/FileAttachment.js 555 B
./dist/components/Attachment/icons.js 573 B
./dist/components/Attachment/UnsupportedAttachment.js 267 B
./dist/components/AutoCompleteTextarea/Header.js 332 B
./dist/components/AutoCompleteTextarea/index.js 157 B
./dist/components/AutoCompleteTextarea/Item.js 527 B
./dist/components/AutoCompleteTextarea/List.js 1.52 kB
./dist/components/AutoCompleteTextarea/Textarea.js 6.86 kB
./dist/components/AutoCompleteTextarea/types.js 31 B
./dist/components/AutoCompleteTextarea/utils.js 834 B
./dist/components/Avatar/Avatar.js 740 B
./dist/components/Avatar/index.js 46 B
./dist/components/Channel/channelState.js 1.04 kB
./dist/components/Channel/hooks/useChannelContainerClasses.js 353 B
./dist/components/Channel/hooks/useCreateChannelStateContext.js 1.56 kB
./dist/components/Channel/hooks/useCreateTypingContext.js 235 B
./dist/components/Channel/hooks/useEditMessageHandler.js 252 B
./dist/components/Channel/hooks/useIsMounted.js 168 B
./dist/components/Channel/hooks/useMentionsHandlers.js 422 B
./dist/components/Channel/index.js 117 B
./dist/components/Channel/LoadingChannel.js 360 B
./dist/components/Channel/utils.js 848 B
./dist/components/ChannelHeader/ChannelHeader.js 901 B
./dist/components/ChannelHeader/icons.js 458 B
./dist/components/ChannelHeader/index.js 53 B
./dist/components/ChannelList/ChannelList.js 3.03 kB
./dist/components/ChannelList/ChannelListMessenger.js 490 B
./dist/components/ChannelList/hooks/index.js 196 B
./dist/components/ChannelList/hooks/useChannelDeletedListener.js 454 B
./dist/components/ChannelList/hooks/useChannelHiddenListener.js 450 B
./dist/components/ChannelList/hooks/useChannelTruncatedListener.js 379 B
./dist/components/ChannelList/hooks/useChannelUpdatedListener.js 614 B
./dist/components/ChannelList/hooks/useChannelVisibleListener.js 616 B
./dist/components/ChannelList/hooks/useConnectionRecoveredListener.js 275 B
./dist/components/ChannelList/hooks/useMessageNewListener.js 599 B
./dist/components/ChannelList/hooks/useMobileNavigation.js 276 B
./dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js 825 B
./dist/components/ChannelList/hooks/useNotificationMessageNewListener.js 702 B
./dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js 411 B
./dist/components/ChannelList/hooks/usePaginatedChannels.js 1.59 kB
./dist/components/ChannelList/hooks/useUserPresenceChangedListener.js 466 B
./dist/components/ChannelList/index.js 78 B
./dist/components/ChannelList/utils.js 314 B
./dist/components/ChannelPreview/ChannelPreview.js 1.06 kB
./dist/components/ChannelPreview/ChannelPreviewMessenger.js 881 B
./dist/components/ChannelPreview/hooks/index.js 97 B
./dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js 471 B
./dist/components/ChannelPreview/hooks/useIsChannelMuted.js 319 B
./dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js 829 B
./dist/components/ChannelPreview/index.js 81 B
./dist/components/ChannelPreview/utils.js 695 B
./dist/components/ChannelSearch/ChannelSearch.js 1.11 kB
./dist/components/ChannelSearch/hooks/useChannelSearch.js 2.27 kB
./dist/components/ChannelSearch/icons.js 701 B
./dist/components/ChannelSearch/index.js 85 B
./dist/components/ChannelSearch/SearchBar.js 1.33 kB
./dist/components/ChannelSearch/SearchInput.js 335 B
./dist/components/ChannelSearch/SearchResults.js 1.59 kB
./dist/components/ChannelSearch/utils.js 89 B
./dist/components/Chat/Chat.js 933 B
./dist/components/Chat/hooks/useChannelsQueryState.js 212 B
./dist/components/Chat/hooks/useChat.js 1.46 kB
./dist/components/Chat/hooks/useCreateChatClient.js 490 B
./dist/components/Chat/hooks/useCreateChatContext.js 671 B
./dist/components/Chat/hooks/useCustomStyles.js 649 B
./dist/components/Chat/index.js 84 B
./dist/components/ChatAutoComplete/ChatAutoComplete.js 1.25 kB
./dist/components/ChatAutoComplete/index.js 56 B
./dist/components/ChatDown/ChatDown.js 530 B
./dist/components/ChatDown/icons.js 1.26 kB
./dist/components/ChatDown/index.js 48 B
./dist/components/CommandItem/CommandItem.js 265 B
./dist/components/CommandItem/index.js 51 B
./dist/components/DateSeparator/DateSeparator.js 514 B
./dist/components/DateSeparator/index.js 53 B
./dist/components/Emojis/EmojiPicker.js 1.32 kB
./dist/components/Emojis/index.js 51 B
./dist/components/EmoticonItem/EmoticonItem.js 417 B
./dist/components/EmoticonItem/index.js 52 B
./dist/components/EmptyStateIndicator/EmptyStateIndicator.js 458 B
./dist/components/EmptyStateIndicator/icons.js 323 B
./dist/components/EmptyStateIndicator/index.js 59 B
./dist/components/EventComponent/EventComponent.js 831 B
./dist/components/EventComponent/index.js 52 B
./dist/components/Gallery/BaseImage.js 478 B
./dist/components/Gallery/Gallery.js 1.13 kB
./dist/components/Gallery/Image.js 681 B
./dist/components/Gallery/index.js 70 B
./dist/components/Gallery/ModalGallery.js 627 B
./dist/components/InfiniteScrollPaginator/index.js 54 B
./dist/components/InfiniteScrollPaginator/InfiniteScroll.js 1.5 kB
./dist/components/Loading/index.js 76 B
./dist/components/Loading/LoadingChannels.js 285 B
./dist/components/Loading/LoadingErrorIndicator.js 366 B
./dist/components/Loading/LoadingIndicator.js 671 B
./dist/components/LoadMore/index.js 68 B
./dist/components/LoadMore/LoadMoreButton.js 570 B
./dist/components/LoadMore/LoadMorePaginator.js 484 B
./dist/components/Message/FixedHeightMessage.js 1.7 kB
./dist/components/Message/hooks/index.js 146 B
./dist/components/Message/hooks/useActionHandler.js 751 B
./dist/components/Message/hooks/useDeleteHandler.js 616 B
./dist/components/Message/hooks/useEditHandler.js 300 B
./dist/components/Message/hooks/useFlagHandler.js 753 B
./dist/components/Message/hooks/useMarkUnreadHandler.js 714 B
./dist/components/Message/hooks/useMentionsHandler.js 387 B
./dist/components/Message/hooks/useMuteHandler.js 941 B
./dist/components/Message/hooks/useOpenThreadHandler.js 266 B
./dist/components/Message/hooks/usePinHandler.js 930 B
./dist/components/Message/hooks/useReactionHandler.js 2.16 kB
./dist/components/Message/hooks/useReactionsFetcher.js 788 B
./dist/components/Message/hooks/useRetryHandler.js 343 B
./dist/components/Message/hooks/useUserHandler.js 223 B
./dist/components/Message/hooks/useUserRole.js 760 B
./dist/components/Message/icons.js 1.63 kB
./dist/components/Message/index.js 162 B
./dist/components/Message/Message.js 2.31 kB
./dist/components/Message/MessageDeleted.js 374 B
./dist/components/Message/MessageEditedTimestamp.js 488 B
./dist/components/Message/MessageErrorText.js 381 B
./dist/components/Message/MessageOptions.js 951 B
./dist/components/Message/MessageRepliesCountButton.js 523 B
./dist/components/Message/MessageSimple.js 2.59 kB
./dist/components/Message/MessageStatus.js 1.23 kB
./dist/components/Message/MessageText.js 999 B
./dist/components/Message/MessageTimestamp.js 352 B
./dist/components/Message/QuotedMessage.js 822 B
./dist/components/Message/renderText/componentRenderers/Anchor.js 327 B
./dist/components/Message/renderText/componentRenderers/Emoji.js 173 B
./dist/components/Message/renderText/componentRenderers/index.js 65 B
./dist/components/Message/renderText/componentRenderers/Mention.js 195 B
./dist/components/Message/renderText/index.js 132 B
./dist/components/Message/renderText/regex.js 374 B
./dist/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.js 252 B
./dist/components/Message/renderText/rehypePlugins/index.js 72 B
./dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.js 1.04 kB
./dist/components/Message/renderText/remarkPlugins/htmlToTextPlugin.js 178 B
./dist/components/Message/renderText/remarkPlugins/index.js 75 B
./dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js 531 B
./dist/components/Message/renderText/renderText.js 1.76 kB
./dist/components/Message/renderText/types.js 31 B
./dist/components/Message/Timestamp.js 506 B
./dist/components/Message/types.js 31 B
./dist/components/Message/utils.js 2.94 kB
./dist/components/MessageActions/CustomMessageActionsList.js 346 B
./dist/components/MessageActions/hooks/index.js 66 B
./dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js 517 B
./dist/components/MessageActions/index.js 76 B
./dist/components/MessageActions/MessageActions.js 1.53 kB
./dist/components/MessageActions/MessageActionsBox.js 1.18 kB
./dist/components/MessageBounce/index.js 68 B
./dist/components/MessageBounce/MessageBounceModal.js 253 B
./dist/components/MessageBounce/MessageBouncePrompt.js 507 B
./dist/components/MessageInput/DefaultTriggerProvider.js 442 B
./dist/components/MessageInput/DropzoneProvider.js 548 B
./dist/components/MessageInput/EditMessageForm.js 1.05 kB
./dist/components/MessageInput/hooks/index.js 78 B
./dist/components/MessageInput/hooks/useCommandTrigger.js 903 B
./dist/components/MessageInput/hooks/useCooldownTimer.js 818 B
./dist/components/MessageInput/hooks/useEmojiTrigger.js 734 B
./dist/components/MessageInput/hooks/useFileUploads.js 1.27 kB
./dist/components/MessageInput/hooks/useImageUploads.js 1.38 kB
./dist/components/MessageInput/hooks/useLinkPreviews.js 1.41 kB
./dist/components/MessageInput/hooks/useMessageInputText.js 958 B
./dist/components/MessageInput/hooks/usePasteHandler.js 871 B
./dist/components/MessageInput/hooks/useUserTrigger.js 1.92 kB
./dist/components/MessageInput/hooks/utils.js 2.06 kB
./dist/components/MessageInput/LinkPreviewList.js 778 B
./dist/components/MessageInput/MessageInput.js 641 B
./dist/components/MessageInput/QuotedMessagePreview.js 927 B
./dist/components/MessageInput/types.js 387 B
./dist/components/MessageInput/UploadsPreview.js 871 B
./dist/components/MessageList/ConnectionStatus.js 457 B
./dist/components/MessageList/CustomNotification.js 300 B
./dist/components/MessageList/GiphyPreviewMessage.js 197 B
./dist/components/MessageList/hooks/index.js 183 B
./dist/components/MessageList/hooks/MessageList/index.js 126 B
./dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js 687 B
./dist/components/MessageList/hooks/MessageList/useMessageListElements.js 645 B
./dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js 960 B
./dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js 895 B
./dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js 1.03 kB
./dist/components/MessageList/hooks/useLastReadData.js 266 B
./dist/components/MessageList/hooks/useMarkRead.js 1.25 kB
./dist/components/MessageList/hooks/VirtualizedMessageList/index.js 158 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js 423 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js 388 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.js 691 B
./dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js 1.32 kB
./dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js 471 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js 423 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js 665 B
./dist/components/MessageList/icons.js 622 B
./dist/components/MessageList/index.js 204 B
./dist/components/MessageList/MessageList.js 3.32 kB
./dist/components/MessageList/MessageListMainPanel.js 290 B
./dist/components/MessageList/MessageListNotifications.js 471 B
./dist/components/MessageList/MessageNotification.js 293 B
./dist/components/MessageList/renderMessages.js 1.16 kB
./dist/components/MessageList/ScrollToBottomButton.js 1.12 kB
./dist/components/MessageList/UnreadMessagesNotification.js 441 B
./dist/components/MessageList/UnreadMessagesSeparator.js 316 B
./dist/components/MessageList/utils.js 2.85 kB
./dist/components/MessageList/VirtualizedMessageList.js 4.41 kB
./dist/components/MessageList/VirtualizedMessageListComponents.js 2.14 kB
./dist/components/MML/index.js 43 B
./dist/components/MML/MML.js 535 B
./dist/components/Modal/icons.js 435 B
./dist/components/Modal/index.js 45 B
./dist/components/Modal/Modal.js 821 B
./dist/components/ReactFileUtilities/FileIcon/FileIcon.js 536 B
./dist/components/ReactFileUtilities/FileIcon/FileIconSet/v1.js 2.73 kB
./dist/components/ReactFileUtilities/FileIcon/FileIconSet/v2.js 5.46 kB
./dist/components/ReactFileUtilities/FileIcon/iconMap.js 800 B
./dist/components/ReactFileUtilities/FileIcon/index.js 53 B
./dist/components/ReactFileUtilities/FileIcon/mimeTypes.js 834 B
./dist/components/ReactFileUtilities/FilePreviewer.js 634 B
./dist/components/ReactFileUtilities/FileUploadButton.js 543 B
./dist/components/ReactFileUtilities/IconButton.js 320 B
./dist/components/ReactFileUtilities/icons/AttachmentIcon.js 397 B
./dist/components/ReactFileUtilities/icons/CloseIcon.js 560 B
./dist/components/ReactFileUtilities/icons/FilePlaceholderIcon.js 1.52 kB
./dist/components/ReactFileUtilities/icons/index.js 96 B
./dist/components/ReactFileUtilities/icons/PictureIcon.js 333 B
./dist/components/ReactFileUtilities/icons/RetryIcon.js 325 B
./dist/components/ReactFileUtilities/ImageDropzone.js 1.02 kB
./dist/components/ReactFileUtilities/ImagePreviewer.js 779 B
./dist/components/ReactFileUtilities/ImageUploadButton.js 472 B
./dist/components/ReactFileUtilities/index.js 177 B
./dist/components/ReactFileUtilities/LoadingIndicator.js 307 B
./dist/components/ReactFileUtilities/Thumbnail.js 468 B
./dist/components/ReactFileUtilities/ThumbnailPlaceholder.js 384 B
./dist/components/ReactFileUtilities/types.js 31 B
./dist/components/ReactFileUtilities/UploadButton.js 289 B
./dist/components/Reactions/hooks/useFetchReactions.js 600 B
./dist/components/Reactions/hooks/useProcessReactions.js 1.01 kB
./dist/components/Reactions/index.js 108 B
./dist/components/Reactions/reactionOptions.js 330 B
./dist/components/Reactions/ReactionSelector.js 1.81 kB
./dist/components/Reactions/ReactionsList.js 1.02 kB
./dist/components/Reactions/ReactionsListModal.js 1.23 kB
./dist/components/Reactions/SimpleReactionsList.js 1.05 kB
./dist/components/Reactions/SpriteImage.js 705 B
./dist/components/Reactions/StreamEmoji.js 385 B
./dist/components/Reactions/types.js 31 B
./dist/components/Reactions/utils/utils.js 300 B
./dist/components/SafeAnchor/index.js 74 B
./dist/components/SafeAnchor/SafeAnchor.js 347 B
./dist/components/Thread/icons.js 370 B
./dist/components/Thread/index.js 71 B
./dist/components/Thread/Thread.js 1.52 kB
./dist/components/Thread/ThreadHead.js 314 B
./dist/components/Thread/ThreadHeader.js 464 B
./dist/components/Thread/ThreadStart.js 283 B
./dist/components/Tooltip/hooks/index.js 61 B
./dist/components/Tooltip/hooks/useEnterLeaveHandlers.js 305 B
./dist/components/Tooltip/index.js 47 B
./dist/components/Tooltip/Tooltip.js 478 B
./dist/components/TypingIndicator/index.js 55 B
./dist/components/TypingIndicator/TypingIndicator.js 1.22 kB
./dist/components/UserItem/index.js 48 B
./dist/components/UserItem/UserItem.js 628 B
./dist/components/Window/index.js 46 B
./dist/components/Window/Window.js 372 B
./dist/constants/limits.js 163 B
./dist/constants/messageTypes.js 99 B
./dist/context/ChannelActionContext.js 588 B
./dist/context/ChannelListContext.js 377 B
./dist/context/ChannelStateContext.js 586 B
./dist/context/ChatContext.js 573 B
./dist/context/ComponentContext.js 579 B
./dist/context/index.js 131 B
./dist/context/MessageBounceContext.js 630 B
./dist/context/MessageContext.js 580 B
./dist/context/MessageInputContext.js 350 B
./dist/context/MessageListContext.js 377 B
./dist/context/TranslationContext.js 783 B
./dist/context/TypingContext.js 581 B
./dist/context/utils/getDisplayName.js 102 B
./dist/css/index.css 26.7 kB
./dist/css/v2/emoji-mart.css 1.84 kB
./dist/css/v2/emoji-replacement.css 299 B
./dist/css/v2/index.css 20.9 kB
./dist/css/v2/index.layout.css 9.01 kB
./dist/i18n/index.js 67 B
./dist/i18n/Streami18n.js 5.76 kB
./dist/i18n/translations.js 172 B
./dist/i18n/utils.js 528 B
./dist/index_UMD.js 175 B
./dist/index.js 78 B
./dist/types/index.js 31 B
./dist/types/types.js 31 B
./dist/utils/browsers.js 156 B
./dist/utils/deprecationWarning.js 317 B
./dist/utils/generateRandomId.js 130 B
./dist/utils/getChannel.js 968 B
./dist/utils/getWholeChar.js 411 B
./dist/utils/index.js 79 B
./dist/version.js 60 B

compressed-size-action

* @param file
*/
export const toAudioBuffer = async (file: File) => {
const audioCtx = new AudioContext();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we close this context eventually? Does this create a leak?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed by closing the context: dab90e2

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check this: dab90e2#comments

Copy link

codecov bot commented Apr 12, 2024

Codecov Report

Attention: Patch coverage is 82.05128% with 175 lines in your changes are missing coverage. Please review.

Project coverage is 84.71%. Comparing base (0f70414) to head (7d1c487).

Files Patch % Lines
src/components/MediaRecorder/transcode/wav.ts 22.80% 44 Missing ⚠️
src/components/MediaRecorder/transcode/mp3.ts 24.13% 22 Missing ⚠️
...rc/components/MessageInput/hooks/useAttachments.ts 51.21% 20 Missing ⚠️
...s/MediaRecorder/classes/MediaRecorderController.ts 91.27% 14 Missing and 1 partial ⚠️
...ponents/MediaRecorder/transcode/audioProcessing.ts 21.42% 11 Missing ⚠️
...rc/components/MessageInput/hooks/useTimeElapsed.ts 56.25% 7 Missing ⚠️
src/components/ReactFileUtilities/utils.ts 65.00% 7 Missing ⚠️
.../components/MediaRecorder/observable/Observable.ts 57.14% 6 Missing ⚠️
src/components/MediaRecorder/transcode/index.ts 40.00% 6 Missing ⚠️
.../components/Attachment/hooks/useAudioController.ts 88.88% 5 Missing ⚠️
... and 14 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2339      +/-   ##
==========================================
- Coverage   85.23%   84.71%   -0.52%     
==========================================
  Files         353      386      +33     
  Lines        8051     8886     +835     
  Branches     2122     2268     +146     
==========================================
+ Hits         6862     7528     +666     
- Misses       1005     1167     +162     
- Partials      184      191       +7     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@MartinCupela MartinCupela marked this pull request as ready for review April 17, 2024 14:31
@MartinCupela MartinCupela merged commit b81ab96 into master Apr 17, 2024
9 checks passed
@MartinCupela MartinCupela deleted the feat/async-voice-messages-recording branch April 17, 2024 17:04
github-actions bot pushed a commit that referenced this pull request Apr 17, 2024
## [11.15.0](v11.14.0...v11.15.0) (2024-04-17)

### Bug Fixes

* make setChannels prop optional for ChannelSearch ([#2358](#2358)) ([2ad6132](2ad6132))
* search results list props ([#2359](#2359)) ([6575d30](6575d30))

### Features

* async voice messages recording ([#2339](#2339)) ([b81ab96](b81ab96))
@stream-ci-bot
Copy link
Collaborator

🎉 This PR is included in version 11.15.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants