refactor(eslint): Enable react/no-children-prop#38170
Conversation
|
Looks like this PR is ready to merge! 🎉 |
|
WalkthroughA systematic refactoring replacing the explicit Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
🧹 Recent nitpick comments
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
⛔ Files ignored due to path filters (1)
📒 Files selected for processing (104)
🚧 Files skipped from review as they are similar to previous changes (60)
🧰 Additional context used📓 Path-based instructions (1)**/*.{ts,tsx,js}📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
Files:
🧠 Learnings (3)📚 Learning: 2025-10-30T19:30:46.541ZApplied to files:
📚 Learning: 2025-12-10T21:00:54.909ZApplied to files:
📚 Learning: 2025-11-19T18:20:07.720ZApplied to files:
🧬 Code graph analysis (8)apps/meteor/client/providers/SettingsProvider.tsx (1)
apps/meteor/client/providers/SessionProvider.tsx (1)
apps/meteor/client/providers/AvatarUrlProvider.tsx (1)
apps/meteor/client/providers/AppsProvider.tsx (1)
apps/meteor/client/providers/RouterProvider.tsx (1)
apps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsx (1)
apps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsx (1)
apps/meteor/client/providers/ServerProvider.tsx (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
🔇 Additional comments (46)
✏️ Tip: You can disable this entire section by setting Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #38170 +/- ##
===========================================
- Coverage 70.64% 70.63% -0.01%
===========================================
Files 3133 3133
Lines 108371 108369 -2
Branches 19491 19496 +5
===========================================
- Hits 76557 76549 -8
- Misses 29816 29825 +9
+ Partials 1998 1995 -3
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
apps/meteor/client/views/room/providers/ComposerPopupProvider.tsx (3)
227-237: Fix incorrect emoji data lookup.Line 229 uses
collection[key]but should usecollection[_id]. The variablekeyis the filter pattern (:${filter}), not the emoji identifier. This causes all emojis to receive the same (likely undefined) data.🐛 Proposed fix
return Object.keys(collection) .map((_id) => { - const data = collection[key]; + const data = collection[_id]; return { _id, data }; })
284-294: Fix incorrect emoji data lookup (duplicate bug).Line 286 has the same issue as line 229 - uses
collection[key]instead ofcollection[_id], causing incorrect emoji data.🐛 Proposed fix
return Object.keys(collection) .map((_id) => { - const data = collection[key]; + const data = collection[_id]; return { _id, data }; })
256-276: Fix variable assignment in emoji sort function.Line 258 incorrectly assigns
idB = a._idinstead ofidB = b._id, causing the sort comparison to be meaningless since both variables would have the same base value.🐛 Proposed fix
const emojiSort = (recents: string[]) => (a: { _id: string }, b: { _id: string }) => { let idA = a._id; - let idB = a._id; + let idB = b._id;
🧹 Nitpick comments (1)
apps/uikit-playground/src/Components/Templates/Container/Container.tsx (1)
9-9: Consider using a stable identifier for the key prop.Using array index as a key works for static lists but can cause issues if items are reordered or filtered. If
templateTypehas a unique identifier (e.g.,template.idortemplate.name), prefer using that instead.♻️ Suggested improvement (if template has unique id)
- templates.map((template, i) => <Section key={i} template={template} index={i} />)} + templates.map((template, i) => <Section key={template.id ?? i} template={template} index={i} />)}
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (104)
apps/meteor/client/components/PageSkeleton.tsxapps/meteor/client/components/UserCard/UserCardRole.tsxapps/meteor/client/components/UserInfo/UserInfoABACAttribute.tsxapps/meteor/client/components/message/content/attachments/structure/AttachmentBlock.tsxapps/meteor/client/portals/SidebarPortal/index.tsxapps/meteor/client/providers/AppsProvider/AppsProvider.tsxapps/meteor/client/providers/AttachmentProvider.tsxapps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsxapps/meteor/client/providers/AuthorizationProvider.tsxapps/meteor/client/providers/AvatarUrlProvider.tsxapps/meteor/client/providers/CustomSoundProvider/CustomSoundProvider.tsxapps/meteor/client/providers/LayoutProvider.tsxapps/meteor/client/providers/OmnichannelProvider.tsxapps/meteor/client/providers/RouterProvider.tsxapps/meteor/client/providers/ServerProvider.tsxapps/meteor/client/providers/SessionProvider.tsxapps/meteor/client/providers/SettingsProvider.tsxapps/meteor/client/providers/ToastMessagesProvider.tsxapps/meteor/client/providers/TranslationProvider.tsxapps/meteor/client/providers/UserProvider/UserProvider.tsxapps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListErrorBoundary.tsxapps/meteor/client/sidebar/hooks/useRoomList.spec.tsxapps/meteor/client/stories/contexts/ModalContextMock.tsxapps/meteor/client/stories/contexts/RouterContextMock.tsxapps/meteor/client/stories/contexts/ServerContextMock.tsxapps/meteor/client/stories/contexts/TranslationContextMock.tsxapps/meteor/client/views/admin/customUserStatus/CustomUserStatusDisabledModal.tsxapps/meteor/client/views/admin/engagementDashboard/EngagementDashboardCardErrorBoundary.tsxapps/meteor/client/views/admin/engagementDashboard/EngagementDashboardPage.stories.tsxapps/meteor/client/views/admin/engagementDashboard/channels/ChannelsTab.stories.tsxapps/meteor/client/views/admin/engagementDashboard/dataView/LegendSymbol.stories.tsxapps/meteor/client/views/admin/engagementDashboard/messages/MessagesTab.stories.tsxapps/meteor/client/views/admin/engagementDashboard/users/UsersTab.stories.tsxapps/meteor/client/views/admin/invites/InvitesPage.tsxapps/meteor/client/views/admin/settings/SettingsGroupPage/SettingsGroupPage.tsxapps/meteor/client/views/admin/settings/SettingsSection/SettingsSection.tsxapps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsxapps/meteor/client/views/home/cards/AddUsersCard.tsxapps/meteor/client/views/home/cards/CreateChannelsCard.tsxapps/meteor/client/views/home/cards/DesktopAppsCard.tsxapps/meteor/client/views/home/cards/DocumentationCard.tsxapps/meteor/client/views/home/cards/JoinRoomsCard.tsxapps/meteor/client/views/home/cards/MobileAppsCard.tsxapps/meteor/client/views/omnichannel/directory/providers/ChatsProvider.tsxapps/meteor/client/views/omnichannel/modals/ForwardChatModal.tsxapps/meteor/client/views/room/MessageList/MessageListErrorBoundary.tsxapps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsxapps/meteor/client/views/room/modals/DeleteMessageConfirmModal/DeleteMessageConfirmModal.tsxapps/meteor/client/views/room/providers/ComposerPopupProvider.tsxapps/meteor/client/views/root/MainLayout/AuthenticationCheck.tsxapps/meteor/client/views/root/MainLayout/LoginPage.tsxapps/meteor/tests/mocks/client/FakeChatProvider.tsxapps/meteor/tests/mocks/client/ModalContextMock.tsxapps/meteor/tests/mocks/client/ServerProviderMock.tsxapps/uikit-playground/.eslintrc.jsonapps/uikit-playground/package.jsonapps/uikit-playground/src/Components/Draggable/DraggableList.tsxapps/uikit-playground/src/Components/NavBar/BurgerIcon/Wrapper.tsxapps/uikit-playground/src/Components/Templates/Container/Container.tsxapps/uikit-playground/src/Components/Templates/Container/Section.tsxapps/uikit-playground/src/Components/ToggleTabs/index.tsxapps/uikit-playground/src/Components/navMenu/Menu/Wrapper.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/OrderedListBlock.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/ParagraphBlock.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/UnorderedListBlock.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/BoldSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/InlineElements.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/ItalicSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/LinkSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/StrikeSpan.tsxpackages/eslint-config/react.jspackages/fuselage-ui-kit/.storybook/preview.tsxpackages/gazzodown/src/Markup.tsxpackages/gazzodown/src/PreviewMarkup.tsxpackages/gazzodown/src/blocks/OrderedListBlock.tsxpackages/gazzodown/src/blocks/ParagraphBlock.tsxpackages/gazzodown/src/blocks/QuoteBlock.tsxpackages/gazzodown/src/blocks/TaskListBlock.tsxpackages/gazzodown/src/blocks/UnorderedListBlock.tsxpackages/gazzodown/src/elements/BoldSpan.tsxpackages/gazzodown/src/elements/InlineElements.tsxpackages/gazzodown/src/elements/ItalicSpan.tsxpackages/gazzodown/src/elements/LinkSpan.tsxpackages/gazzodown/src/elements/PreviewInlineElements.tsxpackages/gazzodown/src/elements/StrikeSpan.tsxpackages/gazzodown/src/katex/KatexErrorBoundary.tsxpackages/livechat/.eslintrc.jsonpackages/livechat/src/components/Messages/MessageBlocks/stories.tsxpackages/livechat/src/components/uiKit/message/ActionsBlock.stories.tsxpackages/livechat/src/components/uiKit/message/Block.tsxpackages/livechat/src/components/uiKit/message/ButtonElement/index.tsxpackages/livechat/src/components/uiKit/message/ButtonElement/stories.tsxpackages/livechat/src/components/uiKit/message/ContextBlock.stories.tsxpackages/livechat/src/components/uiKit/message/DividerBlock.stories.tsxpackages/livechat/src/components/uiKit/message/ImageBlock.stories.tsxpackages/livechat/src/components/uiKit/message/ImageBlock/index.tsxpackages/livechat/src/components/uiKit/message/SectionBlock.stories.tsxpackages/livechat/src/components/uiKit/message/Surface.tsxpackages/livechat/src/providers/ServerProvider.tsxpackages/ui-client/src/components/AnchorPortal.spec.tsxpackages/ui-client/src/components/Modal/ModalBackdrop.tsxpackages/ui-client/src/components/Page/Page.stories.tsxpackages/ui-client/src/providers/ModalProvider/ModalProvider.tsxpackages/web-ui-registration/src/LoginServices.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js}
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
**/*.{ts,tsx,js}: Write concise, technical TypeScript/JavaScript with accurate typing in Playwright tests
Avoid code comments in the implementation
Files:
apps/meteor/client/providers/AuthorizationProvider.tsxapps/meteor/client/providers/AppsProvider/AppsProvider.tsxapps/uikit-playground/src/Components/Templates/Container/Section.tsxapps/meteor/client/stories/contexts/ModalContextMock.tsxpackages/gazzodown/src/katex/KatexErrorBoundary.tsxapps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsxapps/meteor/client/stories/contexts/TranslationContextMock.tsxapps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsxapps/meteor/client/views/room/modals/DeleteMessageConfirmModal/DeleteMessageConfirmModal.tsxapps/meteor/client/views/admin/engagementDashboard/dataView/LegendSymbol.stories.tsxpackages/livechat/src/components/uiKit/message/SectionBlock.stories.tsxpackages/ui-client/src/providers/ModalProvider/ModalProvider.tsxapps/meteor/client/views/omnichannel/directory/providers/ChatsProvider.tsxapps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListErrorBoundary.tsxapps/meteor/client/sidebar/hooks/useRoomList.spec.tsxpackages/livechat/src/components/uiKit/message/ButtonElement/index.tsxapps/meteor/client/views/room/providers/ComposerPopupProvider.tsxapps/uikit-playground/src/Components/NavBar/BurgerIcon/Wrapper.tsxpackages/ui-client/src/components/AnchorPortal.spec.tsxpackages/gazzodown/src/elements/ItalicSpan.tsxapps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsxapps/meteor/client/views/home/cards/CreateChannelsCard.tsxapps/uikit-playground/src/Components/ToggleTabs/index.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/BoldSpan.tsxapps/uikit-playground/src/Components/navMenu/Menu/Wrapper.tsxpackages/ui-client/src/components/Modal/ModalBackdrop.tsxpackages/gazzodown/src/elements/LinkSpan.tsxapps/meteor/client/stories/contexts/ServerContextMock.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/LinkSpan.tsxapps/meteor/client/providers/UserProvider/UserProvider.tsxapps/meteor/client/stories/contexts/RouterContextMock.tsxapps/meteor/client/components/UserInfo/UserInfoABACAttribute.tsxpackages/livechat/src/components/uiKit/message/DividerBlock.stories.tsxapps/meteor/client/components/message/content/attachments/structure/AttachmentBlock.tsxapps/uikit-playground/src/Components/Templates/Container/Container.tsxpackages/gazzodown/src/blocks/ParagraphBlock.tsxpackages/gazzodown/src/elements/PreviewInlineElements.tsxpackages/gazzodown/src/blocks/TaskListBlock.tsxapps/meteor/client/views/home/cards/AddUsersCard.tsxapps/meteor/client/views/room/MessageList/MessageListErrorBoundary.tsxapps/meteor/client/views/home/cards/DocumentationCard.tsxapps/meteor/client/portals/SidebarPortal/index.tsxapps/meteor/client/views/admin/engagementDashboard/messages/MessagesTab.stories.tsxpackages/livechat/src/components/uiKit/message/ContextBlock.stories.tsxpackages/livechat/src/components/uiKit/message/ImageBlock.stories.tsxpackages/livechat/src/components/uiKit/message/Surface.tsxpackages/livechat/src/components/uiKit/message/ActionsBlock.stories.tsxapps/meteor/client/providers/ToastMessagesProvider.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/StrikeSpan.tsxapps/meteor/client/providers/RouterProvider.tsxapps/meteor/client/providers/ServerProvider.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/OrderedListBlock.tsxapps/meteor/tests/mocks/client/ServerProviderMock.tsxapps/meteor/client/views/root/MainLayout/AuthenticationCheck.tsxpackages/livechat/src/components/Messages/MessageBlocks/stories.tsxapps/meteor/client/views/admin/settings/SettingsSection/SettingsSection.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/ParagraphBlock.tsxapps/meteor/client/views/admin/settings/SettingsGroupPage/SettingsGroupPage.tsxapps/meteor/client/views/admin/invites/InvitesPage.tsxapps/meteor/client/views/admin/engagementDashboard/EngagementDashboardCardErrorBoundary.tsxpackages/livechat/src/providers/ServerProvider.tsxapps/meteor/client/views/admin/engagementDashboard/users/UsersTab.stories.tsxapps/meteor/client/views/home/cards/DesktopAppsCard.tsxpackages/livechat/src/components/uiKit/message/Block.tsxapps/meteor/client/providers/LayoutProvider.tsxapps/meteor/client/views/home/cards/MobileAppsCard.tsxpackages/livechat/src/components/uiKit/message/ImageBlock/index.tsxpackages/ui-client/src/components/Page/Page.stories.tsxapps/meteor/client/providers/AvatarUrlProvider.tsxapps/meteor/client/providers/SettingsProvider.tsxapps/meteor/client/views/root/MainLayout/LoginPage.tsxpackages/gazzodown/src/PreviewMarkup.tsxapps/meteor/client/views/admin/engagementDashboard/EngagementDashboardPage.stories.tsxapps/meteor/tests/mocks/client/FakeChatProvider.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/UnorderedListBlock.tsxapps/meteor/client/providers/SessionProvider.tsxpackages/gazzodown/src/blocks/OrderedListBlock.tsxapps/meteor/client/views/home/cards/JoinRoomsCard.tsxpackages/livechat/src/components/uiKit/message/ButtonElement/stories.tsxpackages/gazzodown/src/blocks/UnorderedListBlock.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/ItalicSpan.tsxapps/meteor/client/views/admin/engagementDashboard/channels/ChannelsTab.stories.tsxpackages/gazzodown/src/Markup.tsxapps/meteor/client/providers/TranslationProvider.tsxpackages/gazzodown/src/blocks/QuoteBlock.tsxapps/meteor/tests/mocks/client/ModalContextMock.tsxapps/meteor/client/providers/CustomSoundProvider/CustomSoundProvider.tsxpackages/eslint-config/react.jsapps/meteor/client/views/omnichannel/modals/ForwardChatModal.tsxapps/meteor/client/components/UserCard/UserCardRole.tsxapps/meteor/client/providers/AttachmentProvider.tsxapps/meteor/client/components/PageSkeleton.tsxpackages/gazzodown/src/elements/StrikeSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/InlineElements.tsxpackages/web-ui-registration/src/LoginServices.tsxapps/meteor/client/views/admin/customUserStatus/CustomUserStatusDisabledModal.tsxapps/uikit-playground/src/Components/Draggable/DraggableList.tsxpackages/gazzodown/src/elements/InlineElements.tsxpackages/gazzodown/src/elements/BoldSpan.tsxapps/meteor/client/providers/OmnichannelProvider.tsx
🧠 Learnings (13)
📚 Learning: 2025-11-17T15:07:13.273Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37398
File: packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx:357-363
Timestamp: 2025-11-17T15:07:13.273Z
Learning: In packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx, IconElement is a presentational, non-actionable element that does not require wrapping in AppIdProvider, similar to plain_text and mrkdwn renderers. Only actionable elements (those with actions, actionId, or interactive behavior) should be wrapped in AppIdProvider.
Applied to files:
apps/meteor/client/providers/AppsProvider/AppsProvider.tsxapps/uikit-playground/src/Components/NavBar/BurgerIcon/Wrapper.tsxpackages/livechat/src/components/uiKit/message/Surface.tsxpackages/livechat/src/components/uiKit/message/Block.tsxpackages/livechat/src/components/uiKit/message/ButtonElement/stories.tsx
📚 Learning: 2025-12-10T21:00:54.909Z
Learnt from: KevLehman
Repo: RocketChat/Rocket.Chat PR: 37091
File: ee/packages/abac/jest.config.ts:4-7
Timestamp: 2025-12-10T21:00:54.909Z
Learning: Rocket.Chat monorepo: Jest testMatch pattern '<rootDir>/src/**/*.spec.(ts|js|mjs)' is valid in this repo and used across multiple packages (e.g., packages/tools, ee/packages/omnichannel-services). Do not flag it as invalid in future reviews.
Applied to files:
apps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsx
📚 Learning: 2025-12-02T22:23:49.593Z
Learnt from: d-gubert
Repo: RocketChat/Rocket.Chat PR: 37654
File: apps/meteor/client/hooks/useAppSlashCommands.ts:32-38
Timestamp: 2025-12-02T22:23:49.593Z
Learning: In apps/meteor/client/hooks/useAppSlashCommands.ts, the `data?.forEach((command) => slashCommands.add(command))` call during render is intentional. The query is configured with `structuralSharing: false` to prevent React Query from keeping stable data references, and `slashCommands.add` is idempotent, so executing on every render is acceptable and ensures the command registry stays current.
Applied to files:
apps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsx
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Utilize Playwright fixtures (`test`, `page`, `expect`) for consistency in test files
Applied to files:
apps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsxpackages/ui-client/src/components/AnchorPortal.spec.tsxapps/meteor/tests/mocks/client/ServerProviderMock.tsx
📚 Learning: 2025-10-28T16:53:42.761Z
Learnt from: ricardogarim
Repo: RocketChat/Rocket.Chat PR: 37205
File: ee/packages/federation-matrix/src/FederationMatrix.ts:296-301
Timestamp: 2025-10-28T16:53:42.761Z
Learning: In the Rocket.Chat federation-matrix integration (ee/packages/federation-matrix/), the createRoom method from rocket.chat/federation-sdk will support a 4-argument signature (userId, roomName, visibility, displayName) in newer versions. Code using this 4-argument call is forward-compatible with planned library updates and should not be flagged as an error.
Applied to files:
apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListErrorBoundary.tsx
📚 Learning: 2025-09-19T15:15:04.642Z
Learnt from: rodrigok
Repo: RocketChat/Rocket.Chat PR: 36991
File: apps/meteor/server/services/federation/infrastructure/rocket-chat/adapters/Settings.ts:219-221
Timestamp: 2025-09-19T15:15:04.642Z
Learning: The Federation_Matrix_homeserver_domain setting in apps/meteor/server/services/federation/infrastructure/rocket-chat/adapters/Settings.ts is part of the old federation system and is being deprecated/removed, so configuration issues with this setting should not be flagged for improvement.
Applied to files:
apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListErrorBoundary.tsx
📚 Learning: 2025-11-04T16:49:19.107Z
Learnt from: ricardogarim
Repo: RocketChat/Rocket.Chat PR: 37377
File: apps/meteor/ee/server/hooks/federation/index.ts:86-88
Timestamp: 2025-11-04T16:49:19.107Z
Learning: In Rocket.Chat's federation system (apps/meteor/ee/server/hooks/federation/), permission checks follow two distinct patterns: (1) User-initiated federation actions (creating rooms, adding users to federated rooms, joining from invites) should throw MeteorError to inform users they lack 'access-federation' permission. (2) Remote server-initiated federation events should silently skip/ignore when users lack permission. The beforeAddUserToRoom hook only executes for local user-initiated actions, so throwing an error there is correct. Remote federation events are handled separately by the federation Matrix package with silent skipping logic.
Applied to files:
apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListErrorBoundary.tsx
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `expect` matchers for assertions (`toEqual`, `toContain`, `toBeTruthy`, `toHaveLength`, etc.) instead of `assert` statements in Playwright tests
Applied to files:
packages/ui-client/src/components/AnchorPortal.spec.tsx
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Follow Page Object Model pattern consistently in Playwright tests
Applied to files:
packages/ui-client/src/components/AnchorPortal.spec.tsx
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Maintain test isolation between test cases in Playwright tests
Applied to files:
packages/ui-client/src/components/AnchorPortal.spec.tsx
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Prefer web-first assertions (`toBeVisible`, `toHaveText`, etc.) in Playwright tests
Applied to files:
packages/ui-client/src/components/AnchorPortal.spec.tsx
📚 Learning: 2025-10-30T19:30:46.541Z
Learnt from: MartinSchoeler
Repo: RocketChat/Rocket.Chat PR: 37244
File: apps/meteor/client/views/admin/ABAC/AdminABACRoomAttributesForm.spec.tsx:125-146
Timestamp: 2025-10-30T19:30:46.541Z
Learning: In the AdminABACRoomAttributesForm component (apps/meteor/client/views/admin/ABAC/AdminABACRoomAttributesForm.tsx), the first attribute value field is mandatory and does not have a Remove button. Only additional values beyond the first have Remove buttons. This means trashButtons[0] corresponds to the second value's Remove button, not the first value's.
Applied to files:
apps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsx
📚 Learning: 2025-11-19T18:20:07.720Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: packages/i18n/src/locales/en.i18n.json:918-921
Timestamp: 2025-11-19T18:20:07.720Z
Learning: Repo: RocketChat/Rocket.Chat — i18n/formatting
Learning: This repository uses a custom message formatting parser in UI blocks/messages; do not assume standard Markdown rules. For keys like Call_ended_bold, Call_not_answered_bold, Call_failed_bold, and Call_transferred_bold in packages/i18n/src/locales/en.i18n.json, retain the existing single-asterisk emphasis unless maintainers request otherwise.
Applied to files:
ee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/BoldSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/StrikeSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/ItalicSpan.tsxee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/InlineElements.tsx
🧬 Code graph analysis (16)
apps/meteor/client/providers/AuthorizationProvider.tsx (1)
packages/ui-contexts/src/index.ts (1)
AuthorizationContext(3-3)
apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx (1)
packages/ui-contexts/src/index.ts (1)
AuthenticationContext(2-2)
apps/meteor/client/stories/contexts/TranslationContextMock.tsx (1)
packages/ui-contexts/src/index.ts (1)
TranslationContext(15-15)
apps/meteor/client/views/room/hooks/useToggleFavoriteMutation.spec.tsx (1)
packages/mock-providers/src/MockedAppRootBuilder.tsx (1)
queryClient(270-280)
packages/livechat/src/components/uiKit/message/ButtonElement/index.tsx (2)
.github/actions/update-version-durability/index.js (1)
parser(169-169)packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx (1)
button(173-183)
apps/meteor/client/providers/UserProvider/UserProvider.tsx (1)
packages/ui-contexts/src/UserContext.ts (1)
UserContext(54-63)
apps/meteor/client/providers/ToastMessagesProvider.tsx (1)
packages/ui-contexts/src/index.ts (1)
ToastMessagesContext(13-13)
apps/meteor/client/providers/RouterProvider.tsx (1)
packages/ui-contexts/src/RouterContext.ts (1)
RouterContext(79-107)
apps/meteor/client/providers/ServerProvider.tsx (1)
packages/ui-contexts/src/ServerContext.ts (1)
ServerContext(57-79)
apps/meteor/client/providers/LayoutProvider.tsx (1)
packages/ui-contexts/src/LayoutContext.ts (1)
LayoutContext(45-83)
apps/meteor/client/providers/AvatarUrlProvider.tsx (1)
packages/ui-contexts/src/index.ts (1)
AvatarUrlContext(4-4)
apps/meteor/client/providers/SettingsProvider.tsx (1)
packages/ui-contexts/src/index.ts (1)
SettingsContext(12-12)
apps/meteor/client/providers/TranslationProvider.tsx (1)
packages/ui-contexts/src/index.ts (1)
TranslationContext(15-15)
apps/meteor/client/providers/CustomSoundProvider/CustomSoundProvider.tsx (1)
packages/ui-contexts/src/CustomSoundContext.ts (1)
CustomSoundContext(42-70)
packages/fuselage-ui-kit/.storybook/preview.tsx (1)
packages/mock-providers/src/MockedAppRootBuilder.tsx (1)
queryClient(270-280)
packages/web-ui-registration/src/LoginServices.tsx (1)
packages/fuselage-ui-kit/src/stories/Message.stories.tsx (1)
Divider(75-75)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
- GitHub Check: cubic · AI code reviewer
- GitHub Check: 🔨 Test UI (EE) / MongoDB 8.2 coverage (2/5)
- GitHub Check: 🔨 Test UI (EE) / MongoDB 8.2 coverage (5/5)
- GitHub Check: 🔨 Test UI (CE) / MongoDB 8.2 (1/4)
- GitHub Check: 🔨 Test UI (CE) / MongoDB 8.2 (2/4)
- GitHub Check: 🔨 Test UI (EE) / MongoDB 8.2 coverage (1/5)
- GitHub Check: 🔨 Test UI (CE) / MongoDB 8.2 (4/4)
- GitHub Check: 🔨 Test UI (EE) / MongoDB 8.2 coverage (4/5)
- GitHub Check: 🔨 Test UI (EE) / MongoDB 8.2 coverage (3/5)
6d41283 to
fbafc28
Compare
Proposed changes (including videos or screenshots)
It enables the
react/no-children-proplint rule.Issue(s)
Steps to test or reproduce
Further comments
Summary by CodeRabbit
Refactor
Chores
✏️ Tip: You can customize this high-level summary in your review settings.