Implement public profile endorsements in glitch-soc
Port WebUI changes from f2404de871 to glitch-soc
			
			
This commit is contained in:
		
							parent
							
								
									4e66e0ac04
								
							
						
					
					
						commit
						7067b64de3
					
				
					 5 changed files with 100 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -28,6 +28,14 @@ export const ACCOUNT_UNMUTE_REQUEST = 'ACCOUNT_UNMUTE_REQUEST';
 | 
			
		|||
export const ACCOUNT_UNMUTE_SUCCESS = 'ACCOUNT_UNMUTE_SUCCESS';
 | 
			
		||||
export const ACCOUNT_UNMUTE_FAIL    = 'ACCOUNT_UNMUTE_FAIL';
 | 
			
		||||
 | 
			
		||||
export const ACCOUNT_PIN_REQUEST = 'ACCOUNT_PIN_REQUEST';
 | 
			
		||||
export const ACCOUNT_PIN_SUCCESS = 'ACCOUNT_PIN_SUCCESS';
 | 
			
		||||
export const ACCOUNT_PIN_FAIL    = 'ACCOUNT_PIN_FAIL';
 | 
			
		||||
 | 
			
		||||
export const ACCOUNT_UNPIN_REQUEST = 'ACCOUNT_UNPIN_REQUEST';
 | 
			
		||||
export const ACCOUNT_UNPIN_SUCCESS = 'ACCOUNT_UNPIN_SUCCESS';
 | 
			
		||||
export const ACCOUNT_UNPIN_FAIL    = 'ACCOUNT_UNPIN_FAIL';
 | 
			
		||||
 | 
			
		||||
export const FOLLOWERS_FETCH_REQUEST = 'FOLLOWERS_FETCH_REQUEST';
 | 
			
		||||
export const FOLLOWERS_FETCH_SUCCESS = 'FOLLOWERS_FETCH_SUCCESS';
 | 
			
		||||
export const FOLLOWERS_FETCH_FAIL    = 'FOLLOWERS_FETCH_FAIL';
 | 
			
		||||
