import api from '../api'; import { fetchRelationships } from './accounts'; import { importFetchedAccounts } from './importer'; export const DIRECTORY_FETCH_REQUEST = 'DIRECTORY_FETCH_REQUEST'; export const DIRECTORY_FETCH_SUCCESS = 'DIRECTORY_FETCH_SUCCESS'; export const DIRECTORY_FETCH_FAIL = 'DIRECTORY_FETCH_FAIL'; export const DIRECTORY_EXPAND_REQUEST = 'DIRECTORY_EXPAND_REQUEST'; export const DIRECTORY_EXPAND_SUCCESS = 'DIRECTORY_EXPAND_SUCCESS'; export const DIRECTORY_EXPAND_FAIL = 'DIRECTORY_EXPAND_FAIL'; export const fetchDirectory = params => (dispatch) => { dispatch(fetchDirectoryRequest()); api().get('/api/v1/directory', { params: { ...params, limit: 20 } }).then(({ data }) => { dispatch(importFetchedAccounts(data)); dispatch(fetchDirectorySuccess(data)); dispatch(fetchRelationships(data.map(x => x.id))); }).catch(error => dispatch(fetchDirectoryFail(error))); }; export const fetchDirectoryRequest = () => ({ type: DIRECTORY_FETCH_REQUEST, }); export const fetchDirectorySuccess = accounts => ({ type: DIRECTORY_FETCH_SUCCESS, accounts, }); export const fetchDirectoryFail = error => ({ type: DIRECTORY_FETCH_FAIL, error, }); export const expandDirectory = params => (dispatch, getState) => { dispatch(expandDirectoryRequest()); const loadedItems = getState().getIn(['user_lists', 'directory', 'items']).size; api().get('/api/v1/directory', { params: { ...params, offset: loadedItems, limit: 20 } }).then(({ data }) => { dispatch(importFetchedAccounts(data)); dispatch(expandDirectorySuccess(data)); dispatch(fetchRelationships(data.map(x => x.id))); }).catch(error => dispatch(expandDirectoryFail(error))); }; export const expandDirectoryRequest = () => ({ type: DIRECTORY_EXPAND_REQUEST, }); export const expandDirectorySuccess = accounts => ({ type: DIRECTORY_EXPAND_SUCCESS, accounts, }); export const expandDirectoryFail = error => ({ type: DIRECTORY_EXPAND_FAIL, error, });