Newer
Older
pokemon-go-trade / static / html / src / pages / want.js
import React, { Component } from 'react';
import * as ReactDOM from 'react-dom';
import Menu from '../components/menu';
import WantGroup from '../components/want-group';

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      pokemonWantList: [],
    };
  }

  componentDidMount() {
    fetch('/api/stored-pokemon-want')
      .then(response => response.json())
      .then((data) => {
        this.setState({ pokemonWantList: data });
      });
  }

  render() {
    const { pokemonWantList } = this.state;

    const handleEditPokemonClick = wantGroupId => () => {
      window.location.href = `/chose.html?type=want&want_group_id=${wantGroupId}`;
    };

    const handleDeletePokemonClick = wantGroupId => () => {
      fetch('api/stored-pokemon-want', {
        method: 'DELETE',
        body: JSON.stringify({ wantGroupId }),
      }).then(response => response.json())
        .then((data) => {
          this.setState({ pokemonWantList: data });
        });
    };
    const handleAddPokemonClick = () => () => {
      fetch('api/stored-pokemon-want', {
        method: 'POST',
      }).then(response => response.json())
        .then((data) => {
          this.setState({ pokemonWantList: data });
        });
    };

    const wantGroups = [];
    pokemonWantList.forEach((wantGroup) => {
      wantGroups.push(<WantGroup
        pokemonList={wantGroup.pokemons}
        groupId={wantGroup.id}
        groupName={wantGroup.group_name}
        handleEditPokemonClick={handleEditPokemonClick}
        handleDeletePokemonClick={handleDeletePokemonClick}
      />);
    });

    return (
      <div>
        <Menu active={1} />
        {wantGroups}
        <button className="addButton" style={{ fontSize: '10em' }} type="button" onClick={handleAddPokemonClick()}>Add</button>
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById('main'));