| 
						 | 
				
			
			@ -659,3 +667,69 @@ export function rejectFollowRequestFail(id, error) {
 | 
			
		|||
    error,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function pinAccount(id) {
 | 
			
		||||
  return (dispatch, getState) => {
 | 
			
		||||
    dispatch(pinAccountRequest(id));
 | 
			
		||||
 | 
			
		||||
    api(getState).post(`/api/v1/accounts/${id}/pin`).then(response => {
 | 
			
		||||
      dispatch(pinAccountSuccess(response.data));
 | 
			
		||||
    }).catch(error => {
 | 
			
		||||
      dispatch(pinAccountFail(error));
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function unpinAccount(id) {
 | 
			
		||||
  return (dispatch, getState) => {
 | 
			
		||||
    dispatch(unpinAccountRequest(id));
 | 
			
		||||
 | 
			
		||||
    api(getState).post(`/api/v1/accounts/${id}/unpin`).then(response => {
 | 
			
		||||
      dispatch(unpinAccountSuccess(response.data));
 | 
			
		||||
    }).catch(error => {
 | 
			
		||||
      dispatch(unpinAccountFail(error));
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function pinAccountRequest(id) {
 | 
			
		||||
  return {
 | 
			
		||||
    type: ACCOUNT_PIN_REQUEST,
 | 
			
		||||
    id,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function pinAccountSuccess(relationship) {
 | 
			
		||||
  return {
 | 
			
		||||
    type: ACCOUNT_PIN_SUCCESS,
 | 
			
		||||
    relationship,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function pinAccountFail(error) {
 | 
			
		||||
  return {
 | 
			
		||||
    type: ACCOUNT_PIN_FAIL,
 | 
			
		||||
    error,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function unpinAccountRequest(id) {
 | 
			
		||||
  return {
 | 
			
		||||
    type: ACCOUNT_UNPIN_REQUEST,
 | 
			
		||||
    id,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function unpinAccountSuccess(relationship) {
 | 
			
		||||
  return {
 | 
			
		||||
    type: ACCOUNT_UNPIN_SUCCESS,
 | 
			
		||||
    relationship,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function unpinAccountFail(error) {
 | 
			
		||||
  return {
 | 
			
		||||
    type: ACCOUNT_UNPIN_FAIL,
 | 
			
		||||
    error,
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,8 @@ const messages = defineMessages({
 | 
			
		|||
  unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' },
 | 
			
		||||
  hideReblogs: { id: 'account.hide_reblogs', defaultMessage: 'Hide boosts from @{name}' },
 | 
			
		||||
  showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' },
 | 
			
		||||
  endorse: { id: 'account.endorse', defaultMessage: 'Feature on profile' },
 | 
			
		||||
  unendorse: { id: 'account.unendorse', defaultMessage: 'Don\'t feature on profile' },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@injectIntl
 | 
			
		||||
| 
						 | 
				
			
			@ -39,6 +41,7 @@ export default class ActionBar extends React.PureComponent {
 | 
			
		|||
    onMute: PropTypes.func.isRequired,
 | 
			
		||||
    onBlockDomain: PropTypes.func.isRequired,
 | 
			
		||||
    onUnblockDomain: PropTypes.func.isRequired,
 | 
			
		||||
    onEndorseToggle: PropTypes.func.isRequired,
 | 
			
		||||
    intl: PropTypes.object.isRequired,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +75,9 @@ export default class ActionBar extends React.PureComponent {
 | 
			
		|||
        } else {
 | 
			
		||||
          menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle });
 | 
			
		||||
        menu.push(null);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (account.getIn(['relationship', 'muting'])) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@ export default class Header extends ImmutablePureComponent {
 | 
			
		|||
    onMute: PropTypes.func.isRequired,
 | 
			
		||||
    onBlockDomain: PropTypes.func.isRequired,
 | 
			
		||||
    onUnblockDomain: PropTypes.func.isRequired,
 | 
			
		||||
    onEndorseToggle: PropTypes.func.isRequired,
 | 
			
		||||
    hideTabs: PropTypes.bool,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -73,6 +74,10 @@ export default class Header extends ImmutablePureComponent {
 | 
			
		|||
    this.props.onUnblockDomain(domain);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleEndorseToggle = () => {
 | 
			
		||||
    this.props.onEndorseToggle(this.props.account);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  render () {
 | 
			
		||||
    const { account, hideTabs } = this.props;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -100,6 +105,7 @@ export default class Header extends ImmutablePureComponent {
 | 
			
		|||
          onMute={this.handleMute}
 | 
			
		||||
          onBlockDomain={this.handleBlockDomain}
 | 
			
		||||
          onUnblockDomain={this.handleUnblockDomain}
 | 
			
		||||
          onEndorseToggle={this.handleEndorseToggle}
 | 
			
		||||
        />
 | 
			
		||||
 | 
			
		||||
        {!hideTabs && (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,8 @@ import {
 | 
			
		|||
  blockAccount,
 | 
			
		||||
  unblockAccount,
 | 
			
		||||
  unmuteAccount,
 | 
			
		||||
  pinAccount,
 | 
			
		||||
  unpinAccount,
 | 
			
		||||
} from 'flavours/glitch/actions/accounts';
 | 
			
		||||
import {
 | 
			
		||||
  mentionCompose,
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +88,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
 | 
			
		|||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onEndorseToggle (account) {
 | 
			
		||||
    if (account.getIn(['relationship', 'endorsed'])) {
 | 
			
		||||
      dispatch(unpinAccount(account.get('id')));
 | 
			
		||||
    } else {
 | 
			
		||||
      dispatch(pinAccount(account.get('id')));
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onReport (account) {
 | 
			
		||||
    dispatch(initReport(account));
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,8 @@ import {
 | 
			
		|||
  ACCOUNT_UNBLOCK_SUCCESS,
 | 
			
		||||
  ACCOUNT_MUTE_SUCCESS,
 | 
			
		||||
  ACCOUNT_UNMUTE_SUCCESS,
 | 
			
		||||
  ACCOUNT_PIN_SUCCESS,
 | 
			
		||||
  ACCOUNT_UNPIN_SUCCESS,
 | 
			
		||||
  RELATIONSHIPS_FETCH_SUCCESS,
 | 
			
		||||
} from 'flavours/glitch/actions/accounts';
 | 
			
		||||
import {
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +43,8 @@ export default function relationships(state = initialState, action) {
 | 
			
		|||
  case ACCOUNT_UNBLOCK_SUCCESS:
 | 
			
		||||
  case ACCOUNT_MUTE_SUCCESS:
 | 
			
		||||
  case ACCOUNT_UNMUTE_SUCCESS:
 | 
			
		||||
  case ACCOUNT_PIN_SUCCESS:
 | 
			
		||||
  case ACCOUNT_UNPIN_SUCCESS:
 | 
			
		||||
    return normalizeRelationship(state, action.relationship);
 | 
			
		||||
  case RELATIONSHIPS_FETCH_SUCCESS:
 | 
			
		||||
    return normalizeRelationships(state, action.relationships);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue