Don't update follower counts on reblog toggle

main
aschmitz 2017-11-11 21:42:22 -06:00
parent 5128c4261e
commit 48c705bbad
2 changed files with 5 additions and 2 deletions

View File

@ -107,10 +107,11 @@ export function fetchAccountFail(id, error) {
export function followAccount(id, reblogs = true) { export function followAccount(id, reblogs = true) {
return (dispatch, getState) => { return (dispatch, getState) => {
const alreadyFollowing = getState().getIn(['relationships', id, 'following']);
dispatch(followAccountRequest(id)); dispatch(followAccountRequest(id));
api(getState).post(`/api/v1/accounts/${id}/follow`, { reblogs }).then(response => { api(getState).post(`/api/v1/accounts/${id}/follow`, { reblogs }).then(response => {
dispatch(followAccountSuccess(response.data)); dispatch(followAccountSuccess(response.data, alreadyFollowing));
}).catch(error => { }).catch(error => {
dispatch(followAccountFail(error)); dispatch(followAccountFail(error));
}); });
@ -136,10 +137,11 @@ export function followAccountRequest(id) {
}; };
}; };
export function followAccountSuccess(relationship) { export function followAccountSuccess(relationship, alreadyFollowing) {
return { return {
type: ACCOUNT_FOLLOW_SUCCESS, type: ACCOUNT_FOLLOW_SUCCESS,
relationship, relationship,
alreadyFollowing,
}; };
}; };

View File

@ -126,6 +126,7 @@ export default function accountsCounters(state = initialState, action) {
case STATUS_FETCH_SUCCESS: case STATUS_FETCH_SUCCESS:
return normalizeAccountFromStatus(state, action.status); return normalizeAccountFromStatus(state, action.status);
case ACCOUNT_FOLLOW_SUCCESS: case ACCOUNT_FOLLOW_SUCCESS:
if (action.alreadyFollowing) { return state; }
return state.updateIn([action.relationship.id, 'followers_count'], num => num + 1); return state.updateIn([action.relationship.id, 'followers_count'], num => num + 1);
case ACCOUNT_UNFOLLOW_SUCCESS: case ACCOUNT_UNFOLLOW_SUCCESS:
return state.updateIn([action.relationship.id, 'followers_count'], num => Math.max(0, num - 1)); return state.updateIn([action.relationship.id, 'followers_count'], num => Math.max(0, num - 1));