thunks.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import * as api from 'redux/api';
  2. import * as actions from './actions';
  3. import {
  4. PromiseThunk,
  5. Cluster,
  6. ClusterId,
  7. TopicFormData,
  8. TopicName, Topic,
  9. } from 'redux/interfaces';
  10. export const fetchBrokers = (clusterId: ClusterId): PromiseThunk<void> => async (dispatch) => {
  11. dispatch(actions.fetchBrokersAction.request());
  12. try {
  13. const payload = await api.getBrokers(clusterId);
  14. dispatch(actions.fetchBrokersAction.success(payload));
  15. } catch (e) {
  16. dispatch(actions.fetchBrokersAction.failure());
  17. }
  18. }
  19. export const fetchBrokerMetrics = (clusterId: ClusterId): PromiseThunk<void> => async (dispatch) => {
  20. dispatch(actions.fetchBrokerMetricsAction.request());
  21. try {
  22. const payload = await api.getBrokerMetrics(clusterId);
  23. dispatch(actions.fetchBrokerMetricsAction.success(payload));
  24. } catch (e) {
  25. dispatch(actions.fetchBrokerMetricsAction.failure());
  26. }
  27. }
  28. export const fetchClustersList = (): PromiseThunk<void> => async (dispatch) => {
  29. dispatch(actions.fetchClusterListAction.request());
  30. try {
  31. const clusters: Cluster[] = await api.getClusters();
  32. dispatch(actions.fetchClusterListAction.success(clusters));
  33. } catch (e) {
  34. dispatch(actions.fetchClusterListAction.failure());
  35. }
  36. }
  37. export const fetchTopicList = (clusterId: ClusterId): PromiseThunk<void> => async (dispatch) => {
  38. dispatch(actions.fetchTopicListAction.request());
  39. try {
  40. const topics = await api.getTopics(clusterId);
  41. dispatch(actions.fetchTopicListAction.success(topics));
  42. } catch (e) {
  43. dispatch(actions.fetchTopicListAction.failure());
  44. }
  45. }
  46. export const fetchTopicDetails = (clusterId: ClusterId, topicName: TopicName): PromiseThunk<void> => async (dispatch) => {
  47. dispatch(actions.fetchTopicDetailsAction.request());
  48. try {
  49. const topicDetails = await api.getTopicDetails(clusterId, topicName);
  50. dispatch(actions.fetchTopicDetailsAction.success({ topicName, details: topicDetails }));
  51. } catch (e) {
  52. dispatch(actions.fetchTopicDetailsAction.failure());
  53. }
  54. }
  55. export const fetchTopicConfig = (clusterId: ClusterId, topicName: TopicName): PromiseThunk<void> => async (dispatch) => {
  56. dispatch(actions.fetchTopicConfigAction.request());
  57. try {
  58. const config = await api.getTopicConfig(clusterId, topicName);
  59. dispatch(actions.fetchTopicConfigAction.success({ topicName, config }));
  60. } catch (e) {
  61. dispatch(actions.fetchTopicConfigAction.failure());
  62. }
  63. }
  64. export const createTopic = (clusterId: ClusterId, form: TopicFormData): PromiseThunk<void> => async (dispatch) => {
  65. dispatch(actions.createTopicAction.request());
  66. try {
  67. const topic: Topic = await api.postTopic(clusterId, form);
  68. dispatch(actions.createTopicAction.success(topic));
  69. } catch (e) {
  70. dispatch(actions.createTopicAction.failure());
  71. }
  72. }