import React, { Component } from 'react'; import LetterOptions from './LetterOptions'; import Button from './Button'; import Preview from './Preview'; import LatestList from './LatestList'; import {generatePdf, getLatest, removeLatest} from './apiHelper'; //import './App.css'; class App extends Component { componentDidMount() { this._getLatest(); } render() { const state = this.state || {}; return (
); } _onSelectLatest(selectedOptions) { this.setState({options: Object.assign({}, selectedOptions)}); } _onRemoveLatest(item) { removeLatest(item) .then(() => { const latest = this.state.latest .filter(curr => curr.id !== item.id); this.setState({ latest }); }); } _onClear() { window.location.reload(); } _onGenerate() { const state = this.state || {}; this.setState({ pdfIsLoading: true, pdfError: null }) generatePdf(state.options) .then((data) => { const {id} = data; this.setState({ pdfIsLoading: false, pdfUrl: `/api/pdf/${id}` }); }) .catch((error) => { this.setState({ pdfIsLoading: false, pdfError: error.message, pdfUrl: null }); }) .then(() => this._getLatest()) } _getLatest() { getLatest() .then(latest => this.setState({latest})) .catch(err => console.error('Unable to get latest:', err)); } _onChange(name, event) { if (!name) { return; } const value = event && event.target && event.target.value; const options = Object.assign({}, this.state.options, {[name]: value || undefined}); this.setState({options}); } } export default App;