show private indicator for appropriate streams #255

Merged
talksik merged 5 commits from show-private-for-personal-streams into main 2026-06-09 19:38:52 +00:00
talksik commented 2026-06-09 18:49:54 +00:00 (Migrated from github.com)

Summary by CodeRabbit

  • New Features
    • Enhanced visibility indicators with clearer visual distinction between "Everyone" (globe icon) and "Private" (lock icon) states.
    • Updated main button behavior to show "Everyone", "Private", or member avatars/overflow in non-private cases.
    • Improved tooltip text to display accurate member counts and network-wide labeling based on visibility.
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Enhanced visibility indicators with clearer visual distinction between "Everyone" (globe icon) and "Private" (lock icon) states. * Updated main button behavior to show "Everyone", "Private", or member avatars/overflow in non-private cases. * Improved tooltip text to display accurate member counts and network-wide labeling based on visibility. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
coderabbitai[bot] commented 2026-06-09 18:50:14 +00:00 (Migrated from github.com)

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4c0ad0a5-ec60-49c5-a070-7b96b8ec59dd

📥 Commits

Reviewing files that changed from the base of the PR and between 1725a44f9b and f90b81acfd.

📒 Files selected for processing (1)
  • js/desktop/src/features/particles/stream-top-bar.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • js/desktop/src/features/particles/stream-top-bar.tsx

📝 Walkthrough

Walkthrough

MembersIndicator now excludes the current user when computing visible members, classifies visibility as network-wide, private (only current user), or multi-member, and renders a globe, lock, or avatar group plus updated tooltip text accordingly.

Changes

MembersIndicator Visibility States

Layer / File(s) Summary
Member visibility computation
js/desktop/src/features/particles/stream-top-bar.tsx
Import of Lock and refactored member-id computation: builds allMemberIds from visibility, computes othersIds by excluding the current user, determines isPrivate from othersIds emptiness, and recalculates shownMembers/overflow from othersIds.
Visibility rendering and tooltip
js/desktop/src/features/particles/stream-top-bar.tsx
Button renders "Everyone" with globe icon for network-wide, "Private" with lock icon when no other members, or avatar group with overflow otherwise. Tooltip keeps network name for Everyone and uses allMemberIds.length for non-network cases.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped along the stream and peeked inside the view,
Was it Everyone or Private? A lock or globe to cue.
The avatars arranged in rows, the counts now clear and bright,
A little rabbit clapped its paws and nodded with delight. 🌐🔒

🚥 Pre-merge checks | 4 | 1

Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed checks (4 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title accurately describes the main change: adding a private indicator to the MembersIndicator component for streams that should be marked as private.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch show-private-for-personal-streams

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

<!-- This is an auto-generated comment: summarize by coderabbit.ai --> <!-- review_stack_entry_start --> [![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/flowy-live/llink/pull/255?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> No actionable comments were generated in the recent review. 🎉 <details> <summary>ℹ️ Recent review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro Plus **Run ID**: `4c0ad0a5-ec60-49c5-a070-7b96b8ec59dd` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 1725a44f9b128d4048b0fb1d1a9ed0e910fa4c7a and f90b81acfdfa9d8b112629c31ee0cf72ca4fb080. </details> <details> <summary>📒 Files selected for processing (1)</summary> * `js/desktop/src/features/particles/stream-top-bar.tsx` </details> <details> <summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary> * js/desktop/src/features/particles/stream-top-bar.tsx </details> </details> --- <!-- walkthrough_start --> <details> <summary>📝 Walkthrough</summary> ## Walkthrough MembersIndicator now excludes the current user when computing visible members, classifies visibility as network-wide, private (only current user), or multi-member, and renders a globe, lock, or avatar group plus updated tooltip text accordingly. ## Changes **MembersIndicator Visibility States** |Layer / File(s)|Summary| |---|---| |**Member visibility computation** <br> `js/desktop/src/features/particles/stream-top-bar.tsx`|Import of `Lock` and refactored member-id computation: builds `allMemberIds` from visibility, computes `othersIds` by excluding the current user, determines `isPrivate` from `othersIds` emptiness, and recalculates `shownMembers`/`overflow` from `othersIds`.| |**Visibility rendering and tooltip** <br> `js/desktop/src/features/particles/stream-top-bar.tsx`|Button renders "Everyone" with globe icon for network-wide, "Private" with lock icon when no other members, or avatar group with overflow otherwise. Tooltip keeps network name for Everyone and uses `allMemberIds.length` for non-network cases.| ## Estimated code review effort 🎯 3 (Moderate) | ⏱️ ~20 minutes ## Poem > 🐰 I hopped along the stream and peeked inside the view, > Was it Everyone or Private? A lock or globe to cue. > The avatars arranged in rows, the counts now clear and bright, > A little rabbit clapped its paws and nodded with delight. 🌐🔒 </details> <!-- walkthrough_end --> <!-- pre_merge_checks_walkthrough_start --> <details> <summary>🚥 Pre-merge checks | ✅ 4 | ❌ 1</summary> ### ❌ Failed checks (1 warning) | Check name | Status | Explanation | Resolution | | :----------------: | :--------- | :----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | | Docstring Coverage | ⚠️ Warning | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. | <details> <summary>✅ Passed checks (4 passed)</summary> | Check name | Status | Explanation | | :------------------------: | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title accurately describes the main change: adding a private indicator to the MembersIndicator component for streams that should be marked as private. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | </details> <sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub> </details> <!-- pre_merge_checks_walkthrough_end --> <!-- finishing_touch_checkbox_start --> <details> <summary>✨ Finishing Touches</summary> <details> <summary>📝 Generate docstrings</summary> - [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> Create stacked PR - [ ] <!-- {"checkboxId": "3e1879ae-f29b-4d0d-8e06-d12b7ba33d98"} --> Commit on current branch </details> <details> <summary>🧪 Generate unit tests (beta)</summary> - [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests - [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `show-private-for-personal-streams` </details> </details> <!-- finishing_touch_checkbox_end --> <!-- tips_start --> --- <sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub> <!-- tips_end --> <!-- internal state start --> <!-- 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 --> <!-- internal state end -->
Sign in to join this conversation.