refactor: invite user.

This commit is contained in:
elforjani3
2021-02-10 00:51:08 +02:00
parent aefec44a26
commit 08beb9a0d6
6 changed files with 212 additions and 101 deletions

View File

@@ -16,4 +16,5 @@ export * from './estimates';
export * from './receipts';
export * from './paymentReceives';
export * from './paymentMades';
export * from './settings';
export * from './settings';
export * from './users';

View File

@@ -0,0 +1,73 @@
import { useMutation, useQueryClient, useQuery } from 'react-query';
import { defaultTo } from 'lodash';
import ApiService from 'services/ApiService';
/**
* Create a new invite user.
*/
export function useCreateInviteUser(props) {
const queryClient = useQueryClient();
return useMutation((values) => ApiService.post('invite/send', values), {
onSuccess: () => {
queryClient.invalidateQueries('USERS');
},
...props,
});
}
/**
* Edits the given user.
*
*/
export function useEditUser(props) {
const queryClient = useQueryClient();
return useMutation(([id, values]) => ApiService.post(`users/${id}`, values), {
onSuccess: () => {
queryClient.invalidateQueries('USERS');
},
...props,
});
}
/**
* Deletes the given user.
*/
export function useDeleteUser(props) {
const queryClient = useQueryClient();
return useMutation((id) => ApiService.delete(`users/${id}`), {
onSuccess: () => {
queryClient.invalidateQueries('USERS');
queryClient.invalidateQueries('USER');
},
...props,
});
}
/**
* Retrieves users list.
*/
export function useUsers(props) {
const result = useQuery(
['USERS'],
() => ApiService.get(`USERS`).then((response) => response.data.users),
props,
);
return {
...result,
data: defaultTo(result.data, {}),
};
}
/**
* Retrieve details of the given user.
*/
export function useUser(id, props) {
return useQuery(
['USER', id],
() => ApiService.get(`users/${id}`).then((response) => response.data.item),
props,
);
}