@elementor/editor-current-user 0.4.0 → 0.6.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 +11 -11
- package/CHANGELOG.md +12 -0
- package/dist/index.d.mts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +20 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -19
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
- package/src/ensure-current-user.ts +16 -0
- package/src/index.ts +1 -1
- package/src/use-current-user-capabilities.ts +1 -1
- package/src/components/prefetch-user-data.tsx +0 -15
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-current-user@0.
|
|
2
|
+
> @elementor/editor-current-user@0.6.0 build
|
|
3
3
|
> tsup --config=../../tsup.build.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
6
6
|
[34mCLI[39m Using tsconfig: ../../../tsconfig.json
|
|
7
|
-
[34mCLI[39m tsup v8.
|
|
7
|
+
[34mCLI[39m tsup v8.5.0
|
|
8
8
|
[34mCLI[39m Using tsup config: /home/runner/work/elementor-packages/elementor-packages/tsup.build.ts
|
|
9
9
|
[34mCLI[39m Target: esnext
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
13
|
+
[32mCJS[39m [1mdist/index.js [22m[32m4.08 KB[39m
|
|
14
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m6.06 KB[39m
|
|
15
|
+
[32mCJS[39m ⚡️ Build success in 68ms
|
|
16
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m2.78 KB[39m
|
|
17
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m5.73 KB[39m
|
|
18
|
+
[32mESM[39m ⚡️ Build success in 71ms
|
|
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 8486ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m608.00 B[39m
|
|
22
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m608.00 B[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @elementor/editor-current-user
|
|
2
2
|
|
|
3
|
+
## 0.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 68ce0d9: Ensure current user exist in the editor.
|
|
8
|
+
|
|
9
|
+
## 0.5.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 6e1d5ff: Enforce capabilities on global classes.
|
|
14
|
+
|
|
3
15
|
## 0.4.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { QueryClient } from '@elementor/query';
|
|
2
2
|
|
|
3
3
|
declare const useSuppressedMessage: (messageKey: string) => readonly [boolean, () => void];
|
|
4
4
|
|
|
5
5
|
declare const useCurrentUserCapabilities: () => {
|
|
6
6
|
canUser: (capability: string) => boolean;
|
|
7
|
+
capabilities: string[] | undefined;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
type User = {
|
|
@@ -13,4 +14,8 @@ type User = {
|
|
|
13
14
|
|
|
14
15
|
declare const getCurrentUser: () => Promise<User>;
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
declare function ensureCurrentUser({ queryClient }: {
|
|
18
|
+
queryClient: QueryClient;
|
|
19
|
+
}): unknown;
|
|
20
|
+
|
|
21
|
+
export { ensureCurrentUser, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { QueryClient } from '@elementor/query';
|
|
2
2
|
|
|
3
3
|
declare const useSuppressedMessage: (messageKey: string) => readonly [boolean, () => void];
|
|
4
4
|
|
|
5
5
|
declare const useCurrentUserCapabilities: () => {
|
|
6
6
|
canUser: (capability: string) => boolean;
|
|
7
|
+
capabilities: string[] | undefined;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
type User = {
|
|
@@ -13,4 +14,8 @@ type User = {
|
|
|
13
14
|
|
|
14
15
|
declare const getCurrentUser: () => Promise<User>;
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
declare function ensureCurrentUser({ queryClient }: {
|
|
18
|
+
queryClient: QueryClient;
|
|
19
|
+
}): unknown;
|
|
20
|
+
|
|
21
|
+
export { ensureCurrentUser, getCurrentUser, useCurrentUserCapabilities, useSuppressedMessage };
|
package/dist/index.js
CHANGED
|
@@ -20,15 +20,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
-
|
|
23
|
+
ensureCurrentUser: () => ensureCurrentUser,
|
|
24
24
|
getCurrentUser: () => getCurrentUser,
|
|
25
25
|
useCurrentUserCapabilities: () => useCurrentUserCapabilities,
|
|
26
26
|
useSuppressedMessage: () => useSuppressedMessage
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(index_exports);
|
|
29
29
|
|
|
30
|
-
// src/
|
|
31
|
-
var
|
|
30
|
+
// src/use-current-user.ts
|
|
31
|
+
var import_query = require("@elementor/query");
|
|
32
32
|
|
|
33
33
|
// src/api.ts
|
|
34
34
|
var import_http_client = require("@elementor/http-client");
|
|
@@ -58,9 +58,6 @@ var userToRequest = (user) => {
|
|
|
58
58
|
};
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
// src/use-current-user.ts
|
|
62
|
-
var import_query = require("@elementor/query");
|
|
63
|
-
|
|
64
61
|
// src/get-current-user.ts
|
|
65
62
|
var getCurrentUser = () => {
|
|
66
63
|
return apiClient.get();
|
|
@@ -73,21 +70,11 @@ var useCurrentUser = () => (0, import_query.useQuery)({
|
|
|
73
70
|
queryFn: getCurrentUser
|
|
74
71
|
});
|
|
75
72
|
|
|
76
|
-
// src/components/prefetch-user-data.tsx
|
|
77
|
-
function PrefetchUserData() {
|
|
78
|
-
const queryClient = (0, import_query2.useQueryClient)();
|
|
79
|
-
queryClient.prefetchQuery({
|
|
80
|
-
queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
|
|
81
|
-
queryFn: apiClient.get
|
|
82
|
-
});
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
73
|
// src/use-update-current-user.ts
|
|
87
|
-
var
|
|
74
|
+
var import_query2 = require("@elementor/query");
|
|
88
75
|
var useUpdateCurrentUser = () => {
|
|
89
|
-
const queryClient = (0,
|
|
90
|
-
return (0,
|
|
76
|
+
const queryClient = (0, import_query2.useQueryClient)();
|
|
77
|
+
return (0, import_query2.useMutation)({
|
|
91
78
|
mutationFn: apiClient.update,
|
|
92
79
|
onSuccess: () => queryClient.invalidateQueries({ queryKey: [EDITOR_CURRENT_USER_QUERY_KEY] })
|
|
93
80
|
});
|
|
@@ -114,11 +101,23 @@ var useCurrentUserCapabilities = () => {
|
|
|
114
101
|
const canUser = (capability) => {
|
|
115
102
|
return Boolean(data?.capabilities.includes(capability));
|
|
116
103
|
};
|
|
117
|
-
return { canUser };
|
|
104
|
+
return { canUser, capabilities: data?.capabilities };
|
|
118
105
|
};
|
|
106
|
+
|
|
107
|
+
// src/ensure-current-user.ts
|
|
108
|
+
var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
|
|
109
|
+
function ensureCurrentUser({ queryClient }) {
|
|
110
|
+
(0, import_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", async () => {
|
|
111
|
+
await queryClient.ensureQueryData({
|
|
112
|
+
queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
|
|
113
|
+
queryFn: apiClient.get
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
return queryClient.getQueryData([EDITOR_CURRENT_USER_QUERY_KEY]);
|
|
117
|
+
}
|
|
119
118
|
// Annotate the CommonJS export names for ESM import in node:
|
|
120
119
|
0 && (module.exports = {
|
|
121
|
-
|
|
120
|
+
ensureCurrentUser,
|
|
122
121
|
getCurrentUser,
|
|
123
122
|
useCurrentUserCapabilities,
|
|
124
123
|
useSuppressedMessage
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/use-current-user.ts","../src/api.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts","../src/ensure-current-user.ts"],"sourcesContent":["export { useSuppressedMessage } from './use-suppressed-message';\nexport { useCurrentUserCapabilities } from './use-current-user-capabilities';\nexport { getCurrentUser } from './get-current-user';\nexport { ensureCurrentUser } from './ensure-current-user';\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 { 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 { 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, capabilities: data?.capabilities };\n};\n","import { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { type QueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport function ensureCurrentUser( { queryClient }: { queryClient: QueryClient } ) {\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tawait queryClient.ensureQueryData( {\n\t\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\t\tqueryFn: apiClient.get,\n\t\t} );\n\t} );\n\n\treturn queryClient.getQueryData( [ EDITOR_CURRENT_USER_QUERY_KEY ] );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyB;;;ACAzB,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;;;AC9CO,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;AFAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,UAC7B,uBAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AGVH,IAAAA,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,SAAS,cAAc,MAAM,aAAa;AACpD;;;ACVA,gCAAiC;AAM1B,SAAS,kBAAmB,EAAE,YAAY,GAAkC;AAClF,kDAAkB,SAAS,mCAAmC,YAAY;AACzE,UAAM,YAAY,gBAAiB;AAAA,MAClC,UAAU,CAAE,6BAA8B;AAAA,MAC1C,SAAS,UAAU;AAAA,IACpB,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,YAAY,aAAc,CAAE,6BAA8B,CAAE;AACpE;","names":["import_query"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
import {
|
|
1
|
+
// src/use-current-user.ts
|
|
2
|
+
import { useQuery } from "@elementor/query";
|
|
3
3
|
|
|
4
4
|
// src/api.ts
|
|
5
5
|
import { httpService } from "@elementor/http-client";
|
|
@@ -29,9 +29,6 @@ var userToRequest = (user) => {
|
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
// src/use-current-user.ts
|
|
33
|
-
import { useQuery } from "@elementor/query";
|
|
34
|
-
|
|
35
32
|
// src/get-current-user.ts
|
|
36
33
|
var getCurrentUser = () => {
|
|
37
34
|
return apiClient.get();
|
|
@@ -44,20 +41,10 @@ var useCurrentUser = () => useQuery({
|
|
|
44
41
|
queryFn: getCurrentUser
|
|
45
42
|
});
|
|
46
43
|
|
|
47
|
-
// src/components/prefetch-user-data.tsx
|
|
48
|
-
function PrefetchUserData() {
|
|
49
|
-
const queryClient = useQueryClient();
|
|
50
|
-
queryClient.prefetchQuery({
|
|
51
|
-
queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
|
|
52
|
-
queryFn: apiClient.get
|
|
53
|
-
});
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
44
|
// src/use-update-current-user.ts
|
|
58
|
-
import { useMutation, useQueryClient
|
|
45
|
+
import { useMutation, useQueryClient } from "@elementor/query";
|
|
59
46
|
var useUpdateCurrentUser = () => {
|
|
60
|
-
const queryClient =
|
|
47
|
+
const queryClient = useQueryClient();
|
|
61
48
|
return useMutation({
|
|
62
49
|
mutationFn: apiClient.update,
|
|
63
50
|
onSuccess: () => queryClient.invalidateQueries({ queryKey: [EDITOR_CURRENT_USER_QUERY_KEY] })
|
|
@@ -85,10 +72,22 @@ var useCurrentUserCapabilities = () => {
|
|
|
85
72
|
const canUser = (capability) => {
|
|
86
73
|
return Boolean(data?.capabilities.includes(capability));
|
|
87
74
|
};
|
|
88
|
-
return { canUser };
|
|
75
|
+
return { canUser, capabilities: data?.capabilities };
|
|
89
76
|
};
|
|
77
|
+
|
|
78
|
+
// src/ensure-current-user.ts
|
|
79
|
+
import { registerDataHook } from "@elementor/editor-v1-adapters";
|
|
80
|
+
function ensureCurrentUser({ queryClient }) {
|
|
81
|
+
registerDataHook("after", "editor/documents/attach-preview", async () => {
|
|
82
|
+
await queryClient.ensureQueryData({
|
|
83
|
+
queryKey: [EDITOR_CURRENT_USER_QUERY_KEY],
|
|
84
|
+
queryFn: apiClient.get
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
return queryClient.getQueryData([EDITOR_CURRENT_USER_QUERY_KEY]);
|
|
88
|
+
}
|
|
90
89
|
export {
|
|
91
|
-
|
|
90
|
+
ensureCurrentUser,
|
|
92
91
|
getCurrentUser,
|
|
93
92
|
useCurrentUserCapabilities,
|
|
94
93
|
useSuppressedMessage
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/
|
|
1
|
+
{"version":3,"sources":["../src/use-current-user.ts","../src/api.ts","../src/get-current-user.ts","../src/use-update-current-user.ts","../src/use-suppressed-message.ts","../src/use-current-user-capabilities.ts","../src/ensure-current-user.ts"],"sourcesContent":["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 { 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 { 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, capabilities: data?.capabilities };\n};\n","import { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { type QueryClient } from '@elementor/query';\n\nimport { apiClient } from './api';\nimport { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';\n\nexport function ensureCurrentUser( { queryClient }: { queryClient: QueryClient } ) {\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tawait queryClient.ensureQueryData( {\n\t\t\tqueryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],\n\t\t\tqueryFn: apiClient.get,\n\t\t} );\n\t} );\n\n\treturn queryClient.getQueryData( [ EDITOR_CURRENT_USER_QUERY_KEY ] );\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;;;ACAzB,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;;;AC9CO,IAAM,iBAAiB,MAAM;AACnC,SAAO,UAAU,IAAI;AACtB;;;AFAO,IAAM,gCAAgC;AAEtC,IAAM,iBAAiB,MAC7B,SAAU;AAAA,EACT,UAAU,CAAE,6BAA8B;AAAA,EAC1C,SAAS;AACV,CAAE;;;AGVH,SAAS,aAAa,sBAAsB;AAKrC,IAAM,uBAAuB,MAAM;AACzC,QAAM,cAAc,eAAe;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,SAAS,cAAc,MAAM,aAAa;AACpD;;;ACVA,SAAS,wBAAwB;AAM1B,SAAS,kBAAmB,EAAE,YAAY,GAAkC;AAClF,mBAAkB,SAAS,mCAAmC,YAAY;AACzE,UAAM,YAAY,gBAAiB;AAAA,MAClC,UAAU,CAAE,6BAA8B;AAAA,MAC1C,SAAS,UAAU;AAAA,IACpB,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,YAAY,aAAc,CAAE,6BAA8B,CAAE;AACpE;","names":[]}
|
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.6.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"react": "^18.3.1"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
+
"@elementor/editor-v1-adapters": "0.12.1",
|
|
39
40
|
"@elementor/http-client": "0.3.0",
|
|
40
41
|
"@elementor/query": "0.2.4"
|
|
41
42
|
},
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { registerDataHook } from '@elementor/editor-v1-adapters';
|
|
2
|
+
import { type QueryClient } from '@elementor/query';
|
|
3
|
+
|
|
4
|
+
import { apiClient } from './api';
|
|
5
|
+
import { EDITOR_CURRENT_USER_QUERY_KEY } from './use-current-user';
|
|
6
|
+
|
|
7
|
+
export function ensureCurrentUser( { queryClient }: { queryClient: QueryClient } ) {
|
|
8
|
+
registerDataHook( 'after', 'editor/documents/attach-preview', async () => {
|
|
9
|
+
await queryClient.ensureQueryData( {
|
|
10
|
+
queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],
|
|
11
|
+
queryFn: apiClient.get,
|
|
12
|
+
} );
|
|
13
|
+
} );
|
|
14
|
+
|
|
15
|
+
return queryClient.getQueryData( [ EDITOR_CURRENT_USER_QUERY_KEY ] );
|
|
16
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PrefetchUserData } from './components/prefetch-user-data';
|
|
2
1
|
export { useSuppressedMessage } from './use-suppressed-message';
|
|
3
2
|
export { useCurrentUserCapabilities } from './use-current-user-capabilities';
|
|
4
3
|
export { getCurrentUser } from './get-current-user';
|
|
4
|
+
export { ensureCurrentUser } from './ensure-current-user';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { useQueryClient } from '@elementor/query';
|
|
2
|
-
|
|
3
|
-
import { apiClient } from '../api';
|
|
4
|
-
import { EDITOR_CURRENT_USER_QUERY_KEY } from '../use-current-user';
|
|
5
|
-
|
|
6
|
-
export function PrefetchUserData() {
|
|
7
|
-
const queryClient = useQueryClient();
|
|
8
|
-
|
|
9
|
-
queryClient.prefetchQuery( {
|
|
10
|
-
queryKey: [ EDITOR_CURRENT_USER_QUERY_KEY ],
|
|
11
|
-
queryFn: apiClient.get,
|
|
12
|
-
} );
|
|
13
|
-
|
|
14
|
-
return null;
|
|
15
|
-
}
|