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.