PluginProbe
Code Snippets / 4.0.0-beta.1
Code Snippets v4.0.0-beta.1
4.0.0-beta.2 3.10.2 3.10.1 3.10.0 3.10.0-beta.2 3.10.0-beta.1 4.0.0-beta.1 3.9.6 trunk 2.10.0 2.10.1 2.12.0 2.12.1 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.14.1 2.14.2 2.14.3 2.14.4 2.14.5 2.14.6 3.0.0 All 65 releases
code-snippets / js / services / manage / requests.ts

requests.ts in Code Snippets 4.0.0-beta.1, at js/services/manage/requests.ts

57 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { isNetworkAdmin } from '../../utils/screen'
2 import type { SnippetSchema } from '../../types/schema/SnippetSchema'
3 import type { Snippet, SnippetScope } from '../../types/Snippet'
4
5 export interface ResponseData<T = unknown> {
6 success: boolean
7 data?: T
8 }
9
10 export type SuccessCallback = (response: ResponseData) => void
11
12 const sendSnippetRequest = (query: string, onSuccess?: SuccessCallback) => {
13 const request = new XMLHttpRequest()
14 request.open('POST', window.ajaxurl, true)
15 request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
16
17 request.onload = () => {
18 const success = 200
19 const errorStart = 400
20 if (success > request.status || errorStart <= request.status) {
21 return
22 }
23
24 console.info(request.responseText)
25 onSuccess?.(<ResponseData> JSON.parse(request.responseText))
26 }
27
28 request.send(query)
29 }
30
31 /**
32 * Update the data of a given snippet using AJAX
33 * @param field
34 * @param row
35 * @param snippet
36 * @param successCallback
37 */
38 export const updateSnippet = (field: keyof Snippet, row: Element, snippet: Partial<Snippet>, successCallback?: SuccessCallback) => {
39 const nonce = <HTMLInputElement | null> document.getElementById('code_snippets_ajax_nonce')
40 const columnId = row.querySelector('.column-id')
41
42 if (!nonce || !columnId?.textContent || !parseInt(columnId.textContent, 10)) {
43 return
44 }
45
46 const updatedSnippet: Partial<SnippetSchema> = {
47 id: parseInt(columnId.textContent, 10),
48 shared_network: null !== /\bshared-network-snippet\b/.exec(row.className),
49 network: snippet.shared_network ?? isNetworkAdmin(),
50 scope: <SnippetScope | null> row.getAttribute('data-snippet-scope') ?? snippet.scope,
51 ...snippet
52 }
53
54 const queryString = `action=update_code_snippet&_ajax_nonce=${nonce.value}&field=${field}&snippet=${JSON.stringify(updatedSnippet)}`
55 sendSnippetRequest(queryString, successCallback)
56 }
57