-
Notifications
You must be signed in to change notification settings - Fork 13k
chore: Move GenericTable to ui-client package
#37830
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
Conversation
|
Looks like this PR is ready to merge! 🎉 |
|
WalkthroughThis PR consolidates GenericTable components and hooks from local Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Areas requiring extra attention:
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
apps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsx (1)
17-23: Remove unnecessary fragment wrapper.The outer fragment wrapping the single
Boxelement is unnecessary and can be removed for cleaner code.Apply this diff to simplify the code:
-const filter = ( - <> - <Box mb={16} is='form' display='flex' flexDirection='column'> - <TextInput flexShrink={0} placeholder='Search...' addon={<Icon name='magnifier' size='x20' />} /> - </Box> - </> -); +const filter = ( + <Box mb={16} is='form' display='flex' flexDirection='column'> + <TextInput flexShrink={0} placeholder='Search...' addon={<Icon name='magnifier' size='x20' />} /> + </Box> +);apps/meteor/client/views/audit/components/AuditLogEntry.tsx (1)
28-28: Consider adding click handler or removingrole='link'.The
role='link'withtabIndex={0}makes this row keyboard-focusable and announces it as a link, but there's no click handler to provide the expected interactive behavior. This can confuse keyboard and screen reader users.If the row should be clickable, add an onClick handler:
-<GenericTableRow key={_id} tabIndex={0} role='link'> +<GenericTableRow key={_id} tabIndex={0} role='link' onClick={() => {/* navigate or open details */}}>Otherwise, remove the link semantics:
-<GenericTableRow key={_id} tabIndex={0} role='link'> +<GenericTableRow key={_id}>apps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsx (1)
20-20: Consider movingGenericNoResultsto@rocket.chat/ui-client.This component has no meteor-specific dependencies and is built solely on centralized libraries (
@rocket.chat/fuselage,@rocket.chat/icons,react-i18next). It's used across 20+ meteor components and would benefit from centralization for reuse across packages, consistent with the refactoring pattern applied to other generic components.
📜 Review details
Configuration used: CodeRabbit 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 selected for processing (99)
apps/meteor/.eslintrc.json(1 hunks)apps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsx(1 hunks)apps/meteor/client/components/deviceManagement/DeviceManagementTable/DeviceManagementTable.tsx(1 hunks)apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountRow.tsx(1 hunks)apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountTable.tsx(1 hunks)apps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensRow.tsx(1 hunks)apps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensTable.tsx(1 hunks)apps/meteor/client/views/admin/customEmoji/CustomEmoji.tsx(1 hunks)apps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundRow.tsx(1 hunks)apps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundsTable.tsx(1 hunks)apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusRow.tsx(1 hunks)apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusTable.tsx(1 hunks)apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminRow.tsx(1 hunks)apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminTable.tsx(1 hunks)apps/meteor/client/views/admin/emailInbox/EmailInboxTable.tsx(1 hunks)apps/meteor/client/views/admin/emailInbox/SendTestButton.tsx(1 hunks)apps/meteor/client/views/admin/import/PrepareContacts.tsx(1 hunks)apps/meteor/client/views/admin/integrations/IntegrationRow.tsx(1 hunks)apps/meteor/client/views/admin/integrations/IntegrationsTable.tsx(1 hunks)apps/meteor/client/views/admin/integrations/outgoing/history/OutgoingWebhookHistoryPage.tsx(1 hunks)apps/meteor/client/views/admin/invites/InviteRow.tsx(1 hunks)apps/meteor/client/views/admin/invites/InvitesPage.tsx(1 hunks)apps/meteor/client/views/admin/moderation/ModerationConsoleTable.tsx(1 hunks)apps/meteor/client/views/admin/moderation/ModerationConsoleTableRow.tsx(1 hunks)apps/meteor/client/views/admin/moderation/UserReports/ModConsoleUserTableRow.tsx(1 hunks)apps/meteor/client/views/admin/moderation/UserReports/ModConsoleUsersTable.tsx(1 hunks)apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsx(1 hunks)apps/meteor/client/views/admin/permissions/PermissionsPage.tsx(1 hunks)apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionRow.tsx(1 hunks)apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTable.tsx(1 hunks)apps/meteor/client/views/admin/permissions/PermissionsTable/RoleCell.tsx(1 hunks)apps/meteor/client/views/admin/permissions/PermissionsTable/RoleHeader.tsx(1 hunks)apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRolePage.tsx(1 hunks)apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTable.tsx(1 hunks)apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTableRow.tsx(1 hunks)apps/meteor/client/views/admin/rooms/RoomRow.tsx(1 hunks)apps/meteor/client/views/admin/rooms/RoomsTable.tsx(1 hunks)apps/meteor/client/views/admin/settings/groups/VoipGroupPage/AssignAgentButton.tsx(1 hunks)apps/meteor/client/views/admin/settings/groups/VoipGroupPage/RemoveAgentButton.tsx(1 hunks)apps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsx(1 hunks)apps/meteor/client/views/admin/users/AdminUsersPage.tsx(1 hunks)apps/meteor/client/views/admin/users/UsersTable/UsersTable.tsx(1 hunks)apps/meteor/client/views/admin/users/UsersTable/UsersTableRow.tsx(1 hunks)apps/meteor/client/views/admin/users/hooks/useFilteredUsers.ts(1 hunks)apps/meteor/client/views/audit/components/AuditLogEntry.tsx(1 hunks)apps/meteor/client/views/audit/components/AuditLogTable.tsx(1 hunks)apps/meteor/client/views/audit/components/SecurityLogsTable.tsx(1 hunks)apps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTable.tsx(1 hunks)apps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTableRow.tsx(1 hunks)apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsx(1 hunks)apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTableRow.tsx(1 hunks)apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTable.tsx(1 hunks)apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTableRow.tsx(1 hunks)apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/AppInstances.tsx(1 hunks)apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/AppLogs.tsx(1 hunks)apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx(1 hunks)apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTableRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/businessHours/BusinessHoursRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/businessHours/BusinessHoursTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/cannedResponses/RemoveCannedResponseButton.tsx(1 hunks)apps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx(1 hunks)apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/AgentRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/departments/DepartmentsTable/DepartmentsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/calls/CallTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/calls/CallTableRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/managers/ManagersTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/managers/RemoveManagerButton.tsx(1 hunks)apps/meteor/client/views/omnichannel/monitors/MonitorsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/priorities/PrioritiesTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/priorities/PrioritiesTableRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/queueList/QueueListTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/reports/components/AgentsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/reports/hooks/useAgentsSection.tsx(1 hunks)apps/meteor/client/views/omnichannel/slaPolicies/RemoveSlaButton.tsx(1 hunks)apps/meteor/client/views/omnichannel/slaPolicies/SlaTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/tags/TagsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/triggers/TriggersRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/triggers/TriggersTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/units/UnitTableRow.tsx(1 hunks)apps/meteor/client/views/omnichannel/units/UnitsTable.tsx(1 hunks)apps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerModal.tsx(1 hunks)apps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerTable.tsx(1 hunks)apps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTable.tsx(1 hunks)apps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTableRow.tsx(1 hunks)apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTable.tsx(1 hunks)apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTableRow.tsx(1 hunks)packages/ui-client/src/components/GenericTable/GenericTable.stories.tsx(0 hunks)packages/ui-client/src/components/GenericTable/GenericTable.tsx(1 hunks)packages/ui-client/src/components/GenericTable/hooks/index.ts(1 hunks)packages/ui-client/src/components/GenericTable/index.ts(1 hunks)packages/ui-client/src/components/index.ts(1 hunks)
💤 Files with no reviewable changes (1)
- packages/ui-client/src/components/GenericTable/GenericTable.stories.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/views/admin/users/hooks/useFilteredUsers.tspackages/ui-client/src/components/index.tsapps/meteor/client/views/admin/integrations/IntegrationRow.tsxapps/meteor/client/views/omnichannel/businessHours/BusinessHoursRow.tsxapps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTableRow.tsxapps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTableRow.tsxapps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsxapps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/AppInstances.tsxpackages/ui-client/src/components/GenericTable/index.tsapps/meteor/client/components/deviceManagement/DeviceManagementTable/DeviceManagementTable.tsxapps/meteor/client/views/omnichannel/reports/hooks/useAgentsSection.tsxapps/meteor/client/views/admin/invites/InvitesPage.tsxapps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTable.tsxapps/meteor/client/views/directory/tabs/users/UsersTable/UsersTableRow.tsxapps/meteor/client/views/omnichannel/cannedResponses/RemoveCannedResponseButton.tsxapps/meteor/client/views/admin/users/UsersTable/UsersTableRow.tsxapps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTable.tsxapps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTableRow.tsxapps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusTable.tsxapps/meteor/client/views/admin/rooms/RoomsTable.tsxapps/meteor/client/views/omnichannel/units/UnitTableRow.tsxapps/meteor/client/views/admin/invites/InviteRow.tsxapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsxapps/meteor/client/views/audit/components/SecurityLogsTable.tsxapps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTable.tsxapps/meteor/client/views/admin/users/UsersTable/UsersTable.tsxapps/meteor/client/views/admin/settings/groups/VoipGroupPage/RemoveAgentButton.tsxapps/meteor/client/views/omnichannel/priorities/PrioritiesTableRow.tsxapps/meteor/client/views/admin/permissions/PermissionsTable/PermissionRow.tsxpackages/ui-client/src/components/GenericTable/hooks/index.tsapps/meteor/client/views/admin/emailInbox/SendTestButton.tsxapps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsxapps/meteor/client/views/admin/integrations/IntegrationsTable.tsxapps/meteor/client/views/omnichannel/directory/calls/CallTable.tsxapps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensTable.tsxapps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsxapps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerTable.tsxapps/meteor/client/views/omnichannel/priorities/PrioritiesTable.tsxapps/meteor/client/views/audit/components/AuditLogEntry.tsxapps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminRow.tsxapps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTableRow.tsxapps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/AgentRow.tsxapps/meteor/client/views/omnichannel/businessHours/BusinessHoursTable.tsxapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsxapps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsxapps/meteor/client/views/admin/moderation/UserReports/ModConsoleUsersTable.tsxapps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundRow.tsxapps/meteor/client/views/admin/import/PrepareContacts.tsxapps/meteor/client/views/admin/moderation/ModerationConsoleTable.tsxapps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsxapps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTable.tsxapps/meteor/client/views/admin/permissions/PermissionsTable/RoleCell.tsxapps/meteor/client/views/omnichannel/queueList/QueueListTable.tsxapps/meteor/client/views/admin/moderation/UserReports/ModConsoleUserTableRow.tsxapps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTable.tsxapps/meteor/client/views/omnichannel/monitors/MonitorsTable.tsxapps/meteor/client/views/omnichannel/reports/components/AgentsTable.tsxapps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusRow.tsxapps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensRow.tsxapps/meteor/client/views/omnichannel/managers/RemoveManagerButton.tsxapps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTableRow.tsxapps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountRow.tsxapps/meteor/client/views/directory/tabs/users/UsersTable/UsersTable.tsxpackages/ui-client/src/components/GenericTable/GenericTable.tsxapps/meteor/client/views/omnichannel/slaPolicies/RemoveSlaButton.tsxapps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerModal.tsxapps/meteor/client/views/omnichannel/directory/calls/CallTableRow.tsxapps/meteor/client/views/admin/emailInbox/EmailInboxTable.tsxapps/meteor/client/views/admin/permissions/PermissionsPage.tsxapps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsxapps/meteor/client/views/omnichannel/triggers/TriggersTable.tsxapps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/AppLogs.tsxapps/meteor/client/views/admin/permissions/PermissionsTable/RoleHeader.tsxapps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsxapps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountTable.tsxapps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsxapps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundsTable.tsxapps/meteor/client/views/omnichannel/managers/ManagersTable.tsxapps/meteor/client/views/omnichannel/slaPolicies/SlaTable.tsxapps/meteor/client/views/admin/permissions/UsersInRole/UsersInRolePage.tsxapps/meteor/client/views/admin/rooms/RoomRow.tsxapps/meteor/client/views/admin/users/AdminUsersPage.tsxapps/meteor/client/views/admin/integrations/outgoing/history/OutgoingWebhookHistoryPage.tsxapps/meteor/client/views/omnichannel/triggers/TriggersRow.tsxapps/meteor/client/views/audit/components/AuditLogTable.tsxapps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsxapps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminTable.tsxapps/meteor/client/views/omnichannel/units/UnitsTable.tsxapps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsxapps/meteor/client/views/admin/settings/groups/VoipGroupPage/AssignAgentButton.tsxapps/meteor/client/views/admin/customEmoji/CustomEmoji.tsxapps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTableRow.tsxapps/meteor/client/views/omnichannel/tags/TagsTable.tsxapps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsxapps/meteor/client/views/admin/moderation/ModerationConsoleTableRow.tsxapps/meteor/client/views/omnichannel/departments/DepartmentsTable/DepartmentsTable.tsxapps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTable.tsx
🧠 Learnings (6)
📚 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/page-objects/**/*.ts : Utilize existing page objects pattern from `apps/meteor/tests/e2e/page-objects/`
Applied to files:
apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsxapps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/AppInstances.tsxapps/meteor/client/views/admin/invites/InvitesPage.tsxapps/meteor/client/views/admin/rooms/RoomsTable.tsxapps/meteor/client/views/omnichannel/units/UnitTableRow.tsxapps/meteor/client/views/admin/users/UsersTable/UsersTable.tsxapps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTableRow.tsxapps/meteor/client/views/omnichannel/businessHours/BusinessHoursTable.tsxapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsxapps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsxapps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTable.tsxapps/meteor/client/views/omnichannel/monitors/MonitorsTable.tsxapps/meteor/client/views/directory/tabs/users/UsersTable/UsersTable.tsxapps/meteor/client/views/admin/permissions/PermissionsPage.tsxapps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsxapps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/AppLogs.tsxapps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsxapps/meteor/client/views/omnichannel/slaPolicies/SlaTable.tsxapps/meteor/client/views/admin/permissions/UsersInRole/UsersInRolePage.tsxapps/meteor/client/views/admin/users/AdminUsersPage.tsxapps/meteor/client/views/omnichannel/units/UnitsTable.tsxapps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTableRow.tsxapps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTable.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/.eslintrc.jsonapps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.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/views/admin/rooms/RoomsTable.tsxapps/meteor/client/views/admin/rooms/RoomRow.tsx
📚 Learning: 2025-11-27T17:56:26.050Z
Learnt from: MartinSchoeler
Repo: RocketChat/Rocket.Chat PR: 37557
File: apps/meteor/client/views/admin/ABAC/AdminABACRooms.tsx:115-116
Timestamp: 2025-11-27T17:56:26.050Z
Learning: In Rocket.Chat, the GET /v1/abac/rooms endpoint (implemented in ee/packages/abac/src/index.ts) only returns rooms where abacAttributes exists and is not an empty array (query: { abacAttributes: { $exists: true, $ne: [] } }). Therefore, in components consuming this endpoint (like AdminABACRooms.tsx), room.abacAttributes is guaranteed to be defined for all returned rooms, and optional chaining before calling array methods like .join() is sufficient without additional null coalescing.
Applied to files:
apps/meteor/client/views/admin/rooms/RoomsTable.tsxapps/meteor/client/views/admin/rooms/RoomRow.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/VoipGroupPage/RemoveAgentButton.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:
apps/meteor/client/views/omnichannel/directory/calls/CallTableRow.tsxapps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsx
⏰ 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). (2)
- GitHub Check: 📦 Build Packages
- GitHub Check: CodeQL-Build
MartinSchoeler
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gave good
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #37830 +/- ##
===========================================
- Coverage 67.74% 67.63% -0.11%
===========================================
Files 3457 3457
Lines 113708 113662 -46
Branches 20903 20952 +49
===========================================
- Hits 77026 76879 -147
- Misses 34547 34654 +107
+ Partials 2135 2129 -6
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Proposed changes (including videos or screenshots)
Moving component so that it can be reused in other packages.
Issue(s)
VGA-112
Steps to test or reproduce
Further comments
Summary by CodeRabbit
Refactor
Chores
✏️ Tip: You can customize this high-level summary in your review settings.