Rocket.Chat icon indicating copy to clipboard operation
Rocket.Chat copied to clipboard

chore: Disable message read receipts in federated rooms

Open aleksandernsilva opened this issue 2 months ago β€’ 7 comments

Proposed changes (including videos or screenshots)

This PR's disables read receipts for federated rooms. This feature will be re-introduced to federated rooms when the capability becomes fully compatible with Federation.

Issue(s)

FB-45 FB-75

Steps to test or reproduce

Further comments

Summary by CodeRabbit

  • Bug Fixes

    • Read receipts indicators are now disabled in federated rooms.
  • Tests

    • Added unit tests for read receipts functionality, including configuration and display behavior across different feature flag states.

✏️ Tip: You can customize this high-level summary in your review settings.

aleksandernsilva avatar Nov 17 '25 14:11 aleksandernsilva

Looks like this PR is not ready to merge, because of the following issues:

  • This PR is missing the 'stat: QA assured' label

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

dionisio-bot[bot] avatar Nov 17 '25 14:11 dionisio-bot[bot]

πŸ¦‹ Changeset detected

Latest commit: 1abcda32b7283689a55231abdfa521f0b243f59d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 41 packages
Name Type
@rocket.chat/meteor Patch
@rocket.chat/core-typings Patch
@rocket.chat/rest-typings Patch
@rocket.chat/uikit-playground Patch
@rocket.chat/api-client Patch
@rocket.chat/apps Patch
@rocket.chat/core-services Patch
@rocket.chat/cron Patch
@rocket.chat/ddp-client Patch
@rocket.chat/freeswitch Patch
@rocket.chat/fuselage-ui-kit Patch
@rocket.chat/gazzodown Patch
@rocket.chat/http-router Patch
@rocket.chat/livechat Patch
@rocket.chat/model-typings Patch
@rocket.chat/ui-avatar Patch
@rocket.chat/ui-client Patch
@rocket.chat/ui-contexts Patch
@rocket.chat/web-ui-registration Patch
@rocket.chat/account-service Patch
@rocket.chat/authorization-service Patch
@rocket.chat/ddp-streamer Patch
@rocket.chat/omnichannel-transcript Patch
@rocket.chat/presence-service Patch
@rocket.chat/queue-worker Patch
@rocket.chat/stream-hub-service Patch
@rocket.chat/federation-matrix Patch
@rocket.chat/license Patch
@rocket.chat/media-calls Patch
@rocket.chat/omnichannel-services Patch
@rocket.chat/pdf-worker Patch
@rocket.chat/presence Patch
rocketchat-services Patch
@rocket.chat/models Patch
@rocket.chat/network-broker Patch
@rocket.chat/omni-core-ee Patch
@rocket.chat/mock-providers Patch
@rocket.chat/ui-video-conf Patch
@rocket.chat/ui-voip Patch
@rocket.chat/instance-status Patch
@rocket.chat/omni-core Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

changeset-bot[bot] avatar Nov 17 '25 14:11 changeset-bot[bot]

[!CAUTION]

Review failed

The pull request is closed.

Walkthrough

Disables read receipt indicators for federated rooms, extracts MessageListContext default into a named export, and adds unit tests covering read-receipt behavior and the federated-room gating.

Changes

Cohort / File(s) Summary
Changeset
.changeset/cold-chefs-rhyme.md
Adds changeset documenting the patch that disables read receipt indicators in federated rooms.
Context value export
apps/meteor/client/components/message/list/MessageListContext.tsx
Extracts the inline default into a named export messageListContextDefaultValue and uses it when creating MessageListContext.
Read receipts gating
apps/meteor/client/views/room/MessageList/providers/MessageListProvider.tsx
Gates readReceiptsEnabled with isRoomFederated(room), disabling read receipts when the room is federated.
Unit tests
apps/meteor/client/components/message/toolbar/useReadReceiptsDetailsAction.spec.tsx, apps/meteor/client/components/message/variants/RoomMessage.spec.tsx
Adds tests that assert the hook/component returns null when read receipts or storeUsers are disabled and verifies read-receipt UI presence/absence based on MessageListContext config.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Inspect isRoomFederated(room) usage in MessageListProvider to ensure correct boolean semantics (true => federated => disable).
  • Verify no consumers relied on the previous anonymous default object identity vs. the exported messageListContextDefaultValue.
  • Run and review the new tests to confirm they cover both federated and non-federated paths.

Possibly related PRs

  • RocketChat/Rocket.Chat#37534 β€” makes overlapping changes to disable read receipts in federated rooms (same provider gating, exported default, and tests).
  • RocketChat/Rocket.Chat#36952 β€” refactors room federated checks across UI; related to how isRoomFederated is computed/used.

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • rodrigok
  • ricardogarim

Poem

🐰 I hop through code where receipts once shone,
In federated fields they’re left alone.
I export a default, add tests that sing,
Silence the checks till federation can bring. ✨

Pre-merge checks and finishing touches

βœ… Passed checks (5 passed)
Check name Status Explanation
Description Check βœ… Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check βœ… Passed The title clearly and concisely describes the main change: disabling message read receipts in federated rooms, which is the core focus of all modifications.
Linked Issues check βœ… Passed Changes address FB-45 and FB-75 by disabling read receipts in federated rooms via context-based conditional logic and test coverage for the feature flag behavior.
Out of Scope Changes check βœ… Passed All changes are directly scoped to read receipts suppression in federated rooms: context extraction, federated room checks, and related test coverage.
Docstring Coverage βœ… Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

πŸ“œ Recent 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.

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 01c21666133157b4dbd5f8a5be483d44c136af38 and 1abcda32b7283689a55231abdfa521f0b243f59d.

πŸ“’ Files selected for processing (5)
  • .changeset/cold-chefs-rhyme.md (1 hunks)
  • apps/meteor/client/components/message/list/MessageListContext.tsx (2 hunks)
  • apps/meteor/client/components/message/toolbar/useReadReceiptsDetailsAction.spec.tsx (1 hunks)
  • apps/meteor/client/components/message/variants/RoomMessage.spec.tsx (2 hunks)
  • apps/meteor/client/views/room/MessageList/providers/MessageListProvider.tsx (2 hunks)

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.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Nov 17 '25 14:11 coderabbitai[bot]

πŸ“¦ Docker Image Size Report

πŸ“ˆ Changes

Service Current Baseline Change Percent
sum of all images 1.2GiB 1.2GiB +12MiB
rocketchat 359MiB 347MiB +12MiB
omnichannel-transcript-service 132MiB 132MiB -3.1KiB
queue-worker-service 132MiB 132MiB -26B
ddp-streamer-service 126MiB 126MiB +312B
account-service 113MiB 113MiB -2.0KiB
stream-hub-service 111MiB 111MiB -831B
authorization-service 111MiB 111MiB -150B
presence-service 111MiB 111MiB +153B

πŸ“Š Historical Trend

---
config:
  theme: "dark"
  xyChart:
    width: 900
    height: 400
---
xychart
  title "Image Size Evolution by Service (Last 30 Days + This PR)"
  x-axis ["11/15 22:28", "11/16 01:28", "11/17 23:50", "11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 17:34", "11/27 22:32", "11/28 19:05", "12/01 23:01", "12/02 21:57", "12/03 21:00", "12/04 18:17", "12/05 21:56", "12/08 16:42", "12/08 18:03 (PR)"]
  y-axis "Size (GB)" 0 --> 0.5
  line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]
  line "omnichannel-transcript-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "queue-worker-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "rocketchat" [0.36, 0.36, 0.35, 0.35, 0.35, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.35]
  line "stream-hub-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]

Statistics (last 15 days):

  • πŸ“Š Average: 1.5GiB
  • ⬇️ Minimum: 1.2GiB
  • ⬆️ Maximum: 1.6GiB
  • 🎯 Current PR: 1.2GiB
ℹ️ About this report

This report compares Docker image sizes from this build against the develop baseline.

  • Tag: pr-37534
  • Baseline: develop
  • Timestamp: 2025-12-08 18:03:01 UTC
  • Historical data points: 15

Updated: Mon, 08 Dec 2025 18:03:02 GMT

github-actions[bot] avatar Nov 17 '25 15:11 github-actions[bot]

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 67.80%. Comparing base (d0be8ad) to head (01c2166). :warning: Report is 9 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37534      +/-   ##
===========================================
+ Coverage    67.78%   67.80%   +0.02%     
===========================================
  Files         3449     3449              
  Lines       113987   113972      -15     
  Branches     20956    20956              
===========================================
+ Hits         77262    77279      +17     
+ Misses       34610    34576      -34     
- Partials      2115     2117       +2     
Flag Coverage Ξ”
e2e 57.32% <100.00%> (+0.09%) :arrow_up:
e2e-api 42.15% <ΓΈ> (-0.04%) :arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

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

codecov[bot] avatar Nov 17 '25 16:11 codecov[bot]

@coderabbitai review

aleksandernsilva avatar Dec 08 '25 13:12 aleksandernsilva

βœ… Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot] avatar Dec 08 '25 13:12 coderabbitai[bot]