| 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 |
|