Avoid re-loading already loaded relationships. Also fixes issue where wrong
button would be displayed in account lists for unloaded relationships
This commit is contained in:
		
							parent
							
								
									aaa4d1b0fb
								
							
						
					
					
						commit
						a23e4380b2
					
				
					 2 changed files with 8 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue