import React from 'react';
import PropTypes from 'prop-types';
import api from 'mastodon/api';
import { injectIntl, defineMessages } from 'react-intl';
import classNames from 'classnames';
const messages = defineMessages({
  other: { id: 'report.categories.other', defaultMessage: 'Other' },
  spam: { id: 'report.categories.spam', defaultMessage: 'Spam' },
  violation: { id: 'report.categories.violation', defaultMessage: 'Content violates one or more server rules' },
});
class Category extends React.PureComponent {
  static propTypes = {
    id: PropTypes.string.isRequired,
    text: PropTypes.string.isRequired,
    selected: PropTypes.bool,
    disabled: PropTypes.bool,
    onSelect: PropTypes.func,
    children: PropTypes.node,
  };
  handleClick = () => {
    const { id, disabled, onSelect } = this.props;
    if (!disabled) {
      onSelect(id);
    }
  };
  render () {
    const { id, text, disabled, selected, children } = this.props;
    return (
      
        {selected && 
}
        
          
          {text}
        
        {(selected && children) && (
          
            {children}
          
        )}
      
        
        {selected && }
        {text}
      
    );
  }
}
export default @injectIntl
class ReportReasonSelector extends React.PureComponent {
  static propTypes = {
    id: PropTypes.string.isRequired,
    category: PropTypes.string.isRequired,
    rule_ids: PropTypes.arrayOf(PropTypes.string),
    disabled: PropTypes.bool,
    intl: PropTypes.object.isRequired,
  };
  state = {
    category: this.props.category,
    rule_ids: this.props.rule_ids || [],
    rules: [],
  };
  componentDidMount() {
    api().get('/api/v1/instance').then(res => {
      this.setState({
        rules: res.data.rules,
      });
    }).catch(err => {
      console.error(err);
    });
  }
  _save = () => {
    const { id, disabled } = this.props;
    const { category, rule_ids } = this.state;
    if (disabled) {
      return;
    }
    api().put(`/api/v1/admin/reports/${id}`, {
      category,
      rule_ids,
    }).catch(err => {
      console.error(err);
    });
  };
  handleSelect = id => {
    this.setState({ category: id }, () => this._save());
  };
  handleToggle = id => {
    const { rule_ids } = this.state;
    if (rule_ids.includes(id)) {
      this.setState({ rule_ids: rule_ids.filter(x => x !== id ) }, () => this._save());
    } else {
      this.setState({ rule_ids: [...rule_ids, id] }, () => this._save());
    }
  };
  render () {
    const { disabled, intl } = this.props;
    const { rules, category, rule_ids } = this.state;
    return (
      
        
        
        
          {rules.map(rule => )}
        
      
    );
  }
}