Skip to content

feat: add support for global modal rendering at the top of the chat component tree #2792

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

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

MartinCupela
Copy link
Contributor

@MartinCupela MartinCupela commented Aug 1, 2025

🎯 Goal

Allow to render the modal at the top of chat app.

Fixes REACT-22
Fixes REACT-340

Fixes the issue of modal overlay being cut-off in Safari because the parent was the message thus limiting the overlay position fixed to the message list.

Depends on CSS adjustments: GetStream/stream-chat-css#341

This is an opt-in feature. The top-level modal rendering is activated by passing GlobalModal to Channel and thus the ComponentContext:

import { GlobalModal } from 'stream-chat-react';

const Component = () => <Channel Modal={GlobalModal}></Channel>

🛠 Implementation details

The PR introduces possibility of nested DialogManagerProviders (Modal > MessageList) and thus allowing to retrieve a dialog manager other than the one from the nearest dialog manager context.

🎨 UI Changes

None

Docs

https://github.com/GetStream/docs-content/pull/519

Copy link

github-actions bot commented Aug 1, 2025

Size Change: +6 kB (+0.54%)

Total Size: 1.12 MB

Filename Size Change
./dist/components/Channel/Channel.js 8.38 kB +6 B (+0.07%)
./dist/components/Chat/Chat.js 783 B +29 B (+3.85%)
./dist/components/Dialog/DialogManager.js 1.12 kB +7 B (+0.63%)
./dist/components/Dialog/DialogPortal.js 475 B +25 B (+5.56%) 🔍
./dist/components/Dialog/hooks/useDialog.js 614 B +77 B (+14.34%) ⚠️
./dist/components/Gallery/Gallery.js 1.03 kB +8 B (+0.78%)
./dist/components/Gallery/Image.js 619 B +26 B (+4.38%)
./dist/components/MessageBounce/MessageBounceModal.js 267 B +36 B (+15.58%) ⚠️
./dist/components/MessageInput/AttachmentSelector.js 2.08 kB +11 B (+0.53%)
./dist/components/MessageInput/EditMessageForm.js 781 B +13 B (+1.69%)
./dist/components/Modal/index.js 56 B +11 B (+24.44%) 🚨
./dist/components/Poll/PollActions/PollAction.js 306 B +54 B (+21.43%) 🚨
./dist/components/Poll/PollActions/PollActions.js 1.18 kB +52 B (+4.63%) 🔍
./dist/components/Reactions/ReactionsListModal.js 970 B +23 B (+2.43%)
./dist/context/DialogManagerContext.js 1.23 kB +931 B (+313.47%) 🆘
./dist/css/v2/index.css 38.9 kB +276 B (+0.71%)
./dist/css/v2/index.layout.css 22.4 kB +216 B (+0.98%)
./dist/experimental/index.browser.cjs 78.3 kB +512 B (+0.66%)
./dist/experimental/index.node.cjs 89.5 kB +527 B (+0.59%)
./dist/index.browser.cjs 268 kB +1.21 kB (+0.45%)
./dist/index.node.cjs 282 kB +1.25 kB (+0.45%)
./dist/components/Modal/GlobalModal.js 703 B +703 B (new file) 🆕
ℹ️ View Unchanged
Filename Size
./dist/components/AIStateIndicator/AIStateIndicator.js 367 B
./dist/components/AIStateIndicator/hooks/useAIState.js 524 B
./dist/components/AIStateIndicator/index.js 73 B
./dist/components/Attachment/attachment-sizing.js 1.07 kB
./dist/components/Attachment/Attachment.js 1.12 kB
./dist/components/Attachment/AttachmentActions.js 474 B
./dist/components/Attachment/AttachmentContainer.js 2.06 kB
./dist/components/Attachment/Audio.js 615 B
./dist/components/Attachment/audioSampling.js 1.34 kB
./dist/components/Attachment/Card.js 1.5 kB
./dist/components/Attachment/components/DownloadButton.js 241 B
./dist/components/Attachment/components/FileSizeIndicator.js 346 B
./dist/components/Attachment/components/index.js 112 B
./dist/components/Attachment/components/PlaybackRateButton.js 190 B
./dist/components/Attachment/components/PlayButton.js 252 B
./dist/components/Attachment/components/ProgressBar.js 278 B
./dist/components/Attachment/components/WaveProgressBar.js 1.4 kB
./dist/components/Attachment/FileAttachment.js 367 B
./dist/components/Attachment/Geolocation.js 875 B
./dist/components/Attachment/hooks/useAudioController.js 1.38 kB
./dist/components/Attachment/icons.js 1.14 kB
./dist/components/Attachment/index.js 189 B
./dist/components/Attachment/UnsupportedAttachment.js 307 B
./dist/components/Attachment/utils.js 594 B
./dist/components/Attachment/VoiceRecording.js 944 B
./dist/components/Avatar/Avatar.js 621 B
./dist/components/Avatar/ChannelAvatar.js 218 B
./dist/components/Avatar/GroupAvatar.js 351 B
./dist/components/Avatar/index.js 65 B
./dist/components/Channel/channelState.js 938 B
./dist/components/Channel/constants.js 77 B
./dist/components/Channel/hooks/useChannelContainerClasses.js 312 B
./dist/components/Channel/hooks/useCreateChannelStateContext.js 1.03 kB
./dist/components/Channel/hooks/useCreateTypingContext.js 226 B
./dist/components/Channel/hooks/useEditMessageHandler.js 239 B
./dist/components/Channel/hooks/useIsMounted.js 165 B
./dist/components/Channel/hooks/useMentionsHandlers.js 376 B
./dist/components/Channel/index.js 118 B
./dist/components/Channel/LoadingChannel.js 342 B
./dist/components/Channel/utils.js 775 B
./dist/components/ChannelHeader/ChannelHeader.js 740 B
./dist/components/ChannelHeader/icons.js 440 B
./dist/components/ChannelHeader/index.js 53 B
./dist/components/ChannelList/ChannelList.js 2.65 kB
./dist/components/ChannelList/ChannelListMessenger.js 439 B
./dist/components/ChannelList/hooks/index.js 205 B
./dist/components/ChannelList/hooks/useChannelDeletedListener.js 383 B
./dist/components/ChannelList/hooks/useChannelHiddenListener.js 385 B
./dist/components/ChannelList/hooks/useChannelListShape.js 2.61 kB
./dist/components/ChannelList/hooks/useChannelMembershipState.js 188 B
./dist/components/ChannelList/hooks/useChannelTruncatedListener.js 314 B
./dist/components/ChannelList/hooks/useChannelUpdatedListener.js 454 B
./dist/components/ChannelList/hooks/useChannelVisibleListener.js 406 B
./dist/components/ChannelList/hooks/useConnectionRecoveredListener.js 244 B
./dist/components/ChannelList/hooks/useMessageNewListener.js 529 B
./dist/components/ChannelList/hooks/useMobileNavigation.js 275 B
./dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js 542 B
./dist/components/ChannelList/hooks/useNotificationMessageNewListener.js 453 B
./dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js 339 B
./dist/components/ChannelList/hooks/usePaginatedChannels.js 1.26 kB
./dist/components/ChannelList/hooks/useSelectedChannelState.js 385 B
./dist/components/ChannelList/hooks/useUserPresenceChangedListener.js 369 B
./dist/components/ChannelList/index.js 78 B
./dist/components/ChannelList/utils.js 1.37 kB
./dist/components/ChannelPreview/ChannelPreview.js 949 B
./dist/components/ChannelPreview/ChannelPreviewActionButtons.js 477 B
./dist/components/ChannelPreview/ChannelPreviewMessenger.js 884 B
./dist/components/ChannelPreview/hooks/index.js 97 B
./dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js 445 B
./dist/components/ChannelPreview/hooks/useIsChannelMuted.js 299 B
./dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js 744 B
./dist/components/ChannelPreview/icons.js 573 B
./dist/components/ChannelPreview/index.js 95 B
./dist/components/ChannelPreview/utils.js 1.13 kB
./dist/components/ChannelSearch/ChannelSearch.js 815 B
./dist/components/ChannelSearch/hooks/useChannelSearch.js 1.7 kB
./dist/components/ChannelSearch/icons.js 684 B
./dist/components/ChannelSearch/index.js 85 B
./dist/components/ChannelSearch/SearchBar.js 1.08 kB
./dist/components/ChannelSearch/SearchInput.js 295 B
./dist/components/ChannelSearch/SearchResults.js 1.29 kB
./dist/components/ChannelSearch/utils.js 72 B
./dist/components/Chat/hooks/useChannelsQueryState.js 181 B
./dist/components/Chat/hooks/useChat.js 1.26 kB
./dist/components/Chat/hooks/useCreateChatClient.js 482 B
./dist/components/Chat/hooks/useCreateChatContext.js 557 B
./dist/components/Chat/index.js 71 B
./dist/components/ChatView/ChatView.js 1.33 kB
./dist/components/ChatView/index.js 48 B
./dist/components/DateSeparator/DateSeparator.js 506 B
./dist/components/DateSeparator/index.js 53 B
./dist/components/Dialog/ButtonWithSubmenu.js 1.09 kB
./dist/components/Dialog/DialogAnchor.js 1.06 kB
./dist/components/Dialog/DialogMenu.js 212 B
./dist/components/Dialog/FormDialog.js 1.05 kB
./dist/components/Dialog/hooks/index.js 49 B
./dist/components/Dialog/index.js 98 B
./dist/components/Dialog/PromptDialog.js 283 B
./dist/components/DragAndDrop/DragAndDropContainer.js 1.11 kB
./dist/components/EmptyStateIndicator/EmptyStateIndicator.js 443 B
./dist/components/EmptyStateIndicator/icons.js 319 B
./dist/components/EmptyStateIndicator/index.js 59 B
./dist/components/EventComponent/EventComponent.js 736 B
./dist/components/EventComponent/index.js 54 B
./dist/components/Form/Dropdown.js 932 B
./dist/components/Form/FieldError.js 171 B
./dist/components/Form/SwitchField.js 481 B
./dist/components/Gallery/BaseImage.js 412 B
./dist/components/Gallery/index.js 70 B
./dist/components/Gallery/ModalGallery.js 676 B
./dist/components/index.js 317 B
./dist/components/InfiniteScrollPaginator/hooks/useCursorPaginator.js 526 B
./dist/components/InfiniteScrollPaginator/index.js 54 B
./dist/components/InfiniteScrollPaginator/InfiniteScroll.js 1.57 kB
./dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.js 996 B
./dist/components/Loading/index.js 76 B
./dist/components/Loading/LoadingChannels.js 276 B
./dist/components/Loading/LoadingErrorIndicator.js 311 B
./dist/components/Loading/LoadingIndicator.js 641 B
./dist/components/LoadMore/index.js 69 B
./dist/components/LoadMore/LoadMoreButton.js 536 B
./dist/components/LoadMore/LoadMorePaginator.js 444 B
./dist/components/Location/hooks/useLiveLocationSharingManager.js 569 B
./dist/components/Location/index.js 59 B
./dist/components/Location/ShareLocationDialog.js 1.8 kB
./dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js 787 B
./dist/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.js 238 B
./dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js 740 B
./dist/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.js 561 B
./dist/components/MediaRecorder/AudioRecorder/hooks/useTimeElapsed.js 354 B
./dist/components/MediaRecorder/AudioRecorder/index.js 75 B
./dist/components/MediaRecorder/AudioRecorder/RecordingTimer.js 227 B
./dist/components/MediaRecorder/classes/AmplitudeRecorder.js 1.09 kB
./dist/components/MediaRecorder/classes/BrowserPermission.js 755 B
./dist/components/MediaRecorder/classes/index.js 86 B
./dist/components/MediaRecorder/classes/MediaRecorderController.js 2.66 kB
./dist/components/MediaRecorder/hooks/index.js 31 B
./dist/components/MediaRecorder/hooks/useMediaRecorder.js 736 B
./dist/components/MediaRecorder/index.js 150 B
./dist/components/MediaRecorder/observable/BehaviorSubject.js 286 B
./dist/components/MediaRecorder/observable/index.js 91 B
./dist/components/MediaRecorder/observable/Observable.js 243 B
./dist/components/MediaRecorder/observable/Observer.js 108 B
./dist/components/MediaRecorder/observable/Subject.js 472 B
./dist/components/MediaRecorder/observable/Subscription.js 129 B
./dist/components/MediaRecorder/RecordingPermissionDeniedNotification.js 418 B
./dist/components/MediaRecorder/transcode/audioProcessing.js 677 B
./dist/components/MediaRecorder/transcode/index.js 267 B
./dist/components/MediaRecorder/transcode/wav.js 1.8 kB
./dist/components/Message/FixedHeightMessage.js 1.45 kB
./dist/components/Message/hooks/index.js 165 B
./dist/components/Message/hooks/useActionHandler.js 561 B
./dist/components/Message/hooks/useDeleteHandler.js 396 B
./dist/components/Message/hooks/useEditHandler.js 243 B
./dist/components/Message/hooks/useFlagHandler.js 515 B
./dist/components/Message/hooks/useMarkUnreadHandler.js 501 B
./dist/components/Message/hooks/useMentionsHandler.js 334 B
./dist/components/Message/hooks/useMessageReminder.js 232 B
./dist/components/Message/hooks/useMessageTextStreaming.js 650 B
./dist/components/Message/hooks/useMuteHandler.js 664 B
./dist/components/Message/hooks/useOpenThreadHandler.js 265 B
./dist/components/Message/hooks/usePinHandler.js 647 B
./dist/components/Message/hooks/useReactionHandler.js 1.45 kB
./dist/components/Message/hooks/useReactionsFetcher.js 513 B
./dist/components/Message/hooks/useRetryHandler.js 205 B
./dist/components/Message/hooks/useUserHandler.js 193 B
./dist/components/Message/hooks/useUserRole.js 661 B
./dist/components/Message/icons.js 1.24 kB
./dist/components/Message/index.js 221 B
./dist/components/Message/Message.js 1.95 kB
./dist/components/Message/MessageBlocked.js 379 B
./dist/components/Message/MessageDeleted.js 363 B
./dist/components/Message/MessageEditedTimestamp.js 418 B
./dist/components/Message/MessageErrorText.js 361 B
./dist/components/Message/MessageIsThreadReplyInChannelButtonIndicator.js 894 B
./dist/components/Message/MessageOptions.js 824 B
./dist/components/Message/MessageRepliesCountButton.js 415 B
./dist/components/Message/MessageSimple.js 2.28 kB
./dist/components/Message/MessageStatus.js 1.11 kB
./dist/components/Message/MessageText.js 868 B
./dist/components/Message/MessageTimestamp.js 281 B
./dist/components/Message/QuotedMessage.js 932 B
./dist/components/Message/ReminderNotification.js 544 B
./dist/components/Message/renderText/componentRenderers/Anchor.js 297 B
./dist/components/Message/renderText/componentRenderers/Emoji.js 151 B
./dist/components/Message/renderText/componentRenderers/index.js 66 B
./dist/components/Message/renderText/componentRenderers/Mention.js 174 B
./dist/components/Message/renderText/index.js 135 B
./dist/components/Message/renderText/regex.js 378 B
./dist/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.js 241 B
./dist/components/Message/renderText/rehypePlugins/index.js 72 B
./dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.js 972 B
./dist/components/Message/renderText/remarkPlugins/htmlToTextPlugin.js 172 B
./dist/components/Message/renderText/remarkPlugins/index.js 75 B
./dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js 450 B
./dist/components/Message/renderText/renderText.js 1.78 kB
./dist/components/Message/renderText/types.js 31 B
./dist/components/Message/StreamedMessageText.js 309 B
./dist/components/Message/Timestamp.js 435 B
./dist/components/Message/types.js 31 B
./dist/components/Message/utils.js 2.99 kB
./dist/components/MessageActions/CustomMessageActionsList.js 333 B
./dist/components/MessageActions/hooks/index.js 66 B
./dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js 465 B
./dist/components/MessageActions/index.js 77 B
./dist/components/MessageActions/MessageActions.js 1.18 kB
./dist/components/MessageActions/MessageActionsBox.js 1.17 kB
./dist/components/MessageActions/RemindMeSubmenu.js 552 B
./dist/components/MessageBounce/index.js 70 B
./dist/components/MessageBounce/MessageBouncePrompt.js 453 B
./dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js 854 B
./dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.js 731 B
./dist/components/MessageInput/AttachmentPreviewList/GeolocationPreview.js 545 B
./dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.js 729 B
./dist/components/MessageInput/AttachmentPreviewList/index.js 61 B
./dist/components/MessageInput/AttachmentPreviewList/types.js 31 B
./dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.js 731 B
./dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.js 804 B
./dist/components/MessageInput/CooldownTimer.js 230 B
./dist/components/MessageInput/hooks/index.js 146 B
./dist/components/MessageInput/hooks/useAttachmentManagerState.js 305 B
./dist/components/MessageInput/hooks/useAttachmentsForPreview.js 287 B
./dist/components/MessageInput/hooks/useCanCreatePoll.js 208 B
./dist/components/MessageInput/hooks/useCooldownTimer.js 640 B
./dist/components/MessageInput/hooks/useCreateMessageInputContext.js 474 B
./dist/components/MessageInput/hooks/useMessageComposer.js 807 B
./dist/components/MessageInput/hooks/useMessageComposerHasSendableData.js 196 B
./dist/components/MessageInput/hooks/useMessageInputControls.js 311 B
./dist/components/MessageInput/hooks/usePasteHandler.js 605 B
./dist/components/MessageInput/hooks/useSubmitHandler.js 1.03 kB
./dist/components/MessageInput/hooks/useTextareaRef.js 195 B
./dist/components/MessageInput/hooks/useTimer.js 265 B
./dist/components/MessageInput/hooks/utils.js 256 B
./dist/components/MessageInput/icons.js 2.42 kB
./dist/components/MessageInput/index.js 191 B
./dist/components/MessageInput/LinkPreviewList.js 829 B
./dist/components/MessageInput/MessageInput.js 856 B
./dist/components/MessageInput/MessageInputFlat.js 1.64 kB
./dist/components/MessageInput/QuotedMessagePreview.js 916 B
./dist/components/MessageInput/SendButton.js 287 B
./dist/components/MessageInput/SendToChannelCheckbox.js 493 B
./dist/components/MessageInput/StopAIGenerationButton.js 261 B
./dist/components/MessageInput/WithDragAndDropUpload.js 1.5 kB
./dist/components/MessageList/ConnectionStatus.js 425 B
./dist/components/MessageList/CustomNotification.js 289 B
./dist/components/MessageList/GiphyPreviewMessage.js 193 B
./dist/components/MessageList/hooks/index.js 183 B
./dist/components/MessageList/hooks/MessageList/index.js 128 B
./dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js 627 B
./dist/components/MessageList/hooks/MessageList/useMessageListElements.js 534 B
./dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js 873 B
./dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js 797 B
./dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js 993 B
./dist/components/MessageList/hooks/useLastReadData.js 243 B
./dist/components/MessageList/hooks/useMarkRead.js 1.1 kB
./dist/components/MessageList/hooks/VirtualizedMessageList/index.js 158 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js 355 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js 326 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.js 615 B
./dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js 1.3 kB
./dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js 425 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js 387 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js 656 B
./dist/components/MessageList/icons.js 591 B
./dist/components/MessageList/index.js 201 B
./dist/components/MessageList/MessageList.js 2.77 kB
./dist/components/MessageList/MessageListMainPanel.js 197 B
./dist/components/MessageList/MessageListNotifications.js 528 B
./dist/components/MessageList/MessageNotification.js 268 B
./dist/components/MessageList/renderMessages.js 946 B
./dist/components/MessageList/ScrollToBottomButton.js 970 B
./dist/components/MessageList/UnreadMessagesNotification.js 396 B
./dist/components/MessageList/UnreadMessagesSeparator.js 307 B
./dist/components/MessageList/utils.js 3.05 kB
./dist/components/MessageList/VirtualizedMessageList.js 3.86 kB
./dist/components/MessageList/VirtualizedMessageListComponents.js 1.88 kB
./dist/components/Modal/icons.js 431 B
./dist/components/Modal/Modal.js 595 B
./dist/components/Modal/ModalHeader.js 243 B
./dist/components/Notifications/hooks/index.js 56 B
./dist/components/Notifications/hooks/useNotifications.js 196 B
./dist/components/Notifications/index.js 45 B
./dist/components/Poll/constants.js 76 B
./dist/components/Poll/hooks/index.js 77 B
./dist/components/Poll/hooks/useManagePollVotesRealtime.js 637 B
./dist/components/Poll/hooks/usePollAnswerPagination.js 515 B
./dist/components/Poll/hooks/usePollOptionVotesPagination.js 520 B
./dist/components/Poll/index.js 127 B
./dist/components/Poll/Poll.js 243 B
./dist/components/Poll/PollActions/AddCommentForm.js 647 B
./dist/components/Poll/PollActions/EndPollDialog.js 395 B
./dist/components/Poll/PollActions/index.js 124 B
./dist/components/Poll/PollActions/PollAnswerList.js 721 B
./dist/components/Poll/PollActions/PollOptionsFullList.js 382 B
./dist/components/Poll/PollActions/PollResults/index.js 51 B
./dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js 485 B
./dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.js 527 B
./dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js 473 B
./dist/components/Poll/PollActions/PollResults/PollResults.js 698 B
./dist/components/Poll/PollActions/SuggestPollOptionForm.js 718 B
./dist/components/Poll/PollContent.js 415 B
./dist/components/Poll/PollCreationDialog/index.js 58 B
./dist/components/Poll/PollCreationDialog/MultipleAnswersField.js 795 B
./dist/components/Poll/PollCreationDialog/NameField.js 563 B
./dist/components/Poll/PollCreationDialog/OptionFieldSet.js 930 B
./dist/components/Poll/PollCreationDialog/PollCreationDialog.js 782 B
./dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js 441 B
./dist/components/Poll/PollCreationDialog/types.js 31 B
./dist/components/Poll/PollHeader.js 526 B
./dist/components/Poll/PollOptionList.js 429 B
./dist/components/Poll/PollOptionSelector.js 1.18 kB
./dist/components/Poll/PollVote.js 691 B
./dist/components/Poll/QuotedPoll.js 340 B
./dist/components/Portal/Portal.js 246 B
./dist/components/ReactFileUtilities/FileIcon/FileIcon.js 362 B
./dist/components/ReactFileUtilities/FileIcon/FileIconSet.js 5.26 kB
./dist/components/ReactFileUtilities/FileIcon/iconMap.js 527 B
./dist/components/ReactFileUtilities/FileIcon/index.js 53 B
./dist/components/ReactFileUtilities/FileIcon/mimeTypes.js 833 B
./dist/components/ReactFileUtilities/index.js 94 B
./dist/components/ReactFileUtilities/LoadingIndicator.js 257 B
./dist/components/ReactFileUtilities/types.js 31 B
./dist/components/ReactFileUtilities/UploadButton.js 811 B
./dist/components/ReactFileUtilities/utils.js 1.17 kB
./dist/components/Reactions/hooks/useFetchReactions.js 413 B
./dist/components/Reactions/hooks/useProcessReactions.js 960 B
./dist/components/Reactions/index.js 117 B
./dist/components/Reactions/reactionOptions.js 325 B
./dist/components/Reactions/ReactionSelector.js 1.74 kB
./dist/components/Reactions/ReactionSelectorWithButton.js 644 B
./dist/components/Reactions/ReactionsList.js 1.02 kB
./dist/components/Reactions/SimpleReactionsList.js 779 B
./dist/components/Reactions/SpriteImage.js 645 B
./dist/components/Reactions/StreamEmoji.js 379 B
./dist/components/Reactions/types.js 31 B
./dist/components/Reactions/utils/utils.js 281 B
./dist/components/SafeAnchor/index.js 74 B
./dist/components/SafeAnchor/SafeAnchor.js 327 B
./dist/components/TextareaComposer/index.js 76 B
./dist/components/TextareaComposer/SuggestionList/CommandItem.js 239 B
./dist/components/TextareaComposer/SuggestionList/EmoticonItem.js 355 B
./dist/components/TextareaComposer/SuggestionList/index.js 88 B
./dist/components/TextareaComposer/SuggestionList/SuggestionList.js 950 B
./dist/components/TextareaComposer/SuggestionList/SuggestionListItem.js 580 B
./dist/components/TextareaComposer/SuggestionList/UserItem.js 568 B
./dist/components/TextareaComposer/TextareaComposer.js 2.45 kB
./dist/components/Thread/icons.js 352 B
./dist/components/Thread/index.js 98 B
./dist/components/Thread/LegacyThreadContext.js 137 B
./dist/components/Thread/Thread.js 1.52 kB
./dist/components/Thread/ThreadHead.js 278 B
./dist/components/Thread/ThreadHeader.js 429 B
./dist/components/Thread/ThreadStart.js 262 B
./dist/components/Threads/hooks/useThreadManagerState.js 168 B
./dist/components/Threads/hooks/useThreadState.js 250 B
./dist/components/Threads/icons.js 850 B
./dist/components/Threads/index.js 61 B
./dist/components/Threads/ThreadContext.js 219 B
./dist/components/Threads/ThreadList/index.js 64 B
./dist/components/Threads/ThreadList/ThreadList.js 716 B
./dist/components/Threads/ThreadList/ThreadListEmptyPlaceholder.js 212 B
./dist/components/Threads/ThreadList/ThreadListItem.js 564 B
./dist/components/Threads/ThreadList/ThreadListItemUI.js 1.33 kB
./dist/components/Threads/ThreadList/ThreadListLoadingIndicator.js 347 B
./dist/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.js 361 B
./dist/components/Threads/UnreadCountBadge.js 222 B
./dist/components/Tooltip/hooks/index.js 61 B
./dist/components/Tooltip/hooks/useEnterLeaveHandlers.js 234 B
./dist/components/Tooltip/index.js 47 B
./dist/components/Tooltip/Tooltip.js 371 B
./dist/components/TypingIndicator/index.js 55 B
./dist/components/TypingIndicator/TypingIndicator.js 834 B
./dist/components/UtilityComponents/ErrorBoundary.js 252 B
./dist/components/UtilityComponents/index.js 72 B
./dist/components/UtilityComponents/NullComponent.js 61 B
./dist/components/UtilityComponents/useStableId.js 268 B
./dist/components/Window/index.js 46 B
./dist/components/Window/Window.js 335 B
./dist/constants/limits.js 183 B
./dist/constants/messageTypes.js 105 B
./dist/context/AttachmentSelectorContext.js 199 B
./dist/context/ChannelActionContext.js 550 B
./dist/context/ChannelListContext.js 356 B
./dist/context/ChannelStateContext.js 548 B
./dist/context/ChatContext.js 538 B
./dist/context/ComponentContext.js 466 B
./dist/context/index.js 155 B
./dist/context/MessageBounceContext.js 584 B
./dist/context/MessageContext.js 491 B
./dist/context/MessageInputContext.js 277 B
./dist/context/MessageListContext.js 356 B
./dist/context/PollContext.js 206 B
./dist/context/TranslationContext.js 558 B
./dist/context/TypingContext.js 543 B
./dist/context/utils/getDisplayName.js 83 B
./dist/context/VirtualizedMessageListContext.js 237 B
./dist/context/WithComponents.js 212 B
./dist/css/v2/emoji-mart.css 1.84 kB
./dist/css/v2/emoji-replacement.css 300 B
./dist/experimental/index.js 66 B
./dist/experimental/MessageActions/defaults.js 1.27 kB
./dist/experimental/MessageActions/hooks/index.js 82 B
./dist/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.js 820 B
./dist/experimental/MessageActions/hooks/useSplitMessageActionSet.js 216 B
./dist/experimental/MessageActions/index.js 72 B
./dist/experimental/MessageActions/MessageActions.js 1.14 kB
./dist/experimental/Search/hooks/index.js 86 B
./dist/experimental/Search/hooks/useSearchFocusedMessage.js 226 B
./dist/experimental/Search/hooks/useSearchQueriesInProgress.js 388 B
./dist/experimental/Search/index.js 83 B
./dist/experimental/Search/Search.js 485 B
./dist/experimental/Search/SearchBar/index.js 49 B
./dist/experimental/Search/SearchBar/SearchBar.js 852 B
./dist/experimental/Search/SearchContext.js 244 B
./dist/experimental/Search/SearchResults/index.js 128 B
./dist/experimental/Search/SearchResults/SearchResultItem.js 1.11 kB
./dist/experimental/Search/SearchResults/SearchResults.js 520 B
./dist/experimental/Search/SearchResults/SearchResultsHeader.js 597 B
./dist/experimental/Search/SearchResults/SearchResultsPresearch.js 213 B
./dist/experimental/Search/SearchResults/SearchSourceResultList.js 563 B
./dist/experimental/Search/SearchResults/SearchSourceResultListFooter.js 426 B
./dist/experimental/Search/SearchResults/SearchSourceResults.js 460 B
./dist/experimental/Search/SearchResults/SearchSourceResultsEmpty.js 215 B
./dist/experimental/Search/SearchResults/SearchSourceResultsHeader.js 73 B
./dist/experimental/Search/SearchResults/SearchSourceResultsLoadingIndicator.js 275 B
./dist/experimental/Search/SearchSourceResultsContext.js 255 B
./dist/i18n/de.json 4.58 kB
./dist/i18n/en.json 3.04 kB
./dist/i18n/es.json 4.56 kB
./dist/i18n/fr.json 4.66 kB
./dist/i18n/hi.json 5.19 kB
./dist/i18n/index.js 171 B
./dist/i18n/it.json 4.58 kB
./dist/i18n/ja.json 4.94 kB
./dist/i18n/ko.json 4.85 kB
./dist/i18n/nl.json 4.44 kB
./dist/i18n/pt.json 4.56 kB
./dist/i18n/ru.json 5.49 kB
./dist/i18n/Streami18n.js 5.58 kB
./dist/i18n/tr.json 4.52 kB
./dist/i18n/TranslationBuilder/index.js 74 B
./dist/i18n/TranslationBuilder/notifications/attachmentUpload.js 365 B
./dist/i18n/TranslationBuilder/notifications/index.js 83 B
./dist/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.js 449 B
./dist/i18n/TranslationBuilder/notifications/pollComposition.js 225 B
./dist/i18n/TranslationBuilder/notifications/types.js 31 B
./dist/i18n/TranslationBuilder/TranslationBuilder.js 792 B
./dist/i18n/translations.js 172 B
./dist/i18n/types.js 31 B
./dist/i18n/utils.js 1.18 kB
./dist/index.js 85 B
./dist/plugins/Emojis/EmojiPicker.js 990 B
./dist/plugins/Emojis/icons.js 436 B
./dist/plugins/Emojis/index.browser.cjs 4.41 kB
./dist/plugins/Emojis/index.js 86 B
./dist/plugins/Emojis/index.node.cjs 4.46 kB
./dist/plugins/Emojis/middleware/index.js 67 B
./dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.js 1.55 kB
./dist/plugins/encoders/mp3.browser.cjs 1.67 kB
./dist/plugins/encoders/mp3.js 780 B
./dist/plugins/encoders/mp3.node.cjs 1.71 kB
./dist/store/hooks/index.js 53 B
./dist/store/hooks/useStateStore.js 600 B
./dist/store/index.js 45 B
./dist/types/defaultDataInterfaces.js 31 B
./dist/types/index.js 31 B
./dist/types/types.js 31 B
./dist/utils/browsers.js 154 B
./dist/utils/deprecationWarning.js 294 B
./dist/utils/getChannel.js 884 B
./dist/utils/getWholeChar.js 415 B
./dist/utils/index.js 65 B
./dist/utils/mergeDeep.js 170 B

