You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.0 KiB

  1. import api from '../api';
  2. import { importFetchedAccounts } from './importer';
  3. import { fetchRelationships } from './accounts';
  4. export const DIRECTORY_FETCH_REQUEST = 'DIRECTORY_FETCH_REQUEST';
  5. export const DIRECTORY_FETCH_SUCCESS = 'DIRECTORY_FETCH_SUCCESS';
  6. export const DIRECTORY_FETCH_FAIL = 'DIRECTORY_FETCH_FAIL';
  7. export const DIRECTORY_EXPAND_REQUEST = 'DIRECTORY_EXPAND_REQUEST';
  8. export const DIRECTORY_EXPAND_SUCCESS = 'DIRECTORY_EXPAND_SUCCESS';
  9. export const DIRECTORY_EXPAND_FAIL = 'DIRECTORY_EXPAND_FAIL';
  10. export const fetchDirectory = params => (dispatch, getState) => {
  11. dispatch(fetchDirectoryRequest());
  12. api(getState).get('/api/v1/directory', { params: { ...params, limit: 20 } }).then(({ data }) => {
  13. dispatch(importFetchedAccounts(data));
  14. dispatch(fetchDirectorySuccess(data));
  15. dispatch(fetchRelationships(data.map(x => x.id)));
  16. }).catch(error => dispatch(fetchDirectoryFail(error)));
  17. };
  18. export const fetchDirectoryRequest = () => ({
  19. type: DIRECTORY_FETCH_REQUEST,
  20. });
  21. export const fetchDirectorySuccess = accounts => ({
  22. type: DIRECTORY_FETCH_SUCCESS,
  23. accounts,
  24. });
  25. export const fetchDirectoryFail = error => ({
  26. type: DIRECTORY_FETCH_FAIL,
  27. error,
  28. });
  29. export const expandDirectory = params => (dispatch, getState) => {
  30. dispatch(expandDirectoryRequest());
  31. const loadedItems = getState().getIn(['user_lists', 'directory', 'items']).size;
  32. api(getState).get('/api/v1/directory', { params: { ...params, offset: loadedItems, limit: 20 } }).then(({ data }) => {
  33. dispatch(importFetchedAccounts(data));
  34. dispatch(expandDirectorySuccess(data));
  35. dispatch(fetchRelationships(data.map(x => x.id)));
  36. }).catch(error => dispatch(expandDirectoryFail(error)));
  37. };
  38. export const expandDirectoryRequest = () => ({
  39. type: DIRECTORY_EXPAND_REQUEST,
  40. });
  41. export const expandDirectorySuccess = accounts => ({
  42. type: DIRECTORY_EXPAND_SUCCESS,
  43. accounts,
  44. });
  45. export const expandDirectoryFail = error => ({
  46. type: DIRECTORY_EXPAND_FAIL,
  47. error,
  48. });