acl.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { aclApiClient as api } from 'lib/api';
  2. import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
  3. import { ClusterName } from 'redux/interfaces';
  4. import { showSuccessAlert } from 'lib/errorHandling';
  5. import { KafkaAcl } from 'generated-sources';
  6. export function useAcls(clusterName: ClusterName) {
  7. return useQuery(
  8. ['clusters', clusterName, 'acls'],
  9. () => api.listAcls({ clusterName }),
  10. {
  11. suspense: false,
  12. }
  13. );
  14. }
  15. export function useCreateAclMutation(clusterName: ClusterName) {
  16. return useMutation(
  17. (data: KafkaAcl) =>
  18. api.createAcl({
  19. clusterName,
  20. kafkaAcl: data,
  21. }),
  22. {
  23. onSuccess() {
  24. showSuccessAlert({
  25. message: 'Your ACL was created successfully',
  26. });
  27. },
  28. }
  29. );
  30. }
  31. export function useCreateAcl(clusterName: ClusterName) {
  32. const mutate = useCreateAclMutation(clusterName);
  33. return {
  34. createResource: async (param: KafkaAcl) => {
  35. return mutate.mutateAsync(param);
  36. },
  37. ...mutate,
  38. };
  39. }
  40. export function useDeleteAclMutation(clusterName: ClusterName) {
  41. const queryClient = useQueryClient();
  42. return useMutation(
  43. (acl: KafkaAcl) => api.deleteAcl({ clusterName, kafkaAcl: acl }),
  44. {
  45. onSuccess: () => {
  46. showSuccessAlert({ message: 'ACL deleted' });
  47. queryClient.invalidateQueries(['clusters', clusterName, 'acls']);
  48. },
  49. }
  50. );
  51. }
  52. export function useDeleteAcl(clusterName: ClusterName) {
  53. const mutate = useDeleteAclMutation(clusterName);
  54. return {
  55. deleteResource: async (param: KafkaAcl) => {
  56. return mutate.mutateAsync(param);
  57. },
  58. ...mutate,
  59. };
  60. }