Add notifications for new sign-ups (#16953)
This commit is contained in:
		
							parent
							
								
									3e12abc1fe
								
							
						
					
					
						commit
						7b816eb5ae
					
				
					 11 changed files with 73 additions and 65 deletions
				
			
		| 
						 | 
				
			
			@ -5,6 +5,7 @@ import { FormattedMessage } from 'react-intl';
 | 
			
		|||
import ClearColumnButton from './clear_column_button';
 | 
			
		||||
import GrantPermissionButton from './grant_permission_button';
 | 
			
		||||
import SettingToggle from './setting_toggle';
 | 
			
		||||
import { isStaff } from 'mastodon/initial_state';
 | 
			
		||||
 | 
			
		||||
export default class ColumnSettings extends React.PureComponent {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +156,7 @@ export default class ColumnSettings extends React.PureComponent {
 | 
			
		|||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div role='group' aria-labelledby='notifications-update'>
 | 
			
		||||
          <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span>
 | 
			
		||||
          <span id='notifications-update' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span>
 | 
			
		||||
 | 
			
		||||
          <div className='column-settings__row'>
 | 
			
		||||
            <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} />
 | 
			
		||||
| 
						 | 
				
			
			@ -164,6 +165,19 @@ export default class ColumnSettings extends React.PureComponent {
 | 
			
		|||
            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'update']} onChange={onChange} label={soundStr} />
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        {isStaff && (
 | 
			
		||||
          <div role='group' aria-labelledby='notifications-admin-sign-up'>
 | 
			
		||||
            <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.admin.sign_up' defaultMessage='New sign-ups:' /></span>
 | 
			
		||||
 | 
			
		||||
            <div className='column-settings__row'>
 | 
			
		||||
              <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'admin.sign_up']} onChange={onChange} label={alertStr} />
 | 
			
		||||
              {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'admin.sign_up']} onChange={this.onPushChange} label={pushStr} />}
 | 
			
		||||
              <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'admin.sign_up']} onChange={onChange} label={showStr} />
 | 
			
		||||
              <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'admin.sign_up']} onChange={onChange} label={soundStr} />
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        )}
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@ const messages = defineMessages({
 | 
			
		|||
  reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your status' },
 | 
			
		||||
  status: { id: 'notification.status', defaultMessage: '{name} just posted' },
 | 
			
		||||
  update: { id: 'notification.update', defaultMessage: '{name} edited a post' },
 | 
			
		||||
  adminSignUp: { id: 'notification.admin.sign_up', defaultMessage: '{name} signed up' },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const notificationForScreenReader = (intl, message, timestamp) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -344,6 +345,28 @@ class Notification extends ImmutablePureComponent {
 | 
			
		|||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  renderAdminSignUp (notification, account, link) {
 | 
			
		||||
    const { intl, unread } = this.props;
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <HotKeys handlers={this.getHandlers()}>
 | 
			
		||||
        <div className={classNames('notification notification-admin-sign-up focusable', { unread })} tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.adminSignUp, { name: account.get('acct') }), notification.get('created_at'))}>
 | 
			
		||||
          <div className='notification__message'>
 | 
			
		||||
            <div className='notification__favourite-icon-wrapper'>
 | 
			
		||||
              <Icon id='user-plus' fixedWidth />
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <span title={notification.get('created_at')}>
 | 
			
		||||
              <FormattedMessage id='notification.admin.sign_up' defaultMessage='{name} signed up' values={{ name: link }} />
 | 
			
		||||
            </span>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <AccountContainer id={account.get('id')} hidden={this.props.hidden} />
 | 
			
		||||
        </div>
 | 
			
		||||
      </HotKeys>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  render () {
 | 
			
		||||
    const { notification } = this.props;
 | 
			
		||||
    const account          = notification.get('account');
 | 
			
		||||
| 
						 | 
				
			
			@ -367,6 +390,8 @@ class Notification extends ImmutablePureComponent {
 | 
			
		|||
      return this.renderUpdate(notification, link);
 | 
			
		||||
    case 'poll':
 | 
			
		||||
      return this.renderPoll(notification, account);
 | 
			
		||||
    case 'admin.sign_up':
 | 
			
		||||
      return this.renderAdminSignUp(notification, account, link);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return null;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue