selectors.ts 889 B

1234567891011121314151617181920212223242526
  1. import { createSelector } from 'reselect';
  2. import { RootState } from 'redux/interfaces';
  3. import { createFetchingSelector } from 'redux/reducers/loader/selectors';
  4. import { Cluster, ServerStatus } from 'generated-sources';
  5. const clustersState = ({ clusters }: RootState): Cluster[] => clusters;
  6. const getClusterListFetchingStatus = createFetchingSelector('GET_CLUSTERS');
  7. export const getIsClusterListFetched = createSelector(
  8. getClusterListFetchingStatus,
  9. (status) => status === 'fetched'
  10. );
  11. export const getClusterList = createSelector(
  12. clustersState,
  13. (clusters) => clusters
  14. );
  15. export const getOnlineClusters = createSelector(getClusterList, (clusters) =>
  16. clusters.filter(({ status }) => status === ServerStatus.Online)
  17. );
  18. export const getOfflineClusters = createSelector(getClusterList, (clusters) =>
  19. clusters.filter(({ status }) => status === ServerStatus.Offline)
  20. );