import PropTypes from 'prop-types';
import { PureComponent } from 'react';
import { FormattedMessage } from 'react-intl';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { identityContextPropShape, withIdentity } from 'mastodon/identity_context';
import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_REPORTS } from 'mastodon/permissions';
import { CheckboxWithLabel } from './checkbox_with_label';
import ClearColumnButton from './clear_column_button';
import GrantPermissionButton from './grant_permission_button';
import SettingToggle from './setting_toggle';
class ColumnSettings extends PureComponent {
  static propTypes = {
    identity: identityContextPropShape,
    settings: ImmutablePropTypes.map.isRequired,
    pushSettings: ImmutablePropTypes.map.isRequired,
    onChange: PropTypes.func.isRequired,
    onClear: PropTypes.func.isRequired,
    onRequestNotificationPermission: PropTypes.func,
    alertsEnabled: PropTypes.bool,
    browserSupport: PropTypes.bool,
    browserPermission: PropTypes.string,
    notificationPolicy: PropTypes.object.isRequired,
    onChangePolicy: PropTypes.func.isRequired,
  };
  onPushChange = (path, checked) => {
    this.props.onChange(['push', ...path], checked);
  };
  handleFilterNotFollowing = checked => {
    this.props.onChangePolicy('filter_not_following', checked);
  };
  handleFilterNotFollowers = checked => {
    this.props.onChangePolicy('filter_not_followers', checked);
  };
  handleFilterNewAccounts = checked => {
    this.props.onChangePolicy('filter_new_accounts', checked);
  };
  handleFilterPrivateMentions = checked => {
    this.props.onChangePolicy('filter_private_mentions', checked);
  };
  render () {
    const { settings, pushSettings, onChange, onClear, alertsEnabled, browserSupport, browserPermission, onRequestNotificationPermission, notificationPolicy } = this.props;
    const filterAdvancedStr =