redhare-demo/store/services/user.service.js

92 lines
1.9 KiB
JavaScript

import apiSlice from './api'
export const userApiSlice = apiSlice.injectEndpoints({
endpoints: builder => ({
login: builder.mutation({
query: ({ body }) => ({
url: '/api/auth/login',
method: 'POST',
body,
}),
invalidatesTags: [
'User',
'Review',
'Details',
'Order',
'Product',
'Category',
'Slider',
'Banner',
],
}),
getUserInfo: builder.query({
query: () => ({
url: '/api/auth/user',
method: 'GET',
}),
providesTags: ['User'],
}),
createUser: builder.mutation({
query: ({ body }) => ({
url: '/api/auth/register',
method: 'POST',
body,
}),
invalidatesTags: [
'User',
'Review',
'Details',
'Order',
'Product',
'Category',
'Slider',
'Banner',
],
}),
getUsers: builder.query({
query: ({ page }) => ({
url: `/api/user?page=${page}`,
method: 'GET',
}),
providesTags: (result, error, arg) =>
result
? [
...result.data.users.map(({ _id }) => ({
type: 'User',
id: _id,
})),
'User',
]
: ['User'],
}),
editUser: builder.mutation({
query: ({ body }) => ({
url: '/api/user',
method: 'PATCH',
body,
}),
invalidatesTags: (result, err, arg) => [{ type: 'User', id: arg.body._id }],
}),
deleteUser: builder.mutation({
query: ({ id }) => ({
url: `/api/user/${id}`,
method: 'DELETE',
}),
invalidatesTags: ['User'],
}),
}),
})
export const {
useLoginMutation,
useGetUserInfoQuery,
useCreateUserMutation,
useGetUsersQuery,
useDeleteUserMutation,
useEditUserMutation,
} = userApiSlice