commit: a23e4380b25b5ab2d7446431a046cec2a19b375a
parent: aaa4d1b0fb896f0d5f607cca3760106399caf41b
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Sun, 2 Apr 2017 22:02:38 +0200
Avoid re-loading already loaded relationships. Also fixes issue where wrong
button would be displayed in account lists for unloaded relationships
Diffstat:
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/app/assets/javascripts/components/actions/accounts.jsx b/app/assets/javascripts/components/actions/accounts.jsx
@@ -579,15 +579,18 @@ export function expandFollowingFail(id, error) {
};
};
-export function fetchRelationships(account_ids) {
+export function fetchRelationships(accountIds) {
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;
}
- 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));
}).catch(error => {
dispatch(fetchRelationshipsFail(error));
diff --git a/app/assets/javascripts/components/selectors/index.jsx b/app/assets/javascripts/components/selectors/index.jsx
@@ -5,7 +5,7 @@ const getStatuses = state => state.get('statuses');
const getAccounts = state => state.get('accounts');
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 = () => {
return createSelector([getAccountBase, getAccountRelationship], (base, relationship) => {