selectors.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import { createSelector } from '@reduxjs/toolkit';
  2. import { ConnectState, RootState } from 'redux/interfaces';
  3. import { createFetchingSelector } from 'redux/reducers/loader/selectors';
  4. import { ConnectorTaskStatus, ConnectorState } from 'generated-sources';
  5. import {
  6. deleteConnector,
  7. fetchConnector,
  8. fetchConnectorConfig,
  9. fetchConnectors,
  10. fetchConnectorTasks,
  11. fetchConnects,
  12. pauseConnector,
  13. restartConnector,
  14. resumeConnector,
  15. } from './connectSlice';
  16. const connectState = ({ connect }: RootState): ConnectState => connect;
  17. const getConnectsFetchingStatus = createFetchingSelector(
  18. fetchConnects.typePrefix
  19. );
  20. export const getAreConnectsFetching = createSelector(
  21. getConnectsFetchingStatus,
  22. (status) => status === 'pending'
  23. );
  24. export const getConnects = createSelector(
  25. connectState,
  26. ({ connects }) => connects
  27. );
  28. const getConnectorsFetchingStatus = createFetchingSelector(
  29. fetchConnectors.typePrefix
  30. );
  31. export const getAreConnectorsFetching = createSelector(
  32. getConnectorsFetchingStatus,
  33. (status) => status === 'pending'
  34. );
  35. export const getConnectors = createSelector(
  36. connectState,
  37. ({ connectors }) => connectors
  38. );
  39. export const getFailedConnectors = createSelector(
  40. connectState,
  41. ({ connectors }) => {
  42. return connectors.filter(
  43. (connector) => connector.status.state === ConnectorState.FAILED
  44. );
  45. }
  46. );
  47. const getConnectorFetchingStatus = createFetchingSelector(
  48. fetchConnector.typePrefix
  49. );
  50. export const getIsConnectorFetching = createSelector(
  51. getConnectorFetchingStatus,
  52. (status) => status === 'pending'
  53. );
  54. const getCurrentConnector = createSelector(
  55. connectState,
  56. ({ currentConnector }) => currentConnector
  57. );
  58. export const getConnector = createSelector(
  59. getCurrentConnector,
  60. ({ connector }) => connector
  61. );
  62. export const getConnectorStatus = createSelector(
  63. getConnector,
  64. (connector) => connector?.status?.state
  65. );
  66. const getConnectorDeletingStatus = createFetchingSelector(
  67. deleteConnector.typePrefix
  68. );
  69. export const getIsConnectorDeleting = createSelector(
  70. getConnectorDeletingStatus,
  71. (status) => status === 'pending'
  72. );
  73. const getConnectorRestartingStatus = createFetchingSelector(
  74. restartConnector.typePrefix
  75. );
  76. export const getIsConnectorRestarting = createSelector(
  77. getConnectorRestartingStatus,
  78. (status) => status === 'pending'
  79. );
  80. const getConnectorPausingStatus = createFetchingSelector(
  81. pauseConnector.typePrefix
  82. );
  83. export const getIsConnectorPausing = createSelector(
  84. getConnectorPausingStatus,
  85. (status) => status === 'pending'
  86. );
  87. const getConnectorResumingStatus = createFetchingSelector(
  88. resumeConnector.typePrefix
  89. );
  90. export const getIsConnectorResuming = createSelector(
  91. getConnectorResumingStatus,
  92. (status) => status === 'pending'
  93. );
  94. export const getIsConnectorActionRunning = createSelector(
  95. getIsConnectorRestarting,
  96. getIsConnectorPausing,
  97. getIsConnectorResuming,
  98. (restarting, pausing, resuming) => restarting || pausing || resuming
  99. );
  100. const getConnectorTasksFetchingStatus = createFetchingSelector(
  101. fetchConnectorTasks.typePrefix
  102. );
  103. export const getAreConnectorTasksFetching = createSelector(
  104. getConnectorTasksFetchingStatus,
  105. (status) => status === 'pending'
  106. );
  107. export const getConnectorTasks = createSelector(
  108. getCurrentConnector,
  109. ({ tasks }) => tasks
  110. );
  111. export const getConnectorRunningTasksCount = createSelector(
  112. getConnectorTasks,
  113. (tasks) =>
  114. tasks.filter((task) => task.status?.state === ConnectorTaskStatus.RUNNING)
  115. .length
  116. );
  117. export const getConnectorFailedTasksCount = createSelector(
  118. getConnectorTasks,
  119. (tasks) =>
  120. tasks.filter((task) => task.status?.state === ConnectorTaskStatus.FAILED)
  121. .length
  122. );
  123. const getConnectorConfigFetchingStatus = createFetchingSelector(
  124. fetchConnectorConfig.typePrefix
  125. );
  126. export const getIsConnectorConfigFetching = createSelector(
  127. getConnectorConfigFetchingStatus,
  128. (status) => status === 'pending'
  129. );
  130. export const getConnectorConfig = createSelector(
  131. getCurrentConnector,
  132. ({ config }) => config
  133. );
  134. export const getConnectorSearch = createSelector(
  135. connectState,
  136. (state) => state.search
  137. );