From 140d3def6a17311d3c1f673dbf5eccfe4efb76fa Mon Sep 17 00:00:00 2001 From: George Mamadashvili Date: Tue, 23 Jul 2024 13:17:51 +0400 Subject: [PATCH] Warn consumers about incorrect usage --- package-lock.json | 2 ++ packages/core-data/package.json | 1 + .../hooks/test/use-resource-permissions.js | 22 +++++++++++++++++++ .../src/hooks/use-resource-permissions.ts | 9 +++++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 2789eccbaafaa1..f20e49d94d719b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52832,6 +52832,7 @@ "@wordpress/sync": "file:../sync", "@wordpress/undo-manager": "file:../undo-manager", "@wordpress/url": "file:../url", + "@wordpress/warning": "file:../warning", "change-case": "^4.1.2", "equivalent-key-map": "^0.2.2", "fast-deep-equal": "^3.1.3", @@ -67676,6 +67677,7 @@ "@wordpress/sync": "file:../sync", "@wordpress/undo-manager": "file:../undo-manager", "@wordpress/url": "file:../url", + "@wordpress/warning": "file:../warning", "change-case": "^4.1.2", "equivalent-key-map": "^0.2.2", "fast-deep-equal": "^3.1.3", diff --git a/packages/core-data/package.json b/packages/core-data/package.json index d94eb375287250..bed2ca97791bc5 100644 --- a/packages/core-data/package.json +++ b/packages/core-data/package.json @@ -47,6 +47,7 @@ "@wordpress/sync": "file:../sync", "@wordpress/undo-manager": "file:../undo-manager", "@wordpress/url": "file:../url", + "@wordpress/warning": "file:../warning", "change-case": "^4.1.2", "equivalent-key-map": "^0.2.2", "fast-deep-equal": "^3.1.3", diff --git a/packages/core-data/src/hooks/test/use-resource-permissions.js b/packages/core-data/src/hooks/test/use-resource-permissions.js index 1ef35cab3353c9..b1c43b7947874d 100644 --- a/packages/core-data/src/hooks/test/use-resource-permissions.js +++ b/packages/core-data/src/hooks/test/use-resource-permissions.js @@ -164,4 +164,26 @@ describe( 'useResourcePermissions', () => { } ) ); } ); + + it( 'should warn when called with incorrect arguments signature', () => { + const TestComponent = () => { + useResourcePermissions( + { + kind: 'root', + name: 'media', + }, + 1 + ); + return null; + }; + render( + + + + ); + + expect( console ).toHaveWarnedWith( + `When 'resource' is an entity object, passing 'id' as a separate argument isn't supported.` + ); + } ); } ); diff --git a/packages/core-data/src/hooks/use-resource-permissions.ts b/packages/core-data/src/hooks/use-resource-permissions.ts index 5495d7263c15bc..332e4da1fb615d 100644 --- a/packages/core-data/src/hooks/use-resource-permissions.ts +++ b/packages/core-data/src/hooks/use-resource-permissions.ts @@ -2,6 +2,7 @@ * WordPress dependencies */ import deprecated from '@wordpress/deprecated'; +import warning from '@wordpress/warning'; /** * Internal dependencies @@ -134,9 +135,15 @@ function useResourcePermissions< IdType = void >( const resourceAsString = typeof resource === 'object' ? JSON.stringify( resource ) : resource; + const isEntity = typeof resource === 'object'; + if ( isEntity && typeof id !== 'undefined' ) { + warning( + `When 'resource' is an entity object, passing 'id' as a separate argument isn't supported.` + ); + } + return useQuerySelect( ( resolve ) => { - const isEntity = typeof resource === 'object'; const hasId = isEntity ? !! resource.id : !! id; const { canUser } = resolve( coreStore ); const create = canUser(