Add user notes on accounts (#14148)
* Add UserNote model * Add UI for user notes * Put comment in relationships entity * Add API to create user notes * Copy user notes to new account when receiving a Move activity * Address some of the review remarks * Replace modal by inline edition * Please CodeClimate * Button design changes * Change design again * Cancel note edition when pressing Escape * Fixes * Tweak design again * Move “Add note” item, and allow users to add notes to themselves * Rename UserNote into AccountNote, rename “comment” Relationship attribute to “note”
This commit is contained in:
		@@ -11,6 +11,7 @@ import Avatar from 'mastodon/components/avatar';
 | 
			
		||||
import { shortNumberFormat } from 'mastodon/utils/numbers';
 | 
			
		||||
import { NavLink } from 'react-router-dom';
 | 
			
		||||
import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container';
 | 
			
		||||
import AccountNoteContainer from '../containers/account_note_container';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
 | 
			
		||||
@@ -45,6 +46,7 @@ const messages = defineMessages({
 | 
			
		||||
  unendorse: { id: 'account.unendorse', defaultMessage: 'Don\'t feature on profile' },
 | 
			
		||||
  add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' },
 | 
			
		||||
  admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },
 | 
			
		||||
  add_account_note: { id: 'account.add_account_note', defaultMessage: 'Add note for @{name}' },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const dateFormatOptions = {
 | 
			
		||||
@@ -64,6 +66,7 @@ class Header extends ImmutablePureComponent {
 | 
			
		||||
    identity_props: ImmutablePropTypes.list,
 | 
			
		||||
    onFollow: PropTypes.func.isRequired,
 | 
			
		||||
    onBlock: PropTypes.func.isRequired,
 | 
			
		||||
    onEditAccountNote: PropTypes.func.isRequired,
 | 
			
		||||
    intl: PropTypes.object.isRequired,
 | 
			
		||||
    domain: PropTypes.string.isRequired,
 | 
			
		||||
  };
 | 
			
		||||
@@ -128,6 +131,8 @@ class Header extends ImmutablePureComponent {
 | 
			
		||||
      return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const accountNote = account.getIn(['relationship', 'note']);
 | 
			
		||||
 | 
			
		||||
    let info        = [];
 | 
			
		||||
    let actionBtn   = '';
 | 
			
		||||
    let lockedIcon  = '';
 | 
			
		||||
@@ -178,6 +183,10 @@ class Header extends ImmutablePureComponent {
 | 
			
		||||
      menu.push(null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (accountNote === null) {
 | 
			
		||||
      menu.push({ text: intl.formatMessage(messages.add_account_note, { name: account.get('username') }), action: this.props.onEditAccountNote });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (account.get('id') === me) {
 | 
			
		||||
      menu.push({ text: intl.formatMessage(messages.edit_profile), href: '/settings/profile' });
 | 
			
		||||
      menu.push({ text: intl.formatMessage(messages.preferences), href: '/settings/preferences' });
 | 
			
		||||
@@ -284,6 +293,8 @@ class Header extends ImmutablePureComponent {
 | 
			
		||||
            </h1>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <AccountNoteContainer account={account} />
 | 
			
		||||
 | 
			
		||||
          <div className='account__header__extra'>
 | 
			
		||||
            <div className='account__header__bio'>
 | 
			
		||||
              { (fields.size > 0 || identity_proofs.size > 0) && (
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user