-
Notifications
You must be signed in to change notification settings - Fork 13k
feat!: Remove omnichannel current chats panel #37673
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! 🎉 |
|
WalkthroughRemoves the deprecated "Current Chats" omnichannel view by deleting associated components, routes, and permissions. Consolidates navigation to route through a new Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Areas requiring extra attention:
Possibly related PRs
Suggested labels
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (2)
💤 Files with no reviewable changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
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 |
169b783 to
73d9200
Compare
74d1c6e to
b32f41a
Compare
899dccf to
fc61139
Compare
0fe2977 to
70ac0c9
Compare
fc61139 to
859a91f
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
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: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (1)
12-23: Avoid mutatingchannelsprop via in-place.sort().
channels?.sort(...)mutates the prop array; copy first.- const latestChannel = channels?.sort((a, b) => { + const latestChannel = (channels ? [...channels] : undefined)?.sort((a, b) => { if (a.lastChat && b.lastChat) { return a.lastChat.ts > b.lastChat.ts ? -1 : 1; } return 0; })[0];
🧹 Nitpick comments (5)
apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (1)
22-22: Consider renaming variable for consistency.The variable
poCurrentChatsstill references the old "Current Chats" terminology. For consistency with the refactoring, consider renaming it topoChatsorpoContactCenterthroughout this file.Apply this pattern throughout the file:
- let poCurrentChats: OmnichannelChats; + let poChats: OmnichannelChats;Also applies to: 285-285
apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx (1)
21-33: Prefer a block body forhandleContactEditand pass it directly asonClick.- const handleContactEdit = useEffectEvent((): void => - omnichannelDirectoryRouter.navigate({ - tab: 'contacts', - context: 'edit', - id: _id, - }), - ); + const handleContactEdit = useEffectEvent((): void => { + omnichannelDirectoryRouter.navigate({ + tab: 'contacts', + context: 'edit', + id: _id, + }); + }); const menuOptions: GenericMenuItemProps[] = [ { id: 'edit', icon: 'edit', content: t('Edit'), - onClick: () => handleContactEdit(), + onClick: handleContactEdit, disabled: !canEditContact, },Also applies to: 38-45
apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (1)
22-30: Minor: avoid callinggetRouteName()twice; store it once for clarity.useEffect(() => { - if (!omnichannelDirectoryRouter.getRouteName() || (omnichannelDirectoryRouter.getRouteName() && !!tab)) { + const routeName = omnichannelDirectoryRouter.getRouteName(); + if (!routeName || !!tab) { return; } omnichannelDirectoryRouter.navigate({ tab: 'chats' }); }, [omnichannelDirectoryRouter, tab]);apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (2)
29-33: Optional: memoize the returned object to reduce identity churn.
If consumers pass this router object through props/context and rely on referential equality,{ ...router, ... }will trigger avoidable rerenders. ConsideruseMemoaround the return object.
10-19: Consider a dedicated method name instead of overridingnavigateto prevent accidental misuse when passing this router around.The hook spreads
routerand overridesnavigatewith a signature that differs fromIRouter.navigate(it takesparamsandsearchdirectly instead of a route object withnameproperty). While this works correctly in isolation, there's no explicit return type annotation to prevent the modified router from being mistakenly used as a drop-inIRouterreplacement elsewhere in the codebase. Renaming tonavigateDirectorymakes the intent explicit and avoids potential confusion.
📜 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 (96)
apps/meteor/app/authorization/server/constant/permissions.ts(0 hunks)apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx(1 hunks)apps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsx(1 hunks)apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx(0 hunks)apps/meteor/client/views/omnichannel/currentChats/CurrentChatsRoute.tsx(0 hunks)apps/meteor/client/views/omnichannel/currentChats/CustomFieldsList.tsx(0 hunks)apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx(0 hunks)apps/meteor/client/views/omnichannel/currentChats/Label.tsx(0 hunks)apps/meteor/client/views/omnichannel/currentChats/RemoveAllClosed.tsx(0 hunks)apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx(2 hunks)apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx(1 hunks)apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx(2 hunks)apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx(3 hunks)apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx(2 hunks)apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx(2 hunks)apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx(3 hunks)apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts(1 hunks)apps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.ts(1 hunks)apps/meteor/client/views/omnichannel/routes.ts(2 hunks)apps/meteor/client/views/omnichannel/sidebarItems.tsx(1 hunks)apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx(1 hunks)apps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsx(2 hunks)apps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsx(1 hunks)apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx(1 hunks)apps/meteor/server/startup/migrations/index.ts(1 hunks)apps/meteor/server/startup/migrations/v331.ts(1 hunks)apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts(6 hunks)apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts(1 hunks)apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts(6 hunks)apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts(3 hunks)apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts(4 hunks)apps/meteor/tests/e2e/page-objects/home-omnichannel.ts(3 hunks)apps/meteor/tests/e2e/page-objects/index.ts(1 hunks)apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts(2 hunks)apps/meteor/tests/e2e/page-objects/omnichannel-current-chats.ts(0 hunks)packages/i18n/src/locales/af.i18n.json(0 hunks)packages/i18n/src/locales/ar.i18n.json(0 hunks)packages/i18n/src/locales/az.i18n.json(0 hunks)packages/i18n/src/locales/be-BY.i18n.json(0 hunks)packages/i18n/src/locales/bg.i18n.json(0 hunks)packages/i18n/src/locales/bs.i18n.json(0 hunks)packages/i18n/src/locales/ca.i18n.json(0 hunks)packages/i18n/src/locales/cs.i18n.json(0 hunks)packages/i18n/src/locales/cy.i18n.json(0 hunks)packages/i18n/src/locales/da.i18n.json(0 hunks)packages/i18n/src/locales/de-AT.i18n.json(0 hunks)packages/i18n/src/locales/de-IN.i18n.json(0 hunks)packages/i18n/src/locales/de.i18n.json(0 hunks)packages/i18n/src/locales/el.i18n.json(0 hunks)packages/i18n/src/locales/en.i18n.json(0 hunks)packages/i18n/src/locales/eo.i18n.json(0 hunks)packages/i18n/src/locales/es.i18n.json(0 hunks)packages/i18n/src/locales/fa.i18n.json(0 hunks)packages/i18n/src/locales/fi.i18n.json(0 hunks)packages/i18n/src/locales/fr.i18n.json(0 hunks)packages/i18n/src/locales/he.i18n.json(0 hunks)packages/i18n/src/locales/hi-IN.i18n.json(0 hunks)packages/i18n/src/locales/hr.i18n.json(0 hunks)packages/i18n/src/locales/hu.i18n.json(0 hunks)packages/i18n/src/locales/id.i18n.json(0 hunks)packages/i18n/src/locales/it.i18n.json(0 hunks)packages/i18n/src/locales/ja.i18n.json(0 hunks)packages/i18n/src/locales/ka-GE.i18n.json(0 hunks)packages/i18n/src/locales/km.i18n.json(0 hunks)packages/i18n/src/locales/ko.i18n.json(0 hunks)packages/i18n/src/locales/ku.i18n.json(0 hunks)packages/i18n/src/locales/lo.i18n.json(0 hunks)packages/i18n/src/locales/lt.i18n.json(0 hunks)packages/i18n/src/locales/lv.i18n.json(0 hunks)packages/i18n/src/locales/mn.i18n.json(0 hunks)packages/i18n/src/locales/ms-MY.i18n.json(0 hunks)packages/i18n/src/locales/nb.i18n.json(0 hunks)packages/i18n/src/locales/nl.i18n.json(0 hunks)packages/i18n/src/locales/nn.i18n.json(0 hunks)packages/i18n/src/locales/pa-IN.i18n.json(0 hunks)packages/i18n/src/locales/pl.i18n.json(0 hunks)packages/i18n/src/locales/pt-BR.i18n.json(0 hunks)packages/i18n/src/locales/pt.i18n.json(0 hunks)packages/i18n/src/locales/ro.i18n.json(0 hunks)packages/i18n/src/locales/ru.i18n.json(0 hunks)packages/i18n/src/locales/sk-SK.i18n.json(0 hunks)packages/i18n/src/locales/sl-SI.i18n.json(0 hunks)packages/i18n/src/locales/sq.i18n.json(0 hunks)packages/i18n/src/locales/sr.i18n.json(0 hunks)packages/i18n/src/locales/sv.i18n.json(0 hunks)packages/i18n/src/locales/ta-IN.i18n.json(0 hunks)packages/i18n/src/locales/th-TH.i18n.json(0 hunks)packages/i18n/src/locales/tr.i18n.json(0 hunks)packages/i18n/src/locales/ug.i18n.json(0 hunks)packages/i18n/src/locales/uk.i18n.json(0 hunks)packages/i18n/src/locales/vi-VN.i18n.json(0 hunks)packages/i18n/src/locales/zh-HK.i18n.json(0 hunks)packages/i18n/src/locales/zh-TW.i18n.json(0 hunks)packages/i18n/src/locales/zh.i18n.json(0 hunks)
💤 Files with no reviewable changes (67)
- packages/i18n/src/locales/eo.i18n.json
- packages/i18n/src/locales/cs.i18n.json
- packages/i18n/src/locales/az.i18n.json
- packages/i18n/src/locales/km.i18n.json
- packages/i18n/src/locales/pa-IN.i18n.json
- packages/i18n/src/locales/sl-SI.i18n.json
- packages/i18n/src/locales/sr.i18n.json
- packages/i18n/src/locales/ku.i18n.json
- packages/i18n/src/locales/cy.i18n.json
- apps/meteor/app/authorization/server/constant/permissions.ts
- packages/i18n/src/locales/ro.i18n.json
- packages/i18n/src/locales/tr.i18n.json
- packages/i18n/src/locales/ko.i18n.json
- packages/i18n/src/locales/id.i18n.json
- packages/i18n/src/locales/ug.i18n.json
- packages/i18n/src/locales/de-IN.i18n.json
- packages/i18n/src/locales/de.i18n.json
- packages/i18n/src/locales/pl.i18n.json
- packages/i18n/src/locales/hr.i18n.json
- packages/i18n/src/locales/fr.i18n.json
- packages/i18n/src/locales/vi-VN.i18n.json
- packages/i18n/src/locales/bs.i18n.json
- packages/i18n/src/locales/sk-SK.i18n.json
- packages/i18n/src/locales/sv.i18n.json
- packages/i18n/src/locales/ru.i18n.json
- packages/i18n/src/locales/zh-HK.i18n.json
- packages/i18n/src/locales/mn.i18n.json
- packages/i18n/src/locales/ja.i18n.json
- packages/i18n/src/locales/th-TH.i18n.json
- packages/i18n/src/locales/fi.i18n.json
- packages/i18n/src/locales/lv.i18n.json
- apps/meteor/client/views/omnichannel/currentChats/CurrentChatsRoute.tsx
- packages/i18n/src/locales/de-AT.i18n.json
- packages/i18n/src/locales/en.i18n.json
- packages/i18n/src/locales/ar.i18n.json
- apps/meteor/client/views/omnichannel/currentChats/Label.tsx
- packages/i18n/src/locales/ta-IN.i18n.json
- packages/i18n/src/locales/he.i18n.json
- packages/i18n/src/locales/sq.i18n.json
- apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx
- packages/i18n/src/locales/nb.i18n.json
- packages/i18n/src/locales/ms-MY.i18n.json
- packages/i18n/src/locales/hi-IN.i18n.json
- packages/i18n/src/locales/pt-BR.i18n.json
- packages/i18n/src/locales/af.i18n.json
- packages/i18n/src/locales/da.i18n.json
- packages/i18n/src/locales/be-BY.i18n.json
- packages/i18n/src/locales/zh-TW.i18n.json
- apps/meteor/client/views/omnichannel/currentChats/CustomFieldsList.tsx
- packages/i18n/src/locales/fa.i18n.json
- apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx
- apps/meteor/client/views/omnichannel/currentChats/RemoveAllClosed.tsx
- packages/i18n/src/locales/nl.i18n.json
- packages/i18n/src/locales/bg.i18n.json
- apps/meteor/tests/e2e/page-objects/omnichannel-current-chats.ts
- packages/i18n/src/locales/ka-GE.i18n.json
- packages/i18n/src/locales/pt.i18n.json
- packages/i18n/src/locales/ca.i18n.json
- packages/i18n/src/locales/uk.i18n.json
- packages/i18n/src/locales/it.i18n.json
- packages/i18n/src/locales/lo.i18n.json
- packages/i18n/src/locales/el.i18n.json
- packages/i18n/src/locales/nn.i18n.json
- packages/i18n/src/locales/hu.i18n.json
- packages/i18n/src/locales/zh.i18n.json
- packages/i18n/src/locales/es.i18n.json
- packages/i18n/src/locales/lt.i18n.json
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{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/tests/e2e/page-objects/index.tsapps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsxapps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsxapps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsxapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/server/startup/migrations/v331.tsapps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsxapps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsxapps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsxapps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.tsapps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsxapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsxapps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.tsapps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsxapps/meteor/server/startup/migrations/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsxapps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsxapps/meteor/client/views/omnichannel/sidebarItems.tsxapps/meteor/client/views/room/Header/Omnichannel/BackButton.tsxapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsxapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsxapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/client/views/omnichannel/routes.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.tsapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx
apps/meteor/tests/e2e/page-objects/**/*.ts
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
Utilize existing page objects pattern from
apps/meteor/tests/e2e/page-objects/
Files:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
apps/meteor/tests/e2e/**/*.{ts,spec.ts}
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
apps/meteor/tests/e2e/**/*.{ts,spec.ts}: Store commonly used locators in variables/constants for reuse
Follow Page Object Model pattern consistently in Playwright tests
Files:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
**/*.spec.ts
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
**/*.spec.ts: Use descriptive test names that clearly communicate expected behavior in Playwright tests
Use.spec.tsextension for test files (e.g.,login.spec.ts)
Files:
apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
apps/meteor/tests/e2e/**/*.spec.ts
📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)
apps/meteor/tests/e2e/**/*.spec.ts: All test files must be created inapps/meteor/tests/e2e/directory
Avoid usingpage.locator()in Playwright tests - always prefer semantic locators such aspage.getByRole(),page.getByLabel(),page.getByText(), orpage.getByTitle()
Usetest.beforeAll()andtest.afterAll()for setup/teardown in Playwright tests
Usetest.step()for complex test scenarios to improve organization in Playwright tests
Group related tests in the same file
Utilize Playwright fixtures (test,page,expect) for consistency in test files
Prefer web-first assertions (toBeVisible,toHaveText, etc.) in Playwright tests
Useexpectmatchers for assertions (toEqual,toContain,toBeTruthy,toHaveLength, etc.) instead ofassertstatements in Playwright tests
Usepage.waitFor()with specific conditions instead of hardcoded timeouts in Playwright tests
Implement proper wait strategies for dynamic content in Playwright tests
Maintain test isolation between test cases in Playwright tests
Ensure clean state for each test execution in Playwright tests
Ensure tests run reliably in parallel without shared state conflicts
Files:
apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
🧠 Learnings (22)
📚 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/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsxapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 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:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 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/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 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 : Group related tests in the same file
Applied to files:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 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 : All test files must be created in `apps/meteor/tests/e2e/` directory
Applied to files:
apps/meteor/tests/e2e/page-objects/index.ts
📚 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} : Store commonly used locators in variables/constants for reuse
Applied to files:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
📚 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 : Ensure tests run reliably in parallel without shared state conflicts
Applied to files:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.tsapps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 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/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsxapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 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:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 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 : Ensure clean state for each test execution in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/index.tsapps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 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 : Avoid using `page.locator()` in Playwright tests - always prefer semantic locators such as `page.getByRole()`, `page.getByLabel()`, `page.getByText()`, or `page.getByTitle()`
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 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 `test.step()` for complex test scenarios to improve organization in Playwright tests
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-19T18:20:37.116Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
📚 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:
apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 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:
apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.tsapps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
📚 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 : Implement proper wait strategies for dynamic content in Playwright tests
Applied to files:
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.tsapps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-09-23T19:22:59.217Z
Learnt from: dougfabris
Repo: RocketChat/Rocket.Chat PR: 36987
File: apps/meteor/tests/e2e/page-objects/fragments/room-toolbar.ts:10-20
Timestamp: 2025-09-23T19:22:59.217Z
Learning: In Playwright e2e tests, prefer stable selectors like data-qa-id attributes over localized text in getByRole() or getByText() calls to prevent test failures when UI language changes. Test translations separately by validating actual text content after ensuring UI interactions work with stable selectors.
Applied to files:
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
📚 Learning: 2025-11-17T22:38:48.631Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37505
File: packages/i18n/src/locales/en.i18n.json:3765-3765
Timestamp: 2025-11-17T22:38:48.631Z
Learning: Rocket.Chat i18n copy: Keep sentence case for the value of "Notification_Desktop_show_voice_calls" in packages/i18n/src/locales/en.i18n.json (“Show desktop notifications for voice calls”) per design directive; do not change to Title Case even if nearby labels differ.
Applied to files:
apps/meteor/client/views/omnichannel/sidebarItems.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/sidebarItems.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/omnichannel/directory/chats/ChatsTable/ChatsTableRow.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 **/*.spec.ts : Use descriptive test names that clearly communicate expected behavior in Playwright tests
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
📚 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 `page.waitFor()` with specific conditions instead of hardcoded timeouts in Playwright tests
Applied to files:
apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
🧬 Code graph analysis (14)
apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx (2)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)packages/ui-contexts/src/index.ts (1)
usePermission(57-57)
apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx (1)
apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx (1)
BackButton(8-39)
apps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (2)
packages/ui-contexts/src/index.ts (1)
useRouter(63-63)packages/ui-contexts/src/RouterContext.ts (2)
RouteParameters(19-19)SearchParameters(20-20)
apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (2)
packages/rest-typings/src/v1/omnichannel.ts (1)
ILivechatContactWithManagerData(4555-4557)apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts (1)
HomeOmnichannelContent(7-68)
apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx (2)
packages/ui-contexts/src/index.ts (2)
useRouter(63-63)useRouteParameter(65-65)apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.ts (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (2)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
OmnichannelChats(23-112)apps/meteor/tests/e2e/utils/omnichannel/rooms.ts (1)
createConversation(103-123)
apps/meteor/tests/e2e/page-objects/home-omnichannel.ts (1)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
OmnichannelChats(23-112)
apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
useOmnichannelDirectoryRouter(5-34)
⏰ 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). (1)
- GitHub Check: 📦 Meteor Build (coverage)
🔇 Additional comments (36)
apps/meteor/server/startup/migrations/index.ts (1)
39-39: Migration registration looks correct; keep v331 ordering consistent.
Importing./v331here is the expected registration mechanism; placing it afterv330matches sequential ordering (helps avoid “missing migration” confusion).apps/meteor/server/startup/migrations/v331.ts (1)
1-11: Good, idempotent cleanup migration; API confirmed.
Permissions.deleteOneis inherited from the standardIBaseModelinterface and is used consistently across migrations (v305, v315) for removing obsolete permissions. Pattern is correct and safe to re-run.apps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsx (3)
31-34: LGTM! Route name subscription updated correctly.The switch from
currentRouteNametopreviousRouteNamealigns with the back-button logic, which needs to know where the user navigated from to determine whether to display the back button.
45-45: LGTM! BackButton prop updated consistently.The prop correctly passes
previousRouteNameto maintain consistency with the routing logic changes.
51-51: LGTM! Dependency array updated correctly.The useMemo dependency array properly includes
previousRouteNameinstead ofcurrentRouteName, ensuring the memoization works correctly.apps/meteor/client/views/omnichannel/sidebarItems.tsx (1)
10-15: All verification checks confirm the code is correct.The permission
view-omnichannel-contact-centeris properly defined in the permissions file, the i18n keyContact_Centerexists across all major locales, and the iconaddress-bookis valid and consistently used across related omnichannel components. The changes appropriately transition this sidebar item from "Current Chats" to "Contact Center" while repurposing the existing/omnichannel/currentroute.apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts (1)
63-63: LGTM! Page object reference updated correctly.The change from
currentChatstochatsaligns with the PR's objective to remove the Current Chats UI and adopt Contact Center terminology.apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts (1)
139-140: LGTM! Chat navigation and URL assertions updated consistently.The changes correctly update page object references from
currentChatstochatsand adjust URL expectations to the new routing pattern/omnichannel/current/chats/info/${roomId}. The updates are applied consistently across both Monitor and Manager role test suites.Also applies to: 182-183, 227-228, 364-365, 407-408, 452-453
apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts (3)
115-115: Test description updated to reflect new terminology.The test name correctly updates from "Current Chats" to "Contact Center" to align with the UI refactoring.
120-122: Page object references updated consistently.All references correctly changed from
currentChatstochats, and the URL assertion now uses the deeper routing path/omnichannel/current/chats/info/${roomA._id}.Also applies to: 126-127
159-160: Removal flow simplified with helper method.The test now uses
removeChatByNamewhich encapsulates the modal confirmation flow, improving maintainability and reducing duplication.apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (3)
8-21: Well-structured modal abstraction.The
ConfirmRemoveChatmodal class properly extends theModalbase class and encapsulates the confirmation flow withconfirm()andwaitForDismissal(), following the page object pattern.
49-75: Locator strategy follows Playwright best practices.The input getters appropriately use
data-qaattributes for stable element selection, which aligns with the learning that stable selectors should be preferred over localized text. Based on learnings.
77-111: Action methods provide clean test interface.The action methods (
selectServedBy,addTag,removeTag, etc.) encapsulate interaction patterns and provide a clean API for tests. TheremoveChatByNamemethod properly uses the confirmation modal abstraction.apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts (1)
166-179: Test updated consistently to Contact Center terminology.All references correctly updated from
currentChatstochats, test description renamed to "Contact Center", and URL assertions updated to the new routing pattern. The changes maintain test logic while aligning with the UI refactoring.Also applies to: 213-214, 226-228, 244-246, 254-256, 263-263, 266-266
apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (3)
6-6: Test descriptions and imports updated correctly.The imports, test descriptions, and class instantiations are properly updated to use
OmnichannelChatsand "Contact Center" terminology throughout the file.Also applies to: 17-17, 21-21, 110-110, 144-144, 149-149, 252-252, 262-262, 273-273, 283-283, 308-308
256-256: URL assertions updated to new routing pattern.The URL expectations correctly reflect the new deeper routing structure
/omnichannel/current/chats/info/${room._id}.Also applies to: 266-266, 315-315
275-275: Removal flow improved with helper method.Using
removeChatByNamesimplifies the test and improves maintainability by encapsulating the modal confirmation flow.apps/meteor/tests/e2e/page-objects/index.ts (1)
19-19: Export path updated correctly.The export statement now references the renamed page object file
omnichannel-contact-center-chats, maintaining consistency with the refactoring.apps/meteor/tests/e2e/page-objects/home-omnichannel.ts (1)
7-7: Page object updated to use new OmnichannelChats class.The import, property declaration, and initialization are all correctly updated to use
OmnichannelChatsfrom the new module path. The property is renamed fromcurrentChatstochats, aligning with the Contact Center refactoring.Also applies to: 40-40, 63-63
apps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsx (1)
42-47: Omnichannel admin item now routes to the correct entry point.Switching the Omnichannel action from
/omnichannel/currentto/omnichannelmatches the feature removal and avoids dead navigation.apps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsx (1)
14-36: Back navigation now preserves the intended Omnichannel “chats/info” destination.Overriding
tab/contextafter...router.getRouteParameters()is a good way to ensure a consistent return target.apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx (2)
14-17: Correct signal source: use previous route name for back-button behavior.This looks like the right pivot for “back to list” UX from the room header.
21-32: BackButton rendering condition is now aligned with navigation history.Using
previousRouteNamein the slot condition and dependency array should prevent showing a back button in unrelated entry flows.apps/meteor/client/views/omnichannel/routes.ts (1)
158-161: Route now correctly points “current” to the directory router.This matches the “Current Chats panel removed” direction while keeping the route name/path alive.
apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx (1)
45-49: Omnichannel menu entry updated to the new base route.Keeps the Manage menu from linking into a removed/deprecated screen.
apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx (1)
7-10: Import updated to the new hook location.Looks consistent with the feature removal / folder reorg.
apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx (1)
21-50: Good migration to the directory-router abstraction for navigation.
navigate({ tab: 'contacts', context: 'new' })is clearer than pushing raw routes and keeps navigation consistent across directory surfaces.apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx (1)
12-34: Header BackButton behavior now matches the updated Omnichannel route shape.Consistent tab/context targeting should reduce “back lands on wrong subview” cases.
apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx (1)
4-15: Routing migration looks consistent here.
handleClosemoving touseOmnichannelDirectoryRoutermatches the directory-wide pattern and keepshandleOpenRoomuntouched.apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx (2)
68-73: Navigation change tonavigate({ tab: 'chats', context: 'filters' })is clean.
16-28: VerifyinvalidateQueries({ queryKey: ['current-chats'] })is the correct key.Unable to locate the file or confirm the current state of this invalidation pattern in the codebase. Search the omnichannel chats query definitions to confirm the queryKey matches the one being invalidated. If the query key was renamed (e.g., to 'omnichannel-chats' or 'livechat-chats'), this invalidation will silently fail to refresh the UI.
apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (1)
25-31: Row click handler change is an improvement (no render-time invocation).Also applies to: 42-43
apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx (1)
16-46: Routing migration for row click looks consistent and low-risk.apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (1)
46-52: Mac-limit Callout integration is straightforward and nicely contained.apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
5-9: No action required. Theomnichannel-current-chatsroute is currently defined and actively used throughout the codebase (registered atapps/meteor/client/views/omnichannel/routes.ts:159, referenced in navigation handlers and header logic). The route allowlist in the hook is correct and needs no updates.
apps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsx
Outdated
Show resolved
Hide resolved
apps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsx
Outdated
Show resolved
Hide resolved
196c7d9 to
cc99ba6
Compare
d5bff46 to
21d6796
Compare
9d4aa52 to
d5066b7
Compare
5ace0ee to
76cf16f
Compare
343b104 to
2c3edb3
Compare
2c3edb3 to
3180b76
Compare
Proposed changes (including videos or screenshots)
This change replaces the deprecated current chats in favor of contact center.
We're doing it by rendering the directory in the current chats route in order to avoid confusion for users used to manage chats from that route. To be able to do that we're adding a
useOmnichannelDirectoryRouterwhich is responsible to deal with both routes using the same user interface.Additionally it removes
view-omnichannel-contact-centerpermission.Issue(s)
Steps to test or reproduce
Further comments
CORE-1442
Summary by CodeRabbit
New Features
Bug Fixes
UI Updates
✏️ Tip: You can customize this high-level summary in your review settings.