Closed lanzhenw closed 2 months ago
The updates enhance the permission system by introducing new permission types for various actions, such as modifying sidebar groups, creating new fields, tagging samples or labels, and editing custom colors and saved views. These permissions are now managed using objects with enabled
and message
properties, replacing the previous boolean flags. This change affects multiple components and ensures a more granular control over user actions.
Files | Change Summaries |
---|---|
app/packages/app/src/useWriters/registerWriter.ts |
Added new permissions to WriterKeys type, including modifying sidebar groups, creating fields, etc. |
app/packages/core/src/components/Actions/ActionsRow.tsx |
Replaced readOnly with canTagSamplesOrLabels for tagging logic. |
app/packages/core/src/components/Actions/similar/Similar.tsx |
Replaced isReadOnly with canCreateNewField for field creation logic. |
app/packages/core/src/components/ColorModal/ColorFooter.tsx |
Updated logic for canEditCustomColors , affecting button states and titles. |
app/packages/core/src/components/Sidebar/Entries/AddGroupEntry.tsx |
Replaced readOnly with canModifySidebarGroup , introduced disabled state. |
app/packages/core/src/components/Sidebar/Entries/Draggable.tsx |
Adjusted imports and logic for sidebar group modification permissions. |
app/packages/core/src/components/Sidebar/Entries/GroupEntries.tsx |
Added canModifySidebarGroup state for determining sidebar group modification permissions. |
app/packages/core/src/components/Sidebar/ViewSelection/index.tsx |
Used disabled and disabledMsg instead of canEdit for editing views and handling keyboard events. |
app/packages/spaces/src/components/Workspaces/Workspace.tsx |
Refactored workspace editing permissions handling, using canEditWorkspaces state. |
app/packages/spaces/src/components/Workspaces/hooks.ts |
Removed references to canEditWorkspaces , readOnly , and useWorkspacePermission function. |
app/packages/spaces/src/components/Workspaces/index.tsx |
Adjusted workspace editing functionality based on canEditWorkspaces permissions. |
app/packages/state/src/recoil/atoms.ts |
Updated default values for session atoms to objects with enabled and message properties. |
app/packages/state/src/session.ts |
Restructured Session interface, added new fields, and updated SESSION_DEFAULT and SetterKeys . |
π Permissions dance in fields anew, With colors bright and tasks to do. Sidebar groups and fields we mold, In code, new stories now unfold. Tagging samples, views to save, A rabbit's joy in changes brave. πΌ
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
@coderabbitai review
Outside of the scope of this PR, so feel free to follow-up or defer:
- Can we add support for restricting renaming sidebar group?
- Can we add support for restricting deleting sidebar group?
I updated the flag name to canModifySidebarGroups
to encapsulate the permission to change sidebar groups, including renaming, creating and deleting. Thanks for catching that. I will add the permission check there.
Can we move the business logic to the internal App?
The below doesn't need to be in OSS. The
fos.canTagSamplesOrLabels
session atom can capture the conditionconst isReadOnly = readOnly || !canTag;
This is still following the same pattern as before. We decoupled "!canEdit" from readOnly
, so readOnly
right now refers to "isSnapshot" (but will likely expend in future per @imanjra ).
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 99.27%. Comparing base (
2753171
) to head (68ec461
). Report is 63 commits behind head on develop.:exclamation: Current head 68ec461 differs from pull request most recent head 99dc2cf
Please upload reports for the commit 99dc2cf to get more accurate results.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
What changes are proposed in this pull request?
(Please fill in changes proposed in this fix)
How is this patch tested? If it is not, please explain why.
(Details)
Release Notes
Is this a user-facing change that should be mentioned in the release notes?
(Details in 1-2 sentences. You can just refer to another PR with a description if this PR is part of a larger change.)
What areas of FiftyOne does this PR affect?
fiftyone
Python library changesSummary by CodeRabbit
New Features
Bug Fixes
Refactor
readOnly
state with specific permission checks across multiple components for better modularity and clarity.Usability Improvements