Skip to content

Commit 9b82b2e

Browse files
karthick-murugankarthick-murugant-hamanoMamadukaadamsilverstein
authored andcommitted
Notes: Restrict menu actions for resolution notes and resolved threads (WordPress#73243)
* Fix menu actions * Reopened text appended * Feedback Updated * isEligible callback update * Notes: Keep reopen notes without user text uneditable Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: karthick-murugan <karthickmurugan@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: Mamaduka <mamaduka@git.wordpress.org> Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org> Co-authored-by: draganescu <andraganescu@git.wordpress.org>
1 parent 6354ace commit 9b82b2e

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

  • packages/editor/src/components/collab-sidebar

‎packages/editor/src/components/collab-sidebar/note.jsx‎

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,36 +78,41 @@ export function Note( {
7878
}, [ rawContent ] );
7979

8080
const canResolve = note.parent === 0;
81+
const metaStatus = note.meta?._wp_note_status;
8182
const isResolutionNote =
82-
note.type === 'note' &&
83-
note.meta &&
84-
( note.meta._wp_note_status === 'resolved' ||
85-
note.meta._wp_note_status === 'reopen' );
83+
metaStatus === 'resolved' || metaStatus === 'reopen';
84+
const hasUserText =
85+
typeof rawContent === 'string' && rawContent.trim() !== '';
86+
87+
const hasResolved = ( status ) =>
88+
status === 'approved' || parentNote?.status === 'approved';
8689

8790
const menuItems = [
8891
{
8992
id: 'edit',
9093
title: __( 'Edit' ),
91-
isEligible: ( { status } ) => status !== 'approved',
94+
isEligible: ( { status } ) =>
95+
( ! isResolutionNote || hasUserText ) &&
96+
! hasResolved( status ),
9297
onClick: () => setActionState( 'edit' ),
9398
},
9499
{
95100
id: 'reopen',
96101
title: _x( 'Reopen', 'Reopen note' ),
97-
isEligible: ( { status } ) => status === 'approved',
102+
isEligible: ( { status } ) => canResolve && hasResolved( status ),
98103
onClick: () => onEditNote( { id: note.id, status: 'hold' } ),
99104
},
100105
{
101106
id: 'delete',
102107
title: __( 'Delete' ),
103-
isEligible: () => true,
108+
isEligible: ( { status } ) =>
109+
canResolve || ( ! isResolutionNote && ! hasResolved( status ) ),
104110
onClick: () => setActionState( 'delete' ),
105111
},
106112
];
107-
const availableItems =
108-
parentNote?.status !== 'approved'
109-
? menuItems.filter( ( item ) => item.isEligible( note ) )
110-
: [];
113+
const availableItems = menuItems.filter( ( item ) =>
114+
item.isEligible( note )
115+
);
111116

112117
const deleteConfirmMessage =
113118
note.parent === 0

0 commit comments

Comments
 (0)