@elementor/editor-current-user 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +13 -0
- package/dist/index.d.mts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/use-current-user-capabilities.test.ts +2 -2
- package/src/api.ts +3 -3
- package/src/get-current-user.ts +5 -0
- package/src/index.ts +1 -0
- package/src/types.ts +1 -3
- package/src/use-current-user-capabilities.ts +1 -2
- package/src/use-current-user.ts +2 -2
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-current-user@0.
|
|
2
|
+
> @elementor/editor-current-user@0.4.0 build
|
|
3
3
|
> tsup --config=../../tsup.build.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[32mESM[39m [1mdist/index.mjs [22m[32m2.
|
|
14
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m5.
|
|
15
|
-
[32mESM[39m ⚡️ Build success in
|
|
16
|
-
[32mCJS[39m [1mdist/index.js [22m[32m3.
|
|
17
|
-
[32mCJS[39m [1mdist/index.js.map [22m[32m5.
|
|
18
|
-
[32mCJS[39m ⚡️ Build success in
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m2.68 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m5.43 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 93ms
|
|
16
|
+
[32mCJS[39m [1mdist/index.js [22m[32m3.94 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m5.76 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 95ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
21
|
-
[32mDTS[39m [1mdist/index.d.mts [22m[
|
|
22
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 10677ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m464.00 B[39m
|
|
22
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m464.00 B[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @elementor/editor-current-user
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 89dfaf2: Update user api to support more capabilities.
|
|
8
|
+
|
|
9
|
+
## 0.3.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [3ccc78c]
|
|
14
|
+
- @elementor/http-client@0.3.0
|
|
15
|
+
|
|
3
16
|
## 0.3.1
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -2,10 +2,15 @@ declare function PrefetchUserData(): null;
|
|
|
2
2
|
|
|
3
3
|
declare const useSuppressedMessage: (messageKey: string) => readonly [boolean, () => void];
|
|
4
4
|
|
|
5
|
-
type UserCapability = 'manage_options';
|
|
6
|
-
|
|
7
5
|
declare const useCurrentUserCapabilities: () => {
|
|
8
|
-
canUser: (capability:
|
|
6
|
+
canUser: (capability: string) => boolean;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
type User = {
|
|
10
|
+
suppressedMessages: string[];
|
|
11
|
+
capabilities: string[];
|
|
9
12
|
};
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
declare const getCurrentUser: () => Promise<User>;
|
|
15
|
+
|
|
16
|
+
export { PrefetchUserData, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,15 @@ declare function PrefetchUserData(): null;
|
|
|
2
2
|
|
|
3
3
|
declare const useSuppressedMessage: (messageKey: string) => readonly [boolean, () => void];
|
|
4
4
|
|
|
5
|
-
type UserCapability = 'manage_options';
|
|
6
|
-
|
|
7
5
|
declare const useCurrentUserCapabilities: () => {
|
|
8
|
-
canUser: (capability:
|
|
6
|
+
canUser: (capability: string) => boolean;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
type User = {
|
|
10
|
+
suppressedMessages: string[];
|
|
11
|
+
capabilities: string[];
|
|
9
12
|
};
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
declare const getCurrentUser: () => Promise<User>;
|
|
15
|
+
|
|
16
|
+
export { PrefetchUserData, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
PrefetchUserData: () => PrefetchUserData,
|
|
24
|
+
getCurrentUser: () => getCurrentUser,
|
|
24
25
|
useCurrentUserCapabilities: () => useCurrentUserCapabilities,
|
|
25
26
|
useSuppressedMessage: () => useSuppressedMessage
|
|
26
27
|
});
|
|
@@ -59,10 +60,17 @@ var userToRequest = (user) => {
|
|
|
59
60
|
|
|
60
61
|
// src/use-current-user.ts
|
|
61
62
|
var import_query = require("@elementor/query");
|
|
63
|
+
|
|
64
|
+
// src/get-current-user.ts
|
|
65
|
+
var getCurrentUser = () => {
|
|
66
|
+
return apiClient.get();
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// src/use-current-user.ts
|
|
62
70
|
var EDITOR_CURRENT_USER_QUERY_KEY = "editor-current-user";
|
|
63
71
|
var useCurrentUser = () => (0, import_query.useQuery)({
|
|
64
72
|
queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
|
|
65
|
-
queryFn:
|
|
73
|
+
queryFn: getCurrentUser
|
|
66
74
|
});
|
|
67
75
|
|
|
68
76
|
// src/components/prefetch-user-data.tsx
|
|
@@ -111,6 +119,7 @@ var useCurrentUserCapabilities = () => {
|
|
|
111
119
|
// Annotate the CommonJS export names for ESM import in node:
|
|
112
120
|
0 && (module.exports = {
|
|
113
121
|
PrefetchUserData,
|
|
122
|
+
getCurrentUser,
|
|
114
123
|
useCurrentUserCapabilities,
|
|
115
124
|
useSuppressedMessage
|
|
116
125
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/prefetch-user-data.tsx","../src/api.ts","../src/use-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts"],"sourcesContent":["export { PrefetchUserData } from './components/prefetch-user-data';\nexport { useSuppressedMessage } from './use-suppressed-message';\nexport { useCurrentUserCapabilities } from './use-current-user-capabilities';\n","import { useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';\n\nexport function PrefetchUserData() {\n\tconst queryClient = useQueryClient();\n\n\tqueryClient.prefetchQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: apiClient.get,\n\t} );\n\n\treturn null;\n}\n","import { httpService } from '@elementor/http-client';\n\nimport { type User
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/prefetch-user-data.tsx","../src/api.ts","../src/use-current-user.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts"],"sourcesContent":["export { PrefetchUserData } from './components/prefetch-user-data';\nexport { useSuppressedMessage } from './use-suppressed-message';\nexport { useCurrentUserCapabilities } from './use-current-user-capabilities';\nexport { getCurrentUser } from './get-current-user';\n","import { useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';\n\nexport function PrefetchUserData() {\n\tconst queryClient = useQueryClient();\n\n\tqueryClient.prefetchQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: apiClient.get,\n\t} );\n\n\treturn null;\n}\n","import { httpService } from '@elementor/http-client';\n\nimport { type User } from './types';\n\nconst RESOURCE_URL = '/users/me';\n\ntype GetUserPayload = {\n\tparams: { context?: 'edit' };\n};\n\ntype UserModel = {\n\telementor_introduction: Record< string, boolean >;\n\tcapabilities: Partial< Record< string, true > >;\n};\n\nconst getUserPayload: GetUserPayload = { params: { context: 'edit' } };\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< UserModel >( 'wp/v2' + RESOURCE_URL, getUserPayload )\n\t\t\t.then( ( res ) => {\n\t\t\t\treturn responseToUser( res.data );\n\t\t\t} ),\n\tupdate: ( data: Partial< User > ) =>\n\t\thttpService().patch< Partial< UserModel > >( 'wp/v2' + RESOURCE_URL, userToRequest( data ) ),\n};\n\nconst responseToUser = ( response: UserModel ): User => {\n\treturn {\n\t\tsuppressedMessages: Object.entries( response.elementor_introduction )\n\t\t\t.filter( ( [ , value ] ) => value )\n\t\t\t.map( ( [ message ] ) => message ),\n\t\tcapabilities: Object.keys( response.capabilities ),\n\t};\n};\n\nconst userToRequest = ( user: Partial< User > ): Partial< UserModel > => {\n\treturn {\n\t\telementor_introduction: user.suppressedMessages?.reduce(\n\t\t\t( acc, message ) => {\n\t\t\t\tacc[ message ] = true;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, boolean >\n\t\t),\n\t};\n};\n","import { useQuery } from '@elementor/query';\n\nimport { getCurrentUser } from './get-current-user';\n\nexport const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';\n\nexport const useCurrentUser = () =>\n\tuseQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: getCurrentUser,\n\t} );\n","import { apiClient } from './api';\n\nexport const getCurrentUser = () => {\n\treturn apiClient.get();\n};\n","import { useMutation, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport const useUpdateCurrentUser = () => {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation( {\n\t\tmutationFn: apiClient.update,\n\t\tonSuccess: () => queryClient.invalidateQueries( { queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ] } ),\n\t} );\n};\n","import { useCurrentUser } from './use-current-user';\nimport { useUpdateCurrentUser } from './use-update-current-user';\n\nexport const useSuppressedMessage = ( messageKey: string ) => {\n\tconst { data } = useCurrentUser();\n\tconst { mutate } = useUpdateCurrentUser();\n\n\tconst isMessageSuppressed = !! data?.suppressedMessages.includes( messageKey );\n\n\tconst suppressMessage = () => {\n\t\tif ( ! isMessageSuppressed ) {\n\t\t\tmutate( {\n\t\t\t\tsuppressedMessages: [ ...( data?.suppressedMessages ?? [] ), messageKey ],\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn [ isMessageSuppressed, suppressMessage ] as const;\n};\n","import { useCurrentUser } from './use-current-user';\n\nexport const useCurrentUserCapabilities = () => {\n\tconst { data } = useCurrentUser();\n\n\tconst canUser = ( capability: string ) => {\n\t\treturn Boolean( data?.capabilities.includes( capability ) );\n\t};\n\n\treturn { canUser };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,gBAA+B;;;ACA/B,yBAA4B;AAI5B,IAAM,eAAe;AAWrB,IAAM,iBAAiC,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;AAE9D,IAAM,YAAY;AAAA,EACxB,KAAK,UACJ,gCAAY,EACV,IAAkB,UAAU,cAAc,cAAe,EACzD,KAAM,CAAE,QAAS;AACjB,WAAO,eAAgB,IAAI,IAAK;AAAA,EACjC,CAAE;AAAA,EACJ,QAAQ,CAAE,aACT,gCAAY,EAAE,MAA+B,UAAU,cAAc,cAAe,IAAK,CAAE;AAC7F;AAEA,IAAM,iBAAiB,CAAE,aAA+B;AACvD,SAAO;AAAA,IACN,oBAAoB,OAAO,QAAS,SAAS,sBAAuB,EAClE,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,KAAM,EACjC,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AAAA,IAClC,cAAc,OAAO,KAAM,SAAS,YAAa;AAAA,EAClD;AACD;AAEA,IAAM,gBAAgB,CAAE,SAAiD;AACxE,SAAO;AAAA,IACN,wBAAwB,KAAK,oBAAoB;AAAA,MAChD,CAAE,KAAK,YAAa;AACnB,YAAK,OAAQ,IAAI;AAEjB,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD;AACD;;;AChDA,mBAAyB;;;ACElB,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;ADAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,UAC7B,uBAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AFLI,SAAS,mBAAmB;AAClC,QAAM,kBAAc,8BAAe;AAEnC,cAAY,cAAe;AAAA,IAC1B,UAAU,CAAE,6BAA8B;AAAA,IAC1C,SAAS,UAAU;AAAA,EACpB,CAAE;AAEF,SAAO;AACR;;;AIdA,IAAAC,gBAA4C;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,kBAAc,8BAAe;AAEnC,aAAO,2BAAa;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,WAAW,MAAM,YAAY,kBAAmB,EAAE,UAAU,CAAE,6BAA8B,EAAE,CAAE;AAAA,EACjG,CAAE;AACH;;;ACTO,IAAM,uBAAuB,CAAE,eAAwB;AAC7D,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAM,sBAAsB,CAAC,CAAE,MAAM,mBAAmB,SAAU,UAAW;AAE7E,QAAM,kBAAkB,MAAM;AAC7B,QAAK,CAAE,qBAAsB;AAC5B,aAAQ;AAAA,QACP,oBAAoB,CAAE,GAAK,MAAM,sBAAsB,CAAC,GAAK,UAAW;AAAA,MACzE,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SAAO,CAAE,qBAAqB,eAAgB;AAC/C;;;AChBO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,QAAM,UAAU,CAAE,eAAwB;AACzC,WAAO,QAAS,MAAM,aAAa,SAAU,UAAW,CAAE;AAAA,EAC3D;AAEA,SAAO,EAAE,QAAQ;AAClB;","names":["import_query","import_query"]}
|
package/dist/index.mjs
CHANGED
|
@@ -31,10 +31,17 @@ var userToRequest = (user) => {
|
|
|
31
31
|
|
|
32
32
|
// src/use-current-user.ts
|
|
33
33
|
import { useQuery } from "@elementor/query";
|
|
34
|
+
|
|
35
|
+
// src/get-current-user.ts
|
|
36
|
+
var getCurrentUser = () => {
|
|
37
|
+
return apiClient.get();
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// src/use-current-user.ts
|
|
34
41
|
var EDITOR_CURRENT_USER_QUERY_KEY = "editor-current-user";
|
|
35
42
|
var useCurrentUser = () => useQuery({
|
|
36
43
|
queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
|
|
37
|
-
queryFn:
|
|
44
|
+
queryFn: getCurrentUser
|
|
38
45
|
});
|
|
39
46
|
|
|
40
47
|
// src/components/prefetch-user-data.tsx
|
|
@@ -82,6 +89,7 @@ var useCurrentUserCapabilities = () => {
|
|
|
82
89
|
};
|
|
83
90
|
export {
|
|
84
91
|
PrefetchUserData,
|
|
92
|
+
getCurrentUser,
|
|
85
93
|
useCurrentUserCapabilities,
|
|
86
94
|
useSuppressedMessage
|
|
87
95
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/prefetch-user-data.tsx","../src/api.ts","../src/use-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts"],"sourcesContent":["import { useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';\n\nexport function PrefetchUserData() {\n\tconst queryClient = useQueryClient();\n\n\tqueryClient.prefetchQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: apiClient.get,\n\t} );\n\n\treturn null;\n}\n","import { httpService } from '@elementor/http-client';\n\nimport { type User
|
|
1
|
+
{"version":3,"sources":["../src/components/prefetch-user-data.tsx","../src/api.ts","../src/use-current-user.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts"],"sourcesContent":["import { useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';\n\nexport function PrefetchUserData() {\n\tconst queryClient = useQueryClient();\n\n\tqueryClient.prefetchQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: apiClient.get,\n\t} );\n\n\treturn null;\n}\n","import { httpService } from '@elementor/http-client';\n\nimport { type User } from './types';\n\nconst RESOURCE_URL = '/users/me';\n\ntype GetUserPayload = {\n\tparams: { context?: 'edit' };\n};\n\ntype UserModel = {\n\telementor_introduction: Record< string, boolean >;\n\tcapabilities: Partial< Record< string, true > >;\n};\n\nconst getUserPayload: GetUserPayload = { params: { context: 'edit' } };\n\nexport const apiClient = {\n\tget: () =>\n\t\thttpService()\n\t\t\t.get< UserModel >( 'wp/v2' + RESOURCE_URL, getUserPayload )\n\t\t\t.then( ( res ) => {\n\t\t\t\treturn responseToUser( res.data );\n\t\t\t} ),\n\tupdate: ( data: Partial< User > ) =>\n\t\thttpService().patch< Partial< UserModel > >( 'wp/v2' + RESOURCE_URL, userToRequest( data ) ),\n};\n\nconst responseToUser = ( response: UserModel ): User => {\n\treturn {\n\t\tsuppressedMessages: Object.entries( response.elementor_introduction )\n\t\t\t.filter( ( [ , value ] ) => value )\n\t\t\t.map( ( [ message ] ) => message ),\n\t\tcapabilities: Object.keys( response.capabilities ),\n\t};\n};\n\nconst userToRequest = ( user: Partial< User > ): Partial< UserModel > => {\n\treturn {\n\t\telementor_introduction: user.suppressedMessages?.reduce(\n\t\t\t( acc, message ) => {\n\t\t\t\tacc[ message ] = true;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, boolean >\n\t\t),\n\t};\n};\n","import { useQuery } from '@elementor/query';\n\nimport { getCurrentUser } from './get-current-user';\n\nexport const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';\n\nexport const useCurrentUser = () =>\n\tuseQuery( {\n\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\tqueryFn: getCurrentUser,\n\t} );\n","import { apiClient } from './api';\n\nexport const getCurrentUser = () => {\n\treturn apiClient.get();\n};\n","import { useMutation, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport const useUpdateCurrentUser = () => {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation( {\n\t\tmutationFn: apiClient.update,\n\t\tonSuccess: () => queryClient.invalidateQueries( { queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ] } ),\n\t} );\n};\n","import { useCurrentUser } from './use-current-user';\nimport { useUpdateCurrentUser } from './use-update-current-user';\n\nexport const useSuppressedMessage = ( messageKey: string ) => {\n\tconst { data } = useCurrentUser();\n\tconst { mutate } = useUpdateCurrentUser();\n\n\tconst isMessageSuppressed = !! data?.suppressedMessages.includes( messageKey );\n\n\tconst suppressMessage = () => {\n\t\tif ( ! isMessageSuppressed ) {\n\t\t\tmutate( {\n\t\t\t\tsuppressedMessages: [ ...( data?.suppressedMessages ?? [] ), messageKey ],\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn [ isMessageSuppressed, suppressMessage ] as const;\n};\n","import { useCurrentUser } from './use-current-user';\n\nexport const useCurrentUserCapabilities = () => {\n\tconst { data } = useCurrentUser();\n\n\tconst canUser = ( capability: string ) => {\n\t\treturn Boolean( data?.capabilities.includes( capability ) );\n\t};\n\n\treturn { canUser };\n};\n"],"mappings":";AAAA,SAAS,sBAAsB;;;ACA/B,SAAS,mBAAmB;AAI5B,IAAM,eAAe;AAWrB,IAAM,iBAAiC,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;AAE9D,IAAM,YAAY;AAAA,EACxB,KAAK,MACJ,YAAY,EACV,IAAkB,UAAU,cAAc,cAAe,EACzD,KAAM,CAAE,QAAS;AACjB,WAAO,eAAgB,IAAI,IAAK;AAAA,EACjC,CAAE;AAAA,EACJ,QAAQ,CAAE,SACT,YAAY,EAAE,MAA+B,UAAU,cAAc,cAAe,IAAK,CAAE;AAC7F;AAEA,IAAM,iBAAiB,CAAE,aAA+B;AACvD,SAAO;AAAA,IACN,oBAAoB,OAAO,QAAS,SAAS,sBAAuB,EAClE,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,KAAM,EACjC,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AAAA,IAClC,cAAc,OAAO,KAAM,SAAS,YAAa;AAAA,EAClD;AACD;AAEA,IAAM,gBAAgB,CAAE,SAAiD;AACxE,SAAO;AAAA,IACN,wBAAwB,KAAK,oBAAoB;AAAA,MAChD,CAAE,KAAK,YAAa;AACnB,YAAK,OAAQ,IAAI;AAEjB,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD;AACD;;;AChDA,SAAS,gBAAgB;;;ACElB,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;ADAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,MAC7B,SAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AFLI,SAAS,mBAAmB;AAClC,QAAM,cAAc,eAAe;AAEnC,cAAY,cAAe;AAAA,IAC1B,UAAU,CAAE,6BAA8B;AAAA,IAC1C,SAAS,UAAU;AAAA,EACpB,CAAE;AAEF,SAAO;AACR;;;AIdA,SAAS,aAAa,kBAAAA,uBAAsB;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,cAAcC,gBAAe;AAEnC,SAAO,YAAa;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,WAAW,MAAM,YAAY,kBAAmB,EAAE,UAAU,CAAE,6BAA8B,EAAE,CAAE;AAAA,EACjG,CAAE;AACH;;;ACTO,IAAM,uBAAuB,CAAE,eAAwB;AAC7D,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAM,sBAAsB,CAAC,CAAE,MAAM,mBAAmB,SAAU,UAAW;AAE7E,QAAM,kBAAkB,MAAM;AAC7B,QAAK,CAAE,qBAAsB;AAC5B,aAAQ;AAAA,QACP,oBAAoB,CAAE,GAAK,MAAM,sBAAsB,CAAC,GAAK,UAAW;AAAA,MACzE,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SAAO,CAAE,qBAAqB,eAAgB;AAC/C;;;AChBO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,QAAM,UAAU,CAAE,eAAwB;AACzC,WAAO,QAAS,MAAM,aAAa,SAAU,UAAW,CAAE;AAAA,EAC3D;AAEA,SAAO,EAAE,QAAQ;AAClB;","names":["useQueryClient","useQueryClient"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-current-user",
|
|
3
3
|
"description": "Elementor Editor Current User",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"react": "^18.3.1"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@elementor/http-client": "0.
|
|
39
|
+
"@elementor/http-client": "0.3.0",
|
|
40
40
|
"@elementor/query": "0.2.4"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type UseQueryResult } from '@elementor/query';
|
|
2
2
|
import { renderHook } from '@testing-library/react';
|
|
3
3
|
|
|
4
|
-
import { type User
|
|
4
|
+
import { type User } from '../types';
|
|
5
5
|
import { useCurrentUser } from '../use-current-user';
|
|
6
6
|
import { useCurrentUserCapabilities } from '../use-current-user-capabilities';
|
|
7
7
|
|
|
@@ -20,7 +20,7 @@ describe( 'useCurrentUserCapabilities', () => {
|
|
|
20
20
|
|
|
21
21
|
it( "should return false if user doesn't have the capability", async () => {
|
|
22
22
|
jest.mocked( useCurrentUser ).mockReturnValue( {
|
|
23
|
-
data: { capabilities: [] as
|
|
23
|
+
data: { capabilities: [] as string[] },
|
|
24
24
|
} as UseQueryResult< User, Error > );
|
|
25
25
|
|
|
26
26
|
const { result } = renderHook( () => useCurrentUserCapabilities() );
|
package/src/api.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { httpService } from '@elementor/http-client';
|
|
2
2
|
|
|
3
|
-
import { type User
|
|
3
|
+
import { type User } from './types';
|
|
4
4
|
|
|
5
5
|
const RESOURCE_URL = '/users/me';
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ type GetUserPayload = {
|
|
|
10
10
|
|
|
11
11
|
type UserModel = {
|
|
12
12
|
elementor_introduction: Record< string, boolean >;
|
|
13
|
-
capabilities: Partial< Record<
|
|
13
|
+
capabilities: Partial< Record< string, true > >;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
const getUserPayload: GetUserPayload = { params: { context: 'edit' } };
|
|
@@ -31,7 +31,7 @@ const responseToUser = ( response: UserModel ): User => {
|
|
|
31
31
|
suppressedMessages: Object.entries( response.elementor_introduction )
|
|
32
32
|
.filter( ( [ , value ] ) => value )
|
|
33
33
|
.map( ( [ message ] ) => message ),
|
|
34
|
-
capabilities: Object.keys( response.capabilities )
|
|
34
|
+
capabilities: Object.keys( response.capabilities ),
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { type UserCapability } from './types';
|
|
2
1
|
import { useCurrentUser } from './use-current-user';
|
|
3
2
|
|
|
4
3
|
export const useCurrentUserCapabilities = () => {
|
|
5
4
|
const { data } = useCurrentUser();
|
|
6
5
|
|
|
7
|
-
const canUser = ( capability:
|
|
6
|
+
const canUser = ( capability: string ) => {
|
|
8
7
|
return Boolean( data?.capabilities.includes( capability ) );
|
|
9
8
|
};
|
|
10
9
|
|
package/src/use-current-user.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useQuery } from '@elementor/query';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getCurrentUser } from './get-current-user';
|
|
4
4
|
|
|
5
5
|
export const EDITOR_CURRENT_USER_QUERY_KEY = 'editor-current-user';
|
|
6
6
|
|
|
7
7
|
export const useCurrentUser = () =>
|
|
8
8
|
useQuery( {
|
|
9
9
|
queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],
|
|
10
|
-
queryFn:
|
|
10
|
+
queryFn: getCurrentUser,
|
|
11
11
|
} );
|