PluginProbe
Extendify / 0.2.0
Extendify v0.2.0
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
extendify / src / api / axios.js

axios.js in Extendify 0.2.0, at src/api/axios.js

71 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import axios from 'axios'
2 import { useUserStore } from '../state/User'
3
4 const Axios = axios.create({
5 baseURL: window.extendifyData.root,
6 headers: {
7 'X-WP-Nonce': window.extendifyData.nonce,
8 'X-Requested-With': 'XMLHttpRequest',
9 'X-Extendify': true,
10 },
11 })
12
13 function findResponse(response) {
14 return Object.prototype.hasOwnProperty.call(response, 'data')
15 ? response.data
16 : response
17 }
18
19 function handleErrors(error) {
20 if (!error.response) {
21 return
22 }
23 console.error(error.response)
24 // TODO: add a global error message system
25 return Promise.reject(findResponse(error.response))
26 }
27
28 function addDefaults(request) {
29 if (request.data) {
30 request.data.remaining_imports = useUserStore
31 .getState()
32 .remainingImports()
33 request.data.entry_point = useUserStore.getState().entryPoint
34 request.data.total_imports = useUserStore.getState().imports
35 }
36 return request
37 }
38
39 function checkDevMode(request) {
40 request.headers['X-Extendify-Dev-Mode'] =
41 window.location.search.indexOf('DEVMODE') > -1
42 request.headers['X-Extendify-Local-Mode'] =
43 window.location.search.indexOf('LOCALMODE') > -1
44 return request
45 }
46
47 function checkForSoftError(response) {
48 if (Object.prototype.hasOwnProperty.call(response, 'soft_error')) {
49 window.dispatchEvent(
50 new CustomEvent('extendify::softerror-encountered', {
51 detail: response.soft_error,
52 bubbles: true,
53 }),
54 )
55 }
56 return response
57 }
58
59 Axios.interceptors.response.use(
60 (response) => checkForSoftError(findResponse(response)),
61 (error) => handleErrors(error),
62 )
63
64 // TODO: setup a pipe function instead of this nested pattern
65 Axios.interceptors.request.use(
66 (request) => checkDevMode(addDefaults(request)),
67 (error) => error,
68 )
69
70 export { Axios }
71