PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.10
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.10
1.4.19 1.4.18 1.4.17 1.4.16 1.4.15 1.4.14 1.4.13 1.4.12 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.54 1.3.53 1.3.52 1.3.51 1.3.50 All 182 releases
disco / backend / views / components / Main / features / campaigns / campaignsApi.js

campaignsApi.js in Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO 1.4.10, at backend/views/components/Main/features/campaigns/campaignsApi.js

77 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { apiSlice } from './../api/apiSlice';
2
3 export const campaignsApi = apiSlice.injectEndpoints({
4 endpoints: (builder) => ({
5 getCampaigns: builder.query({
6 queryFn: async (arg, api, extraOptions, fetchWithBQ) => {
7 const result = await fetchWithBQ('campaigns');
8
9 // the REST API responds 404 when no campaign exists yet
10 if (
11 result.error?.data?.code === 'rest_campaign_not_available'
12 ) {
13 return { data: [] };
14 }
15
16 if (result.error) {
17 return { error: result.error };
18 }
19
20 return {
21 data: Array.isArray(result.data)
22 ? result.data.sort(
23 (a, b) =>
24 Number(b.priority) - Number(a.priority)
25 )
26 : [],
27 };
28 },
29 providesTags: ['Campaigns'],
30 }),
31 getCampaign: builder.query({
32 query: (id) => `campaigns/${id}`,
33 providesTags: ['Campaign'],
34 }),
35 addCampaign: builder.mutation({
36 query: (data) => ({
37 url: 'campaigns',
38 method: 'POST',
39 body: data,
40 }),
41 invalidatesTags: ['Campaigns'],
42 }),
43 deleteCampaign: builder.mutation({
44 query: (id) => ({
45 url: `campaigns/${id}`,
46 method: 'DELETE',
47 }),
48 invalidatesTags: ['Campaigns'],
49 }),
50 patchCampaign: builder.mutation({
51 query: ({ id, data }) => ({
52 url: `campaigns/${id}`,
53 method: 'PATCH',
54 body: data,
55 }),
56 invalidatesTags: ['Campaigns'],
57 }),
58 updateCampaign: builder.mutation({
59 query: ({ id, data }) => ({
60 url: `campaigns/${id}`,
61 method: 'PUT',
62 body: data,
63 }),
64 invalidatesTags: ['Campaigns', 'Campaign'],
65 }),
66 }),
67 });
68
69 export const {
70 useGetCampaignsQuery,
71 useGetCampaignQuery,
72 useAddCampaignMutation,
73 useDeleteCampaignMutation,
74 usePatchCampaignMutation,
75 useUpdateCampaignMutation,
76 } = campaignsApi;
77