Avoid re-loading already loaded relationships. Also fixes issue where wrong
button would be displayed in account lists for unloaded relationshipsshrike
parent
aaa4d1b0fb
commit
a23e4380b2
|
@ -579,15 +579,18 @@ export function expandFollowingFail(id, error) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export function fetchRelationships(account_ids) {
|
export function fetchRelationships(accountIds) {
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
if (account_ids.length === 0) {
|
const loadedRelationships = getState().get('relationships');
|
||||||
|
const newAccountIds = accountIds.filter(id => loadedRelationships.get(id, null) === null);
|
||||||
|
|
||||||
|
if (newAccountIds.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch(fetchRelationshipsRequest(account_ids));
|
dispatch(fetchRelationshipsRequest(newAccountIds));
|
||||||
|
|
||||||
api(getState).get(`/api/v1/accounts/relationships?${account_ids.map(id => `id[]=${id}`).join('&')}`).then(response => {
|
api(getState).get(`/api/v1/accounts/relationships?${newAccountIds.map(id => `id[]=${id}`).join('&')}`).then(response => {
|
||||||
dispatch(fetchRelationshipsSuccess(response.data));
|
dispatch(fetchRelationshipsSuccess(response.data));
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
dispatch(fetchRelationshipsFail(error));
|
dispatch(fetchRelationshipsFail(error));
|
||||||
|
|
|
@ -5,7 +5,7 @@ const getStatuses = state => state.get('statuses');
|
||||||
const getAccounts = state => state.get('accounts');
|
const getAccounts = state => state.get('accounts');
|
||||||
|
|
||||||
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
|
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
|
||||||
const getAccountRelationship = (state, id) => state.getIn(['relationships', id]);
|
const getAccountRelationship = (state, id) => state.getIn(['relationships', id], null);
|
||||||
|
|
||||||
export const makeGetAccount = () => {
|
export const makeGetAccount = () => {
|
||||||
return createSelector([getAccountBase, getAccountRelationship], (base, relationship) => {
|
return createSelector([getAccountBase, getAccountRelationship], (base, relationship) => {
|
||||||
|
|
Loading…
Reference in New Issue