| 1 |
/* eslint-disable no-undef */ |
| 2 |
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; |
| 3 |
|
| 4 |
const rawBaseQuery = fetchBaseQuery({ |
| 5 |
baseUrl: DISCO.json_url + '/analytics', |
| 6 |
prepareHeaders: (headers) => { |
| 7 |
headers.set('X-WP-Nonce', DISCO.rest_nonce); |
| 8 |
}, |
| 9 |
}); |
| 10 |
|
| 11 |
const baseQuery = (args, api, extraOptions) => { |
| 12 |
if (args && typeof args === 'object' && args.params) { |
| 13 |
const { params, url, ...rest } = args; |
| 14 |
const stripped = Object.fromEntries( |
| 15 |
Object.entries(params).filter(([, v]) => v !== undefined) |
| 16 |
); |
| 17 |
const queryString = new URLSearchParams(stripped).toString(); |
| 18 |
const separator = DISCO.is_pretty_url ? '?' : '&'; |
| 19 |
args = { |
| 20 |
...rest, |
| 21 |
url: queryString ? `${url}${separator}${queryString}` : url, |
| 22 |
}; |
| 23 |
} |
| 24 |
return rawBaseQuery(args, api, extraOptions); |
| 25 |
}; |
| 26 |
|
| 27 |
export const analyticsApi = createApi({ |
| 28 |
reducerPath: 'analyticsApi', |
| 29 |
baseQuery, |
| 30 |
endpoints: () => ({}), |
| 31 |
}); |
| 32 |
|