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.
99 lines
2.5 KiB
99 lines
2.5 KiB
import api, { getLinks } from '../api'; |
|
import { fetchRelationships } from './accounts'; |
|
import { importFetchedAccounts } from './importer'; |
|
import { openModal } from './modal'; |
|
|
|
export const BLOCKS_FETCH_REQUEST = 'BLOCKS_FETCH_REQUEST'; |
|
export const BLOCKS_FETCH_SUCCESS = 'BLOCKS_FETCH_SUCCESS'; |
|
export const BLOCKS_FETCH_FAIL = 'BLOCKS_FETCH_FAIL'; |
|
|
|
export const BLOCKS_EXPAND_REQUEST = 'BLOCKS_EXPAND_REQUEST'; |
|
export const BLOCKS_EXPAND_SUCCESS = 'BLOCKS_EXPAND_SUCCESS'; |
|
export const BLOCKS_EXPAND_FAIL = 'BLOCKS_EXPAND_FAIL'; |
|
|
|
export const BLOCKS_INIT_MODAL = 'BLOCKS_INIT_MODAL'; |
|
|
|
export function fetchBlocks() { |
|
return (dispatch, getState) => { |
|
dispatch(fetchBlocksRequest()); |
|
|
|
api(getState).get('/api/v1/blocks').then(response => { |
|
const next = getLinks(response).refs.find(link => link.rel === 'next'); |
|
dispatch(importFetchedAccounts(response.data)); |
|
dispatch(fetchBlocksSuccess(response.data, next ? next.uri : null)); |
|
dispatch(fetchRelationships(response.data.map(item => item.id))); |
|
}).catch(error => dispatch(fetchBlocksFail(error))); |
|
}; |
|
} |
|
|
|
export function fetchBlocksRequest() { |
|
return { |
|
type: BLOCKS_FETCH_REQUEST, |
|
}; |
|
} |
|
|
|
export function fetchBlocksSuccess(accounts, next) { |
|
return { |
|
type: BLOCKS_FETCH_SUCCESS, |
|
accounts, |
|
next, |
|
}; |
|
} |
|
|
|
export function fetchBlocksFail(error) { |
|
return { |
|
type: BLOCKS_FETCH_FAIL, |
|
error, |
|
}; |
|
} |
|
|
|
export function expandBlocks() { |
|
return (dispatch, getState) => { |
|
const url = getState().getIn(['user_lists', 'blocks', 'next']); |
|
|
|
if (url === null) { |
|
return; |
|
} |
|
|
|
dispatch(expandBlocksRequest()); |
|
|
|
api(getState).get(url).then(response => { |
|
const next = getLinks(response).refs.find(link => link.rel === 'next'); |
|
dispatch(importFetchedAccounts(response.data)); |
|
dispatch(expandBlocksSuccess(response.data, next ? next.uri : null)); |
|
dispatch(fetchRelationships(response.data.map(item => item.id))); |
|
}).catch(error => dispatch(expandBlocksFail(error))); |
|
}; |
|
} |
|
|
|
export function expandBlocksRequest() { |
|
return { |
|
type: BLOCKS_EXPAND_REQUEST, |
|
}; |
|
} |
|
|
|
export function expandBlocksSuccess(accounts, next) { |
|
return { |
|
type: BLOCKS_EXPAND_SUCCESS, |
|
accounts, |
|
next, |
|
}; |
|
} |
|
|
|
export function expandBlocksFail(error) { |
|
return { |
|
type: BLOCKS_EXPAND_FAIL, |
|
error, |
|
}; |
|
} |
|
|
|
export function initBlockModal(account) { |
|
return dispatch => { |
|
dispatch({ |
|
type: BLOCKS_INIT_MODAL, |
|
account, |
|
}); |
|
|
|
dispatch(openModal('BLOCK')); |
|
}; |
|
}
|
|
|