compressed-size-action

Copy link

codecov bot commented Aug 1, 2025

Codecov Report

❌ Patch coverage is 95.65217% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.28%. Comparing base (c7c1825) to head (bc1805a).
⚠️ Report is 5 commits behind head on master.

Files with missing lines Patch % Lines
src/context/DialogManagerContext.tsx 91.37% 5 Missing ⚠️
src/components/Gallery/Image.tsx 90.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2792      +/-   ##
==========================================
+ Coverage   81.21%   81.28%   +0.07%     
==========================================
  Files         487      488       +1     
  Lines        9785     9893     +108     
  Branches     2215     2243      +28     
==========================================
+ Hits         7947     8042      +95     
- Misses       1728     1740      +12     
- Partials      110      111       +1     

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment on lines +69 to +72
<button
className='str-chat__modal__close-button'
ref={closeRef}
title={t('Close')}
Copy link
Member

Choose a reason for hiding this comment

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

Maybe also add type="button" so this doesn't accidentally submit parent forms?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done: 878e855

if (open && !dialog.isOpen) {
dialog.open();
}
}, [dialog, open, children]);
Copy link
Member

Choose a reason for hiding this comment

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

Are children required in the dependency array? This would make this effect run on every re-render.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No idea why I put it there

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: 371670f

[id],
);

addDialogManager(dialogManager);
Copy link
Member

Choose a reason for hiding this comment

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

Should this go inside the useEffect instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

running it inside the effect makes this code to execute later than the children that try to access the manager during the render. addDialogManager does nothing if the manager exists so it does not cause any harm, but makes sure that children rendering below have the manager available.

Copy link
Member

Choose a reason for hiding this comment

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

But, why don't children access it via the context provider?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

There is access through the provider - which is the fallback if manager id or dialog id are not specified. If you have a component rendered under two dialog manager providers and the component wants the top level manager, then here we circumvent the context.

Copy link
Member

Choose a reason for hiding this comment

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

It still feels like an anti-pattern. Can we structure this differently so we keep the DialogManagerProvider render pure?

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

Successfully merging this pull request may close these issues.

2 participants